Skip to content

继承

父元素的样式将被继承到其子元素上

html
<!doctype html>
<html lang="zh-cn">
  <head>
    <meta charset="UTF-8" />
    <title>title</title>
    <style>
      div {
        color: red;
      }
    </style>
  </head>
  <body>
    <div>
      我是div
      <span> 我是div内部 snap </span>
    </div>
    <span> 我是div外部 snap </span>
  </body>
</html>

由上图代码可证, 明明只设置了 div 的文字颜色, 可是 div 中的 span 颜色也变了, 但是外部的span却没有变化

层叠

CSS 层叠性是指多个样式规则可以同时应用于一个 HTML 元素, 这也是为什么叫 层叠样式表 的来源

html
<!doctype html>
<html lang="zh-cn">
  <head>
    <meta charset="UTF-8" />
    <title>title</title>
    <style>
      div {
        background-color: gray;
      }
      .red-text {
        color: red;
      }
    </style>
  </head>
  <body>
    <div class="red-text">hello css</div>
    <p class="red-text">hello css</p>
  </body>
</html>

由上效果图可知: div 标签选择器选择类所有的 div, 设置背景为灰色, .red-text 类选择器选中了所有的类名为 red-text 的元素, 并且设置字体颜色为红色, 这两个选择器都选中类 div 元素, 所以效果会叠加

权重优先级

选择器权重

CSS 中一种处理多个样式冲突的方式(比如用多种方式设置类)

选择器类型权重值示例
Style属性(内联样式)10000<div style="color: red;"></div>
ID 选择器1000#myElement {}
类选择器、属性选择器、伪类选择器100.myClass {} [type="text"] {} :hover {}
元素选择器、伪元素选择器10div {} ::before {}
通配选择器1* {}
html
<!doctype html>
<html lang="zh-cn">
  <head>
    <meta charset="UTF-8" />
    <title>title</title>
    <style>
      .main {
        color: green;
      }
      #app {
        color: red;
      }
    </style>
  </head>
  <body>
    <div id="app" class="main">hello world</div>
  </body>
</html>

定义方式权重

方式权重值示例
内联样式(Style属性)10000<div style="color: red;"></div>
内部样式表(Style标签)1000<style> .myClass {} </style>
外部样式表(Link标签)100<link rel="stylesheet" href="styles.css">
浏览器默认样式1
html
<!doctype html>
<html lang="zh-cn">
  <head>
    <meta charset="UTF-8" />
    <title>title</title>
    <style>
      .main {
        color: red;
      }
    </style>
  </head>
  <body>
    <div class="main" style="color: green">hello world</div>
  </body>
</html>

前置提升优先级

使用关键字 !important 可以强行提升优先级

html
<!doctype html>
<html lang="zh-cn">
  <head>
    <meta charset="UTF-8" />
    <title>title</title>
    <style>
      .main {
        color: red !important;
      }
    </style>
  </head>
  <body>
    <div class="main" style="color: green">hello world</div>
  </body>
</html>

Released under the MIT License.