文章目录
4.1. CSS复合选择器
4.1.1. 学习目的
- 目的:可以选择更精确更精细的目标元素标签
- 复合选择器是由两个或者多个基础选择器,通过不同的方式组合而成的
4.1.2. 后代选择器
概念:后代选择器又称为包含选择器
作用:用来选择元素或元素组的子孙后代
格式:把外层标签写在前面,内层标签写在后面,中间用
空格
隔开父级 子级 { 属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
代码示例
<style> .nav a { color: pink; } .wangsicong ul li { color: aqua; } </style>
<div class="nav"> <a href="#">内部链接</a> </div> <a href="#">外部链接</a> <ul> <li>一条狗</li> </ul> <div class="wangsicong"> <ul> <li>王可可是一条狗</li> </ul> </div>
4.1.3. 子元素选择器
作用:子元素选择器只能选择作为某元素子元素的元素
格式:父选择器写在前面,子选择器写在后面,中间用
>
进行连接父级>子级 { 属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
代码示例
<style> div>strong { color: pink; } p>strong { color: rgb(40, 167, 78); } </style>
<div> <strong>儿子</strong> </div> <div> <p> <strong>孙子</strong> </p> </div>
4.1.4. 交集选择器
作用:相当于and,所有的条件都要满足,多个选择器中间用
.
分隔格式:
选择器1.选择器2 { 属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
代码示例
<style> p.red { color: red; } </style>
<body> <div class="red">红色</div> <p>蓝色</p> <!-- 只有此行代码会变成红色,因为两个条件必须同时满足 --> <p class="red">红色</p> </body>
4.1.5. 并集选择器
概念:并行选择器是各个选择器通过
,
连接而成的,通常用于集体声明格式:
选择器1,选择器2 { 属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
代码示例
<style> p,span,.red { color: red; } </style>
<body> <!-- 此时三个会同时变成红色,因为并集,只要任何一个满足即可 --> <p>我和你</p> <span>我和你</span> <div class="red">我和你</div> </body>
4.2. 链接伪类选择器
作用:用于向某些选择器添加特殊的效果,链接伪类就是给链接添加效果
类别:
a:link
:未访问的链接a:visited
:已访问的链接a:hover
:鼠标移动到链接上a:active
:选定的链接
注意:按照上述顺序写代码,颠倒可能出问题
代码示例
<style> /*未访问的链接*/ a:link { color: #333; text-decoration: none; } /*已访问的链接*/ a:visited { color: orange; } /*鼠标经过的链接*/ a:hover { color: red; } /*鼠标按住不动时显示*/ a:active { color: green; } </style>
<body> <a href="http://www.xiaomi.com">小米手机</a> <a href="http://www.dami.com">大米手机</a> </body>
实际开发中的应用
<style> .nav a { color: #333; text-decoration: none; } .nav a:hover { color: orange; } </style>
总结
选择器 作用 特征 使用情况 隔开符号及用法 后代选择器 用来选择元素后代 是选择所有的子孙后代 较多 符号是空格 .nav a 子代选择器 选择 最近一级元素 只选亲儿子 较少 符号是**>** .nav>p 交集选择器 选择两个标签交集的部分 既是 又是 较少 没有符号 p.one 并集选择器 选择某些相同样式的选择器 可以用于集体声明 较多 符号是逗号 .nav, .header 链接伪类选择器 给链接更改状态 较多 重点记住 a{} 和 a:hover 实际开发的写法
4.3. 标签显示模式
- 概念:标签以什么方式进行显示
- 作用:在不同的地方使用到不同类型的标签,以便更好的完成网页
- 分类:块标签和行内标签(块级元素和行内元素)
4.4. 块元素
块级元素:
<div> (最典型) <h1>~<h6> <p> <ul> <ol> <li>
特征:
- 独占一行
- 高度、宽度、外边距、内边距都可以控制
- 宽度默认是容器的100%
- 是一个容器及盒子,里面可以放行内或者块级元素
注意:
- 只有文字才能组成段落,因此p里面不能放块级元素,特别是p不能放div
- 同理还有这些标签h1,h2,h3,h4,h5,h6,dt,他们都是文字类块级标签,里面不能放其他块级元素
代码示例
<style> div { height: 200px; background-color: pink; } </style>
<body> <div>我是块级元素</div> <div>我是块级元素</div> </body>
4.5. 行内元素
行内元素:
<span> (最典型) <a> <strong> <em> <i> <del> <s> <ins>
特征:
- 相邻行内元素在一行上,一行可以显示多个
- 高、宽直接设置是无效的
- 默认宽度就是它本身内容的宽度
- 行内元素只能容纳文本或者其他行内元素
注意:
- 链接里面不能再放链接
- 特殊情况
a
里面可以放块级元素,但是给a
转换一下块级模式最安全
代码示例
<style> span { width: 200px; height: 200px; background-color: pink; } </style>
<body> <span>我是行内元素</span> <span>我是行内元素</span> </body>
4.6. 行内块元素
行内块元素:
<img /> <input /> <td>
特征:
- 和相邻行内元素在一行上,但是之间会有空白缝隙,一行可以显示多个
- 默认宽度就是它本身内容的宽度
- 高度、行高、外边距、内边距都是可以控制
代码示例
<style> span { display: block; width: 100px; height: 100px; background-color: pink; } </style> <body> <span>行内</span> <hr/> <span>行内</span> </body> </html>
4.7. 三种模式区别
区别
元素模式 元素排列 设置样式 默认宽度 包含 块级元素 一行只能放一个块级元素 可以设置宽度高度 容器的100% 容器级可以包含任何标签 行内元素 一行可以放多个行内元素 不可以直接设置宽度高度 它本身内容的宽度 容纳文本或则其他行内元素 行内块元素 一行放多个行内块元素 可以设置宽度和高度 它本身内容的宽度
4.8. 标签显示模式转换display
# 第一种 display: inline; 设置行内元素
dispaly: inline;
# 第二种 display: block; 设置块级元素
display: block;
# 第三种 display: inline-block; 设置行内块元素
display: inline-block;
代码示例
/* 把行内元素span转换为块级元素,并设置宽高和颜色 */ span { display: block; width: 100px; height: 100px; background-color: pink; } /* 把块级元素div转换为行内元素,此时设置宽高将不起作用 */ div { display: inline; width: 100px; height: 100px; background-color: rgb(157, 88, 100); } /* 把行内元素a设置为行内块元素,可以设置宽高 */ a { display: inline-block; width: 80px; height: 25px; background-color: orange; }
4.9. 单行文本垂直居中
行高 = 上距离 + 内容高度 + 下距离
垂直居中:文字的高度=行高
4.10. CSS背景
4.10.1. 背景颜色
语法:
# 默认值是transparent 透明的 background-color: 颜色值;
4.10.2. 背景图片
语法:
/* none: 无背景图(默认的) */ /* url: 使用绝对或相对地址指定背景图像,不需要加引号 */ background-image: none | url(url)
4.10.3. 背景平铺
语法:
background-repeat : repeat | no-repeat | repeat-x | repeat-y
属性值:
参数 作用 repeat 背景图像在纵向和横向上平铺(默认的) no-repeat 背景图像不平铺 repeat-x 背景图像在横向平铺 repeat-y 背景图像在纵向平铺
4.10.4. 背景位置
语法:
background-position: length || length background-position: position || position
属性值:
参数 值 length 百分数 | 由浮点数字和单位标识符组成的长度值 position top | center | bottom | left | center | right 方位名词 注意:
- 必须先指定background-image属性
- position后面是x坐标和y坐标,可以使用方位名词或者精确单位
- 如果只指定了一个方位名词,另一个值默认居中,为50%
- 如果只指定一个数值,那该数值用于X坐标,另一个默认是y坐标,默认居中
- 如果指定两个值,两个值都是方位名字,则两个值前后顺序无关,比如left,top和top,left效果一致
- 如果指定两个值,精确单位和方位名字混合使用,则第一个值是X坐标,第二个值是Y坐标
4.10.5. 背景附着
概念:背景是移动的还是固定的
语法:
background-attachment: fixed;
属性值:
参数 作用 scroll 背景图像是随对象内容滚动 fixed 背景图像固定
4.10.6. 背景简写
background
:背景颜色 背景图片地址 背景平铺 背景滚动 背景位置background:transparent url(image.jpg) repeat-y scroll center top
4.10.7. 背景透明
语法:
background: rgba(0, 0, 0, 0.3);
- 最后一个参数是alpha,透明度取值范围0~1之间
- 我们习惯把0.3的0省略掉这样写
background:rgba(0,0,0,.3)
- 注意:背景半透明是指盒子背景半透明,盒子里面的内容不受影响
- 因为是CSS3,所以低于IE9的版本是不支持的
4.10.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个值 |
代码示例
<!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> .bg { width: 700px; height: 500px; /*设置背景颜色*/ background-color: pink; /*设置背景图片*/ background-image: url(liu.png); /*设置背景图片平铺的方式*/ background-repeat: no-repeat; /*设置背景图片的位置*/ background-position: 10px 50px; } </style> </head> <body> <div class="bg"> 123 </div> </body> </html>
4.11. CSS层叠性
概念:多种CSS样式的叠加,是浏览器处理冲突的一个能力,如果一个属性通过选择器设置到同一个元素上,那么这个时候一个属性将会将另一个属性层叠掉
原则:
- 样式冲突:遵循的原则是就近原则
- 样式不冲突:不会层叠
代码示例
div { color: red; } div { color: pink; } <body> <div> 长江后浪推前浪,前浪死在山踏上 </div> </body>
4.12. CSS继承性
概念:子标签会继承父标签的某些样式,如文本颜色和字号,想要设置一个可继承的属性,只需要将它应用于父元素即可
注意:
- 恰当的使用继承可以简化代码,降低CSS样式的复杂性
- 子元素能够继承父元素的样式
代码示例
<style> div { color: red; } </style> <body> <div> <p>王思聪</p> </div> </body>
4.13. CSS优先性
概念:定义CSS样式时,经常出现两个或更多规则应用在同一元素上
- 选择器相同,则执行层叠性
- 选择器不同,就会出现优先级的问题
权重计算公式
标签选择器 计算权重公式 继承或者 * 0,0,0,0 每个元素(标签选择器) 0,0,0,1 每个类,伪类 0,0,1,0 每个ID 0,1,0,0 每个行内样式 style=“” 1,0,0,0 每个!important 重要的 ∞ 无穷大 - specificity用一个四位的数,更像四个级别,
- 值从左到右,左面的最大,一级大于一级,数位之间没有进制,级别之间不可超越。
- 关于CSS权重,我们需要一套计算公式来去计算,这个就是CSS Specificity(特殊性)
权重叠加
我们经常用到交集选择器,后代选择器,是有多个基础选择器组合而成,那么此时,就会出现权重叠加,就是简单的加法计算
继承的权重是0
- 修改样式时,一定要看标签有没有被选中,如果被选中,按照公式来计算权重,如果未被选中,那么权重是0,因为继承的权重为0
代码示例1
<!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> .one { color: blue; } div { color:red; } </style> </head> <body> <div class="one">hvdih</div> </body> </html>
代码示例2
<!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 a { color:red; } .nav .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>
代码示例3
<!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; } p { color: aqua; } .demo { color: blue; } </style> </head> <body> <div class="demo"> <p> jicheng </p> </div> </body> </html>
本文含有隐藏内容,请 开通VIP 后查看