css transition
属性用于页面的元素的过渡效果,它是css3的一种属性,我们可以同它来做一些元素的动态效果。
借助于transition属性,在不使用js或者flash的技术的情况下,它可以将元素从一种样式逐渐更改为另一种样式。
语法
transition: property duration timing-function delay;
属性
以上语法transition
是一个简写的语法,也就是说它将4个属性写在一起,您也可以分开来写。比如:
transition-property: width;
transition-duration: 1s;
transition-timing-function: ease;
属性解释如下:
- transition-property:设置元素中参与过渡的属性,比如元素的宽度width,高度height;
- transition-duration(必须):过渡效果持续时间(不指定默认为0,不会有任何效果)
- transition-timing-function:设置元素过渡的动画类型;(默认值:ease)
- transition-delay:指定过渡延迟开始时间(默认为0)
我们可以一次性对元素的多个属性进行设置,比如同时设置元素的宽度和高度,transition: width 2s, height 2s;。
transition-property属性
transition-property 属性用来设置元素中参与过渡的属性名称,语法格式如下:
transition-property: none | all | property;
- none:表示没有属性参与过渡效果;
- all:表示所有属性都参与过渡效果;
- property:定义应用过渡效果的 CSS 属性名称列表,多个属性名称之间使用逗号,进行分隔。
transition-timing-function属性
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 之间 |
注意2:IE9及更早版本不支持transition属性。
例子
1)单个属性值设置的效果
<!DOCTYPE html>
<html>
<title>css transition 过渡效果 </title>
<head>
<style>
div{
width: 100px;
height: 100px;
background: orange;
-webkit-transition: width 1s; /* Safari 3.1 to 6.0 */
transition: width 1s;
}
div:hover {
width: 300px;
}
</style>
</head>
<body>
<div></div>
<p>将光标移到上面的div元素上,以查看过渡效果.</p>
</body>
</html>
效果gif:2)多个属性值设置的效果
<!DOCTYPE html>
<html>
<title>css transition 过渡效果 多个属性值 </title>
<head>
<style>
div {
padding:15px;
width: 150px;
height: 100px;
background: violet;
-webkit-transition: width 2s, height 2s, -webkit-transform 2s; /* Safari 3.1 to 6.0 */
transition: width 2s, height 2s, transform 2s;
}
div:hover {
width: 300px;
height: 200px;
-webkit-transform: rotate(360deg); /* Chrome, Safari, Opera */
transform: rotate(360deg);
}
</style>
</head>
<body>
<div><b>yxjc123.com</b><p> (将光标移到我身上以查看效果)</p></div>
</body>
</html>
效果如下,它是一个旋转的效果。