CSS3 transform 和 transition 的区别

定义

  • transform 属性向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。
  • transition,就是通过鼠标的单击、获得焦点,被点击或对元素任何改变中触发,并平滑地以动画效果改变 CSS 的属性值。

transform

transform 属性向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。

语法:
transform: none | transform-functions;

transform-functions有以下几个值:

属性值 含义
rotate() 旋转
scale() 缩放
translate() 位移
skew() 扭曲

rotate() 旋转

旋转 rotate()函数通过指定的角度参数(单位:deg)使元素相对原点进行旋转。它主要在二维空间内进 行操作,设置一个角度值,用来指定旋转的幅度。如果这个值为正值,元素相对原点中心顺 时针旋转;如果这个值为负值,元素相对原点中心逆时针旋转。如下图所示:

//表示顺时针旋转30度
div{transform: rotate(30deg);}

transform

scale() 缩放

缩放 scale()函数让元素根据中心原点对对象进行缩放。scale()的默认值是1,当设置0.01-0.99之间的任何值时,将使元素缩小;设置大于1的任何值时,将使元素放大。

缩放 scale 具有三种情况:
1、scale(X,Y),使元素水平方向和垂直方向同时缩放。如果没有设置Y值,则表示X/Y两个方向的缩放倍数是一样的。

/*表示将元素放大1.5倍*/
div{transform:scale(1.5);}
/*表示水平镜像*/
div{transform:scale(-1,1);}
/*表示垂直镜像*/
div{transform:scale(1,-1);}

transform
2、scaleX(x),表示元素仅水平方向缩放。
transform
3、scaleY(y),表示元素仅垂直方向缩放。
transform

translate() 位移

translate()函数可以将元素向指定的方向移动,类似于 position 中的 relative。或以简单的理解为,使用 translate()函数,可以把元素从原来的位置移动,而不影响页面上的其他的元素。

translate(),分为三种情况:

1、transltate(x,y),水平方向和垂直方向同时移动。

div{transform:translate(100px,20px);}

向左移动100px,向下移动20px。
transform
2、translateX(x),仅水平方向移动。

div{transform:translateX(100px);}

向左移动100px。
transform
3、translateY(y),仅垂直方向移动。

div{transform:translateY(20px);}

transform

skew() 扭曲

扭曲 skew()函数能够让元素倾斜显示。它可以将一个对象以其中心位置围绕着 X 轴和 Y 轴 按照一定的角度倾斜。这与 rotate()函数的旋转不同,rotate()函数只是旋转,而不会改变元素的形状。skew()函数不会旋转,而只会改变元素的形状。

skew()具有三种情况:

1、skew(x,y),使元素在水平和垂直方向按一定的角度值进行扭曲变形。第一个参数对应 X 轴,第二个参数对应 Y 轴。如果未设置第二个参数,则值为 0,表示Y 轴方向上无斜切。

div{transform:skew(30deg,10deg);}

水平方向扭曲30度,垂直方向扭曲10度。
transform
2、skewX(x),元素仅在水平方向扭曲变形。

div{transform:skewX(30deg);}

水平方向扭曲30度。
transform
3、skewY(y),元素仅在垂直方向扭曲变形。

div{transform:skewY(10deg);}

垂直方向扭曲10度。
transform

transform-origin 原点

任何一个元素都有一个中心点,默认情况之下,其中心点是居于元素 X 轴和 Y 轴的 50%处。如下图所示:
transform
在没有重置 transform-origin 改变元素原点位置的情况下,CSS 变形进行的旋转、位移、 缩放,扭曲等操作都是以元素自己中心位置进行变形。但很多时候,我们可以通过 transform-origin 来对元素进行原点位置改变,使元素原点不在元素的中心位置,以
达到需要的原点位置。

transform-origin 取值和元素设置背景中的 background-position 取值类似,如下表所示:

