8.22
1.过渡
为了添加某种效果可以从一种样式转变到另一个的时候,让效果显得更加细腻。
1.1.常用的浏览器前缀
CSS3的浏览器私有属性前缀是一个浏览器生产商经常使用的一种方式。它暗示该CSS属性或规则尚未成为W3C标准的一部分。 浏览器私有属性前缀是为了解决浏览器的兼容问题,当一个属性成为标准,并且被Firefox、Chrome等浏览器的最新版普遍兼容的时候就不再使用了
常见的前缀如下表所示:
浏览器名称 | 内核 | 私有前缀 |
Chrome Safari | webkit | -webkit- |
Firefox | gecko | -moz- |
Opera | presto | -o- |
IE | trient | -ms- |
1.2. 过渡属性
具体属性见下表
属性 | 描述 |
transition | 简写属性,用于在一个属性中设置四个过渡属性 |
transition-property | 规定应用过渡的 CSS 属性的名称 |
transition-duration | 定义过渡效果花费的时间。默认是 0 |
transition-timing-function | 规定过渡效果的时间曲线。默认是 "ease" |
transition-delay | 规定过渡效果何时开始。默认是 0 |
其中transition-timing-function的属性值比较特殊具体见下表
值 | 描述 |
linear | 规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1))。 |
ease | 规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezier(0.25,0.1,0.25,1))。 |
ease-in | 规定以慢速开始的过渡效果(等于 cubic-bezier(0.42,0,1,1))。 |
ease-out | 规定以慢速结束的过渡效果(等于 cubic-bezier(0,0,0.58,1))。 |
ease-in-out | 规定以慢速开始和结束的过渡效果(等于 cubic-bezier(0.42,0,0.58,1))。 |
cubic-bezier(n,n,n,n) | 在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值【立方贝塞尔曲线函数】 |
示例
<style>
div{
width: 100px;
height: 100px;
background-color: aquamarine;
/*鼠标离开时缓缓恢复*/
transition:width 3s ease 0.12s;
}
div:hover{
width: 500px;
/* 过渡的属性 */
/* transition-property: width;*/
/*过渡的时间 */
/* transition-duration: 3s; */
/* 过渡的速度 */
/*transition-timing-function: ease; */
/*是否添加延迟 */
/*transition-delay: 0; */
/*合成 */
transition:width 3s ease 0.12s;
}
</style>
<div></div>
2.2D效果
2.1.平移
语法:translate(X,Y),既可以为正值,也可以为负值(向下、向右为正方向)
注意:尽量不要对元素本身设置当前这个属性,否则图片会一直跳,原因:悬浮时图片的位置发生了改变
<style>
div{
width: 100px;
height: 100px;
background-color: antiquewhite;
transition: all 2s;
}
button:hover+div{
transform: translate(300px,0);
}
</style>
<button>鼠标悬浮</button>
<div></div>
2.2.旋转
语法:transform:rotate(角度) 角度:单位deg 正值:顺时针旋转 负值:逆时针旋转
注意:inline行级元素是不能直接旋转的
<style>
div{
width: 100px;
height: 100px;
background-color: antiquewhite;
transition: all 2s;
}
button:hover+div{
/* 旋转 */
transform: rotate(360deg)
}
</style>
<button>鼠标悬浮</button>
<div></div>
2.3.缩放
语法:transform:scale(x,y) x:表示x轴的缩放比例 y:表示y轴的缩放比例 x,y 值分别为原有元素宽高的倍数。 1为不缩放,大于1放大,小于1缩小
当为负值时,将会沿x轴或y轴进行翻转 当括号内两个数相同时,可以只写一个值代替。 如果只想扩大x轴或者y轴,那么属性为scaleX(n)和scaleY(n) transform-origin 影响变换方向。
<style>
img{
transition: all 2s;
}
button:hover+img{
/* 缩小 */
transform: scale(0.5);
}
</style>
<button>鼠标悬浮</button>
<img src="../images/1.jpg" alt="">
2.4.倾斜
语法:transform:skew(x-angle,y-angle)
该元素会以横向(X轴)和垂直(Y轴)为参考确定角度; 如果只想沿x轴或者y轴进行倾斜,那么属性为skewX(n)和skewY(n)
2.5.旋转中心点
任何一个元素都有一个中心点,默认情况之下,其中心点是居于元素X轴和Y轴的50%处。 在没有transform-origin改变元素原点位置的情况下,CSS变形进行的旋转、缩放,扭曲等操作都是以元素自己中心位置进行变形。 如果实现过渡动画,则变换中心点应该在元素初始CSS
以下为几个常用的中心点的关键词与百分比转化