css 选择器有哪些?优先级?哪些属性可以继承?

简介: css 选择器有哪些?优先级?哪些属性可以继承?

简版

  • css 选择器非常多,可以分为基础选择器 复合选择器,伪类选择器;伪元素选择器
  • 基础选择器: id 选择器 ,class 类选择器,标签选择器,
  • 复合选择器: 后代选择器,子代选择器,并集选择器,交集选择器


一、选择器

CSS 选择器是 CSS 规则的第一部分


它是元素和其他部分组合起来告诉浏览器哪个 HTML 元素应当是被选为应用规则中的 CSS 属性值的方式


选择器所选择的元素,叫做“选择器的对象”


我们从一个Html结构开始


<div id="box">
  <div class="one">
    <p class="one_1"></p>
    <p class="one_1"></p>
  </div>
  <div class="two"></div>
  <div class="two"></div>
  <div class="two"></div>
</div>


关于css属性选择器常用的有:


  • id 选择器(#box),选择 id 为 box 的元素


  • 类选择器(.one),选择类名为 one 的所有元素


  • 标签选择器(div),选择标签为 div 的所有元素


  • 后代选择器(#box div),选择 id 为 box 元素内部所有的 div 元素


  • 子选择器(.one>one_1),选择父元素为.one 的所有.one_1 的元素


  • 相邻同胞选择器(.one+.two),选择紧接在.one 之后的所有.two 元素


  • 群组选择器(div,p),选择 div、p 的所有元素


还有一些使用频率相对没那么多的选择器:


  • 伪类选择器


:link :选择未被访问的链接
:visited:选取已被访问的链接
:active:选择活动链接
:hover :鼠标指针浮动在上面的元素
:focus :选择具有焦点的
:first-child:父元素的首个子元素


  • 伪元素选择器


:first-letter :用于选取指定选择器的首字母
:first-line :选取指定选择器的首行
:before : 选择器在被选元素的内容前面插入内容
:after : 选择器在被选元素的内容后面插入内容
  • 属性选择器


[attribute] 选择带有attribute属性的元素
[attribute=value] 选择所有使用attribute=value的元素
[attribute~=value] 选择attribute属性包含value的元素
[attribute|=value]:选择attribute属性以value开头的元素


在CSS3中新增的选择器有如下:


  • 层次选择器(p~ul),选择前面有 p 元素的每个 ul 元素
  • 伪类选择器


:first-of-type 表示一组同级元素中其类型的第一个元素
:last-of-type 表示一组同级元素中其类型的最后一个元素
:only-of-type 表示没有同类型兄弟元素的元素
:only-child 表示没有任何兄弟的元素
:nth-child(n) 根据元素在一组同级中的位置匹配元素
:nth-last-of-type(n) 匹配给定类型的元素,基于它们在一组兄弟元素中的位置,从末尾开始计数
:last-child 表示一组兄弟元素中的最后一个元素
:root 设置HTML文档
:empty 指定空的元素
:enabled 选择可用元素
:disabled 选择被禁用元素
:checked 选择选中的元素
:not(selector) 选择与 <selector> 不匹配的所有元素


  • 属性选择器


[attribute*=value]:选择attribute属性值包含value的所有元素
[attribute^=value]:选择attribute属性开头为value的所有元素
[attribute$=value]:选择attribute属性结尾为value的所有元素


二、优先级

对CSS选择器的优先级都不陌生:


内联 > ID 选择器 > 类选择器 > 标签选择器


到具体的计算层⾯,优先级是由 A 、B、C、D 的值来决定的,其中它们的值计算规则如下:


  • 如果存在内联样式,那么 A = 1, 否则 A = 0
  • B 的值等于 ID 选择器出现的次数
  • C 的值等于 类选择器 和 属性选择器 和 伪类 出现的总次数
  • D 的值等于 标签选择器 和 伪元素 出现的总次数


这里举个例子:


#nav-global > ul > li > a.nav-link;


套用上面的算法,依次求出 A B C D 的值:


  • 因为没有内联样式 ,所以 A = 0
  • ID 选择器总共出现了 1 次, B = 1
  • 类选择器出现了 1 次, 属性选择器出现了 0 次,伪类选择器出现 0 次,所以 C = (1 + 0 + 0) = 1
  • 标签选择器出现了 3 次, 伪元素出现了 0 次,所以 D = (3 + 0) = 3


上面算出的A 、 B、C、D 可以简记作:(0, 1, 1, 3)


知道了优先级是如何计算之后,就来看看比较规则:


  • 从左往右依次进行比较 ,较大者优先级更高
  • 如果相等,则继续往右移动一位进行比较
  • 如果 4 位全部相等,则后面的会覆盖前面的


经过上面的优先级计算规则,我们知道内联样式的优先级最高,如果外部样式需要覆盖内联样式,就需要使用!important


三、继承属性

在css中,继承是指的是给父元素设置一些属性,后代元素会自动拥有这些属性


关于继承属性,可以分成:


  • 字体系列属性


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
相关文章
|
25天前
|
Web App开发 前端开发 iOS开发
css所有缩写属性,CSS属性简写整理
css所有缩写属性,CSS属性简写整理
22 1
|
26天前
|
前端开发 JavaScript UED
深入理解与应用 CSS 伪类选择器
【10月更文挑战第23天】通过以上对 CSS 伪类选择器的深入探讨,我们可以更好地理解和应用它们,为网页设计和开发带来更丰富、更灵活的样式效果。同时,要注意在实际应用中根据具体情况合理选择和使用伪类选择器,以达到最佳的设计效果和用户体验。
33 2
|
1月前
|
前端开发
CSS 中哪些属性可以继承
在 CSS 中,属性分为可继承与不可继承。可继承属性会在子元素中沿用父元素的样式设定。常见可继承属性包括:文本属性(如 `font-family`, `color`),列表属性(如 `list-style`),表格布局属性(如 `border-collapse`),以及其他如 `visibility` 和 `direction` 等属性。正确理解这些属性有助于更高效地进行样式设计。
|
25天前
|
前端开发
css简写属性
css简写属性
28 0
|
1月前
|
前端开发 JavaScript
如何在CSS中添加自定义属性
如何在CSS中添加自定义属性
16 0
|
1月前
|
前端开发
运用CSS伪类与属性,巧妙实现背景图片旋转效果
运用CSS伪类与属性,巧妙实现背景图片旋转效果
35 0
|
1月前
|
前端开发
哪些 CSS 属性可以继承?
哪些 CSS 属性可以继承?
48 0
|
6月前
|
前端开发
web前端开发---CSS基础选择器
web前端开发---CSS基础选择器
48 1
|
2月前
|
前端开发
前端基础(四)_CSS层叠样式表_什么是css_css样式的引入方式_样式表的优先级_样式选择器
本文详细介绍了CSS(层叠样式表)的基本概念、语法规则、引入方式、样式表的优先级和样式选择器。文章解释了CSS的作用,展示了如何在HTML中通过行内样式、内部样式和外部样式引入CSS,讨论了不同CSS选择器的优先级和如何确定最终的样式应用。此外,还强调了使用`!important`规则时的优先级高于行内样式。
88 1
|
4月前
|
前端开发
前端 CSS 经典:好用的 CSS 选择器
前端 CSS 经典:好用的 CSS 选择器
30 0