主要总结一下CSS3动画中这几块:
transition(过渡),animation(动画),transform转换(rotate,translate,scale,skew,matrix)
1、transition(过渡)
img{ height:15px; width:15px; }img:hover{ height: 450px; width: 450px; }
这个变化是没有时间轴的,都是立即完成,当加入transiton后:
img{ transition: 1s 1s height ease; }
简写形式,可以单独定义成各个属性:
img{ transition-property: height; //高度过渡 transition-duration: 1s; transition-delay: 1s; //延迟一秒 transition-timing-function: ease; //逐渐变慢}
目前,各大浏览器(包括IE 10)都已经支持无前缀的transition,所以transition已经可以很安全地不加浏览器前缀。
2、animation(动画)
CSS Animation需要指定动画一个周期持续的时间,以及动画效果的名称。
div:hover { animation: 1s rainbow; }
上面代码表示,当鼠标悬停在div元素上时,会产生名为rainbow的动画效果,持续时间为1秒。为此,我们还需要用keyframes关键字,定义rainbow效果。
@keyframes rainbow { 0% { background: #c00; } 50% { background: orange; } 100% { background: yellowgreen; } }
上面代码表示,rainbow效果一共有三个状态,分别为起始(0%)、中点(50%)和结束(100%)。如果有需要,完全可以插入更多状态。
也可以指定动画具体播放的次数,比如3次,无限循环就用infinite:
div:hover { animation: 1s rainbow 3; }
keyframes关键字用来定义动画的各个状态,它的写法相当自由,0%可以用from代表,100%可以用to代表,因此之前的代码等同于下面的形式:
@keyframes rainbow { from { background: #c00 } 50% { background: orange } to { background: yellowgreen } }
3、transform转换
translate移动
div{transform: translate(50px,100px);-ms-transform: translate(50px,100px); /* IE 9 */-webkit-transform: translate(50px,100px); /* Safari and Chrome */-o-transform: translate(50px,100px); /* Opera */-moz-transform: translate(50px,100px); /* Firefox */}
值 translate(50px,100px) 把元素从左侧移动 50 像素,从顶端移动 100 像素。
rotate旋转
div{transform: rotate(30deg);-ms-transform: rotate(30deg); /* IE 9 */-webkit-transform: rotate(30deg); /* Safari and Chrome */-o-transform: rotate(30deg); /* Opera */-moz-transform: rotate(30deg); /* Firefox */}
值 rotate(30deg) 把元素顺时针旋转 30 度。
scale改变宽高
div{transform: scale(2,4);-ms-transform: scale(2,4); /* IE 9 */-webkit-transform: scale(2,4); /* Safari 和 Chrome */-o-transform: scale(2,4); /* Opera */-moz-transform: scale(2,4); /* Firefox */}
值 scale(2,4) 把宽度转换为原始尺寸的 2 倍,把高度转换为原始高度的 4 倍。
skew围绕X轴或Y轴翻转
div{transform: skew(30deg,20deg);-ms-transform: skew(30deg,20deg); /* IE 9 */-webkit-transform: skew(30deg,20deg); /* Safari and Chrome */-o-transform: skew(30deg,20deg); /* Opera */-moz-transform: skew(30deg,20deg); /* Firefox */}
值 skew(30deg,20deg) 围绕 X 轴把元素翻转 30 度,围绕 Y 轴翻转 20 度。
matrix() 方法把所有 2D 转换方法组合在一起。需要六个参数,包含数学函数,允许您:旋转、缩放、移动以及倾斜元素。
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); /* IE 9 */-moz-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Firefox */-webkit-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Safari and Chrome */-o-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Opera */}
作者:JokerPeng
链接:https://www.jianshu.com/p/33a341e1b381
共同学习,写下你的评论
评论加载中...
作者其他优质文章