选择器
- id选择器(写法:id="box"; 使用: #box:选择id为box的元素)
- 类选择器(写法:className="father";使用: .father: 选择类名为 father的所有元素)
- 标签选择器(div; 使用: div 选择标签为div的所有元素 )
- 后代选择器(使用: 选择器1 选择器2 如:#box div 选择id为box元素内部的所有div)
- 子选择器(使用: 选择器1>选择器2 父元素为选择器1的所有选择器2 )
- 相邻同胞选择器(写法: 选择器1+选择器2 选择紧接着选择器1的所有选择器2)
- 群组选择器(写法: 选择器1,选择器2 如: div,p 选择所有div,p)
- 伪类选择器
- 伪元素选择器
- 属性选择器
伪类 选择器
选择DOM元素在特定状态
下的样式。这些特定状态并不是由文档结构决定的,而是由用户行为(如点击
、悬停
)或元素的状态
(如被访问
、被禁用
)来定义的。
写法
selector:pseudo-class {
property: value;
}
例如
a:link {
color: #FF0000;
}
input:focus {
background-color: yellow;
}
常用的伪类选择器
常用的伪类选择器 | |
---|---|
:hover | 鼠标悬停在元素上面的样式 |
:active | 元素被激活时 (例:button:active) |
:focus | 元素或者焦点时(例:input:focus) |
:link | 元素未被访问(例:a:link) |
:visited | 元素已被访问 |
注意 a 标签的 4 个伪类(4种状态)必须按照一定顺序书写,否则将会失效; 书写顺序为:a:link、a:visited、a:hover、a:active;记忆方法:love hate - “爱恨准则”; | |
:enabled和:disabled | 元素是否可用 |
:checked | 用于单选框或复选框,表示元素是否被选中 |
:empty | 指定空的元素 |
:root | 设置HTML文档 |
结构伪类选择器 | |
:first-child | 选取父元素的第一个子元素 |
:last-child | 选取父元素的最后一个子元素 |
:nth-child(n) | 选取父元素中第n个子元素 li:nth-child(odd) 选择列表中的奇数位置 |
:first-of-type | 表示一组同级元素中其类型的第一个元素 |
:last-of-type | 表示一组同级元素中其类型的最后一个元素 |
:only-of-type | 表示没有同类型兄弟元素的元素 |
:only-child | 表示没有任何兄弟的元素 |
:nth-child(n) | 根据元素在一组同级中的位置匹配元素:nth-last-of-type(n)匹配给定类型的元素,基于它们在一组兄弟元素中的位置,从未尾开始计委 |
否定伪类选择器 | |
:not(selector) | 选取不符合括号内选择器的所有元素 |
伪元素选择器
与伪类选择器不同,伪元素选择器是用来选择DOM元素的特定部分,而不是整个元素。它们通常用于处理那些不是由HTML标签直接表示的内容,比如首行文字、首字母或者生成的内容(如内容前面的编号)。
伪元素选择器允许我们对页面上的某些部分进行精确的样式控制,而这些部分在HTML结构中并不存在。
写法
selector::pseudo-element {
property: value;
}
例如
p::first-line {
color: #ff0000;
}
h1::before {
content: '♥';
}
常用的伪元素选择器
常用的伪元素选择器 | |
---|---|
::first-line | 第一行 |
::first-letter | 表示第一个字母 |
::before | 表示元素的开始 |
::after | 表示元素的最后 |
注意:
- before和after创建一个元素,但是属于行内元素。
- 新创建的这个元素在文档中是找不到的,所以我们称为伪元素。
- before在父元素内容的前面创建元素,after在父元素内容的后面插入元素。
- 伪元素选择器和标签选择器一样,权重为1。
伪类与伪元素选择器的区别
CSS中的伪类选择器和伪元素选择器都是用来选取DOM中特定元素的选择器。具体区别如下:
- 伪类的操作对象是文档树中已有的元素,而伪元素则创建了一个文档数外的元素。因此,伪类与伪元素的区别在于:有没有创建一个文档树之外的元素;
- 伪类本质上是为了弥补常规CSS选择器的不足,以便获取到更多信息;
- 伪元素本质上是创建了一个有内容的虚拟容器;
- CSS3 中伪类和伪元素的语法不同;
- 在 CSS3 中,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示;
- 可以同时使用多个伪类,而只能同时使用一个伪元素。
总的来说,伪类选择器关注的是元素在特定状态下的样式变化,而伪元素选择器则是通过创建新的元素来实现特定的样式效果。两者都是CSS中非常强大的工具,可以帮助开发者实现复杂的页面布局和动态效果。
属性选择器
允许开发者根据元素的属性和属性值来选择元素
- [ attribute*=value ] :选择attribute属性值包含value的所有元素
- [ attribute^=value ]选择attribute属性开头为value的所有元素
- [ attribute$=value ] :选择attribute属性结尾为value的所有元素
优先级
!important>内联>ID选择器>类选择器>标签选择器>属性选择器>伪类>元素选择器>通配符>继承
继承
可继承属性 | |
---|---|
字体 | font:组合字体 font-family:规定元素的字体系列font-weight:设置字体的粗细font-size:设置字体的尺寸font-style:定义字体的风格font-variant:偏大或偏小的字体 |
文本 | text-indent:文本缩进text-align:文本水平对刘line-height:行高word-spacing:增加或减少单词间的空白letter-spacing:增加或减少字符间的空白text-transform:控制文本大小写direction:规定文本的书写方向color:文本颜色 |
元素可见性 | visibility |
表格布局属性 | caption-side:定位表格标题位置border-collapse:合并表格边框border-spacing:设置相邻单元格的边框间的距离empty-cells:单元格的边框的出现与消失table-layout:表格的宽度由什么决定 |
列表属性 | list-style-type:文字前面的小点点样式list-style-position:小点点位置list-style:以上的属性可通过这属性集合 |
引用 | quotes:设置嵌套引用的引号类型 |
光标属性 | cursor:箭头可以变成需要的形状 |
继承中比较特殊的几点:
- a标签的字体颜色不能被继承
- h1-h6标签字体的大下也是不能被继承的
无继承的属性
- display
- 文本属性:vertical-align、text-decoration
- 盒子模型的属性:宽度、高度、内外边距、边框等
- 背景属性:背景图片、颜色、位置等
- 定位属性:浮动、清除浮动、定位position等
- 生成内容属性:content、counter-reset、counter-increment
- 轮廓样式属性:outline-style、outline-width、outline-color、outline
- 页面样式属性:size、page-break-before、page-break-after