张登友,张登友的博客,张登友的网站——
CSS属性选择器
属性选择器的标志性符号是 []
匹配含义:
^:开头 $:结尾 *:包含
格式:
E[title]
选中页面的E元素,并且E存在 title 属性即可。E[title="abc"]
选中页面的E元素,并且E需要带有title属性,且属性值完全等于abc。E[attr~=val]
选择具有 att 属性且属性值为:用空格分隔的字词列表,其中一个等于 val 的E元素。E[attr|=val]
表示要么是一个单独的属性值,要么这个属性值是以“-”分隔的。E[title^="abc"]
选中页面的E元素,并且E需要带有 title 属性,属性值以 abc 开头。E[title$="abc"]
选中页面的E元素,并且E需要带有 title 属性,属性值以 abc 结尾。E[title*="abc"]
选中页面的E元素,并且E需要带有 title 属性,属性值任意位置包含abc。
属性选择器举例
form input[type=text]{...} /* 选择form下type属性为text的input属性 */
.attr1 a[href="./a.rmvb"]{...} /* 选择名为.attr1下href属性为"./aa.rmvb的a标签 */
.attr2 a[class~="download"]{...} /* 单独的属性值,这个属性值是以空格分隔的 */
.attr3 a[class |="download"]{...} /* 表示要么是一个单独的属性值,要么这个属性值是以“-”分隔的 */
.attr4 a[class*="download"] {} /* 表示的属性值里包含val字符并且在“任意”位置 */
.attr5 a[class^="download"] {} /* 表示的属性值里包含val字符并且在“开始”位置 */
.attr6 a[class$="download"] {} /* 表示的属性值里包含val字符并且在“结束”位置 */
结构伪类选择器
伪类选择器的标志性符号是:
CSS中有一些伪类选择器,比如:link
、:active
、:visited
、:hover
,这些是动态伪类选择器。
1、格式:(第一部分)
E:first-child
匹配父元素的第一个子元素E。E:last-child
匹配父元素的最后一个子元素E。E:nth-child(n)
匹配父元素的第n个子元素E。注意,盒子的编号是从1
开始算起,不是从0
开始算起。E:nth-child(odd)
匹配奇数E:nth-child(even)
匹配偶数E:nth-last-child(n)
匹配父元素的倒数第n个子元素E。
选择器示例
- 如果选择器写成
li:nth-child(2)
,则表示第2个li
。 - 如果选择器写成
li:nth-child(n)
,则表示所有的li
。因为此时的n
表示 0,1,2,3,4,5,6,7,8…..(当n小于1时无效,因为n = 0 也是不会选中的) - 如果选择器写成
li:nth-child(2n)
,(此处2n扥同于odd)则表示所有的第偶数个 li。 - 如果选择器写成
li:nth-child(2n+1)
,(此处2n+1扥同于even)则表示所有的第奇数个 li。 - 如果选择器写成
li:nth-child(-n+5)
,则表示前5个 li。 - 如果选择器写成
li:nth-last-child(-n+5)
,则表示最后5个 li。 - 如果选择器写成
li:nth-child(7n)
,则表示选中7的倍数。
n
表示 0,1,2,3,4,5,6,7,8…..就能理解了
2、格式:(第二部分)
E:first-of-type
匹配同类型中的第一个同级兄弟元素E。E:last-of-type
匹配同类型中的最后一个同级兄弟元素E。E:nth-of-type(n)
匹配同类型中的第n个同级兄弟元素E。E:nth-last-of-type(n)
匹配同类型中的倒数第n个同级兄弟元素E。
既然上面这几个选择器带有type
,我们可以这样理解:先在同级里找到所有的E类型,然后根据 n 进行匹配。
选择器示例
li:first-of-type
li:last-of-type
nth-of-type(odd)
匹配同类型的偶数同级兄弟元素(even为奇数, 也可以用实际的数字)nth-last-of-type(1)
匹配倒数的第1个兄弟元素
既然上面这几个选择器带有type
,可以理解为:先在同级里找到所有的E类型,然后根据 n 进行匹配。
3、格式:(第三部分)
E:empty
匹配没有任何子节点(包括空格等text节点)的元素E。E:target
匹配相关URL指向的E元素。要配合锚点使用。
选择符 | 版本 | 解释 |
---|---|---|
E:link | CSS1 | 设置超链接a在未被访问前的样式 |
E:visited | CSS1 | 设置超链接a在其他链接地址已被访问过的样式 |
E:hover | CSS1/2 | 设置元素在其鼠标悬停是的样式 |
E:active | CSS1/2 | 设置元素在被用户激活(在鼠标点击与释放之间发生的事件)是的样式 |
E:focus | CSS1/2 | 设置元素在成为输入焦点(该元素的onfocus事件发生时的样式) |
E:lang(fr) | CSS2 | 匹配使用特殊语言的E元素 |
E:not(s) | CSS3 | 匹配不含有s选择符的元素E |
E:root | CSS3 | 匹配E元素在文档的根元素 |
E:first-shild | CSS2 | 匹配父元素的第一个子元素E |
E:last-child | CSS3 | 匹配父元素的第一个子元素E |
E:only-child | CSS3 | 匹配父元素仅有的一个元素E |
E:nth-child(n) | CSS3 | 匹配父元素的第n个子元素E |
E:nth-last-child(n) | CSS3 | 匹配父元素的倒数第n个子元素E |
E:first-of-type | CSS3 | 匹配同类型中的第一个同级兄弟元素E |
E:last-of-type | CSS3 | 匹配同类型中的最后一个同级兄弟元素E |
E:only-of-type | CSS3 | 匹配同类型中的唯一的一个同级兄弟元素E |
E:nth-of-type(n) | CSS3 | 匹配同类型中的第n个同级兄弟元素E |
E:nth-last-of-type(n) | CSS3 | 匹配同类型中的倒数第n个同级兄弟元素E |
E:empty | CSS3 | 匹配没有任何子元素(包括text节点)的元素E |
E:checked | CSS3 | 匹配用户界面上处于选中状态的元素E(用于input type为radio与checkbox时) |
E:enabled | CSS3 | 匹配用户界面上处于可用状态的元素E |
E:disabled | CSS3 | 匹配用户界面上处于禁用状态的元素E |
E:target | CSS3 | 匹配相关URL指向的E元素 |
@page:first | CSS2 | 设置页面容器第一页使用的样式。仅用于@page规则 |
@page:left | CSS2 | 设置页面容器位于装订线左边的所有页面使用的样式. 仅用于@page规则 |
@page:right | CSS2 | 设置子页面位于装订线右边的所有页面使用的样式. 仅用于@page规则 |
伪元素选择器
伪元素选择器的标志性符号是 ::
。
1、格式:(第一部分)
E::before
设置在 元素E 前面(依据对象树的逻辑结构)的内容,配合content属性一起使用。E::after
设置在 元素E 后面(依据对象树的逻辑结构)的内容,配合content属性一起使用。
注: 可以添加出类似于span标签的效果; 这两个属性添加的伪元素,是行内元素,需要转换成块元素才能设置宽高。
2、格式:(第二部分)
E::first-letter
设置元素 E 里面的第一个字符的样式。E::first-line
设置元素 E 里面的第一行的样式。E::selection
设置元素 E 里面被鼠标选中的区域的样式(一般设置颜色和背景色)。E::placeholder
设置文字占位符样式
选择器示例
li::first-letter{ color: red; }
p::first-line{ color: sandybrown; }
p::selection{ background: darkgrey; color: black; }
input::placeholder{ color: gray }