CSS 选择器的作用
选择器(选择符)就是根据不同需求把不同的标签选出来这就是选择器的作用
选择器分类
选择器分为基础选择器和复合选择器两个大类
基础选择器是由单个选择器组成的
基础选择器又包括:标签选择器,类选择器,id选择器和通配符选择器
标签选择器(元素选择器)是指用 HTML 标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的 CSS 样式,标签选择器可以把某一类标签全部选择出来,比如所有的 div 标签和所有的 span 标签
类选择器在 HTML 中以 class 属性表示,在 CSS 中,类选择器以一个点“.”号表示,如果想要差异化选择不同的标签,单独选一个或几个标签,可以使用类选择器
id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式,HTML 元素以 id 属性来设置 id 选择器,CSS 中 id 选择器以 “#” 来定义。
通配符选择器,在 CSS 中,通配符选择器使用 “*” 定义,它表示选取页面中所有元素(标签)。
css 有三个非常重要的三个特性:层叠性,继承性,优先级。
层叠性
相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题
层叠性原则:
样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个样式,样式不冲突,不会层叠。
继承性
现实中的继承:我们继承了父亲的姓,CSS中的继承:子标签会继承父标签的某些样式,如文本颜色和字号,简单的理解就是:子承父业,恰当地使用继承可以简化代码,降低 CSS 样式的复杂性。子元素可以继承父元素的样式(text-,font-,line- 这些元素开头的可以继承,以及color)。
优先级
当同一个元素指定多个选择器,就会有优先级的产生。选择器相同,则执行层叠性,选择器不同,则根据选择器权重执行。
优先级注意点:
权重是有4组数字组成,但是不会有进位。可以理解为类选择器永远大于元素选择器,id选择器永远大于类选择器以此类推。等级判断从左向右,如果某一位数值相同,则判断下一位数值。继承的权重是0,如果该元素没有直接选中,不管父亲权重多高,子元素得到的权重都是0。
盒子模型
所谓 盒子模型:就是把 HTML 页面中的布局元素看作是一个矩形的盒子,也就是一个装内容的容器。CSS 盒子模型本质上是一个盒子,封装周围的 HTML 元素,它包括:边框,外边距,内边距和实际内容
案例
<!DOCTYPE html>
<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>综合案例-产品模块</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
background-color: #f5f5f5;
}
a {
color: #333;
text-decoration: none;
}
.box {
width: 298px;
height: 415px;
background-color: #fff;
/* 让块级的盒子水平居中对齐 */
margin: 100px auto;
}
.box img{
/* 图片的宽度和父亲一样宽 */
width: 100%;
}
.review {
height: 70px;
font-size: 14px;
/* 因为这个段落没有 width 属性 所有 padding 不会撑开盒子的宽度 */
padding: 0 28px;
margin-top: 30px;
}
.appraise {
font-size: 12px;
color: #b0b0b0;
margin-top: 20px;
padding: 0 28px;
}
.info {
font-size: 14px;
margin-top: 15px;
padding: 0 28px;
}
.info h4 {
display: inline-block;
font-weight: 400;
}
.info span {
color: #ff6700;
}
.info em{
font-style: normal;
color: #ebe4e0;
margin: 0 6px 0 15px;
}
</style>
<div class="box">
<img src="airpods.png" alt=" ">
<p class="review">快递牛,整体不错蓝牙可以说秒连。红米给力</p>
<div class="appraise">来自于 117384232 的评价</div>
<div class="info">
<h4> <a href="#">Redmi AirDots真无线蓝...</a></h4>
<em>|</em>
<span> 99.9元</span>
</div>
</div>