zoukankan      html  css  js  c++  java
  • CSS--选择器及其权重

    CSS 选择器规定了CSS规则会被应用到哪些元素上。

    【备注:暂时没有能够选择 父元素、父元素的同级元素,或 父元素的同级元素的子元素的选择器或者组合器】

    MDN链接


     基本选择器

    1.通用选择器(Universal selector):*

    2.类型选择器(Type selector):elementname

    3.类选择器(Class selector):.classname

    4.ID 选择器(ID selector):#idname

    5.属性选择器(Attribute selector):[attr] [attr=value] [attr~=value] [attr|=value] [attr^=value] [attr$=valur] [attr*=value]


    分组选择器

    选择器列表(Selector list)

    ,是将不同的选择器组合在一起的方法,它选择所有能被列表中的任意一个选择器选中的节点。

    语法:A, B

    实例:div,span 会同时匹配 <span> 元素和 <div> 元素


    组合器

    1.后代组合器

    (空格)组合器选择前一个元素的后代节点。

    语法:A B

    例子:div span 匹配所有位于任意 <div> 元素之内的 <span> 元素。

    2.直接子代组合器

    > 组合器选择前一个元素的直接子代的节点

    语法:A>B

    例子:ul > li 匹配直接嵌套在 <ul>  元素内的所有 <li> 元素。

    3.一般兄弟组合器

    ~ 组合器选择兄弟元素,也就是说,后一个节点在前一个节点后面的任意位置,并且共享同一个父节点。

    语法:A~B

    例子:P ~ span 匹配同一个父元素下,<p> 元素后面的所有 <span> 元素

    4.紧邻兄弟组合器

    + 组合器选择相邻元素,即后一个元素紧跟在前一个之后,并且共享同一个父节点。

    语法:A+B

    例子:h2 + p 会匹配所有紧邻在<h2>元素后的<p>元素。

    5.列组合器(试验阶段)

    || 组合器选择属于某个表格行的节点。

    语法:A || B

    例子:col || td 会匹配所有 <col> 作用域内的 <td> 元素


    伪选择器

    1.伪类

    :伪类选择器支持按照未被包含在文档树中的状态信息来选择元素

    例子:a:visited 匹配所有曾被访问过的 <a> 元素

    2.伪元素

    ::伪选择器用于表示无法用HTML语义表达的实体。

    例子:p::first-line 匹配所有<p>元素的第一行


    优先级问题

    浏览器通过优先级来判断哪些属性值与一个元素最为相关,从而在该元素上应用这些属性值。优先级是基于不同种类选择器组成的匹配规则。

    参考MDN

    选择器类型

    下面列表中优先级递增:

    1. 类型选择器(h1),伪类选择器(::before)

    2. 类选择器(.example),属性选择器([type="radio"]) , 和伪类(:hover)

    3.ID选择器(#example)

    *通配选择符(*),关系选择符(+, >, ~, ' ', | |), 否定伪类(:not()) 对优先级没有影响。【但是,:not()内部声明的选择器会影响优先级】

    内联样式(style=“font-weight:bold”)总会覆盖外部样式表的任何样式,可看作最高级。

    !important 例外规则

    从技术上来讲,!important 与优先级无关。但是会覆盖其他任何声明。使用这不是一个好习惯,尽量要避免。所有优先考虑样式规则优先级解决问题。

    一些经验法则:

    • 一定要优化考虑使用样式规则的优先级来解决问题而不是 !important
    • 只有在需要覆盖全站或外部 CSS 的特定页面中使用 !important
    • 永远不要在你的插件中使用 !important
    • 永远不要在全站范围的 CSS 代码中使用 !important
  • 相关阅读:
    vue的组件名称问题
    vue引入js文件时报This dependency was not found:错误
    vue中input输入第一个字符时,光标会消失,需要再次点击才能输入
    vue中url带有#号键,去除方法
    vue路由机制导致的坑,坑,坑
    Python文件读取和数据处理
    python面向对象
    Python PIL库学习笔记
    汉诺塔的python 动画演示
    十九大报告词频分析
  • 原文地址:https://www.cnblogs.com/CZheng7/p/13560457.html
Copyright © 2011-2022 走看看