CSS转换过渡和动画
转换可以对元素进行移动、缩放、转动、拉伸。转换的效果是让某个元素改变形状,大小和位置。可以使用2D和3D来转换元素,
1 2D转换
1.1 平移 translate
根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动。
1 2 3 4 5
| div { transform: translate(50px,100px); -ms-transform: translate(50px,100px); -webkit-transform: translate(50px,100px); }
|
以上css规则:是从左边元素移动50个像素,并从顶部移动100像素。
1.2 旋转 rotate
顺时针旋转的角度。负值是逆时针旋转。
1 2 3 4 5
| div { transform: rotate(30deg); -ms-transform: rotate(30deg); -webkit-transform: rotate(30deg); }
|
以上css规则:将元素顺时针旋转30度。
1.3 缩放 scale
增加或减少的大小,取决于宽度(X轴)和高度(Y轴)的参数。
1 2 3 4 5
| div { -ms-transform:scale(2,3); -webkit-transform: scale(2,3); transform: scale(2,3); }
|
以上css规则:将元素转变宽度为原来的大小的2倍,和其原始大小3倍的高度。
1.4 倾斜 skew
包含两个参数值,分别表示X轴和Y轴倾斜的角度,如果第二个参数为空,则默认为0,参数为负表示向相反方向倾斜。
1 2 3 4 5
| div { transform: skew(30deg,20deg); -ms-transform: skew(30deg,20deg); -webkit-transform: skew(30deg,20deg); }
|
以上css规则:将元素在X轴和Y轴上倾斜20度30度。
1.5 以上方法的缩写 matrix
matrix 方法有六个参数,包含旋转,缩放,移动(平移)和倾斜功能。
表示以下函数:matrix( scaleX(), skewY(), skewX(), scaleY(), translateX(), translateY() )
1 2 3 4 5
| div { transform:matrix(0.866,0.5,-0.5,0.866,0,0); -ms-transform:matrix(0.866,0.5,-0.5,0.866,0,0); -webkit-transform:matrix(0.866,0.5,-0.5,0.866,0,0); }
|
2 CSS 过渡
2.1 transition 使某种想过转变到另一种效果。
- transition-property 应用过渡的CSS属性。
- transition-duration 过渡的CSS时间,默认是0。
- transition-timing-function 规定过渡效果的时间曲线。默认是 “ease”。
- transition-delay 规定过渡效果何时开始。默认是 0 (立即开始)。
1 2 3 4 5 6 7 8 9 10 11
| div { transition-property: width; transition-duration: 1s; transition-timing-function: linear; transition-delay: 2s; -webkit-transition-property:width; -webkit-transition-duration:1s; -webkit-transition-timing-function:linear; -webkit-transition-delay:2s; }
|
2.2 transition 以上属性简写
1 2 3 4 5
| div { transition: width 1s linear 2s; -webkit-transition:width 1s linear 2s; }
|
3 CSS 动画
动画是使元素从一种样式逐渐变化为另一种样式的效果,可以改变任意多的样式任意多的次数。
使用百分比来规定变化发生的时间,或者使用关键字from
和to
等同于0%和100%。为了有更好的体验,应该使用定义0%和100%。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| div { animation: myfirst 5s; -webkit-animation: myfirst 5s; }
@keyframes myfirst { 0% {background: red;} 25% {background: yellow;} 50% {background: blue;} 100% {background: green;} } @-webkit-keyframes myfirst /* Safari 与 Chrome */ { 0% {background: red;} 25% {background: yellow;} 50% {background: blue;} 100% {background: green;} }
|
3.1 animation 相关属性
- @keyframes 规定动画规则。
- animation-name 规定 @keyframes 动画的名称。
- animation-duration 规定动画完成一个周期所花费的秒或毫秒。默认是 0。
- animation-timing-function 规定动画的速度曲线。默认是 “ease”。
- animation-fill-mode 规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。
- animation-delay 规定动画何时开始。默认是 0。
- animation-iteration-count 规定动画被播放的次数。默认是 1。
- animation-direction 规定动画是否在下一周期逆向地播放。默认是 “normal”。
- animation-play-state 规定动画是否正在运行或暂停。默认是 “running”
3.2 设置所有属性示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| div { animation-name: myfirst; animation-duration: 5s; animation-timing-function: linear; animation-delay: 2s; animation-iteration-count: infinite; animation-direction: alternate; animation-play-state: running; -webkit-animation-name: myfirst; -webkit-animation-duration: 5s; -webkit-animation-timing-function: linear; -webkit-animation-delay: 2s; -webkit-animation-iteration-count: infinite; -webkit-animation-direction: alternate; -webkit-animation-play-state: running; }
|
简写示例
1 2 3 4 5
| div { animation: myfirst 5s linear 2s infinite alternate; -webkit-animation: myfirst 5s linear 2s infinite alternate; }
|