一. 伪元素选择器
在内容元素的前后插入额外的元素或者样式,但是这些元素并不会在文档中生成,很适合一些没有必要专门用标配元素元素渲染的效果,如:遮罩层!!! 、Icon图标....
伪元素 | 描述 |
---|---|
::after | 作为选中元素的第一个子元素。 |
::before | 作为选中元素的最后一个子元素。 |
::first-letter | 选中块元素 第一行的第一个字母,应用样式。 |
::first-line | 选中块元素 的第一行,应用样式。 |
::selection | 应用于文档中被用户选中的部分,如使用鼠标选中文本。 |
::file-selector-button | 代表input(file) 标签按钮,用来改变该按钮样式。 |
::marker | 应用于list-item元素上的标记点的样式。 |
::slotted | 用于选定那些被放在HTML模板中的元素。 |
::part | 应用于Web components中shadow-dom的任何匹配part属性的元素。 |
栗子1:
<div class="province">
<span>中国中部的省份</span>
<ul>
<li>湖北</li>
<li>湖南</li>
</ul>
<input type="file" />
</div>
.province::first-letter {
color: #f00;
font-size: 20px;
}
.province::before {
content: '选择'
}
::selection {
background-color: #ff0;
}
li::marker {
color: #f00;
}
input::file-selector-button {
border: 1px solid #f00;
font-size: 20px;
border-radius: 5px;
}
栗子2:遮罩层
<div class="box">
hhh
</div>
.box{
position: relative;
width: 300px;
height: 300px;
}
.box::after{
content: "";
position: absolute;
top:0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0,0,255,.5);
}
注意:
-
伪元素 可以被理解为,原元素的子元素,所以可以采用
子绝父相
的定位方式来使遮罩层到达正确的位置!!! -
伪元素
默认为行内样式
,但如上给它设置了width:100% ; height:100% 却生效了。!!
因为: 行内元素进行绝对(absolute),固定(fixed)定位后会变成块级元素!!
二. 伪类选择器
伪类选择器是把已经存在的元素选出来,给它加上特殊的样式,不会凭空创建出新元素!!!常用于:
鼠标经过
、选特殊(第几个)孩子
<1> 常见伪类选择器
(1) 动态伪类选择器
- :link。元素被定义了超链接但并未被访问过
- :visited。元素被定义了超链接并已被访问过
- :active。元素被激活
- :hover。鼠标悬停 *
- :focus。元素获取焦点 *
(2) 针对 form 表单的
- :checked。选中的复选按钮或者单选按钮表单元素
- :enabled。所有启用的表单元素
- :disabled。所有禁用的表单元素
(3) 关于 DOM 结构的
- :fisrt-child。父元素的第一个子元素
- :last-child。父元素的最后一个子元素的元素
- :root。元素所在文档的根元素。在 HTML 文档中,根元素始终是 html,此时该选择器与 html 类型选择器匹配的内容相同
- :nth-child(n)。父元素的第 n 个子元素。其中 n 可以是整数(1,2,3)、关键字(even,odd)、也可以是公式(2n+1),而且 n 值起始值为 1,而不是 0。
- :nth-last-child(n):父元素的倒数第 n 个子元素。此选择器与 :nth-child(n) 选择器计算顺序刚好相反,但使用方法都是一样的,其中 :nth-last-child(1) 始终匹配最后一个元素,与 last-child 等同。
- :nth-of-type(n) 。父元素内具有指定类型的第 n 个元素
- :nth-last-of-type(n)。父元素内具有指定类型的倒数第 n 个元素
- :first-of-type。父元素内具有指定类型的第一个元素,与 nth-of-type(1) 等同
- :last-of-tye 。父元素内具有指定类型的最后一个元素,与 :nth-last-of-type(1) 等同
- :only-child 。父元素只包含一个子元素,且该子元素匹配元素
- :only-of-type。选择父元素只包含一个同类型子元素,且该子元素匹配选择元素
- :empty。选择没有子元素的元素,而且该元素也不包含任何文本节点
栗子1:
div:hover{
background : red;
}
栗子2:
.box span:nth-child(2){
background : red;
}