css引入方式
- 内联方式, 内联方式指的是直接在 HTML 标签中的 style 属性中添加 CSS。
<div style="background: red"></div>
- 嵌入方式, 嵌入方式指的是在 HTML 头部中的 <style> 标签下书写 CSS 代码。
<head>
<style>
.content {
background: red;
}
</style>
</head>
... <div class="content">...</div>
- 链接方式, 链接方式指的是使用 HTML 头部的 <head> 标签引入外部的 CSS 文件。
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
- 导入方式,导入方式指的是使用 CSS 规则引入外部 CSS 文件。
<style>
@import url(style.css);
</style>
链接方式(下面用 link 代替)和导入方式(下面用 @import 代替)都是引入外部的 CSS 文件的方式,下面我们来比较这两种方式,并且说明为什么不推荐使用 @import。
link 属于 HTML,通过 <link> 标签中的 href 属性来引入外部文件,而 @import 属于 CSS,所以导入语句应写在 CSS 中,要注意的是导入语句应写在样式表的开头,否则无法正确导入外部文件;
@import 是 CSS2.1 才出现的概念,所以如果浏览器版本较低,无法正确导入外部样式文件;
当 HTML 文件被加载时,link 引用的文件会同时被加载,而 @import 引用的文件则会等页面全部下载完毕再被加载;
CSS 优先级
最近祖先样式优先级比其他祖先样式优先级高
直接样式比祖先及优先级高
选择器优先级
内联样式 > ID选择器 > 类选择器 = 属性选择器 = 伪类选择器 > 标签选择器 = 伪元素选择器计算选择符中 ID 选择器的个数(a),计算选择符中类选择器、属性选择器以及伪类选择器的个数之和(b),计算选择符中标签选择器和伪元素选择器的个数之和(c)。按 a、b、c 的顺序依次比较大小,大的则优先级高,相等则比较下一个。若最后两个的选择符中 a、b、c 都相等,则按照"就近原则"来判断。
如果外部样式表和内部样式表中的样式发生冲突会出现什么情况呢?这与样式表在 HTML 文件中所处的位置有关。样式被应用的位置越在下面则优先级越高,其实这仍然可以用规则 4 来解释。如果样式引用冲突,与引用的位置无关,而与样式书写顺序有关,最后的书写的优先级高属性后插有 !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 ,建议直接看这个