css的九大常用选择器学习

标签选择器,类选择器,id选择器

css当中最基础的三种选择器。
标签选择器简单明了,就是通过直接搜索标签名对所有该类标签进行样式渲染;
类选择器在标签中申明class并定义值,在css当中通过“ .xxx”来组合寻找并渲染;
id选择器在标签中申明class并定义值,在css当中通过“ #xxx ”来组合寻找并渲染。

复合选择器

常用代码中最常见的一种选择器,通过对三种基础选择器的组合进行更准去的标签选择。
此外我们用到复合选择器,就要理解权重的问题,如果对某一标签重复选择定义,他会根据你选择器的权重来进行渲染,权重最高者方可渲染,行内样式权重最高。若低权重选择器想要成功渲染,可在样式后增加!important进行说明。

后代选择器

若我只想对class=“Mine”当中的p标签进行背景色渲染。通过基础选择器难以实现。

.Mine p {
    
    
	background-color:pink;
}

因为p被包裹于.Mine标签,所以他就是.Mine的后代,将基础选择器进行组合就可以得到想要的效果,三者任意组合,单最多不建议超过三个后代。

子代选择器

若后代中有多个p标签,但我并不想将所有p标签都进行渲染,这时候,我们就可以选择子代选择器。这里要注意,子代就必须是父盒子的亲儿子

.Mine>p {
    
    
	background-color:pink;
}

在选择器中通过>连接,就可以达到只选择子代,即使p的后代中再包含许多p标签,选择器也不会带他们进行效果渲染,他只会找到.Mine中的亲儿子p标签,对它进行单独渲染。

并行选择器

若两个标签并无亲属关系,却在渲染的时候,绝大部分是相同样式,如果仅凭借基础选择器,可能要将相同的代码重复写上两到三次,会造成代码冗余。

.Mine,.Mine2 {
    
    
	background-color:pink;
}

使用并行选择器,将毫不相干却大面积重复的代码进行统一渲染,这样不仅简洁还很方便。

链接伪类选择器

:link	           a:link                  	//选择所有未访问链接	
:visited	       a:visited	            //选择所有访问过的链接	
:hover	           a:hover	                //选择鼠标在链接上面时
:active	           a:active	                //选择活动链接	

有关链接的四种选择器,是在a后面通过:来选择不同的语义,切记在输入的时候一定要按顺序定义(LV的包包HAO),否则他就不会展示应有的渲染效果。
以上选择器是属于css当中所包含的所有选择器,在css3中对于选择器有了进一步的扩充。

属性选择器

当大量的相同标签堆在一起,想要把他们单独区分并渲染,在以前我们会想到的是利用类选择器单独定义并渲染,然而css3帮我们进行了简化,比如有一堆input标签,我们可以只选择有value属性的标签进行渲染。

input[value] : {
    
    
	background-color:pink;
}

但是在属性相同时,例如所有标签都携带value属性,这个时候我们就可以:

扫描二维码关注公众号,回复: 12797655 查看本文章
input[value="Mine"] : {
    
    
	background-color:pink;
}

把value等于Mine的input标签单独挑选出来,这样会更加便捷我们的操作。
当然我们还可以通过正则表达式对于属性值做进一步筛选。

input[value^="Mine"] : {
    
                      //属性值开头包含Mine的标签
	background-color:pink;
}
input[value$="Mine"] : {
    
                      //属性值结尾包含Mine的标签
	background-color:pink;
}
input[value*="Mine"] : {
    
                      //属性值中包含Mine的标签
	background-color:pink;
}

nth-child选择器

在后代选择器的基础上,css3为我们又扩充了nth-child选择器,因为后代选择器是有弊端的,先拿子代选择器来说,如果我们只想让第一个子标签进行渲染,我们不可能拿子代选择器直接选出来,除非子代标签都个不相同。而nth-child却可以帮我们做到这一点:

.Mine:first-child: {
    
                      //选出父标签下的第一个子标签
	background-color:pink;
}
.Mine:last-child: {
    
                      //选出父标签下的最后一个子标签
	background-color:pink;
}
.Mine:nth-child(n): {
    
                      //选出父标签下的第n个子标签
	background-color:pink;
}

这里要对第三个选择器单独说明一下,括号里面可以是数值也可以是表达式,若为数值就是第n个子标签,有两个可选属性odd和even,分别代表所选标签为奇数或偶数。使用公式(an+ b).描述:a代表一个循环的大小,N是一个计数器(从0开始),以及b是偏移量。

nth-of-type选择器

.Mine:first-of-type: {
    
                      //选出父标签下的第一个子标签
	background-color:pink;
}
.Mine:last-of-type: {
    
                      //选出父标签下的最后一个子标签
	background-color:pink;
}
.Mine:nth--of-type(n): {
    
                      //选出父标签下的第n个子标签
	background-color:pink;
}

与上一类型的选择器相比,大致的语义是没有什么区别的,但如果是如下操作就会有不同的结果:


.Mine p:nth--of-type(n): {
    
                     //选出父标签下的第n个子标签
	background-color:pink;
}
.Mine p:nth-child(n): {
    
                      //选出父标签下的第n个子标签
	background-color:pink;
}

第一个的语义是先按顺序排序,取到第n个标签后再去和前面的p标签匹配,第二个的语义则是先选取子类当中的p标签,再按顺序去进行选取。

