摘要:选择器的扩展选择器本来是的一种规则,用于为选择节点的。但是聪明的人类还是通过选择器创造出了其他领域非常伟大的作品。被推广流行的根本原因就是它的基于选择器的。
前文示图中展示了浏览器的渲染过程,那么css与html是如何结合的呢?
答案是——选择器!
可分为两大类:
标签选择器(*是特殊的标签),可单标签,也可上下文多标签;
属性选择器(id和class本质上也是属性)。
1.1 标签选择器 1.1.1 通用选择器 *通用选择器大家应该都比较熟悉了,最常用的就是重置浏览器默认样式。
1.1.2 单标签文档的标签就是最基本的选择器,例如:
html {color:black;} p {color:gray;} h2 {color:silver;}
单标签选择器可以并列使用,即单标签分组,例如:
html, p, h2 {color:black;} //同时选中了html、p、h2三个标签1.1.3 多标签
多标签选择器一般和html上下文有关,它有以下几种分类:
后代选择器,选择一个祖先的所有子孙节点,例如 div p{…}
子元素选择器,选择一个父元素的所有直属节点,只包含子代,不包含孙代及更后代,例如 div > p{…}
相邻兄弟选择器,选择某一个元素紧挨着的兄弟节点,例如 li + li{…}
同代选择器,选择某一个元素的所有同胞节点,即有相同祖先节点的同代兄弟(不需要相邻),例如 span ~ a{…}
以上各种情况的组合应用(不要组合过于复杂,编码讲求可读性第一)
典型应用:
样式实现代码:
ul li+li { border-top: 1px solid #ccc; }1.2 属性选择器 1.2.1 特殊1:id选择器
css选择器是根据html节点的特性来设置的,id也是一个属性,只是它是一个比较特殊的属性,每个html节点的id不能重复。
由于特殊,而且比较常用,所以就多带带给id选择器一个“#”,本质上就是一个属性选择器。下面两行代码的执行效果完全相同:
#div1 {border:1px solid #ccc;} div[id="div1"]{border:1px solid #ccc;}1.2.2 特殊2:class选择器
class也是一个特殊的属性,之所以把它放在属性选择器下,和上文将的id一样。
1.2.3 属性选择器属性选择器有两种情况:
只通过属性名选择:img[title]{…} //选中具体title属性的img
通过属性名和属性值选择:input[type=’text’]{…} //选中type属性值为text的input
2.伪类和伪元素上文提到了若干种选择器类型,伪类和伪元素可针对任何一种选择器使用。
2.1 伪类伪类分为UI伪类和结构化伪类。
2.1.1 UI伪类常用的UI伪类实例:
a:link {color: #FF0000} // 未访问的链接 a:visited {color: #00FF00} // 已访问的链接 a:hover {color: #FF00FF} // 鼠标移动到链接上 a:active {color: #0000FF} // 选定的链接 input[type="text"]:focus {} //获得鼠标焦点的输入框 #title1:target {} //突出显示活动的 HTML 锚2.1.2 结构化伪类(低版本IE不支持)
常用的结构化伪类实例:
table tr:nth-child(even) {} //even偶数,odd奇数 table tr:nth-child(odd) {} table tr:nth-child(n) {} //选中第n个 table tr:first-child {} table tr:last-child {}2.2 伪元素
伪元素是非常重要的概念,其中较常用的是:before和:after
基本用法:
span:before {
content: "Hello "; /*或者unicode编码的形式*/
color: red; /*还可以定义添加内容的样式*/
}
span:after {
content: " Zhang";
}
Jerry
显示结果:
可见:before和:after可以用于为元素前后添加内容。
应用场景:
第一,添加icon小图标。例如添加fontAwesome图标库中的图标
第二,清除浮动。
3.选择器的扩展选择器本来是css的一种规则,用于为css选择html节点的。但是聪明的人类还是通过选择器创造出了其他领域非常伟大的作品。
jQuery
jQuery被推广流行的根本原因就是它的“Query”——基于css选择器的“Query”。现在的浏览器都支持querySelectAll()方法了,其实这就是W3C“抄袭”的jQuery的设计。
zen-Coding
jquery可以通过一段css选择器表达式从既有的html结构中选择符合表达式的dom组,但是zen-coding反其道而行之——可以根据css选择器表达式创造出html节点。不得不佩服这帮人的创造力。
zen-Coding可以大大提高编码效率,不妨一试。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/112115.html
摘要:本系列文章重拾主要参考王福朋知多少,结合自己的理解和学习需要,修改或添加了一些内容,难免有失偏颇,仅供自我学习参考之用。 工作中或多或少的写一些css,但总感觉掌握的不够扎实,时而需要查阅一下知识点。我想,一方面跟缺少科班出身式的系统学习有关,另一方面也苦于一直未寻觅到一套合我胃口教程。直到我读到了王福朋css知多少系列文章,使我有了重新系统学习css的想法。 本系列文章(重拾css)...
上一节我们知道,选择器种类较多,同一个元素,可以采用不同的选择器方式选中,此时哪个选择器的样式会被最终显示呢? 特指度 特指度表示一个css选择器表达式的重要程度,每个选择器表达式都可以通过一个公式计算出一个数值,数越大,越重要。这个公式叫I - C - E计算公式: I —— Id; 100 C —— Class; 10 E —— Element; 1 即,针对一个css选...
摘要:如果我们以为重点看,从上图中我们可以总结出学习的三个突破点。这次我们向浏览器这位机器人学习一下,看看它写出来的能给我们什么帮助。对选择器来说,有一个很重要的话题级别。布局布局是的重头戏,每个系统的布局都有其各自的特点。 众所周知,css的运行环境是浏览器,那么我们有必要先来认识下浏览器。 1.浏览器是怎样工作的 有篇文章叫《浏览器的工作原理:新式网络浏览器幕后揭秘》,文中言简意赅的介绍...
摘要:盒子的宽度设置固定宽度的情况在盒子模型中,我们设置的宽度都是内容宽度,不是整个盒子的宽度。这样我们改四个中的其中一个,都会导致盒子宽度的改变。包裹内容的情况这种情况下比较简单,盒子的宽度将随着内容宽度的增加而增加。 1.引言 从这一节开始,我们就进入本系列的第三部分——css呈现。本部分将描述css在页面的几种布局和呈现的特性。包括两类:文字、块。第一类——文字。这部分相对比较简单一些...
摘要:而依然有效的原因是浏览器默认样式的优先级低于外联内部样式。例如第二,浏览器默认样式还为设置了,这个值是对英文比较友好,中文状态下就显得有点拥挤。 上一节介绍了样式的五种来源,咱们再通过一张图回顾一下。 showImg(https://segmentfault.com/img/bVM2Rk?w=536&h=245); 对于上面的三层,咱们大概都比较熟悉了。下面的两层中,用户自定义样式一般...
阅读 1513·2021-11-22 09:34
阅读 3322·2021-09-29 09:35
阅读 564·2021-09-04 16:40
阅读 2914·2019-08-30 15:53
阅读 2584·2019-08-30 15:44
阅读 2585·2019-08-30 14:10
阅读 1329·2019-08-29 18:43
阅读 2209·2019-08-29 13:26