css层级选择器理论{#ek)
- E:first-child : 匹配的是E元素,E元素是父元素的第一个子元素
说明:利用 :first-child 这个伪类,只有当元素是另一个元素的第一个子元素时才能匹配。例如,p:first-child 会选择作为另外某个元素第一个子元素的所有 p 元素。一般可能认为这会选择作为段落第一个子元素的元素,但事实上并非如此,如果要选择段落的第一个子元素,应当写为 p > *:first-child。
- E:last-child : 匹配的是E元素,E元素是父元素的最后一个子元素
- E:nth-child(n): 匹配的是E元素,且E元素是父元素的正数第n个子元素
- E:nth-last-child(n): 匹配的是E元素,且E元素是父元素的倒数第n个子元素
- E:first-of-type: 匹配E元素,在所有的E元素中选择第一个子元素为E的元素
- E:last-of-type: 匹配E元素,在所有的E元素中选择倒数第一个子元素为E的元素
- E:nth-of-type(n): 匹配E元素,在所有的E元素中选择正数第n个子元素为E的元素
- E:nth-last-of-type(n): 匹配E元素,在所有的E元素中选择倒数第n个子元素为E的元素
nth中n的用法
- 数字
- odd: 奇数
- even: 偶数
- n+8: 8以后的
- -n+3: 前3个
代码展示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>层级选择器</title>
<style>
ul{width: 100px;}
/* 1,7亮 */
li:first-child{color: blue;}
/* 9亮 6不亮是因为ul标签最后一个是ol,不是li*/
li:last-child{color: red;}
/* nth-child先数数再看是否匹配li */
li:nth-child(5){color: yellow;}
/* cc亮 */
p:nth-child(6){color: chartreuse;}
/* 8,6亮 ,在ul中6是倒数第二*/
li:nth-last-child(2){color: cyan;}
/* 没反应,因为ul和ol倒数第三都是p标签 */
li:nth-last-child(3){color: darkgoldenrod;}
/* 有过滤的功能 */
/* 1,7背景亮 */
li:first-of-type{background-color: rgb(158, 114, 49);}
/* 9,6亮,因为ul标签中过滤掉最后一个ol,选中li */
li:last-of-type{background-color: yellowgreen;}
/* 3,8亮 */
li:nth-of-type(2){background-color: pink;}
/* 4,7亮 */
li:nth-last-of-type(3){background-color: violet;}
/* li标签从第三个开始往后字体都相对于父元素都加倍大 */
li:nth-of-type(n+3){font-size: 2em;}
/* 1,7斜体 */
li:nth-child(-n+2){font-style: italic;}
</style>
</head>
<body>
<ul>
<li>1</li>
<p>bb</p>
<li>3</li>
<li>4</li>
<li>5</li>
<p>cc</p>
<li>6</li>
<ol type="I">
<li>7</li>
<p>aa</p>
<li>8</li>
<li>9</li>
</ol>
</ul>
</body>
</html>
![]()