:nth-child
<style>
p:nth-child(3){
color: red;
}
</style>
</head>
<body>
<div>
<p>1</p>
<p>2</p>
<a href="#"></a>
<p>3</p>
<p>4</p>
<p>5</p>
</div>
</body>
p:nth-child(3){
color: red;
}
- 该段css的意思并不是:
第三个p标签为红色
- 而是:选择body下p标签的兄弟元素的第三个,然后再去确定它是不是p标签,如果是p标签那就变红,也就是是只有满足两个条件才会变红
- 第三个元素
- 同时是p标签
input不支持伪元素
- 从元素本身:
- input元素的内容模型为空,没有独立的闭合标签,无法容纳别的标签作为自身的子元素
- 从选择器本身:before{content:””;} 和 :after{content:””;}
- :before和:after伪元素指定生成的内容的样式和位置。
- -:before和:after伪元素指定了
一个元素文档树内容之前和之后的内容
。'content’属性,与这些伪元素联用,指定了插入的内容。 - 一个元素文档树内容之前和之后的内容
就是指这个元素是要可以插入内容的,也就是说这个元素要是一个容器
- 从浏览器本身
- input,img,iframe等元素都不能包含其他元素,所以不能通过伪元素插入内容。但是在Chrome 中checkbox和radio可以插入,通过浏览器的解析,这两种类型在浏览器中解析后的结构为对标签,而这又与第一点矛盾,所以这应该是浏览器的Bug了,或者就是在浏览器解析时,结构已经违背了html标签的规范