css3伪元素选择标签

以前我们在做有些小盒子布局的是后可能需要在盒子的前面放置icon图标,或是在盒子的后面放置下拉小箭头,我们通常想到的做法便是盒子中设置span标签,然后给三标签做样式修改,这样虽然可以达到效果但是难免会是代码繁琐。而通过这个伪元素选择器,我可以直接在css样式中增加标签:

.Mine :: before {
    
    
	content:"我"
}
.Mine :: after {
    
    
	content:"某某某"
}

<div></div>

通过这个案例,我们在主体html当中只写了”叫“这个字,然后再后期渲染当中,我们就会发现页面所展示的则是”我叫某某某“。可谓是相当方便,切记在使用标签的时候要跟用content属性,否则无效。
::before ::after属于行类元素,不能设置其宽高,需要手动转换

小结

在前端中最常用的九种css选择器在这里已经详细展示,我们要根据不同的实际情况选取更加合适的选择器,但是css3中所列举的几类选择器是含有兼容性问题的,在选取的时候要额外注意。

选择器	示例	示例说明	CSS
.class	.intro	选择所有class="intro"的元素	1
#id	#firstname	选择所有id="firstname"的元素	1
*	*	选择所有元素	2
element	p	选择所有<p>元素	1
element,element	div,p	选择所有<div>元素和<p>元素	1
element element	div p	选择<div>元素内的所有<p>元素	1
element>element	div>p	选择所有父级是 <div> 元素的 <p> 元素	2
element+element	div+p	选择所有紧接着<div>元素之后的<p>元素	2
[attribute]	[target]	选择所有带有target属性元素	2
[attribute=value]	[target=-blank]	选择所有使用target="-blank"的元素	2
[attribute~=value]	[title~=flower]	选择标题属性包含单词"flower"的所有元素	2
[attribute|=language]	[lang|=en]	选择 lang 属性以 en 为开头的所有元素	2
:link	a:link	选择所有未访问链接	1
:visited	a:visited	选择所有访问过的链接	1
:active	a:active	选择活动链接	1
:hover	a:hover	选择鼠标在链接上面时	1
:focus	input:focus	选择具有焦点的输入元素	2
:first-letter	p:first-letter	选择每一个<p>元素的第一个字母	1
:first-line	p:first-line	选择每一个<p>元素的第一行	1
:first-child	p:first-child	指定只有当<p>元素是其父级的第一个子级的样式。	2
:before	p:before	在每个<p>元素之前插入内容	2
:after	p:after	在每个<p>元素之后插入内容	2
:lang(language)	p:lang(it)	选择一个lang属性的起始值="it"的所有<p>元素	2
element1~element2	p~ul	选择p元素之后的每一个ul元素	3
[attribute^=value]	a[src^="https"]	选择每一个src属性的值以"https"开头的元素	3
[attribute$=value]	a[src$=".pdf"]	选择每一个src属性的值以".pdf"结尾的元素	3
[attribute*=value]	a[src*="runoob"]	选择每一个src属性的值包含子字符串"runoob"的元素	3
:first-of-type	p:first-of-type	选择每个p元素是其父级的第一个p元素	3
:last-of-type	p:last-of-type	选择每个p元素是其父级的最后一个p元素	3
:only-of-type	p:only-of-type	选择每个p元素是其父级的唯一p元素	3
:only-child	p:only-child	选择每个p元素是其父级的唯一子元素	3
:nth-child(n)	p:nth-child(2)	选择每个p元素是其父级的第二个子元素	3
:nth-last-child(n)	p:nth-last-child(2)	选择每个p元素的是其父级的第二个子元素,从最后一个子项计数	3
:nth-of-type(n)	p:nth-of-type(2)	选择每个p元素是其父级的第二个p元素	3
:nth-last-of-type(n)	p:nth-last-of-type(2)	选择每个p元素的是其父级的第二个p元素,从最后一个子项计数	3
:last-child	p:last-child	选择每个p元素是其父级的最后一个子级。	3
:root	:root	选择文档的根元素	3
:empty	p:empty	选择每个没有任何子级的p元素(包括文本节点)	3
:target	#news:target	选择当前活动的#news元素(包含该锚名称的点击的URL3
:enabled	input:enabled	选择每一个已启用的输入元素	3
:disabled	input:disabled	选择每一个禁用的输入元素	3
:checked	input:checked	选择每个选中的输入元素	3
:not(selector)	:not(p)	选择每个并非p元素的元素	3
::selection	::selection	匹配元素中被用户选中或处于高亮状态的部分	3
:out-of-range	:out-of-range	匹配值在指定区间之外的input元素	3
:in-range	:in-range	匹配值在指定区间之内的input元素	3
:read-write	:read-write	用于匹配可读及可写的元素	3
:read-only	:read-only	用于匹配设置 "readonly"(只读) 属性的元素	3
:optional	:optional	用于匹配可选的输入元素	3
:required	:required	用于匹配设置了 "required" 属性的元素	3
:valid	:valid	用于匹配输入值为合法的元素	3
:invalid	:invalid	用于匹配输入值为非法的元素	3

这里列举了css当中所有的选择器可供参考。

猜你喜欢

转载自blog.csdn.net/baldicoot_/article/details/105821239