批改状态:合格
老师批语:其实总结的很到位,图文并茂会更好,如果很多文字和代码的话,尽量把代码块分开,不要集中在一块。
实战演示元素的样式来源以及基本选择器,和上下文选择器 并对比选择器的权重,并分析了为什么常用class属性少用id和标签属性
<!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>Document</title></head><body><div><h1>作业内容:</h1><h5>示例演示元素的样式来源</h5><!-- 上面使用的h1和h5是浏览器自带的样式来源,并非用户自定义的样式来源 --><!-- 下面为用户自定义来源,来源的方式有三种 --><h1 style="color: blue">用户自定义样式来源</h1><!-- 理解为行内 --><h1 class="h1">内部样式</h1><style>.h1 {color: brown;}</style></div><!-- 上面理解为内部 --><h2 class="h2">引用外部样式</h2><link rel="stylesheet" href="demo.css" /><!-- 引用外部的css --><!-- 1. 实例演示: 元素的样式来源结束 --><!-- 示例演练以下几种常用的选择器 --><h2>基本选择器常用的几种</h2><h4>标签选择器</h4><p>像常用的标签选择器有div/h1/h2/h3以标签命名</p><p>标签选择器实现当前的效果</p><style>h2 {background-color: brown;}p {color: blue;}h4 {background-color: blueviolet;}</style><!-- 标签选择器演练结束下面将使用class选择器 --><div class="tags"><p>当前使用了class选择器,当前页面前面已经使用了p标签选择器,</p><p>但是我现在又用了class选择器,class选择器的权重比标签选择器高,</p><p>来查看下效果吧</p></div><style>div.tags p {color: red;}</style><!-- 下面将使用id选择器,按照权重的分配,标签选择器的权重比id选择器更低,这里将使用到id选择器 --><div id="tags" class="tags"><p>id选择器具有较高的权限,比默认的浏览器自带的,和class选择器的级别更改,</p><p>当前使用了id选择器,在之前的代码中,已经写到了class选择器p标签的颜色,</p><p>红色,但是我用id选择器又更改为了另外的颜色</p></div><style>#tags p {color: chocolate;}</style><!-- 下面为群组选择器的实战演练 --><div><div><a href="">群组选择器1</a><a href="">群组选择器2</a><a href="">群组选择器3</a><a href="">群组选择器4</a><a href="">群组选择器5</a></div></div><div><li><a href="">第二组1</a><a href="">第二组2</a><a href="">第二组3</a><a href="">第二组4</a><a href="">第二组5</a></li></div><style>div a,li a {color: crimson;}</style><!-- 上面为群组选择器的实战演练 --><!-- 下面为通配符选择器演练部分 --><style>html body ul li * {color: darkgreen;}</style><ul><li><a href="baidu.com">百度一下1</a><a href="baidu.com">百度一下2</a><a href="baidu.com">百度一下3</a><a href="baidu.com">百度一下4</a><a href="baidu.com">百度一下5</a></li></ul><!-- 上方为通配选择器演练部分 --><!-- 下面为上下文选择器实战部分 --><!-- 常规的子元素选择器 --><ul class="php"><li><a href="php.cn">php中文网上级</a><li><a href="php.cn">php中文网1</a><a href="php.cn">php中文网2</a><a href="php.cn">php中文网3</a><a href="php.cn">php中文网4</a><a href="php.cn">php中文网5</a></li></li></ul><style>ul.php > li > a{color: darkmagenta;}</style><!-- 兄弟元素和和后代元素同时使用,词快穷了 --><ul><li>后代元素15</li><li class="h">后代元素25</li><li>后代元素35</li><li>后代元素45</li><li>后代元素55</li></ul><style>ul li.h + *{color: darkmagenta;}</style><!-- 兄弟后代元素完毕 --><div><div><li><a href="" class="a1">证明一下后面的所有元素</a><a href="" class="a2">证明一下后面的所有元素</a><a href="" class="a3">证明一下后面的所有元素</a><a href="" class="a4">证明一下后面的所有元素</a><a href="" class="a5">证明一下后面的所有元素</a></li></div></div><style>div div li a.a2 ~ *{color: darkturquoise;}</style><!-- 后面所有的元素证明完毕 --><!-- 最后面选择器的权重 -->选择器的权重id>class>标签,而同类相比,数量又居上,<div><div><div><div><div><li><a href="">标签权重测试</a></li></div></div></div></div></div><style>/* 下面属性标签为4个div 一个a标签.标签的值为0 0 5 所以为紫色 */div div div li a{color: darkviolet;}/* 如果不注释上面的标签,使用下面的标签 标签的值为0 0 6 */div div div div li a{color: red;}</style><!-- 上面为标签属性权重对比 --><!-- 下面为class权重属性对比 --><div><div><div class="div"><div><div><li class="li"><a href="">class权重测试</a></li></div></div></div></div></div><style>/* 下面属性标签+class为4个div 一个class 一个a标签.标签的值为0 1 5 所以为紫色 */div div div li.li a{color: darkviolet;}/* 如果不注释上面的标签,使用下面的标签 标签的值为0 2 6 */div div.div div div li.li a{color: red;}</style><!-- id属性+class属性+标签属性权重测试 --><div><div id="nav"><div class="div nav"><div><div><li class="li"><a href="">综合属性权重测试</a></li></div></div></div></div></div><style>/* 下面属性标签+class为4个div 一个class 一个a标签.标签的值为0 1 5 所以为紫色 */div div div li.li a{color: darkviolet;}/* 如果不注释上面的标签,使用下面的标签 标签的值为0 2 6 */div div.div div div li.li a{color: red;}/* 如果不注释上面的标签,使用下面的标签 标签的值为0 3 6 */div div.div.nav div div li.li a{color: rgb(60, 0, 255);}/* 如果不注释上面的标签,使用下面的标签 标签的值为1 3 6 */div#nav div.div.nav div div li.li a{color: orangered;}</style></body></html>
<h1 style="color: red">你好php</h1><a href="#"style="color: red" >把a标签默认的颜色蓝色换成红色</a>/* h1 : 标签/也叫元素选择器 */style="老师叫形式声明"
/* h1 { *//* 样式声明: 使用是"名值对" *//* color: red; *//* } */
<h1 style="color: red">你好php</h1>内部形式
内部形式是写在页面内部,如以下
<h1 style="color: indigo">大家晚上好,吃了吗?</h1><style>h1 {color: blue;}</style>
外部形式
外部形式是引用外部css到当前页面或多个页面调用使用,示例代码如下:
<link rel="stylesheet" href="css/style1.css" />上面css里面已经写入了css<h1 class="love">大家晚上好,吃了吗?</h1>
其优先级关系调用,行内>内部>外部 当然还有个秒天秒地秒空气的..尽量调试用的
这里直接贴入老师写注释代码,以防自己忘记.
<!-- 当前是HTML, 结构化的文本文档,它内部的所有元素,必须使用"标签"进行描述 --><!-- 只要放到了html中内容,并且要被浏览器进行解析或处理的,就必须要放到一个"标签" --><style>/* 1. 查询: 找到要被添加样式的元素 *//* selector : 选择器 *//* h1 : 标签/元素选择器 *//* 2. 为匹配的元素,设置样式规则 *//* 样式规则: 放入一对大括号中 *//* h1 { *//* 样式声明: 使用是"名值对" *//* color: red; *//* } *//* 选择器 {一个或多个样式声明} *//* css工作流: 1. 找到元素; 2. 设置样式 */</style><!-- style属性的优先级要大于 style 标签 --><!-- style="..." : 行内样式/内联样式, 直接作用到"元素级" --><!-- <style>: 内部样式/文档样式, 直接作用到"文档级" -->
再说下内页优先级,常用在页面内部和css内部,当一个css当中,例如颜色为多个颜色,优先使用最后一个,如以下:
<style>h1 {color: red;color: green;color: blue;/* 样式来源, 除了与优先级相关, 还与书写顺序相关 *//* 写到后面,会覆盖前面的 */}</style>
先贴代码:
<div><p>html是一个具有层级结构的文档,可以根据元素之间层级关注,实现样式复用</p><a href="#">样式继承</a><h3 style="color: turquoise">Hello</h3></div><style>div {/* div是P的父级 */border: 1px solid #000;color: violet;}p {color: green;/* 颜色/前景色: 是可以继承的属性 */color: inherit;}/* 默认样式/代理样式 > 继承样式 *//* 1. style标签2. 外部css文档3. 样式继承 */</style>
子级集成父级别的样式,例如代码中如果不存在p标签单独的属性,div中的颜色会继承为p标签,但如果p标签有了自己的颜色,将使用p标签单独的颜色,其中p标签color: inherit;意思是强制继承父级color颜色.就是无论p标签的color单独设置什么颜色,都将继承div里面的color的颜色,多用多数量
属性的基本选择器常用的分为以下几种:
<h2>item1</h2><h2 title="hello">item2</h2><!-- id的唯一性由开发者确保,浏览器不检查 --><h2 id="a">item3</h2><h2 id="a">item4</h2><h2 class="b">item5</h2><h2 class="b">item6</h2><style>/* 基本选择器: 根据元素自身特点来选择 *//* 1. 标签选择器 */h2 {color: red;}/* 2. 属性选择器 */h2[title="hello"] {color: green;}/* id: 用于唯一元素 */h2[id="a"] {color: blue;}/* class: 用于多个元素 */h2[class="b"] {color: violet;}/* id, class是 高频属性 *//* id => # */h2#a {color: cyan;}/* class = "." */h2.b {color: orange;}/* 推荐尽可能只用class *//* 3. 群组选择器 */h2#a,h2.b {background-color: yellow;}/* 4. 通配选择器: * */html body * {background-color: gray !important;}/* !important: 瞬间提权到100%*只建议在开发中使用 */</style>
示例代码:
<ul class="list"><li class="item">item1</li><li class="item second">item2</li><li class="item">item3<!-- <ul class="inner"><li>item3-1</li><li>item3-2</li><li>item3-3</li></ul> --></li><li class="item">item4</li><li class="item">item5</li><li class="item">item6</li><li class="item">item7</li><li class="item">item8</li></ul><style>/* 1. 子元素(就是class属性+标签,是用符号>,具体的区分可以看下后代元素部分)也就是说,这里生效的部分仅限于第四行以前,超出第四行部分css部分不会生效*/.list > li {border: 1px solid #000;}/* 2. 后代元素: 空格 (后代元素是后面是后面所有的,意思就是,不止第四行的css会变,第10行以前的li都会改变css样式)*/.list li {border: 1px solid #000;}/* 3. 相邻兄弟: + */(比较好理解就是下一行代码执行的命令).item.second + * {background-color: lightcyan;}/* 4. 所有兄弟: ~ */ (定位的后面所有代码都将执行下面的css).item.second ~ * {background-color: yellow;}</style>
<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>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号