CSS定位和过度动画

前言

在我们设计网页的时候,我们在给页面布局的时候想要移动元素可以使用浮动布局。但是当我们需要移动到指定位置的时候,使用浮动布局就无法达到效果,那么我们该怎么办呢?我们今天学习的知识就可以解决这个问题。不仅如此我们还可以做出一个小小的表白神器。

CCS定位

根据所给X,Y位置对元素进行精准定位和移动。

css定位分类

css定位主要分为相对定位、绝对定位、固定定位。
偏移量:
top 上 left 左 right 右 bottm 下

相对定位 position:relative

  • 如果一个元素设置相对定位,则页面上没有任何反应。
  • 相对定位是占据之前位置的
  • 跟随着自己原来位置的左顶点进行移动。

绝对定位 position:absolute

  • 如果只给一个元素设置了绝对定位,则该元素脱离文档流
  • 以body的左顶点进行移动,或以定义了相对定位的父级元素的左顶点进行移动。

子绝父相布局

给父级元素设置相对定位,给子级元素设置绝对定位。

固定定位

  • 如果只给一个元素设置了固定定位,该元素脱离文档流
  • 定在屏幕的某一个位置,不受滚动条的影响。
  • 无论父级有没有相对定位它都会随着body的左顶点进行位置偏移。

css新增的选择器功能

关系型选择器
语法:
E+A
下一个瞒足条件的“兄弟”元素节点
如:.div2:active+.xin2
此处意为:选择类名为div2的盒子点击时,div2后第一个.xin2的元素
E~A
瞒住条件的后面的所有兄弟元素
如:.div2:active~.xin2
此处意为:选择类名为div2的盒子点击时,div2后面所有类名为xin2的元素

过度动画transition

transition-property:属性;(多个属性用“,”隔开)监听过渡状态的改变,我们要让哪个属性过渡被监听。
transition-duration:时间;过渡所用时间
transition-timing-function:linear; 运动状态;(此处为匀速);
transition-delay: 时间 ; 过渡效果开始前等待时间;

结合案例

结合以上知识,我们以一个简单案例来加强知识的巩固,以下是设计思路和步骤。

案例内容

点击盒子A ,后面所有的“兄弟元素”开始过渡到一定位置,从而组成一个“心”

案例实现思路

“点击盒子A,后面的所有“兄弟元素”开始过渡”
即需要做到点击前面的一个元素,后面的元素所产生的样式
此处就可以运用:

  1. : “:active” 链接伪类,点击后激活产生的样式(点中不松开的状态)
  2. :“E~A”关系型选择器,以达到触发后面“兄弟”元素过渡

“开始过渡”
即使用transition过渡动画
到一定位置
即提前设置好的位置,使用子绝父相给每个“兄弟”元素提前定位。

实现步骤

1.创建一个父级盒子,包裹divA和原来组成“心”的span
2.提前给span定义好组成“心”的定位。
3.设置一个初始位置,即组成“心”之前所有span堆放的位置。
4.将提前定义好的span组成“心”的定位写入点击盒子A触发后的样式中。
5.给各个span加上过渡动画监听。

实现代码

设置一个好看的背景,定义一个父级盒子,设置span开始位置

	body {
				background-color: cornflowerblue;
			}
			.div1 {
				margin: 0px auto;
				 width: 800px;
				 height: 600px;
				 position: relative;
				 
				 
			}
			.div1 span {
				width: 82px;
				height: 80px;
				padding: 10px;
				font-size: 100px;
				text-align: center;
				line-height: 80px;
			    position: absolute;
			    color:#F03D10;
			    left: 153px;
			    right: 245px;
			    top: 300px;
			    bottom: 100px;
			}

4.将提前定义好的span组成“心”的定位写入点击盒子A触发后的样式中。

.div2:active~.xin2 {
				left: 52px;
			 right: 245px;
			    top: 200px;
			    bottom: 100px;
			}
			.div2:active~.xin3 {
				

			    left: 159px;
			    right: 245px;
			    top: 200px;
			    bottom: 100px;
			}
			.div2:active~.xin4 {
				

			    left: 266px;
			    right: 245px;
			    top: 200px;
			    bottom: 100px;
			}
			.div2:active~.xin5 {
				

			    left: 0px;
			    right: 245px;
			    top: 100px;
			    bottom: 100px;
			}
			.div2:active~.xin6 {
				

			    left: 107px;
			    right: 245px;
			    top: 100px;
			    bottom: 100px;
			}
			.div2:active~.xin7 {
				

			    left: 213px;
			    right: 245px;
			    top: 100px;
			    bottom: 100px;
			}
			.div2:active~.xin8 {
				

			    left: 320px;
			    right: 245px;
			    top: 100px;
			    bottom: 100px;
			}
			.div2:active~.xin9 {
				

			    left: 51px;
			    right: 245px;
			    top: 0px;
			    bottom: 100px;
			}
			.div2:active~.xin10 {
				

			    left: 260px;
			    right: 245px;
			    top: 0px;
			    bottom: 100px;
			    			}
			.div2 {
				float: right;
				width: 80px;
				min-height: 80px;
				background-color: pink;
				margin-top:400px ;
				border-radius: 50%;
				text-align: center;
				line-height: 80px;
			    color: #ffff;
				
			}
			

	
	

		
	


给各个span加上过渡动画监听。

.xin2 {

			    transition: all 2s  linear;
	}
	.xin3 {

			    transition: all 3s  linear;
	}
	.xin4 {

			    transition: all 4s  linear;
	}
	.xin5 {

			    transition: all 5s  linear;
	}
	.xin6 {

			    transition: all 6s  linear;
	}
	.xin7 {

			    transition: all 7s  linear;
	}
	.xin8 {

			    transition: all 8s  linear;
	}
	.xin9 {

			    transition: all 9s  linear;
	}
	.xin10 {

			    transition: all 10s linear;
	}

盒子布局

<body>
	<div class="div1">		  
		<div class="div2">
	   	长按这里
	   </div>
       <span class="xin1"></span>
       <span class="xin2"></span>
       <span class="xin3"></span>
       <span class="xin4"></span>
       <span class="xin5"></span>
       <span class="xin6"></span>
       <span class="xin7"></span>
       <span class="xin8"></span>
       <span class="xin9"></span>
	   <span class="xin10"></span>

	  </div>
	 
</body>

end

今天的学习就到这了,对案例感兴趣的小伙伴可以直接复制粘贴自己运行试试,个人觉得还挺有意思的。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值