CSS引入方式和优先级简单介绍

2018-11-02  本文已影响17人  玄木

css引入方式

  1. 内联方式, 内联方式指的是直接在 HTML 标签中的 style 属性中添加 CSS。
<div style="background: red"></div>
  1. 嵌入方式, 嵌入方式指的是在 HTML 头部中的 <style> 标签下书写 CSS 代码。
<head>
    <style>
    .content {
        background: red;
    }
    </style>
</head>

... <div class="content">...</div>
  1. 链接方式, 链接方式指的是使用 HTML 头部的 <head> 标签引入外部的 CSS 文件。
<head>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
  1. 导入方式,导入方式指的是使用 CSS 规则引入外部 CSS 文件。
<style>
    @import url(style.css);
</style>

链接方式(下面用 link 代替)和导入方式(下面用 @import 代替)都是引入外部的 CSS 文件的方式,下面我们来比较这两种方式,并且说明为什么不推荐使用 @import。

  1. link 属于 HTML,通过 <link> 标签中的 href 属性来引入外部文件,而 @import 属于 CSS,所以导入语句应写在 CSS 中,要注意的是导入语句应写在样式表的开头,否则无法正确导入外部文件;

  2. @import 是 CSS2.1 才出现的概念,所以如果浏览器版本较低,无法正确导入外部样式文件;

  3. 当 HTML 文件被加载时,link 引用的文件会同时被加载,而 @import 引用的文件则会等页面全部下载完毕再被加载;

CSS 优先级

  1. 最近祖先样式优先级比其他祖先样式优先级高

  2. 直接样式比祖先及优先级高

  3. 选择器优先级
    内联样式 > ID选择器 > 类选择器 = 属性选择器 = 伪类选择器 > 标签选择器 = 伪元素选择器

  4. 计算选择符中 ID 选择器的个数(a),计算选择符中类选择器、属性选择器以及伪类选择器的个数之和(b),计算选择符中标签选择器和伪元素选择器的个数之和(c)。按 a、b、c 的顺序依次比较大小,大的则优先级高,相等则比较下一个。若最后两个的选择符中 a、b、c 都相等,则按照"就近原则"来判断。
    如果外部样式表和内部样式表中的样式发生冲突会出现什么情况呢?这与样式表在 HTML 文件中所处的位置有关。样式被应用的位置越在下面则优先级越高,其实这仍然可以用规则 4 来解释。如果样式引用冲突,与引用的位置无关,而与样式书写顺序有关,最后的书写的优先级高

  5. 属性后插有 !important 的属性拥有最高优先级。若同时插有 !important,则再利用规则 3、4 判断优先级。

注意:选择器的权值不能进位,如规则4中,a比较完后,如果不相等将不比较b,不是abc求和比较

  .blue {
    color: blue;
  }
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <!-- <link rel="stylesheet" href="style/sty.css"> -->
  <style>
    @import url("style/sty.css");
    .red {
      color: red;
    }
  </style>
  <link rel="stylesheet" href="style/sty.css">
</head>
<body>
  <div class="blue red">什么颜色</div>
  <div class="red blue">什么颜色</div>
</body>
</html>

本片的所有内容大部分来自You-Dont-Need-Javascript ,建议直接看这个

上一篇下一篇

猜你喜欢

热点阅读