css3 选择器 权重问题 (第一部分)

其实我现在写的这些博文笔记都是我很早之前学习的时候所写的笔记,只不过之前是没有写博客的习惯,所以都是写在word文档中个人需要的时候看而已。最近刚刚开了博客,所以想将自己的笔记贴到博客。

但是现在看来我的笔记中好多东西都过于基础,其实放到博客也是没有多大的作用,于是我就想将我在开发当中遇到的一些有趣的案例以及结合我的笔记重新写一份

如果要介绍css的选择器,那么肯定会遇到一个问题,那就是权重问题,所以本博文分为三个部分,第一个部分是详细介绍了目前css的选择器有哪些以及用法,第二部分则是介绍一下关于权重的问题,第三部分就是我开发中遇到的一些好玩的案例

第一部分:css选择器介绍

1.后代选择器


选择器


例子


例子描述


Css


Element Element


Div p


选择<div>元素内部的所有<p元素>


1


Element>element


div>p


选择父元素为<div>元素的所有子代<p>元素


2


:only-child


P:only-child


匹配属于父元素中唯一的<p>元素,如果其父元素中含有其他元素,那将不会被匹配


3


:nth-child(n)


P:nth-child(2)


匹配父元素中的第2个<p>子元素,n可以是数字、关键字或公式。Odd和even是可用于匹配下标奇数或偶数的子元素。第一个子元素下标是1


3


:nth-last-child(n)


P:nth-last-child(2)


同上,只不过从最后一个子元素开始计数


3


:first-child


P:first-child


选择属于父元素的第一个子元素的每个<p>元素,第一个子元素必须是p


3


:root


:root


选择文档的根元素


3


:empty


P:empty


选择没有子元素的每个<p>元素(包括文本节点)


3

这里想提的是:first-child选择器,因为本人前期也犯过这样子的错误,对这个选择器的理解有一定的误区,后来经过实践后才发现这个坑。这个标签要同时满足两个条件:1.子元素中存在你所选的标签 2.你所选的这个子标签必须是第一个子标签。

为了让大家明白这个,我就举个例子

 右侧是运行结果

如图可知,p在div下的p标签也是第一个p标签,这里要清楚,我说的是第一个p标签并不是第一个子标签,a标签才是第一个子标签。所以此刻a:first-child选择器才是有效的。

:only-child选择同样也是得满足两个条件

2.同辈级别选择器


选择器


例子


例子描述


Css


Element+element


Div+p


选择紧接在<div>元素之后的<p>元素


2


Element~element2


P~ul


选择前面有<p>元素的每个<ul>元素


3


:first-of-type


P:first-of-type


匹配同级兄弟元素中的第一个<p>元素


3


:last-of-type


P:last-of-type


匹配同级兄弟元素中的最后一个<p>元素


3


:only-of-type


P:only-of-type


匹配属于同类型中只有唯一兄弟元素的p元素


3


:nth-of-type(n)


P:nth-of-type(2)


匹配同类型中的第n个同级兄弟元素p


3


:nth-last-of-type(n)


P:nth-last-of-type(2)


同上,只不过从最后一个开始计数


3

这里将说一下+与~的区别

div+p选中的是兄弟标签,也就是紧跟在div后面的p标签,这个p标签满足,是div的兄弟标签,也就是紧跟在div后面,两者间没有其他标签

 右边是运行结果

如图所视,使用+选择器的时候,a标签后面的第一个p标签字体会变红。而~选择器的意思就是选中满足前面拥有p标签的a标签(这里前面拥有p标签不一定是紧跟在a标签前面)

3.伪类选择器


选择器


例子


例子描述·


Css


:link


a:link


选择所有未被访问的链接


1


:visited


a:visited


选择所有已被访问的链接


1


:active


a:actied


选择活动链接


1


:hover


A:hover


选择鼠标指针位于其上的链接


1


:focus


Input:focus


选择获得焦点的input元素


2


:first-letter


P:first-letter


选择每个<p>元素的首字母


1


:first-line


P:first-line


选择每个<p>元素的首行


1


:before


P:before


在每个<p>元素的内容之前插入内容


2


:after


P:after


在每个<p>元素的内容之后插入内容


2


:target


#news:target


选择当前活动的#news元素


3


:root


:root


选择文档的根元素


3

所谓了伪类选择器有一部分是行为改变的css选择器,其实这些选择器的用处是十分大的。甚至它可以替代一些js的事件操作。比如:hover、:active以及:focus等选择器,这些选择器有时在利用的时候是可以替代js的一些事件的。还有就是平时用的比较多的::after以及::before伪类选择器,这两个选择是个很独特的选择器。他可以在你选择的标签中往标签里面添加一个元素并且不会影响到文档的其他元素。这里切记是在你选择的标签里面插入。而且插入的是行内元素。在开发的过程中经常使用这两个伪类选择器去做一些有趣的东西。在后面的案例中我会用到这个伪类选择器。

4.属性选择器

属性选择器是一个不错的过滤选择器,在开发过程中我们会经常遇到一些相同的标签显示不同状态的时候,这时候可以使用属性选择器来将他们区分。


选择器


例子


例子描述


Css


[attribute]


[target]


选择带有target属性所有元素


2


[attribute=value]


[tar=_blank]


选择target=”_blank”的所有元素


2


[attribute~=value]


[title~=flower]


选择title属性包含单词”flower”的所有元素


2


[attribute|=value]


[lang|=en]


选择lang属性值以”en”开头的所有元素


2


[attribute^=value]


a[src^=”https”]


