资讯专栏INFORMATION COLUMN

CSS:选择器

Jenny_Tong / 2898人阅读

摘要:相邻兄弟选择器也一样。提示当时,会在除第一个之外的所有生效。在定义中,必须被置于之后,才是有效的。和称为链接伪类,只能应用于锚元素和称为动态伪类,理论上可以用于任何元素。注意,伪元素选择器选择出来的部分不在里,也不能对其绑定事件。

0. 通用选择器
* { margin: 0; padding: 0; }
1. 元素选择器
p { line-height: 1.5em; }
h2 { color: #696969; }
2. id 和 类选择器

#id .class

3. 关系选择器

A B:后代选择器 (所有后代)
A > B:子选择器(直接后代)
A + B:相邻兄弟选择器(AB为兄弟,仅紧邻 A 的 B 生效)
A ~ B:一般兄弟选择器(A 之后的所有 B 兄弟生效)

注意:子选择器:IE 7 中如果父元素和子元素之间有 HTML 注释,会出现问题。相邻兄弟选择器也一样。
提示:当 li+li 时,会在除第一个 li 之外的所有 li 生效。

4. 属性选择器

1、A[attr]:定位具有属性 attr 的任何元素 A:

input[required] { border:1px solid #f00;}
/* 必填属性"required"的input */

2、A[attr="val"]完全匹配,定位具有属性 attr 且属性值为 val 的任何元素 A:

input[type="password"] {border:1px solid #aaa;}

3、A[attr|="val"]:定位具有属性 attr 且属性值为 val,或以 "val-" 开头 的任何元素 A:

p[class|="a"] {color:#333;} 
/* class="a" 以及 class="a-b") */

4、A[attr~="val"]:该选择器定位具有属性 attr 且属性值为 完整 "val" 的任何元素 A:

div[title~="english"] {color:#f88;} 
/* title="english" 以及 title="chinese english" */

5、A[attr*="val"]:定位具有属性 attr 且属性值任意位置 包含 "val" 字符串 的元素 A,val 可以是一个完整的单词,也可以是一个单词中的一部分:

a[title*="link"] {text-decoration:underline;} 
/* title="aaalinkzzz" */

6、A[attr^="val"]:定位具有属性 attr 且属性值 以 "val" 开头 的任何元素 A:

div[class^="a"] {color:#666;} 
/* class="a"、class="abc" 以及 class="abc zzz" */
/* 但 class="zzz abc" 不是 */

7、A[attr$=val]:该选择器与 A[attr^=val] 正好相反,定位具有属性 attr 且属性值 以 "val" 结尾 的任何元素 A:

div[class$="a"] {color:#f00;}
/* class="nba"、class="cba" 以及 class="cn cba" */
/* 但 class="cba cn" 不是 */

注意:IE6 不支持属性选择器。

5. 伪类 1、锚伪类
a:link {color: red}    /* 未访问的链接 */
a:visited {color: green}    /* 已访问的链接 */
a:hover {color: blue}    /* 鼠标移动到链接上 */
a:active {color: yellow}    /* 选定的链接,鼠标左击不放 */

提示

在 CSS 定义中,:hover 必须被置于 :link:visited 之后,才是有效的。

在 CSS 定义中,:active 必须被置于 :hover 之后,才是有效的。

:link:visited 称为链接伪类,只能应用于锚元素;:hover:active:focus 称为动态伪类,理论上可以用于任何元素。

2、伪类与 CSS 类

伪类可以与 CSS 类配合使用:

a.red:visited {color:#FF0000;}
3、:focus

:focus 向拥有键盘输入焦点的元素添加样式。

Any element (most commonly s and