CSS 选择器(selector)
前言
选择器是 CSS
重要的组成部分,它负责匹配目标 DOM
。让样式正确的渲染到 DOM
上。
通配符选择器
通配符选择器是 CSS 选择器的一种,它能匹配文档中的所有元素,无论他们的标签名称是什么。
通配符选择器用 *
符号表示。
css
* {
/* 样式规则 */
}
使用场景
通配符选择器可以用于为页面上的所有元素添加样式,常用于样式初始化,或与其他选择器组合使用。
例1:取消所有元素的外边距和内边距、设置字体样式等。
css
* {
margin: 0;
padding: 0;
font-family: Arial, sans-serif;
}
例2:与类选择器组合使用,选择 .container
下的所有子元素,设置文本颜色为 #333
。
css
.container * {
color: #333;
}
元素(标签)选择器
元素选择器是通过元素名称来选择 DOM
元素。
css
p {
/* 样式规则 */
}
类选择器
类选择器是通过类名(class
属性)来选择 DOM
元素。
css
.container {
/* 样式规则 */
}
ID选择器
类选择器是通过 id
属性来选择 DOM
元素。
css
.app {
/* 样式规则 */
}
属性选择器
属性选择器可以通过 DOM
元素上的属性来选择 DOM
元素。
- 基础使用方式
css
[name = "one"] {
/* 样式规则 */
}
html
<div name="one">one</div>
^
:以什么字符开头
css
/* 以 on 开头的元素 */
[name ^="ma"] {
/* 样式规则 */
}
html
<div name="main">main</div>
$
:以什么字符结尾
css
[name $="pper"] {
/* 样式规则 */
}
html
<div name="wrapper">wrapper</div>
*
:包含什么字符
css
[name *="sign"] {
/* 样式规则 */
}
html
<div name="sign">wrapper</div>
<p name="sign">wrapper</p>
<span name="sign">wrapper</span>
伪类选择器
伪类选择器是用在特定状态下选择元素的。伪类选择器以冒号 :
开头。
常见的伪类选择器
:hover
:当鼠标悬停在元素上时触发
css
a:hover {
color: red;
}
:active
:当元素被激活(如点击按钮时)时触发
css
button:active {
background-color: #ccc;
}
:focus
:当元素获得焦点时触发
css
input:focus {
border-color: red;
}
visited
:用于用户已经访问过的链接
css
a:visited {
color: red;
}
:checked
:用于选中的复选框和单选按钮
input:checked + label{
font-weight: bold;
}
伪元素选择器
伪元素选择器用于选择元素的特定部分,而不是元素本身。伪元素选择器以两个冒好 ::
开头(为了与伪类区分开来)。但在需多浏览器中也可以使用单冒号 :
兼容旧版本。
常见的伪元素选择器
::before
:在元素之前插入内容::after
:在元素之后插入内容
css
p::before {
content: "Note: ";
font-weight: bold;
}
p::after {
content: " (end of note)";
color: gray;
}
::first-letter
:选择块级元素的第一个字母
css
p::first-letter {
font-size: 2em;
font-weight: bold;
}
::first-line
:选择块级元素的第一行
css
p::first-letter {
font-size: 2em;
font-weight: bold;
}
::selection
:选择用户选择的文本
css
::selection {
background: yellow;
color: black;
}
::placeholder
:选择输入字段中(如:input)的占位符文本
css
input::placeholder {
color: gray;
}
CSS 权重
权重由高至低:
!important
:Infinity行间样式
:1000id选择器
:100class/属性/伪类
:10元素(标签)/伪元素
:1通配符 *
:0
权重的进制为 256
进制。
当权重相同时后面的样式会覆盖前面的样式。