选择其src属性值以”https”开头的每个<a>元素


3


[attribute$=value]


a[src=”.pdf”]


选择器src以”.pdf”结尾的所有<a>元素


3


[attribute*=value]


a[src*=”abc”]


选择其src属性包含”abc”子串的每个<a>元素


3

这里举个例子,就像我们平时看到下载文件时,一些链接图标会区分这些文件的类型,就是不同的类型文件会显示不同的图标(icon),这个如果使用这个属性的话就很方便的做出来了

有图是运行结果

5.ui伪类选择器


选择器


例子


例子描述


Css


:enabled


Input:enabled


选择每个启用的<input>元素


3


:disabled


Input:disabled


选择每个禁用的<input>元素


3


:checked


Input:checked


选择每个被选中的<input>元素


3


:not(selector)


:not(p)


选择非<p>元素的每个元素


3


::selection


::section


选择被用户选取的元素部分


3

这就是第一部分的所有要介绍的选择器

时间: 2024-10-13 08:49:24

css3 选择器 权重问题 (第一部分)的相关文章

css3 选择器 权重问题 (第二部分)

这篇博文有关css的权重问题,我个人认为这是css知识中很重要的一个知识点.因为在开发的过程能中我们会经常遇到这种问题,特别是如果你使用框架的时候,有些框架的某些标签有一些默认的样式.所以我们可以通过增加权重的方式来使我们所写的样式有效.既然说到权重那就必然要说起权重的等级以及权重值. css的权重等级可以分为5个级别: 1.第一级别:内联样式,详细大家都知道什么是内联样式,既是在标签添加style属性<div style=""></div>,这种方式权重值最高

CSS3 选择器——伪类选择器

前面花了两节内容分别在<CSS3选择器--基本选择器>和<CSS3选择器--属性选择器>介绍了CSS3选择器中的基本选择器和属性选择器使用方法,今天要和大家一起学习CSS3选择器中的第三部分,也是最后一部分--伪类选择器.伪类选择器对于大家来说最熟悉的莫过于:link,:focus,:hover之类的了,因为这些在平时中是常用到的伪类选择器,那么先和大家一起简单总结一下CSS中常用的伪类选择器的使用方法,最后把重心放到CSS3新增加的":nth-child"选择

css3 选择器(二)

接css3选择器(一) 八.结构性伪类选择器[:nth-child(n)] :nth-child(n)选择器用来匹配某个父元素的一个或多个特定的子元素,和jquery中一样. 其中"n"是其参数,而且可以是整数值(1,2,3,4),也可以是表达式(2n+1,-n+5)和关键字(odd[奇数].even[偶数]),但是参数n的值起始值始终是1,而不是0.也就是说,参数n的值为0时,选择器将选择不到任何匹配的元素. Note:当“:nth-child(n)”选择器中的n为一个表达式时,其中

CSS3知识点整理(二)----CSS3选择器

总结各种CSS3选择器的介绍及具体语法 (一)属性选择器 在CSS2中引入了一些属性选择器,而CSS3在CSS2的基础上对属性选择器进行了扩展,新增了3个属性选择器,使得属性选择器有了通配符的概念,这三个属性选择器与CSS2的属性选择器共同构成了CSS功能强大的属性选择器.如下表所示: html代码: <a href="xxx.pdf">我链接的是PDF文件</a> <a href="#" class="icon"&

最全CSS3选择器

一,CSS3 选择器分类 二,选择器语法 1,基本选择器语法 选择器 类型 功能描述 *  通配选择器  选择文档中所以HTML元素 E  元素选择器 选择指定类型的HTML元素 #id  ID选择器 选择指定ID属性值为“id”的任意类型元素 .class  类选择器 选择指定class属性值为“class”的任意类型的任意多个元素 selector1,selectorN  群组选择器 将每一个选择器匹配的元素集合并 2,层次选择器语法 选择器 类型 功能描述 E  F 后代选择器(包含选择器

[Selenium] CSS3 选择器

在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素. "CSS" 列指示该属性是在哪个 CSS 版本中定义的.(CSS1.CSS2 还是 CSS3.) 选择器 例子 例子描述 CSS .class .intro 选择 class="intro" 的所有元素. 1 #id #firstname 选择 id="firstname" 的所有元素. 1 * * 选择所有元素. 2 element p 选择所有 <p> 元素. 1 e

CSS3选择器介绍

1.css3属性选择器 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>css3属性选择器</title> <style type="text/css"> /* id包含div字符串*/ [id*=div] { color: lime; } /*开始字符串为div*/ [i

CSS3选择器使用小结

CSS3 选择器小结 一 通用选择器 1  *{}通配选择符(CSS2):适合所有元素对象. 2  E类型(HTML)选择符(CSS1):以文档语言对象类型DOM作为选择符. 3  E#myid是id选择符(CSS1):以唯一标识符id属性等于myid的E对象作为选择符. 4  E.myclass是类class选择符(CSS1):以class属性包含myclass的E对象作为选择符. 5  E F:包含选择符(CSS1):选择所有被E元素包含的F元素. CSS3新增的通用选择器:同级元素通用选择

前端极易被误导的css选择器权重计算及css内联样式的妙用技巧

记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前端群里还发现以上观点类似的奇葩聊天,真是*** 其实,也是在很久以前,看了腾讯ISUX的一位前端工程师-麦时分享的一篇技术文章(个人站点已失效,就不贴出来了),才了解到真正的css选择器权重计算. 以下是css选择器权重计算精华所在,翻译自国外的文档(记得是W3C给出的计算规则) 如果一个声明来自s