本文重点:
1、在2D变化使用过程中,有些需求需要两种或两种以上的变化同时使用,
值得注意的是尽量把位移变化放在最前面,把其他变化放在最后面,属性值中间用空格隔开;
因为其他变化放在前面会使位移变化出现很大的误差(切记)
正确写法如下:transform:translate(100px) rotate(90deg);
2、所有变化都是以元素自身的中心点为变化原点,如有需求需要改变变化原点,请往下继续看;
过渡
css3的transition允许css的属性值在一定的时间区间内平滑地过渡。
这种效果可以在元素任何改变中触发,使元素变化以动画效果展现出来。
-
transition-property:检索或设置对象中的参与过渡的属性
-
transition-duration:检索或设置对象过渡的持续时间
-
transition-delay:检索或设置对象延迟过渡的时间
-
transition-timing-function:检索或设置对象中过渡的动画类型
简写:transition:all/具体属性值 运动时间s/ms 延迟时间s/ms 动画类型简写形式(匀速、加速等等)
2D
2D变换,是在一个平面对元素进行的操作。
可以对元素进行水平或者垂直位移、旋转或者拉伸
2D功能函数
1、2D位移 translate()
-
将元素向指定的方向移动,类似于position中的relative(都占据空间)。
-
水平移动:向右移动translate(tx,0)和向左移动translate(-tx,0);
-
垂直移动:向上移动translate(0,-ty)和向下移动translate(0,ty);
-
对角移动:右下角移动translate(tx,ty)、右上角移动translate(tx,-ty)、左上角移动translate(-tx,-ty)和左下角移动translate(-tx,ty)。
2、2D缩放scale()
-
让元素根据中心原点对对象进行缩放。默认的值1。值大于0,小于1,使一个元素缩小;值大于1,让元素显得更大。
-
缩放scale()函数和translate()函数的语法非常相似,他可以接受一个值,也可以同时接受两个值,如果只有一个值时,其第二个值默认与第一个值相等。例如,scale(1,1)元素不会有任何变化,而scale(2,2)让元素沿X轴和Y轴放大两倍。
-
scaleX():相当于scale(sx,1)。表示元素只在X轴(水平方向)缩放元素,其默认值是1。
-
scaleY():相当于scale(1,sy)。表示元素只在Y轴(纵横方向)缩放元素,其默认值是1。
3、2D旋转rotate()
旋转rotate()函数通过指定的角度参数对元素根据对象原点指定一个2D旋转。单位为deg,它主要在二维空间内进行操作,接受一个角度值,用来指定旋转的幅度。如果这个值为正值,元素相对原点中心顺时针旋转;如果这个值为负值,元素相对原点中心逆时针旋转。
rotateX() 方法,元素围绕其 X 轴以给定的度数进行旋转
rotateY() 方法,元素围绕其 Y 轴以给定的度数进行旋转
4、2D倾斜skew()
倾斜skew()函数能够让元素倾斜显示。它可以将一个对象以其中心位置围绕着X轴和Y轴按照一定的角度倾斜。
一个参数时:表示水平方向的倾斜角度;
两个参数时:第一个参数表示水平方向的倾斜角度,第二个参数表示垂直方向的倾斜角度
变形原点的改变方法:
transform-origin
transform-origin是变形原点,也就是该元素围绕着那个点变形或旋转,该属性只有在设置了transform属性的时候起作用;
默认变化的变化原点都在元素的中心点,本案例使变化原点进行了改变,案例使用了
案例效果图如下:
实现代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
.dom_center{
position: absolute;
left: 0;right: 0;
top: 0;bottom: 0;
margin: auto;
}
.box3{
300px;
height: 200px;
background-color: sandybrown;
margin: 100px auto;
position: relative;
}
.box3 .dom3{
60px;
height: 50px;
transition: 1s;
background-color: slateblue;
transform-origin:right top;
}
.box3 .dom{
100px;
height: 80px;
border: #000 solid;
border- 2px 0 2px 0;
transition: 3s;
transform: scaleX(0);
transform-origin: left center;
}
.box3 .dom2{
80px;
height: 100px;
border: #000 solid;
border- 0 2px 0 2px ;
transition: 3s;
transform: scaleY(0);
transform-origin: center top;
}
.box3:hover .dom{
transform: scaleX(1);
}
.box3:hover .dom2{
transform: scaleY(1);
}
.box3:hover .dom3{
transform:translate(100px) rotate(90deg);
}
</style>
</head>
<body>
<div class="box3">
<div class="dom3"></div>
<div class="dom dom_center"></div>
<div class="dom2 dom_center"></div>
</div>
</body>
</html>
如果感觉对自己有帮助,麻烦点一下关注,会一直盒大家分享知识的,谢谢!!!