关键词 百分比 含义
top = top center = center top 50% 0 上边的中点位置
left = left center = center left 0 或 (0 50%) 左边的中点位置
right = right center = center right 100% 或 (100% 50%) 右边的中点位置
bottom = bottom center = center bottom 50% 100% 下边的中点位置
center = center center 50% 或 (50% 50%) 元素中心点位置
top left = left top 0 0 左上顶点的位置
top right = right top 100% 0 右上顶点的位置
bottom left = left bottom 0 100% 左下顶点的位置
bottom right = right bottom 100% 100% 右下顶点的位置

示例:通过 transform-origin 改变元素原点到左上角,然后进行顺时旋转 45 度。

div{
	transform-origin: left top;
	transform: rotate(45deg);
}

transform

transition 过渡效果

早期在 Web 中要实现动画效果,都是依赖于 JavaScript 或 Flash 来完成。但在 CSS3 中新 增加了一个新的模块 transition,它可以通过一些简单的 CSS 事件来触发元素的外观变化,让效果显得更加细腻。简单点说,就是通过鼠标的单击、获得焦点,被点击或对元素任何改变中触发,并平滑地以动画效果改变 CSS 的属性值。

在 CSS 中创建简单的过渡效果可以从以下几个步骤来实现:

1、在默认样式中声明元素的初始状态样式;
2、声明过渡元素的最终状态样式,比如悬浮状态;
3、在默认样式中通过添加过渡函数来完成效果;

语法:
transition: property duration timing-function delay;

子属性的含义如下:

属性 含义
transition-property css属性名称 或者 all 指定过渡或动态模拟的 CSS 属性
transition-duration 时间长度 指定完成过渡所需的时间
transition-timing-function 过渡函数名称 指定过渡函数
transition-delay 时间长度 指定开始出现的延迟时间

transition-property 属性名称

transition-property 用来指定过渡动画的 CSS 属性名称,而这个过渡属性只有具备一个中点值的属性(需要产生动画的属性)才能具备过渡效果,其对应具有过渡的 CSS 属性主要有:
当“transition-property”属性设置为 all 时,表示的是所有中点值的属性。

具有过渡的 CSS 属性 具有过渡的 CSS 属性
border-width border-color
bottom left
background-color background-position
font-size font-weight
width height
margin padding
opacity color
outline text-shadow

当鼠标滑过时,改变div的背景颜色:

div {
	width: 200px;
	height: 200px;	
	background-color:red;
	margin: 20px auto;		
	transition:background-color .5s ease .1s;
}
div:hover {
	background-color: orange;	
}

transition-duration 过渡时间

用来设置一个属性过渡到另一个属性所需的时间,也就是从旧属性过渡到新属性花费的时间长度,俗称持续时间。

transition-timing-function

指的是过渡的“缓动函数”。主要用来指定浏览器的过渡速度,以及过渡期间的操作进展情况,值可以是以下几种函数:
transform
更多的值可以参考:https://cubic-bezier.com/

transition-delay 延迟时间

transition-delay 属性和 transition-duration 属性极其类似,不同的是 transition-dur ation 是用来设置过渡动画的持续时间,而 transition-delay 主要用来指定一个动画开始执行的时间,也就是说当改变元素属性值后多长时间开始执行。
有时我们想改变两个或者多个 css 属性的 transition 效果时,只要把几个 transition 的声明串在一起,用逗号(“,”)隔开,然后各自可以有各自不同的延续时间和其时间的速率变换方式。但需要值得注意的一点:第一个时间的值为 transition-duration,第二个为 transition-delay。

案例:通过 transition 属性将一个宽度200px,高度200px 的橙色容器,在鼠标滑过时,过渡到宽度300px,高度300px 的红色。整个过渡 0.1s 后触发,并且整个过渡持续 0.3s。

div {
	width: 200px;
	height: 200px;
	background-color: orange;
	transition: all .3s ease-in .1s;
}
div:hover {
	width: 300px;
	height: 300px;
	background-color: red;
}
发布了130 篇原创文章 · 获赞 46 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Charissa2017/article/details/104646462
今日推荐