0基础快速入门CSS技术栈(4)—图解详细阐述CSS的复合选择器、标签显示模式、行高、CSS背景,及最为重要的CSS三大特性附带权重计算笔试题(附详细案例源码解析过程)
文章目录
- 1. 0基础快速入门CSS技术栈(4)
- 2. 重点提炼
- 3. CSS复合选择器
- 3.1 后代选择器(重点)
- 3.1.1 example01
- 3.2 子元素选择器
- 3.2.1 exmaple02
- 3.3 交集选择器
- 3.3.1 example03
- 3.4 并集选择器(重点)
- 3.4.1 example04
- 3.5 测试题
- 3.6 链接伪类选择器(重点)
- 3.6.1 example05
- 3.6.2 example06
- 3.7 复合选择器总结
- 4. 标签显示模式(display)重点
- 4.1 什么是标签显示模式
- 4.2 块级元素(block-level)
- 4.2.1 example07
- 4.3 行内元素(inline-level)
- 4.3.1 example08
- 4.4 行内块元素(inline-block)
- 4.4.1 example09
- 4.5 三种模式总结区别
- 4.6 标签显示模式转换 display
- 4.6.1 example10
- 4.6.2 example11
- 5. 行高那些事(line-height)
- 5.1 行高测量
- 5.2 单行文本垂直居中
- 5.2.1 example12
- 5.2.1.1 example12-1
- 5.2.1.2 example12-2
- 6. CSS 背景(background)
- 6.1 背景颜色(color)
- 6.1.1 example13
- 6.2 背景图片(image)
- 6.2.1 example14
- 6.3 背景平铺(repeat)
- 6.3.1 example15
- 6.4 背景位置(position) 重点
- 6.4.1 example16
- 6.4.1.1 example16-1
- 6.4.1.2 example16-2
- 6.4.1.3 example16-3
- 6.4.1.4 example16-4
- 6.5 背景附着
- 6.5.1 example17
- 6.6 背景简写
- 6.6.1 example18
- 6.6.2 example19
- 6.7 背景透明(CSS3)
- 6.7.1 example20
- 6.8 背景总结
- 7. CSS 三大特性
- 7.1 CSS层叠性
- 7.1.1 examole21
- 7.2 CSS继承性
- 7.2.1 example22
- 7.3 CSS优先级(重点)
- 7.3.1 权重计算公式
- 7.3.1.1 example23
- 7.3.2 权重叠加
- 7.3.2.1 example24
- 7.3.3 继承的权重是0
- 7.3.3.1 example25
- 8. CSS注释
- 9. CSS优先级笔试题
- 9.1 01题
- 9.2 02题
- 9.3 03题
- 9.4 04题
- 9.5 05题
- 9.6 06题
- 10. 总结
1. 0基础快速入门CSS技术栈(4)
本篇围绕一个 导航栏案例进行学习知识点。
2. 重点提炼
- 复合选择器
- 后代选择器
- 并集选择器
- 标签显示模式
- CSS背景
- 背景位置
- CSS三大特性
- 优先级
3. CSS复合选择器
目标
理解
- 理解css复合选择器分别的应用场景
应用
- 使用后代选择器给元素添加样式
- 使用并集选择器给元素添加样式
- 使用伪类选择器
为什么要学习css复合选择器
CSS选择器分为 基础选择器 和 复合选择器 ,但是基础选择器不能满足我们实际开发中,快速高效的选择标签。
- 目的是为了可以选择更准确更精细的目标元素标签。
- 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的
3.1 后代选择器(重点)
概念:
后代选择器又称为包含选择器
作用:
用来选择元素或元素组的子孙后代
其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔,先写父亲爷爷,在写儿子孙子。
父级 子级{属性:属性值;属性:属性值;}
- 语法:
.class h3{color:red;font-size:16px;}
- 当标签发生嵌套时,内层标签就成为外层标签的后代。
- 子孙后代都可以这么选择。 或者说,它能选择任何包含在内 的标签。
实际就是把不同标签分类到不同的盒子里,分别设置样式。就相当于小米首页,上面和左侧的a标签
都是装进不同的盒子中采取不同的样式了。
3.1.1 example01
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>后代选择器</title><style>/*常山 赵子龙*//*山东 济南*/.nav a {color: pink;}.wang ul li {color: red;}</style>
</head>
<body><div class="nav"><a href="#">内部链接</a><a href="#">内部链接</a><a href="#">内部链接</a></div><a href="#">外部链接</a><a href="#">外部链接</a><a href="#">外部链接</a><ul><li>一条狗</li><li>一条狗</li><li>一条狗</li></ul><div class="wang"><ul><li>隔壁老王</li><li>隔壁老王</li><li>隔壁老王</li></ul></div>
</body>
</html>
commit description:a0.16(后代选择器案例-example01)
tag:a0.16
3.2 子元素选择器
作用:
子元素选择器只能选择作为某元素**子元素(亲儿子)**的元素。
其写法就是把父级标签写在前面,子级标签写在后面,中间跟一个
>
进行连接语法:
.class>h3{color:red;font-size:14px;}
小结
这里的子 指的是 亲儿子 不包含孙子 重孙子之类。
白话:
比如: .demo > h3 {color: red;} 说明 h3 一定是demo 亲儿子。 demo 元素包含着h3。
3.2.1 exmaple02
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>/*后代选择器 选择 子孙后代*//*div strong {color: red;}*//*子元素选择器 符号 > 只选亲儿子 这些元素 */div>strong {color: pink;}</style>
</head>
<body><div><strong>儿子</strong><strong>儿子</strong><strong>儿子</strong></div><div><p><strong>孙子</strong><strong>孙子</strong><strong>孙子</strong></p></div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.17
Branch: branch01commit description:a0.17(子元素选择器案例-example02)
tag:a0.17
3.3 交集选择器
条件
交集选择器由两个选择器构成,找到的标签必须满足:既有标签一的特点,也有标签二的特点。
语法:
其中第一个为标签选择器,第二个为
class
选择器,两个选择器之间不能有空格,如h3.special
。
记忆技巧:
交集选择器 是 并且的意思。 即…又…的意思
比如: p.one 选择的是: 类名为 .one 的 段落标签。
用的相对来说比较少,不太建议使用。
3.3.1 example03
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>交集选择器</title><style>/*需求,就是让 p 这个 变成红色*//*交集选择器 既是p标签 又是 .red 类选择器的关系*/p.red {color: red;}</style>
</head>
<body><p class="red">红色</p><p class="red">红色</p><p class="red">红色</p><div class="red">红色</div><div class="red">红色</div><div class="red">红色</div><p>蓝色</p><p>蓝色</p><p>蓝色</p>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.18
Branch: branch01commit description:a0.18(交集选择器案例-example03)
tag:a0.18
3.4 并集选择器(重点)
- 应用:
- 如果某些选择器定义的相同样式,就可以利用并集选择器,可以让代码更简洁。
- 并集选择器(
CSS
选择器分组)是各个选择器通过,
连接而成的,通常用于集体声明。 - 语法:
任何形式的选择器(包括标签选择器、
class
类选择器id
选择器等),都可以作为并集选择器的一部分。记忆技巧:
并集选择器通常用于集体声明 ,逗号隔开的,所有选择器都会执行后面样式,逗号可以理解为 和的意思。
比如 .one, p , #test {color: #F00;}
表示 .one 和 p 和 #test 这三个选择器都会执行颜色为红色。
通常用于集体声明。
他和他,在一起, 在一起 一起的意思
3.4.1 example04
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>/*客户需求: p 和 span 和 第一个div 里面的颜色都是红色*//*分开写的*/p {color: red;}span {color: red;}.red {color: red;}</style>
</head>
<body><p>我和你</p><p>我和你</p><p>我和你</p><span>我和你</span><span>我和你</span><span>我和你</span><div class="red">我和你</div><div>我和你</div><h1>你和我</h1><h1>你和我</h1>
</body>
</html>
改成并集选择器:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>/*客户需求: p 和 span 和 第一个div 里面的颜色都是红色*//*分开写的*//*p {color: red;}span {color: red;}*//*.red {color: red;}*//*并集选择器 用逗号隔开, 逗号理解为 和的意思 通常用于集体声明 就是因为这些选择器 里面的样式 相同*/p, span,.red {color: red;}</style>
</head>
<body><p>我和你</p><p>我和你</p><p>我和你</p><span>我和你</span><span>我和你</span><span>我和你</span><div class="red">我和你</div><div>我和你</div><h1>你和我</h1><h1>你和我</h1>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.19
Branch: branch01commit description:a0.19(并集选择器案例-example04)
tag:a0.19
3.5 测试题
<!-- 主导航栏 -->
<div class="nav"> <ul><li><a href="#">公司首页</a></li><li><a href="#">公司简介</a></li><li><a href="#">公司产品</a></li><li><a href="#">联系我们</a></li></ul>
</div>
<!-- 侧导航栏 -->
<div class="sitenav"> <div class="site-l">左侧侧导航栏</div><div class="site-r"><a href="#">登录</a></div>
</div>
在不修改以上结构代码的前提下,完成以下任务:
- 链接
登录
的颜色为红色
- 主导航栏里面的所有的链接改为
橙色
- 主导航栏和侧导航栏里面文字都是
14像素
并且是微软雅黑
。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>小测验</title><style>/* 1. 链接 登录 的颜色为红色 (后代选择器) */.site-r a {color: red;}/*2. 主导航栏里面的所有的链接改为橙色 (后代选择器) */.nav ul li a {color: orange;}/*3. 主导航栏和侧导航栏里面文字都是14像素并且是微软雅黑。(并集选择器)*/.nav,.sitenav {font: 14px "微软雅黑";}</style>
</head>
<body>
<!-- 主导航栏 -->
<div class="nav"> <ul><li><a href="#">公司首页</a></li><li><a href="#">公司简介</a></li><li><a href="#">公司产品</a></li><li><a href="#">联系我们</a></li></ul>
</div>
<!-- 侧导航栏 -->
<div class="sitenav"> <div class="site-l">左侧侧导航栏</div><div class="site-r"><a href="#">登录</a></div>
</div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.20
Branch: branch01commit description:a0.20(选择器小测验)
tag:a0.20
3.6 链接伪类选择器(重点)
伪类选择器:
为了和我们刚才学的类选择器相区别
类选择器是一个点 比如.demo {}
而我们的伪类 用 2个点 就是 冒号 比如 :link{}
伪娘
作用:
用于向某些选择器添加特殊的效果。比如给链接添加特殊效果, 比如可以选择 第1个,第n个元素。
因为伪类选择器很多,比如链接伪类,结构伪类
等等。这里先叙述链接伪类选择器。
a:link
/* 未访问的链接 */a:visited
/* 已访问的链接 */a:hover
/* 鼠标移动到链接上 */a:active
/* 选定的链接 */
3.6.1 example05
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>链接伪类选择器</title><style>/*未访问过链接的状态 正常状态*//*p.one 交集选择器*/a:link {color: #333;/*取消下划线*/text-decoration: none;}/*已经访问的链接 我们点击过*/a:visited {color: orange;}/*鼠标经过链接时候的状态*/a:hover {color: red;}/*当我们点击的时候(按下鼠标,别松开的时候)*/a:active {color: green;}</style>
</head>
<body><a href="http://www.xiaomi.com">小米手机</a><a href="http://www.dami.com">大米手机</a><!-- p.one -->
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.21
Branch: branch01commit description:a0.21(链接伪类选择器example05-1)
tag:a0.21
注意
写的时候,他们的顺序尽量不要颠倒 按照
lvha
的顺序。否则可能引起错误。<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>链接伪类选择器</title><style>/*鼠标经过链接时候的状态*/a:hover {color: red;}/*当我们点击的时候(按下鼠标,别松开的时候)*/a:active {color: green;}/*未访问过链接的状态 正常状态*//*p.one 交集选择器*/a:link {color: #333;/*取消下划线*/text-decoration: none;}/*已经访问的链接 我们点击过*/a:visited {color: orange;}</style> </head> <body><a href="http://www.xiaomi.com">小米手机</a><a href="http://www.dami.com">大米手机</a><!-- p.one --> </body> </html>
自己尝试会发现很多都失效了。
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.22
Branch: branch01commit description:a0.22(链接伪类选择器(bug)example05-2)
tag:a0.22
记忆法
- love hate 爱上了讨厌
- **lv **包包 非常 hao
因为叫链接伪类,所以都是 利用交集选择器
a:link a:hover
因为
a
链接浏览器具有默认样式,所以我们实际工作中都需要给链接单独指定样式(仅仅给父亲是没用的)。<style>/*正确写法*/.nav a {color: #333;text-decoration: none;}/*错误写法*/.nav {color: #333;text-decoration: none;} </style> <div class="nav"><a href="#">手机</a><a href="#">手机</a><a href="#">手机</a><a href="#">手机</a> </div>
实际工作开发中,我们很少写全四个状态,一般我们写法如下:
a { /* a是标签选择器 所有的链接 */font-weight: 700;font-size: 16px;color: gray;
}
a:hover { /* :hover 是链接伪类选择器 鼠标经过 */color: red; /* 鼠标经过的时候,由原来的 灰色 变成了红色 */
}
3.6.2 example06
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>/*所以我们实际工作中都需要给链接单独指定样式*/.nav a {color: #333;text-decoration: none;}/*鼠标放到 nav 里面的链接 才会变色(后代选择器+链接伪类选择器)*/.nav a:hover {color: orange;}</style>
</head>
<body><div class="nav"><a href="#">手机</a><a href="#">手机</a><a href="#">手机</a><a href="#">手机</a></div><a href="#">没有妈妈的孩子像棵草</a>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.23
Branch: branch01commit description:a0.23(实际开发中链接的写法example06)
tag:a0.23
3.7 复合选择器总结
选择器 | 作用 | 特征 | 使用情况 | 隔开符号及用法 |
---|---|---|---|---|
后代选择器 | 用来选择元素后代 | 是选择所有的子孙后代 | 较多 | 符号是空格 .nav a |
子代选择器 | 选择 最近一级元素 | 只选亲儿子 | 较少 | 符号是**>** .nav>p |
交集选择器 | 选择两个标签交集的部分 | 既是 又是 | 较少 | 没有符号 p.one |
并集选择器 | 选择某些相同样式的选择器 | 可以用于集体声明 | 较多 | 符号是逗号 .nav, .header |
链接伪类选择器 | 给链接更改状态 | 较多 | 重点记住 a{} 和 a:hover 实际开发的写法 |
4. 标签显示模式(display)重点
目标:
- 理解
- 标签的三种显示模式
- 三种显示模式的特点以及区别
- 理解三种显示模式的相互转化
- 应用
- 实现三种显示模式的相互转化
4.1 什么是标签显示模式
什么是标签的显示模式?
标签以什么方式进行显示,比如div 自己占一行, 比如span 一行可以放很多个
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title> </head> <body><div>我是div,一行独占上</div><div>我是div,一行独占上</div><div>我是div,一行独占上</div><span>看我是span,我愿意一行</span><span>看我是span,我愿意一行</span><span>看我是span,我愿意一行</span> </body> </html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.24
Branch: branch01commit description:a0.24(不同标签显示效果不一样)
tag:a0.24
作用:
我们网页的标签非常多,再不同地方会用到不同类型的标签,以便更好的完成我们的网页。
标签的类型(分类)
HTML
标签一般分为块标签
和行内标签
两种类型,它们也称块元素
和行内元素
。
4.2 块级元素(block-level)
- 例:
常见的块元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>标签是最典型的块元素。
- 块级元素的特点(建议背诵)
(1)比较霸道,自己独占一行
(2)高度,宽度、外边距以及内边距都可以控制。
(3)宽度默认是容器(父级宽度)的100%
(4)是一个容器及盒子,里面可以放行内或者块级元素。
- 注意:
- 只有 文字才 能组成段落 因此
p
里面不能放块级元素,特别是p
不能放div
- 同理还有这些标签
h1,h2,h3,h4,h5,h6,dt
,他们都是文字类块级标签,里面不能放其他块级元素。
- 只有 文字才 能组成段落 因此
4.2.1 example07
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>div {width: 200px;height: 200px;/*背景颜色 不要和 文字颜色混淆了 color*/background-color: pink;}</style>
</head>
<body><div>我是块级元素</div><div>我是块级元素</div><div><strong>文字</strong><h1>标题</h1></div><!-- p里面不能包含 div 段落p h dt 里面尽量不要放块级元素 --><!-- <p><div>123</div></p> -->
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.25
Branch: branch01commit description:a0.25(块级显示模式案例example07)
tag:a0.25
4.3 行内元素(inline-level)
- 例:
常见的行内元素有<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等,其中<span>标签最典型的行内元素。有的地方也成内联元素
- 行内元素的特点:
(1)相邻行内元素在一行上,一行可以显示多个。
(2)高、宽直接设置是无效的。
(3)默认宽度就是它本身内容的宽度。
(4)行内元素只能容纳文本或则其他行内元素。
注意:
- 链接里面不能再放链接。
- 特殊情况
a
里面可以放块级元素,但是给a转换一下块级模式最安全。(关于转换后面再说)
4.3.1 example08
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>span {width: 200px;height: 200px;background-color: pink;}</style>
</head>
<body><span>我是行内元素</span><span>我是行内元素</span><span>我是行内元素哒哒哒</span><span><strong></strong></span><!-- 行内元素里不能放块级元素 -->
<!-- <span><div></div></span> --><!-- a标签里不能再嵌套a标签 --><!-- <a href="#"><a href="#"></a></a> -->
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.26
Branch: branch01commit description:a0.26(行内显示模式案例example08)
tag:a0.26
4.4 行内块元素(inline-block)
- 例:
在行内元素中有几个特殊的标签——<img />、<input />、<td>,可以对它们设置宽高和对齐属性,有些资料可能会称它们为行内块元素。
行内块元素的特点:
(1)和相邻行内元素(行内块)在一行上,但是之间会有空白缝隙。一行可以显示多个
(2)默认宽度就是它本身内容的宽度。
(3)高度,行高、外边距以及内边距都可以控制。
4.4.1 example09
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>img {width: 200px;}</style>
</head>
<body><img src="data:images/3.jpg" alt=""><img src="data:images/3.jpg" alt=""><img src="data:images/3.jpg" alt="">
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.27
Branch: branch01commit description:a0.27(行内块显示模式案例example09)
tag:a0.27
4.5 三种模式总结区别
元素模式 | 元素排列 | 设置样式 | 默认宽度 | 包含 |
---|---|---|---|---|
块级元素 | 一行只能放一个块级元素 | 可以设置宽度高度 | 容器的100% | 容器级可以包含任何标签 |
行内元素 | 一行可以放多个行内元素 | 不可以直接设置宽度高度 | 它本身内容的宽度 | 容纳文本或则其他行内元素 |
行内块元素 | 一行放多个行内块元素 | 可以设置宽度和高度 | 它本身内容的宽度 |
4.6 标签显示模式转换 display
- 块转行内:
display:inline
; - 行内转块:
display:block
; - 块、行内元素转换为行内块:
display: inline-block;
此阶段,我们只需关心这三个,其他的是我们后面的工作。
我们鼠标移动上去就弹出一个框,鼠标编程小手,在这框点击即可跳转,我们会发现a标签
是不能设置宽度高度的,而这里却有宽度和高度。这里实际就是行内元素转化为了块级元素。
4.6.1 example10
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>span {/*把行内元素转换为块级元素*/display: block;width: 100px;height: 100px;background-color: pink;}div {/*把块级元素转换为行内元素*/display: inline;width: 200px;height: 200px;background-color: purple;}a {/*转换为 行内块元素*/display: inline-block;width: 80px;height: 25px;background-color: orange;}</style>
</head>
<body><span>行内</span><span>行内</span><div>div 是块级元素</div><div>div 是块级元素</div><a href="#">百度</a><a href="#">新浪</a>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.28
Branch: branch01commit description:a0.28(三种显示模式相互转换案例example10)
tag:a0.28
4.6.2 example11
简单导航栏
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>/*1. 变化样式 有大小 一行显示 我们想到了 行内块元素*/a {/*一定要进行模式转换 行内块*/display: inline-block;width: 100px;height: 30px;background-color: pink;/*可以让文字水平居中*/text-align: center;/*白色*/color: #fff;/*去除下划线*/text-decoration: none;}/*2. 鼠标经过 变化底色 和 文字的颜色*/a:hover {background-color: orange;color: yellow;}</style>
</head>
<body><a href="#">新闻</a><a href="#">体育</a><a href="#">汽车</a><a href="#">好用</a>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.29
Branch: branch01commit description:a0.29(简单导航栏案例example11)
tag:a0.29
5. 行高那些事(line-height)
目标
- 理解
- 能说出 行高 和 高度 三种关系
- 能简单理解为什么行高等于高度单行文字会垂直居中
- 应用
- 使用行高实现单行文字垂直居中
- 能会测量行高
5.1 行高测量
行高的测量方法:上一行的基线到下一行基线的距离(英文基线到基线,中底线到顶线即可。)
ps测量行高:
测量的时候截图注意浏览器显示和电脑显示都得是100%,否则像素必然发生变化。
5.2 单行文本垂直居中
行高我们利用最多的一个地方是: 可以让单行文本在盒子中垂直居中对齐。
文字的行高等于盒子的高度。
这里情况些许复杂,开始学习,我们可以先从简单地方入手学会。
行高 = 上距离 + 内容高度 + 下距离
上距离和下距离总是相等的,因此文字看上去是垂直居中的。
行高和高度(容器)的三种关系
- 如果 行高 等 高度 文字会 垂直居中
- 如果行高 大于 高度 文字会 偏下
- 如果行高小于高度 文字会 偏上
5.2.1 example12
5.2.1.1 example12-1
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>div {width: 100px;height: 50px;background-color: pink;line-height: 50px;}</style>
</head>
<body><div> 文字垂直居中 </div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.29
Branch: branch01commit description:a0.29(单行文本垂直居中栏案例example12-1——值相等则居中,否则越大越往下偏移)
tag:a0.29
5.2.1.2 example12-2
完善example11中的导航栏字体居中
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>/*1. 变化样式 有大小 一行显示 我们想到了 行内块元素*/a {/*一定要进行模式转换 行内块*/display: inline-block;width: 100px;height: 30px;/*行高等于高度 可以让单行文本呢垂直居中*/line-height: 30px;background-color: pink;/*可以让文字水平居中*/text-align: center;color: #fff;text-decoration: none;}/*2. 鼠标经过 变化底色 和 文字的颜色*/a:hover {background-color: orange;color: yellow;}</style>
</head>
<body><a href="#">新闻</a><a href="#">体育</a><a href="#">汽车</a><a href="#">好用</a>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.31
Branch: branch01commit description:a0.31(单行文本垂直居中栏案例example12-2——完善example11中的导航栏字体居中)
tag:a0.31
6. CSS 背景(background)
目标
- 理解
- 背景的作用
css
背景图片和插入图片的区别
- 应用
- 通过
css
背景属性,给页面元素添加背景样式 - 能设置不同的背景图片位置
- 通过
6.1 背景颜色(color)
语法:
background-color:颜色值; 默认的值是 transparent 透明的
6.1.1 example13
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.bg {width: 800px;height: 500px;/* 快捷键bgc */background-color: pink;}</style>
</head>
<body><div class="bg">12312312312312312312312312312</div>
</body>
</html>
6.2 背景图片(image)
- 语法:
background-image : none | url (url)
参数 | 作用 |
---|---|
none | 无背景图(默认的) |
url | 使用绝对或相对地址指定背景图像 |
background-image : url(images/demo.png);
- 小技巧: 我们提倡 背景图片后面的地址,
url
不要加引号。
背景图片和插入图片是有区别的。插入图片是在盒子内部放入图片,而背景图片是在盒子的底部。
6.2.1 example14
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.bg {width: 800px;height: 500px;/* 快捷键bgc */background-color: pink;/*背景图片 1. 必须加url 2. url 里面的地址不要加 引号*//* bgi快捷键 */background-image: url(images/l.jpg);}</style>
</head>
<body><div class="bg">12312312312312312312312312312</div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.32
Branch: branch01commit description:a0.32(背景图片案例example14)
tag:a0.32
6.3 背景平铺(repeat)
- 语法:
background-repeat : repeat | no-repeat | repeat-x | repeat-y
参数 | 作用 |
---|---|
repeat | 背景图像在纵向和横向上平铺(默认的) |
no-repeat | 背景图像不平铺 |
repeat-x | 背景图像在横向上平铺 |
repeat-y | 背景图像在纵向平铺 |
6.3.1 example15
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.bg {width: 800px;height: 500px;background-color: pink;/*背景图片 1. 必须加url 2. url 里面的地址不要加 引号*/background-image: url(images/l.jpg);/*默认的是平铺图 repeat*//*background-repeat: repeat;*//*背景图片不平铺*/background-repeat: no-repeat;}</style>
</head>
<body><div class="bg">12312312312312312312312312312</div>
</body>
</html>
水平平铺
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.bg {width: 800px;height: 500px;background-color: pink;/*背景图片 1. 必须加url 2. url 里面的地址不要加 引号*/background-image: url(images/l.jpg);/*默认的是平铺图 repeat*//* background-repeat: repeat; *//*背景图片不平铺*//* background-repeat: no-repeat; *//*横向平铺 repeat-x*/background-repeat: repeat-x;}</style>
</head>
<body><div class="bg">12312312312312312312312312312</div>
</body>
</html>
纵向平铺
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.bg {width: 800px;height: 500px;background-color: pink;/*背景图片 1. 必须加url 2. url 里面的地址不要加 引号*/background-image: url(images/l.jpg);/*默认的是平铺图 repeat*//* background-repeat: repeat; *//*背景图片不平铺*//* background-repeat: no-repeat; *//*横向平铺 repeat-x*//* background-repeat: repeat-x; *//*纵向平铺*/background-repeat: repeat-y;}</style>
</head>
<body><div class="bg">12312312312312312312312312312</div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.33
Branch: branch01commit description:a0.33(背景平铺案例example15)
tag:a0.33
6.4 背景位置(position) 重点
- 语法:
background-position : length || lengthbackground-position : position || position
参数 | 值 |
---|---|
length | 百分数 | 由浮点数字和单位标识符组成的长度值 |
position | top | center | bottom | left | center | right 方位名词 |
- 注意:
- 必须先指定
background-image
属性 position
后面是x坐标和y坐标。 可以使用方位名词或者 精确单位。- 如果指定两个值,两个值都是方位名字,则两个值前后顺序无关,比如
left top
和top left
效果一致 - 如果只指定了一个方位名词,另一个值默认居中对齐。
- 如果
position
后面是精确坐标, 那么第一个,肯定是x
第二的一定是y
- 如果只指定一个数值,那该数值一定是x坐标,另一个默认垂直居中
- 如果指定的两个值是 精确单位和方位名字混合使用,则第一个值是x坐标,第二个值是y坐标
- 必须先指定
实际工作用的最多的,就是背景图片居中对齐了。
6.4.1 example16
6.4.1.1 example16-1
背景位置右上角
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.bg {width: 800px;height: 500px;background-color: pink;/*背景图片 1. 必须加url 2. url 里面的地址不要加 引号*/background-image: url(images/l.jpg);/*背景图片不平铺*/background-repeat: no-repeat;/*背景位置*//*background-position: x坐标 y坐标;*//*右上角*/background-position: right top;}</style>
</head>
<body><div class="bg">12312312312312312312312312312</div>
</body>
</html>
/*左下角*/
background-position: left bottom;
/* 水平居中 垂直居中*/background-position: center center;
background-position: center left;
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.bg {width: 800px;height: 500px;background-color: pink;/*背景图片 1. 必须加url 2. url 里面的地址不要加 引号*/background-image: url(images/l.jpg);/*背景图片不平铺*/background-repeat: no-repeat;/*背景位置*//*background-position: x坐标 y坐标;*//*background-position: right top; 右上角*//*background-position: left bottom; 左下角*//*background-position: center center; 水平居中 垂直居中*//*则两个值前后顺序无关 因为是方位名词*//* background-position: center left; *//*如果只指定了一个方位名词,另一个值默认居中对齐*/background-position: top; }</style>
</head>
<body><div class="bg">12312312312312312312312312312</div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.34
Branch: branch01commit description:a0.34(背景位置案例example16-1)
tag:a0.34
6.4.1.2 example16-2
注意:网页端的坐标轴和我们数学中的坐标x轴相同,y轴刚好相反(即越往右x轴坐标越大、越往下y轴坐标越大)。草图如下:
background-position: 50px 10px ;
background-position: 10px center;
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.bg {width: 800px;height: 500px;background-color: pink;/*背景图片 1. 必须加url 2. url 里面的地址不要加 引号*/background-image: url(images/l.jpg);/*背景图片不平铺*/background-repeat: no-repeat;/*背景位置*//*background-position: x坐标 y坐标;*//*background-position: right top; 右上角*//*那么第一个,肯定是 x 是 50 第二的一定是y 是 10*//* background-position: 50px 10px ; *//*以下说明 x 10像素 y 垂直居中的*//* background-position: 10px center; */background-position: center 10px;}</style>
</head>
<body><div class="bg">12312312312312312312312312312</div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.35
Branch: branch01commit description:a0.35(CSS背景位置2案例example16-2)
tag:a0.35
6.4.1.3 example16-3
魔兽世界背景大图
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>body {height: 3000px;background-image: url(images/sms.jpg);background-repeat: no-repeat;}</style>
</head>
<body></body>
</html>
图片默认是从左上角开始(该图片的1920*1080,如果电脑分辨率刚好则还好,如果不够,就是从左上角开始展示,会丢失一部分,如果放中间是最好的),这样的话是不太好的,因此通常需要左右居中然后顶部对齐显示。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>body {height: 3000px;background-image: url(images/sms.jpg);background-repeat: no-repeat;/*这种写法一般是我们以后 超大背景图片的做法 背景定位*/background-position: center top;}</style>
</head>
<body></body>
</html>
小迪电脑是1920*1080,所以看不出明显的差异。
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.36
Branch: branch01commit description:a0.36(魔兽世界背景大图案例example16-3)
tag:a0.36
6.4.1.4 example16-4
小图片在盒子左侧垂直居中
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.icon {width: 150px;height: 35px;background-color: pink;background-image: url(images/sina.png);background-repeat: no-repeat;background-position: 10px center;}</style>
</head>
<body><div class="icon"></div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.37
Branch: branch01commit description:a0.37(小图片左侧对齐盒子案例example16-4)
tag:a0.37
6.5 背景附着
背景附着就是解释背景是滚动的还是固定的
语法:
background-attachment : scroll | fixed
参数 | 作用 |
---|---|
scroll(默认) | 背景图像是随对象内容滚动 |
fixed | 背景图像固定 |
6.5.1 example17
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>body {height: 3000px;background-image: url(images/sms.jpg);background-repeat: no-repeat;/*这种写法一般是我们以后 超大背景图片的做法 背景定位*/background-position: center top;}p {font-size: 30px;color: #fff;}</style>
</head>
<body><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p>
</body>
</html>
背景固定
/*背景固定的*/
background-attachment: fixed;
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.38
Branch: branch01commit description:a0.38(背景固定案例example17)
tag:a0.38
6.6 背景简写
background
:属性的值的书写顺序官方并没有强制标准的。为了可读性,建议大家如下写:background
: 背景颜色 背景图片地址 背景平铺 背景滚动 背景位置;- 语法:
background: transparent url(image.jpg) repeat-y scroll center top ;
6.6.1 example18
优化example17,进行背景简写
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>body {height: 3000px;/*background-color: #ccc;background-image: url(images/sms.jpg);background-repeat: no-repeat;background-position: center top;background-attachment: fixed;*//*background: 背景颜色 背景图片地址 背景平铺 背景滚动 背景位置;*/background: #ccc url(images/sms.jpg) no-repeat fixed center top;}p {font-size: 30px;color: #fff;}</style>
</head>
<body><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p><p>天王盖地虎,小鸡炖蘑菇</p>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.39
Branch: branch01commit description:a0.39(优化example17,进行背景简写案例example18)
tag:a0.39
6.6.2 example19
导航栏案例
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.nav {/*让里面的6个链接 居中对齐水平 这句话对 行内元素 行内块元素都有效果的*/text-align: center;}.nav a {/*有大小的 因为a 是行内元素 不能直接设置宽度和高 必须要转换 行内块元素*/display: inline-block;width: 120px;height: 50px;/*行高等于盒子的高度 就可以让单行文本垂直居中*/line-height: 50px;color: #fff;/* 去除下划线 */text-decoration: none;/*背景简写:设置背景,不要平铺*/background: url(images/bg.png) no-repeat;}/*鼠标经过nav里面的链接, 背景图片更换一下就好了*/.nav a:hover {background-image: url(images/bgc.png);}</style>
</head>
<body><div class="nav"><a href="#">网站首页</a><a href="#">网站首页</a><a href="#">网站首页</a><a href="#">网站首页</a><a href="#">网站首页</a><a href="#">网站首页</a></div><a href="#">123</a>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.40
Branch: branch01commit description:a0.40(导航栏案例example19)
tag:a0.40
6.7 背景透明(CSS3)
我们把鼠标放上去,感觉是颜色加深了,实际上是在它们上面放了一个透明的盒子。
原理类似:
- 语法:
background: rgba(0, 0, 0, 0.3);
- 最后一个参数是
alpha
透明度 取值范围0~1
之间 - 我们习惯把
0.3
的0
省略掉 这样写background: rgba(0, 0, 0, .3)
; - 注意: 背景半透明是指盒子背景半透明, 盒子里面的内容不受影响
- 因为是
CSS3
,所以 低于ie9
的版本是不支持的。
6.7.1 example20
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.alpha {width: 300px;height: 300px;/* .2是0.2的缩写 */background: #000;}</style>
</head>
<body><div class="alpha">哒哒哒</div>
</body>
</html>
改透明:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.alpha {width: 300px;height: 300px;/* .2是0.2的缩写 *//* background: #000; */background: rgba(0, 0, 0, .2);}</style>
</head>
<body><div class="alpha">哒哒哒</div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.41
Branch: branch01commit description:a0.41(背景透明案例example20)
tag:a0.41
6.8 背景总结
属性 | 作用 | 值 |
---|---|---|
background-color | 背景颜色 | 预定义的颜色值/十六进制/RGB代码 |
background-image | 背景图片 | url(图片路径) |
background-repeat | 是否平铺 | repeat/no-repeat/repeat-x/repeat-y |
background-position | 背景位置 | length/position 分别是x 和 y坐标, 切记 如果有 精确数值单位,则必须按照先X 后Y 的写法 |
background-attachment | 背景固定还是滚动 | scroll/fixed |
背景简写 | 更简单 | 背景颜色 背景图片地址 背景平铺 背景滚动 背景位置; 他们没有顺序 |
背景透明 | 让盒子半透明 | background: rgba(0,0,0,0.3); 后面必须是 4个值 |
7. CSS 三大特性
目标:
- 理解
- 能说出
css
样式冲突采取的原则 - 能说出那些常见的样式会有继承
- 能说出
- 应用
- 能写出C
SS
优先级的算法 - 能会计算常见选择器的叠加值
- 能写出C
7.1 CSS层叠性
概念:
所谓层叠性是指多种
CSS
样式的叠加。是浏览器处理冲突的一个能力,如果一个属性通过两个相同选择器设置到同一个元素上,那么这个时候一个属性就会将另一个属性层叠掉
原则:
- 样式冲突,遵循的原则是就近原则。 那个样式离着结构近,就执行那个样式。
- 样式不冲突,不会层叠
CSS层叠性最后的执行口诀: 长江后浪推前浪,前浪死在沙滩上。
7.1.1 examole21
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>div {color: red;font-size: 30px;}div {color: pink;}</style>
</head>
<body><div>长江后浪推前浪,前浪死在沙滩上。</div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.42
Branch: branch01commit description:a0.42(样式的层叠性案例example21)
tag:a0.42
7.2 CSS继承性
如第一个标题栏的文字都是垂直居中,而一个大盒子都包起来,如果设置文字垂直居中,不用都把一个个居中,只需要把大盒子居中即可,剩下的子元素继承,减少了代码的冗余性。
概念:
子标签会继承父标签的某些样式,如文本颜色和字号。
想要设置一个可继承的属性,只需将它应用于父元素即可。
简单的理解就是: 子承父业。
- 注意:
- 恰当地使用继承可以简化代码,降低
CSS
样式的复杂性。比如有很多子级孩子都需要某个样式,可以给父级指定一个,这些孩子继承过来就好了。 - 子元素可以继承父元素的样式(text-,font-,line-这些元素开头的可以继承,以及color属性)
- 恰当地使用继承可以简化代码,降低
CSS继承性口诀: 龙生龙,凤生凤,老鼠生的孩子会打洞。
7.2.1 example22
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>div {color: red;}</style>
</head>
<body><div><p>子孙后代</p></div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.43
Branch: branch01commit description:a0.43(样式的继承性案例example22)
tag:a0.43
7.3 CSS优先级(重点)
概念:
定义
CSS
样式时,经常出现两个或更多规则应用在同一元素上,此时,选择器相同,则执行层叠性
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title><style>div {color: red;}div {color:pink;}</style> </head> <body><div> 权重还有30秒到达战场 </div> </body> </html>
- 选择器不同,就会出现优先级的问题。
7.3.1 权重计算公式
关于CSS
权重,我们需要一套计算公式来去计算,这个就是 CSS Specificity
(特殊性)
标签选择器 | 计算权重公式 |
---|---|
继承或者 *(通配符) | 0,0,0,0(无权重) |
每个元素(标签选择器) | 0,0,0,1 |
每个类,伪类 | 0,0,1,0 |
每个ID | 0,1,0,0 |
每个行内样式 style="" | 1,0,0,0 |
每个!important 重要的 | ∞ 无穷大 |
- 值从左到右,左面的最大,一级大于一级,数位之间没有进制,级别之间不可超越。
- 关于
CSS
权重,我们需要一套计算公式来去计算,这个就是CSS Specificity(
特殊性) - div {
color: pink!important;
}
7.3.1.1 example23
类选择器(0,0,0,1
)和标签选择器(0,0,1,0
)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>/* div {color: red;} *//*类选择器 权重 0,0,1,0 班长*/.one {color: blue;}/*标签选择器 权重 0,0,0,1 小组长*/div {color:pink;}</style>
</head>
<body><div class="one"> 权重还有30秒到达战场 </div>
</body>
</html>
类选择器(0,0,0,1
)和标签选择器(0,0,1,0
)、id 选择器(0,1,0,0
)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>/* div {color: red;} *//*类选择器 权重 0,0,1,0 班长*/.one {color: blue;}/*id 选择器 权重 0,1,0,0 班主任*/#two {color: green;}/*标签选择器 权重 0,0,0,1 小组长*/div {color:pink;}</style>
</head>
<body><div class="one" id="two"> 权重还有30秒到达战场 </div>
</body>
</html>
类选择器(0,0,0,1
)和标签选择器(0,0,1,0
)、id 选择器(0,1,0,0
)、行内样式表(1,0,0,0
)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>/*类选择器 权重 0,0,1,0 班长*/.one {color: blue;}/*id 选择器 权重 0,1,0,0 班主任*/#two {color: green;}/*标签选择器 权重 0,0,0,1 小组长*/div {color:pink;}/*style= 行内样式表 权重 1,0,0,0 校长*/</style>
</head>
<body><div class="one" id="two" style="color: yellow;"> 权重还有30秒到达战场 </div>
</body>
</html>
优先级老大!important
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>/* div {color: red;} *//*类选择器 权重 0,0,1,0 班长*/.one {color: blue;}/*标签选择器 权重 0,0,0,1 小组长*//*!important 在样式属性的后面添加 权重最高 ∞ 教育局局长*/div {/* color:pink; */color: pink!important;}/*id 选择器 权重 0,1,0,0 班主任*/#two {color: green;}/*style= 行内样式表 权重 1,0,0,0 校长*/</style>
</head>
<body><div class="one" id="two" style="color: yellow;"> 权重还有30秒到达战场 </div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.44
Branch: branch01commit description:a0.44(css优先级案例example23)
tag:a0.44
7.3.2 权重叠加
我们经常用交集选择器,后代选择器等,是有多个基础选择器组合而成,那么此时,就会出现权重叠加。
就是一个简单的加法计算
div ul li
------>0,0,0,3
.nav ul li
------>0,0,1,2
a:hover
-----—>0,0,1,1
.nav a
------>0,0,1,1
注意:
- 数位之间没有进制 比如说:
0,0,0,5 + 0,0,0,5 =0,0,0,10
而不是0,0, 1, 0
, 所以不会存在10个div
能赶上一个类选择器的情况。
7.3.2.1 example24
需求:改第一个标签为紫色。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>/*出现了权重叠加的现象 *//*.nav a 权重 0,0,1,0 + 0,0,0,1 = 0,0,1,1 */.nav a {color: red;}/*.first 权重 0,0,1,0*/.first {color: pink;}</style>
</head>
<body><div> 人生四大悲 </div><div class="nav"><a href="#" class="first">家里没宽带</a><a href="#">网速不够快</a><a href="#">手机没流量</a><a href="#">学校无wifi</a></div>
</body>
</html>
失败了。因为权重问题,可以看我写的注释解释。
解决:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>/*出现了权重叠加的现象 *//*.nav a 权重 0,0,1,0 + 0,0,0,1 = 0,0,1,1 */.nav a {color: red;}/*.first 权重 0,0,1,0*//* .first {color: pink;} *//*0020*/.nav .first {color: pink;}/*0,0,0,5 + 0,0,0,5 =0,0,0,10*/</style>
</head>
<body><div> 人生四大悲 </div><div class="nav"><a href="#" class="first">家里没宽带</a><a href="#">网速不够快</a><a href="#">手机没流量</a><a href="#">学校无wifi</a></div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.45
Branch: branch01commit description:a0.45(权重叠加案例example24)
tag:a0.45
7.3.3 继承的权重是0
这个不难,但是忽略很容易绕晕。其实,我们修改样式,一定要看该标签有没有被选中。
1) 如果选中了,那么以上面的公式来计权重。谁大听谁的。
2) 如果没有选中(如下例只选中了父级没有选儿子,那是没有用的),那么权重是0,因为继承的权重为0.
7.3.3.1 example25
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>div {color: red;}p {color: green;}/*因为demo 没有选p标签,所以 继承的权重为 0*/.demo {color: blue;}#test {color: pink;}</style>
</head>
<body><div class="demo" id="test"><p>继承的权重为 0</p></div>
</body>
</html>
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.46
Branch: branch01commit description:a0.46(继承的权重为0案例example25)
tag:a0.46
8. CSS注释
CSS注释规则:
/* 需要注释的内容 */ 进行注释的,即在需要注释的内容前使用 "/*" 标记开始注释,在内容的结尾使用 "*/"结束。
例如:
p {/* 所有的字体是14像素大小*/font-size: 14px;
}
9. CSS优先级笔试题
9.1 01题
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><meta name="keywords" content="关键词1,关键词2,关键词3" /><meta name="description" content="对网站的描述" /><title>第1题</title><style type="text/css">div div{ color:blue;}div{color:red;}</style></head><body><div><div><div>试问这行字体是什么颜色的?</div></div></div></body>
</html>
首先看修改样式的标签有没有被选中,这里被选中了,再看权重,因此是蓝色。
9.2 02题
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><meta name="keywords" content="关键词1,关键词2,关键词3" /><meta name="description" content="对网站的描述" /><title>第2题</title><style type="text/css">#father{color:red;}p {color:blue; }</style></head><body><div id="father"><p>试问这行字体是什么颜色的?</p></div></body>
</html>
#father
未被选中,继承的权重是0,所以是蓝色。
9.3 03题
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>Document</title><style type="text/css">div div div div div div div div div div div div{ color:red;}.me { color:blue;}</style>
</head>
<body><div><div><div><div><div><div><div><div><div><div><div><div class="me">试问这行文字是什么颜色的</div></div></div></div></div></div></div></div></div></div></div></div>
</body>
</html>
选中了我们看公式,标签选择器权重0,0,0,12
与类选择器权重0,0,1,0
,显然是蓝色。
9.4 04题
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><meta name="keywords" content="关键词1,关键词2,关键词3" /><meta name="description" content="对网站的描述" /><title>第4题</title><style type="text/css">div p { color:red;}#father {color:red;}p.c2{ color:blue;}</style></head><body><div id="father" class="c1"><p class="c2">试问这行字体是什么颜色的?</p></div></body>
</html>
#father
虽然权重最高,但是未被选中,直接排除。
div p
对应:0,0,0,2
p.c2
对应:0,0,1,1
9.5 05题
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>Document</title><style type="text/css">.c1 .c2 div{ color: blue;}div #box3 { color:green;}#box1 div { color:yellow;}</style>
</head>
<body><div id="box1" class="c1"><div id="box2" class="c2"><div id="box3" class="c3">文字</div></div></div>
</body>
</html>
三个都满足条件,被选中。
.c1 .c2 div
首先被排除,后面都带#
div #box3
和 #box1 div
权重都是一样的(0101
),使用就近原则
,则是黄色。
9.6 06题
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><meta name="keywords" content="关键词1,关键词2,关键词3" /><meta name="description" content="对网站的描述" /><title>第6题</title><style type="text/css">#father #son{ color:blue;}#father p.c2{ color:black;}div.c1 p.c2{ color:red;}#father{color:green !important;}</style></head><body><div id="father" class="c1"><p id="son" class="c2">试问这行字体是什么颜色的?</p></div></body></html>
#father
未被选中,排除。
#father #son
肯定是最高的,因为两个#
。
参考:https://github.com/6xiaoDi/blog-CSS/tree/a0.47
Branch: branch01commit description:a0.47(CSS优先级笔试题)
tag:a0.47
10. 总结
(后续待补充)
0基础快速入门CSS技术栈(4)—图解详细阐述CSS的复合选择器、标签显示模式、行高、CSS背景,及最为重要的CSS三大特性附带权重计算笔试题(附详细案例源码解析过程)相关推荐
- 0基础快速入门WebPack(3)——图解详述plugins(插件)的安装及sourceMap的使用及WebpackDevServer正向代理和模块热更新等(附详细案例源码解析过程及版本迭代过程)
文章目录 1. 重点提炼 2. 配置环境 3. Plugins(插件) 3.1 HtmlWebpackPlugin 3.1.1 example01 3.1.1.1 example01-1 3.1.1. ...
- 0基础快速入门CSS技术栈(3)—图解详细阐述CSS文字文本样式及综合案例、样式调试工具、快速开发html的emment语法(附详细案例源码解析过程)
文章目录 1. CSS字体样式属性调试工具 2. font字体 2.1 font-size:大小 2.2 font-family:字体 2.2.1 CSS Unicode字体 2.3 font-wei ...
- 0基础快速入门CSS技术栈(5)—图解详细阐述说透CSS的盒子模型(超级重要)、圆角边框、盒子阴影及相关重要的笔试题——css的核心中的核心(附详细案例源码解析过程)2021.01.07更新
文章目录 1. 盒子模型(CSS重点) 1.1 看透网页布局的本质 1.2 盒子模型(Box Model) 1.3 盒子边框(border) 1.3.1 边框综合设置 1.3.2 example01 ...
- 0基础快速入门CSS技术栈(6)—图解详细阐述说透CSS的浮动及应用、浮动的扩展及清除浮动和详解快速·1photoshop切图(附详细案例源码解析过程)2021-01-07更新
文章目录 1. 浮动(float)重点提炼 2. CSS 布局的三种机制 3. 为什么需要浮动? 3.1 example01 4. 什么是浮动(float) 4.1 作用 4.1.1 example0 ...
- 一个做耽美漫画的内容网站源码解析过程,讲解他的框架和功能实现
这里讲的是43321漫画网源码,采用的是thinkphp6开发,Nginx构架 php7.0环境和mysql应用数据库 漫画站重要的是前后端分离和内容管理系统 而thinkphp拥有强大的控制器和模板 ...
- 【0基础快速入门】Python学习快速参考手册
Python学习快速参考手册 目录 文章目录 Python学习快速参考手册 目录 @[toc] 下载 Python下载与配置 IDE下载与配置 第一章 · Python的基本语法 变量 数据类型 注释 ...
- adaboost案例源码解析
问题: 马疝气病判断 训练数据: 299行, 22列, 其中最后一列为标签, 例: 2.000000 1.00000038.500000 66.00000028.000000 3.0000003.00 ...
- javascript(JS) 0基础快速入门 (二)(this指向问题)
this 函数的 this 关键字在 JavaScript 中的表现略有不同,此外,在严格模式和非严格模式之间也会有一些差别. 在绝大多数情况下,函数的调用方式决定了 this 的值(运行时绑定).t ...
- 0基础快速入门Python,小白必看
1. python的基本语法 1.1 变量 1.12 如何定义变量 1.13 输出一个变量 1.14 变量的数据类型 1.15 变量的运算 1.16 变量的输入 1.17 变量的类型转换 1.18 变 ...
最新文章
- SSL For Free 申请免费https SSL 凭证
- 使用jtest工具压测Apache Traffic Server
- BZOJ1058 [ZJOI2007]报表统计 set
- CIO时代学院院长姚乐:传统行业遇上大数据 拥抱智能化未来
- 深度学习引擎的终极形态是什么?
- Linux Redis 重启数据丢失解决方案,Linux重启后Redis数据丢失解决方
- Android静态安全检测 - Broadcast Receiver组件暴露
- Android RecyclerView 滑动到指定位置 RecyclerView 滑动到顶部
- tomcat4 请求的处理——初步分析
- html页面上使用vlc,【JSJQuery】使用VLC在html中播放rtsp视频
- 微信小程序中相机api_微信小程序 Image API实例详解
- JavaIO流中的拷贝
- IIS: 必须输入密码手动设置密码同步后
- 12c rac 实例无法启动之磁盘组空间耗尽
- pythonlist反转_Python 列表反转显示的四种方法
- IPv6各地址计算方式汇总
- 今天 Java 14 正式发布了!放弃 Java 8 行吗?
- python屏幕文字识别_python识别图片文字
- 从零开始制作Linux
- 【DSU+思维】CF855G Harry Vs Voldemort