css选择器

65 阅读4分钟
  1. css选择器有哪些类别
类别作用
元素选择器通过元素的标签名来选择元素。例如,p选择器会选择所有的<p>元素。
类选择器通过元素的class属性值来选择元素。类选择器以.开头,后跟class名称。例如,.my-class选择器会选择具有class="my-class"的元素。
ID选择器通过元素的id属性值来选择元素。ID选择器以#开头,后跟id名称。例如,#my-id选择器会选择具有id="my-id"的元素。
属性选择器通过元素的属性值来选择元素。属性选择器使用方括号[],并在其中指定属性和属性值。例如,[type="text"]选择器会选择所有type属性值为"text"的元素。
伪类选择器通过元素的特殊状态或位置来选择元素。伪类选择器以:开头,后跟伪类名称。例如,:hover选择器会选择鼠标悬停在元素上的状态。
伪元素选择器用于选择元素的特定部分或生成的内容。伪元素选择器以::开头,后跟伪元素名称。例如,::before选择器会选择元素的内容前插入生成的内容。
后代选择器通过元素的后代关系来选择元素。后代选择器使用空格分隔不同层级的元素。例如,div p选择器会选择所有在<div>元素内的<p>元素。
直接子元素选择器通过元素的直接子元素关系来选择元素。直接子元素选择器使用>符号分隔父元素和子元素。例如,div > p选择器会选择所有作为<div>元素的直接子元素的<p>元素。

2.各种分类中有哪些内容,分别如何使用,权重如何

选择器语法示例权重
元素选择器elementname { styles }p { color: red; }1
类选择器.classname { styles }.my-class { font-size: 16px; }10
ID选择器#idname { styles }#my-id { background-color: blue; }100
属性选择器[attribute=value] { styles }[type="text"] { border: 1px solid black; }10
伪类选择器:pseudo-class { styles }:hover { color: green; }10
伪元素选择器::pseudo-element { styles }::before { content: "before"; }10
后代选择器ancestor descendant { styles }div p { font-weight: bold; }0
直接子元素选择器parent > child { styles }div > p { margin-top: 10px; }0

选择器的权重用于确定应用于元素的样式的优先级。权重越高,优先级越高:

  • 元素选择器:权重为1。
  • 类选择器、属性选择器和伪类选择器:权重为10。
  • ID选择器:权重为100。
  • 伪元素选择器:权重为10。
  • 后代选择器和直接子元素选择器:权重为0,不会增加权重。

当多个选择器应用于同一个元素时,具有更高权重的选择器的样式将覆盖具有较低权重的选择器的样式。如果权重相同,则后面出现的样式会覆盖前面的样式。

3.涉及顺序的选择器的顺序如何

在CSS中,选择器的顺序决定了样式的优先级。一般来说,后面出现的选择器会覆盖前面出现的选择器的样式:

  1. 元素选择器和伪元素选择器的顺序:

    • 后出现的选择器会覆盖先出现的选择器的样式。
  2. 类选择器、属性选择器和伪类选择器的顺序:

    • 后出现的选择器会覆盖先出现的选择器的样式。
  3. ID选择器的顺序:

    • 后出现的ID选择器会覆盖先出现的ID选择器的样式。
  4. 内联样式的顺序:

    • 内联样式具有最高的优先级,它会覆盖所有其他类型的选择器。
  5. 重要性(!important)标记的顺序:

    • 如果一个样式规则中带有!important标记,它将覆盖所有其他选择器,无论顺序如何。

常见的选择器的排列顺序建议:

  1. 元素选择器:写在最后面,这样可以让更具体的选择器先生效,减少不必要的样式计算。
  2. 类选择器和属性选择器:这些选择器相对来说比元素选择器更具体,但比ID选择器权重低,可以写在ID选择器之前。
  3. ID选择器:ID选择器的权重最高,写在其他选择器的最前面,以确保其样式最终生效。
  4. 后代选择器、子选择器: 这些选择器在与其他选择器组合时,位置关系会影响其权重,因此位置相对较靠前的选择器组合会具有更高的优先级,建议根据需要的选择器组合情况进行调整。

对于选择器的顺序要根据具体情况进行灵活搭配,以达到最优的渲染效果和样式表的可读性。