动态伪类 | 起作用的元素 | 描述 |
:link | 只有链接 | 未访问的链接 |
visited | 只有链接 | 访问过的链接 |
:hover | 所有元素 | 鼠标经过元素 |
:active | 所有元素 | 鼠标点击元素 |
:focus | 所有可被选中的元素 | 元素被选中 |
None | 所有元素 | 所有元素的默认状态 |
当然,我们也希望变换回到默认的链接颜色,那么我们可以添加一个变换到:link (以及:visited)伪类上,并在它褪去之前添加一个简单的延迟(十分之一秒) :
- 1. a:hover {
- 2. color: red;
- 3. -webkit-transition: color .25s linear;
- 4. transition: color .25s linear;
- 5. }
因为一个变换就是一个CSS属性,如果你在同一个CSS规则中添加多个变换的实例,那么***的那个将会覆盖前面的,而不是添加它们。所以在下面的规则中,唯一的变换将是背景色彩:
- 1. a:link, a:visited {
- 2. color: blue;
- 3. -webkit-transition: color .25s linear .1s;
- 4. transition: color .25s linear .1s;
- 5. }
当然,这并不是说,不能添加多重变换——多重变换可以在同一个变换属性定义中用逗号隔开:
- 1. a:hover {
- 2. color: red;
- 3. background-color: rgb(235,235,185);
- 4. -webkit-transition: color .25s linear;
- 5. ransition: color .25s linear;
- 6. -webkit-transition: background-color
- 7. .15s linear .1;
- 8. transition: background-color .15s linear .1;
- 9. }
这条定义将产生色彩和背景色的双重变换。 什么可以被变换? 几乎所有的有色彩、大小或位置等组件的CSS属性,包括许多新添加的CSS 3属性, 都可以应用变换。一个值得注意的例外是box-shadow。 来自W3C的变换的说明,这里是一个可以赋予变换的CSS属性的列表,附带转变的对象,我也高亮了一些比较有用的属性。
- 1. *:link, *:visited, *:hover, *:active, *:focus {
- 2 .-webkit-transition:
- 3. color .25slinear,
- 4. background-color .25s linear,
- 5. border-color .25s linear;
- 6. transition:color .25s linear,
- 7. background-color .25s linear,
- 8. border-color .25s linear;
- 9. }
CSS属性 | 改变的对象 |
background-color | 色彩 |
background-image | 只是渐变 |
background-position | 百分比,长度 |
border-bottom-color | 色彩 |
border-bottom-width | 长度 |
border-color | 色彩 |
border-left-color | 色彩 |
border-left-width | 长度 |
border-right-color | 色彩 |
border-right-width | 长度 |
border-spacing | 长度 |
border-top-color | 色彩 |
border-top-width | 长度 |
border-width | 长度 |
bottom | 百分比,长度 |
color | 色彩 |
crop | 百分比 |
font-size | 百分比,长度 |
font-weight | 数字 |
grid-* | 数量 |
height | 百分比,长度 |
left | 百分比,长度 |
letter-spacing | 长度 |
line-height | 百分比,长度,数字 |
margin-bottom | 长度 |
margin-left | 长度 |
margin-right | 长度 |
margin-top | 长度 |
max-height | 百分比,长度 |
max-width | 百分比,长度 |
min-height | 百分比,长度 |
min-width | 百分比,长度 |
opacity | 数字 |
outline-color | 色彩 |
outline-offset | 整数 |
outline-width | 长度 |
padding-bottom | 长度 |
padding-left | 长度 |
padding-right | 长度 |
padding-top | 长度 |
right | 百分比,长度 |
text-indent | 百分比,长度 |
text-shadow | 阴影 |
top | 百分比,长度 |
vertical-align | 百分比,长度,关键词 |
visibility | 可见性 |
width | 百分比,长度 |
word-spacing | 百分比,长度 |
z-index | 正整数 |
zoom | 数字 |
名称 | 如何工作 |
cubic-bezier(x1, y1, x2, y2) | X 和 Y 值在0到1之间,以定义用于Time function的贝塞尔曲线的形状 |
linear | 均速 |
ease | 逐渐慢下来 |
ease-in | 加速(渐入) |
ease-out | 减速(淡出) |
ease-in-out | 加速然后减速 |
一个反对全部变换,同时明确反对使用全体选择器作为CSS reset的观点是,将一个样式用到页面的所有元素会减缓页面的渲染。然而,我并没有发现任何有关与此的证据。有人知道吗? CSS 变换就这么简单,它并不难理解,而且你也不用些大量的JS脚本来实现它,这很方便实用,多做几次练习,你就可以熟练的使用它了。 译注:本文原文题目为 CSS transitions 101,101这个数字比较不好理解,其实美国大学***门课程通常编号为101,所以101一般表示入门、初级的意思。另外关于 transition 这个词的翻译,我之前是翻译成“转换”,但是这个翻译很别扭,在twitter上和 @gaowhen、@ghostzhang、@ivane、@hiwanz、@cnjoel等人讨论后,觉得翻译成“变换”更合适一些,多谢各位。——神飞 【编辑推荐】
- 1. *:link, *:visited, *:hover, *:active, *:focus {
- 2 .-webkit-transition:
- 3. color .25slinear,
- 4. background-color .25s linear,
- 5. border-color .25s linear;
- 6. transition:color .25s linear,
- 7. background-color .25s linear,
- 8. border-color .25s linear;
- 9. }