0基础学前端-----CSS DAY6
视频参考:B站Pink老师
今天是CSS学习的第六天,今天开始的笔记对应Pink老师课程中的CSS第三天的内容。
本节重点:CSS的三大特性以及CSS的盒子模型。
1.CSS的三大特性
CSS有三个重要特性:层叠性、继承性、优先性
1.1 层叠性
相同选择器给设置相同的样式,此时一个样式就会**覆盖(层叠)**另一个冲突的样式。
层叠性主要解决样式冲突性问题。
原则:
- 样式冲突,遵循的原则是就近原则,哪个样式离结构近就执行哪个样式。
- 样式不冲突,不会层叠。
参考代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
color: red;
font-size: 18px;
}
div {
color: pink;
}
</style>
</head>
<body>
<div>长江后浪推前浪,前浪死在沙滩上</div>
</body>
</html>
结果展示:
使用了最近的样式。
1.2 继承性
CSS中的继承:子标签会继承父标签的某些样式,如文字颜色和字号。
- 恰当使用继承可以简化代码,降低CSS样式的复杂性。
- 子元素可以继承父元素的样式(text-,font-,line-这些开头的以及color属性可以继承,其他不可以)
行高的继承性:
body {
font:12px/1.5 'Microsoft YaHei';#1.5为行高
}
- 行高可以跟单位也可以不跟单位
- 如果子元素没有设置行高,则会继承父元素的行高1.5
- 此时子元素的行高是:当前子元素的文字大小*1.5
- body行高1.5这样的写法的最大优势就是里面子元素可以根据自己文字大小自动调整行高
参考代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
color: pink;
font-size: 14px;
}
</style>
</head>
<body>
<div>
<p>龙生龙,凤生凤,老鼠儿子会打洞</p>
</div>
</body>
</html>
结果展示:
继承了div
的标签样式。
行高的继承性:
参考代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
color: pink;
/* font: 12px/24px 'Microsoft Yahei'; */
font: 12px/1.5 'Microsoft Yahei';
}
div {
/* 子元素继承父元素body的行高1.5 */
/* 这个1.5就是当前元素文字大小font-size的1.5倍 =21px*/
font-size: 14px;
}
p {
font-size: 16px;
/*16*1.5=24*/
}
</style>
</head>
<body>
<div>粉红色的回忆</div>
<p>粉红色的回忆</p>
<ul>
<li>我没有指定文字大小</li>
</ul>
</body>
</html>
结果展示:
行高变为了当前字体大小的1.5倍。
1.3 优先级
当同一个元素指定多个选择器,就会产生优先级问题。
- 选择器相同,则执行层叠性
- 选择器不同,则使用选择器权重执行
权重如下(优先级逐渐增大):
选择器 | 权重 |
---|---|
1 继承或*(通配符选择器) | 0,0,0,0 |
2 元素选择器 | 0,0,0,1 |
3 类选择器、伪类选择器 | 0,0,1,0 |
4 ID选择器 | 0,1,0,0 |
5 行内样式style=“” | 1,0,0,0 |
6 !important重要的 | ∞ |
参考代码: |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
color: pink !important;
}
.test {
color: red;
}
#demo {
color: green;
}
</style>
</head>
<body>
<div class="test" id="demo" style="color: purple">你笑起来真好看</div>
</body>
</html>
结果展示:
优先级注意点:
- 权重由四位数字组成,但是不会有进位
- 选择器权重依次增大
- 等级判断从左到右,如果一位数值相同,则判断下一位
- 可以简单记忆1为0,2为1,3为10,4为100,5为1000,6为∞,1,2,3,4,5,6分别对应六个选择器
- 继承的权重为0,如果该元素没有直接选中,不管父元素权重多高,子元素权重都为0
参考代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#father {
color: red;
}
p {
color: pink;
}
body {
color: red;
}
/*a链接浏览器默认制定了一个样式 蓝色的 有下划线 a {color: blue }*/
a {
color: green;
}
</style>
</head>
<body>
<div id="father">
<p>你还是很好看</p>
<a href="#">我是单独的样式</a>
</div>
</body>
</html>
结果展示:
注意<a>
标签是有默认样式的,继承权重为0!!!
权重叠加:如果是复合选择器则会有权重叠加,需要计算权重,但不需要进位。
参考代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
li {
color: red;
}
/*权重叠加,但不会进位 0,0,0,1+0,0,0,1=0,0,0,2*/
ul li {
color: green;
}
/*权重叠加 0,0,1,0+0,0,0,1=0,0,1,1*/
.nav li {
color: pink;
}
</style>
</head>
<body>
<ul class="nav">
<li>大猪蹄子</li>
<li>大肘子</li>
<li>猪尾巴</li>
</ul>
</body>
</html>
结果展示:
权重练习
练习1:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.nav {
color: red;
}
li {
color: pink;
}
</style>
</head>
<body>
<ul class="nav">
<li>人生四大悲</li>
<li>家里没宽带</li>
<li>网速不够快</li>
<li>手机没流量</li>
<li>学校没wifi</li>
</ul>
</body>
</html>
阅读练习一的代码猜测文字颜色。
练习2:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.nav li {
color: red;
}
/*要求:把第一个小li颜色改为粉色加粗*/
.nav .pink {
color: pink;
font-weight: bold;
}
</style>
</head>
<body>
<ul class="nav">
<li class="pink">人生四大悲</li>
<li>家里没宽带</li>
<li>网速不够快</li>
<li>手机没流量</li>
<li>学校没wifi</li>
</ul>
</body>
</html>
如果写的是.pink
而不是.nav .pink
请问字体颜色是什么。
答案1:
答案2:
.pink
.nav .pink
—————————————————————————————————————————
第三天CSS的三大特性已讲解完毕,下面更新CSS盒子模型(ง •_•)ง,有什么问题都可以在评论区进行讨论哦!