🌟 所属专栏:前端只因变凤凰之路
🐔 作者简介:rchjr——五带信管菜只因一枚
😮 前言:该系列将持续更新前端的相关学习笔记,欢迎和我一样的小白订阅,一起学习共同进步~
👉 文章简介:本文介绍CSS的三大特性。知识学习内容来自b站的 @黑马程序员 的视频
🚩1.1 层叠性
相同选择器设置相同的样式,此时一个样式就会覆盖另一个冲突的样式,比如两个div,一个div设置颜色与字体,另一个div设置不一样的颜色。那么就会选择后面的div的颜色和前面div的字体,因为只有颜色冲突了。
原则
样式冲突遵循就近原则,哪个样式设置距离标签更近,就执行哪个样式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
color: red;
font-size: 14px;
}
div {
color: pink;
}
</style>
</head>
<div>层叠性</div>
<body>
</body>
</html>
🚩1.2 继承性
子标签会继承父标签的某些样式如文字的颜色和大小,最主要的就是和文字有关的如text-,font-,line-这些开头的属性,以及color。
常用情况:在body中设置整个页面的文字格式。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
color: pink;
font-size: 14px;
}
</style>
</head>
<body>
<div>
<p>
body已经给我设置好了
</p>
</div>
</body>
</html>
行高的继承性
body {
font:12px/1.5 Microsoft Yahei
}
行高可以不跟单位,采用1.5表示字体大小的1.5倍。这样可以让子元素根据自己的文字大小自动调整行高
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
color: pink;
font: 12px/1.5 Microsoft Yahei;
}
div {
/* 继承了body的行高,这里是14*1.5=21px */
font-size: 14px;
}
p {
font-size: 16px;
}
</style>
</head>
<div>指定了自己的大小,行高继承为14*1.5px</div>
<p>指定了自己大小,行高继承为16*1.5排序</p>
<ul>
<li>没指定自己大小,行高继承为12*1.5</li>
</ul>
<body>
</body>
</html>
🚩1.3 优先性
当一个元素(标签)指定多个选择器,就会有优先级的问题。如果多个选择器选择了同一个元素,就要根据选择器自身的权重来判断。
选择器 | 选择器权重 |
继承或者* | 0 |
元素选择器 | 1 |
类选择器,伪类选择器 | 10 |
id选择器 | 100 |
行内样式 | 1000 |
注意
继承的权重是0。例如body中指定的文字颜色,但是只要body中的标签有默认值,都会用标签自己的默认值。
复合选择器的权重
复合选择器中的权重会叠加。例如同时设置li和ul li,则用ul li的样式。又比如有.nav li和ul li,则执行.nav li,因为类选择器的权重更大。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.nav li {
color: red;
}
.nav .pink {
color: pink;
font-weight: 800;
}
</style>
</head>
<body>
<ul class="nav">
<li class="pink">aaa</li>
<li>bbb</li>
<li>ccc</li>
<li>ddd</li>
</ul>
</body>
</html>