CSS 选择器
样式优先级
- 行内样式 > Id > Class > Tag > *
- 元素声明的样式 > 浏览器默认样式 > 元素继承的样式
- !important 无敌
选择器
元素选择器
- ID选择器
#id {} - 类选择器
.class {} - 标签选择器
div {} - 组合选择器
.header, .footer {}
关系选择器
- 后代选择器
div p {} - 父子选择器
div > p {} - 相邻选择器
.test + p {}查找.test后的第一个p标签 - 兄弟选择器
.test ~ p {}查找.test后所有的同级p标签
属性选择器
[class]查找有class属性的标签p[class]查找有class属性的p标签p[class="header"]查找有class属性,并且class属性只能是header的p标签1
<p class="header"></p>
p[class~="header"]查找有class属性,并且class的多个属性中有header即可的p标签1
2<p class="header"></p>
<p class="header nav"></p>p[class^="header"]查找有class属性,并且class必须以header开头的p标签1
2
3<p class="header"></p>
<p class="headerabc"></p>
<p class="header-title"></p>p[class$="header"]查找class属性,并且class必须以header结尾的p标签1
2
3<p class="header"></p>
<p class="xyzheader"></p>
<p class="nav-header"></p>p[class*="header"]查找class属性,并且class属性值中包含header的p标签1
2
3
4
5<p class="header"></p>
<p class="xyzheader"></p>
<p class="headerabc"></p>
<p class="header-title"></p>
<p class="abcheader-title"></p>p[class|="header"]查找有class属性,并且class属性值是header,或者header-开头的p标签1
2
3<p class="header"></p>
<p class="header-title"></p>
<p class="headerabc">不是以header-开头,匹配不到</p>
伪类选择器
链接伪类选择符
a:link链接未点击之前的样式a:visited链接点击之后的样式a:hover鼠标移入链接的样式a:active鼠标按下去时的样式:hover 和 :active 可以针对所有的标签做鼠标移入和鼠标点击的样式设置
结构性伪类选择器
:first-child匹配父元素的第一个子元素:last-child匹配父元素的最后一个子元素:only-child匹配父元素仅有的一个子元素:nth-child(n)匹配父元素的第n个子元素E,假设该子元素不是E,则选择符无效:nth-last-child(n)匹配父元素的倒数第n个子元素E,假设该子元素不是E,则选择符无效:first-of-type匹配同类型中的第一个同级兄弟元素:last-of-type匹配同类型中的最后一个同级兄弟元素:only-of-type匹配同类型中的唯一的一个同级兄弟元素:nth-of-type(n)匹配同类型中的第n个同级兄弟元素:nth-last-of-type(n)匹配同类型中的倒数第n个同级兄弟元素:root匹配元素在文档的根元素;在HTML中,根元素永远是HTML:empty匹配没有任何子元素的元素body *:empty {}奇数
n偶数2n
奇数odd偶数even用户界面(UI)元素状态伪类选择器
:checked匹配用户界面上处于选中状态的元素(用于input框type 为 radio 与 checkbox):enabled匹配用户界面上处于可用状态的元素:disabled匹配用户界面上处于禁用状态的元素目标伪类选择符
:target匹配相关URL指向的元素(通过锚点可以指向的目标)用户行为伪类选择符
:focus匹配input聚焦时的样式语言伪类选择符
:lang匹配使用特殊语言的元素否定伪类选择符
:not(p)匹配不是P标签的元素
伪元素选择器
::before在对象内的前面添加内容::after在对象内的后面添加内容1
2
3
4
5
6
7
8
9
10
11
12
13
14
15/* <a href="https://www.5207.fun/"></a> */
a::after {
/* 元素属性 */
content: attr(href);
}
/* 引用媒体文件 */
content: url('xxx');
/* 常用写法 */
div::after {
content: "\f2ba";
font: 14px / 1 FontAwesome;
display: inline-block;
}::first-letter设置对象内的第一个字符的样式::first-line设置对象内的第一行的样式::placeholder设置对象文字占位符的样式1
2
3input::-webkit-input-placeholder {}
input::-moz-placeholder {}
input:-ms-input-placeholder {}::selection设置对象被选择时的样式
