批改状态:合格
老师批语:
Cascading Style Sheets(CSS)既层叠样式表。
主要功能:1. 设置元素样式(翻译:长什么样子) 2.元素布局(翻译:在哪里显示)。
2.1 CSS工作流:1.找到元素 2.设置样式。
2.2 CSS元素样式来源:
2.3 元素样式优先级排序
行内样式 > 文档样式 > 外部样式 > 默认样式 > 继承样式
2.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" /><link rel="stylesheet" href="css/style1.css" /><title>实例演示样式来源</title></head><body><!-- 1.默认样式来源 --><h1>默认样式</h1><!-- 2.自定义样式 --><!-- 2.1 行内样式 --><h2 style="color: brown">行内样式</h2><!-- 2.2 文档样式 --><h3>文档样式</h3><style>h3 {color: cadetblue;}</style><!-- 2.3 外部样式 --><h4>外部样式</h4><!-- 继承样式 --><div>div父样式<p>p标签继承父样式</p><h5>h5继承父样式</h5></div><style>div {color: yellowgreen;}p {color: thistle;color: inherit;}h5 {color: tomato;color: inherit;}</style></body></html>
效果图:
什么是选择器,理解就是要设置css样式的对象,可以作为选择器的对象有以下几种:
3.1基本选择器:tag,例如h1
3.2属性选择器:例如 <h1 title="a"> hello </h1> 种的title,应用中使用h1[titile=”a”]来选择引用。其中 id和class属于高频属性,简化用法为id用”#”代替,class用“.” 代替。推荐是用class,因为在后面权重中id得权重过高,无进一步提升空间。
3.3群组选择器:多个选择器并列,用逗号隔开,例如.a,p {color:red}
3.4通配符选择器:用*号表示,例如 html body *{color:red}
3.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>CSS选择器的种类及用法</title></head><body><!-- 1. 基本选择器 tag --><h1>这是基本选择器,使用h1标签</h1><style>h1 {color: khaki;}</style><!-- 2. 属性选择器 --><h2 title="a">这是属性选择器,h2[title="a"]</h2><style>h2[title="a"] {color: red;}</style><h3 id="a">这是属性选择器,h3#id</h3><style>h3#a {color: saddlebrown;}</style><h4 class="a">这是属性选择器,h4.class</h4><style>h4.a {color: skyblue;}</style><!-- 3. 通配符选择器 --><div><ul class="list"><li class="item1">item1</li><li class="item2">item2</li><ul class="list2"><li class="item">item1</li><li class="item second">item2</li><ul class="list3"><li class="item">item1</li><li class="item">item2</li><li class="item">item3</li></ul><li class="item">item3</li></ul><li class="item3">item3</li><li class="item4">item4</li></ul><style>/* 子元素选择器“>” */.list > li {border: 1px solid slateblue;}/* 后代元素选择器用“空格” */.list2 li {border: tomato solid 1px;}/* 邻居兄弟元素选择器用“+ *” */.item2 + * {background-color: green;}/* 所有兄弟元素选择器用“~ *” */.item.second ~ * {color: turquoise;}</style></div></body></html>
效果图:
CSS规则是同样名称后写的覆盖前面的,为了保证前面的能生效,产生出权重的概念,权重是由specificity(0,0,0)表示的,个位代表tag数量,十位代表class数量,百位代表id数量,这也是为什么程序员在代码中将id认为成唯一的原因,因为id权重过高,很有可能遇到提权重的瓶颈,tag的语义化标签数量有限,不能满足复杂度需求,class没有数量限制,可以自定义,所以成为代码中最常用的属性,其对增加代码的弹性起到了重要作用。
最重要的是要学会权重的计算,并在实际编程中使用权重。
实例
<!DOCTYPE html><html lang="zh-CN"><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>选择器的权重(重点)</title></head><body><h1 class="title" id="active">Hello</h1><style>/* 1 1 2 *//* 2: 表示2个标签,1: 表示1个class1: 表示1个id */body h1.title#active {color: red;}/* 0 1 2 *//* 2: 表示2个标签,1: 表示1个class0: 表示没有id */body h1.title {color: blue;}/* 就想放在第一行,又想让它生效,只有提权 *//* 0 0 2 *//* 2: 表示2个标签,0: 表示没有class0: 表示没有id */body h1 {color: green;}/* 相同的权重,由位置决定样式 *//* 0 0 1 *//* 1: 表示只有一个标签,0: 表示没有class0: 表示没有id */h1 {color: darkorange;}/* 三个权重的位置, 从右到左第1位: 标签数量第2位: class数量第3位: id数量 *//* css 将 id, class, tag 看成一个"三位整数", id -> 百位, class -> 十位, tag -> 个位 *//* h1 {color: violet !important;} *//* id : 为什么不推荐用? 因为权重太高, 为了让你的代码具有弹性,尽可能用class *//* 为什么不用权重最低的标签呢? 只是标签的数量太少了, 而class可以任何命名 *//* bootstrap , element ui */</style><div class="col-md-3 vip">Bootstrap</div><style>/* 0 2 1 */div.col-md-3.vip {border: 5px solid red;}/* 0 1 1 */div.col-md-3 {border: 1px solid #000;}</style></body></html>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号