三个关键属性:transform transition animation
基本知识:
1、变形Transform
1.1、缩放scale transform:scale(0.5,1.5) //水平缩小50%, 垂直扩大150%,只有一个参数时两个方向一样
1.2、倾斜skew transform:skew(30deg,30deg)//两个方向的倾斜, 只有一个参数时表示水平倾斜(左上)
1.3、移动translate transform:translate(30px,30px)//两个方向 的平移,只有一个参数时表示水平平移(右上)
1.4、旋转rotate transform:rotate(45deg) //顺时针旋转45度
注意:使用transform方法变形时,是以元素的基准点进行的, 使用transform-origin属性可改变基准点,水平方向可取left center right,垂直方向可取top center bottom
2、Transition
Transition:property duration timing-function,参数一指定对哪个参数进行平滑过渡,参数二指定多长时间内完成过度,参数三指定用什么方法进行过度
3、Animation
使用方法:
1、创建关键帧(注意:要兼容的话要加上前缀,如-webkit-等)
@keyframes 关键帧集合名{
0%{ 代码 }
50%{ 代码 }
100%{ 代码 }
}
2、在指定元素上使用关键帧
-webkit-animation-name: 关键帧名;
-webkit-animation-duration:5s;
-webkit-animation-timing-function:linear;
语法:
animation: name duration timing-function delay iteration-count direction;
值 | 描述 |
animation-name | 规定需要绑定到选择器的 keyframe 名称。 |
animation-duration | 规定完成动画所花费的时间,以秒或毫秒计。 |
animation-timing-function | 规定动画的速度曲线。 |
animation-delay | 规定在动画开始之前的延迟。 |
animation-iteration-count | 规定动画应该播放的次数,infinite表示无穷次。 |
animation-direction | 规定是否应该轮流反向播放动画。 |
animation-direction: normal|alternate;
值 | 描述 |
normal | 默认值。动画应该正常播放。 |
alternate | 动画应该轮流反向播放。 |
代码实践:
transition
transform:translate(x,y)
测试transform:scale(x,y)
测试transform:skew(x,y)
测试transform:rotate()
animation
总结:
- transition:属性名 几秒内完成 用什么样的速度完成
- transform有四种变换,通常结合transition一起使用,即将transform看作transition的属性名
- 实现变化的时机是给需要变化的box添加hover伪类,伪类样式里填写变化后的样式,原来box里填写变化前的样式
- animate的使用只需两步:
1创建关键帧,在每一帧里写需要变化的属性;
2 对要进行变化的box添加animation属性,该属性有六个值:帧名 几秒内完成 完成速度函数 延迟多久才执行 重复次数 是否需要反向执行动画(normal/alternate)
样式表文件:
.test-transition,.test-transform_translate,.test-transform_scale,
.test-transform_skew,.test-transform_rotate,.test-animate{width: 200px;height: 200px;text-align: center;line-height: 200px;background-color: #ccc;float: left;margin: 20px;border-radius: 100px;
}
.sum{font-family: '微软雅黑';width: 800px;height: 260px;background-color: #ccc;margin: 20px;float:left;
}
.test-transition{transition:background-color 2s linear;
}
.test-transition:hover{background-color: red;
}
.test-transform_translate,.test-transform_scale,
.test-transform_skew,.test-transform_rotate{transition: transform 2s linear;transform-origin:left top;
}
.test-transform_translate{transform:translate(0);
}
.test-transform_translate:hover{transform:translate(150px);
}
.test-transform_scale{transform:scale(1);
}
.test-transform_scale:hover{transform:scale(1.5);
}
.test-transform_skew{transform:skew(0);
}
.test-transform_skew:hover{transform:skew(30deg);
}
.test-transform_rotate{transform:rotate(0);
}
.test-transform_rotate:hover{transform:rotate(360deg);
}
.test-animate{animation:changecolor 4s linear infinite alternate;
}
@keyframes changecolor{0%{background-color: blue;}50%{background-color: red;}100%{background-color: green;}
}
由于是动画效果,不好演示,就不上图了,可自行copy代码到浏览器看效果