css的选择器的详细介绍

 更新时间:2016年10月10日 07:06  点击:2371
选择器是可以选择指定那个样式了,今天我们来看一篇关于选择器的一个用法,希望这篇文章能够帮助到各位理解到css的选择器了,具体的细节如下文介绍。

前言

css选择器,是前端的基本功,只要你是一个前端,这个一定要掌握!今天之所以要重温一下css选择器,主要是和大家再复习一下css选择器中的一些常用符号的使用,例如“+、~、^、$、>、*”等的使用!之所以要复习呢,是因为我一个写后端的哥们,前端写的也很好,但是他今天突然问我,css中加号和大于号是啥意思?我说,这个貌似jquery中也有吧!好吧,可能这些符号不常用,造成我们对这些符号的陌生!那么今天,我们一起再来复习一下吧!

大家在右侧搜索框中搜索“选择器”,会发现,我之前写过css用伪类nth-child,进行奇偶行的选择。今天,关于css3伪类选择器,我就不多描述了!同时大家也可以看一下我之前写的“jquery常用选择器总结”,其实,jquery选择器和css选择器类似!特别是在属性选择和组合选择上面!

基本选择器

ID选择器:#header {}
类选择器:.header {}
元素选择器:div {}
子选择器:ul > li {}
后代选择器:div p {}
伪类选择器:a:hover {}
属性选择器:input[type="text"] {}
id优先级高于类class;
后面的样式覆盖前面的;
指定的高于继承;

css选择器之特殊符号

1、>(大于号)

大于号代表选择子元素,这个我们经常用,值得注意的是 h1>strong 和h1 strong的区别

这2个都是选择子元素,但是 h1>strong 只选择某个元素的子元素。例如如下:

<h1>This is <strong class="haorooms">very</strong> <strong>very</strong> important.</h1>
<h1>This is <em>really <strong>very</strong></em> important.</h1>
h1>strong ,只有第一个h1下面的strong被选中,第二个不起作用。但是 h1 strong,所有的h1下面的strong都被选中了。

2、+号

选择相邻兄弟,这点和jquery相同。

例如:

<h1>This is a heading.</h1>
<p>This is paragraph.</p>
<p>This is paragraph.</p>

h1 + p {margin-top:50px;} //h1后面的第一个p元素会有50px的间距。代表选择紧接在 h1 元素后出现的段落
属性选择器

css属性选择器用处也比较多,之前参加第二节css开发者大会的时候,有的老师分享,他们公司基本上都是用属性选择器来写css,这样字面明了,他们都不怎么用class。我感觉这个要分情况,那个老师讲的项目是angularjs的,因此属性选择器比较实用!

举几个例子

1、把包含标题(title)的所有元素变为红色

如下写:

*[title] {color:red;}
2、将同时有 href 和 title 属性的 HTML 超链接的文本设置为红色

a[href][title] {color:red;}
3、指定将http://www.111cn.net /post/css_wl_wys 这篇文字颜色变红

a[href="http://www.111cn.net /post/css_wl_wys"] {color: red;}

当然也可以多个属性一起,这里就不多举例了!

4、属性与属性值必须完全匹配

我们来看一个class的div

<p class="important haorooms">This paragraph is a very important warning.</p>
我们用class选择,大家都晓得,很简答,但是用属性选择,我们用如下:

p[class="important"]
是选择不到的,因为还有一个haorooms。因此,必须这样写:

p[class="important haorooms"] {color: red;}
5、根据部分属性值选择

看到上面多个属性必须完全匹配,很不爽,那么有没有可以部分匹配属性的方法呢?答案是有的。还是上面的例子,我们如下选择就可以了!

p[class~="haorooms"] {color: red;}
如果需要根据属性值中的词列表的某个词进行选择,则需要使用波浪号(~)。

6、字符串匹配属性选择器

上面说到了~(波浪号选择),有朋友会把他和*= 搞混,例如,如下例子:

<p  haorooms="importanthaorooms">This paragraph is a very important warning.</p>
我们可以用[haorooms * ="haoroom"]来选择,这个和~的区别就是包含,~是几个属性直接有空格,空格中的一个。*=没有空格,但是包含某个字符。除此之外,还有开头选择和结尾选择,和jquery类似:

[haorooms^="haorooms"]           选择 haorooms 属性值以 "haorooms" 开头的所有元素
[haorooms$="haorooms"]          选择 haorooms 属性值以 "haorooms" 结尾的所有元素

7、特定属性选择类型

请看下面的例子:

*[lang|="en"] {color: red;}

上面这个规则会选择 lang 属性等于 en 或以 en- 开头的所有元素。因此,以下示例标记中的前三个元素将被选中,而不会选择后两个元素:

<p lang="en">Hello!</p>
<p lang="en-us">Greetings!</p>
<p lang="en-au">G'day!</p>
<p lang="fr">Bonjour!</p>
<p lang="cy-en">Jrooana!</p>

CSS的基本选择器

1、元素选择器

这是最基本的CSS选择器,HTML文档中的元素本身就是一个选择器:

p {line-height:1.5em; margin-bottom:1em;}

2、关系选择器

E F:后代选择器,该选择器定位元素E的后代中所有元素F:

ul li {margin-bottom:0.5em;}

E > F:子选择器,该选择器定位元素E的直接子元素中的所有元素F,它将忽略任何进一步的嵌套:

ul > li {list-style:none;} //仅限ul的直接子元素li,如果li里面还嵌套着另一个 ul 结构时,最里面的 li 将被忽略

E + F:相邻兄弟选择器,该选择器定位与元素E具有相同父元素且在标记中紧邻E的元素F:

li + li {border-top:1px solid #ddd;} //定位具有相同父元素ul里除第一个li之外的所有li

E ~ F:一般兄弟选择器,该选择器定位与元素E具有相同父元素且在标记中位于E之后的所有元素F:

h1 ~ p {color:#f00;} //定位具有相同父元素的,h1标签之后的所有p标签

 

3、属性选择器

E[attr]:该选择器定位具有属性attr的任何元素E:

input[required] {border:1px solid #f00;} //定位页面里所有具有必填属性"required"的input

E[attr=val]:该选择器定位具有属性attr且属性值为val的任何元素E:

input[type=password] {border:1px solid #aaa;} //定位页面里的密码输入框

E[attr|=avl]:该选择器定位具有属性attr且属性值为val或以val-开始的任何元素E:

p[class|=a] {color:#333;} //定位页面里所有的P段落里具有class属性且属性值为a或是a-开始的,比如class="a"以及class="a-b"

E[attr~=val]:该选择器定位具有属性attr且属性值为完整单词 val 的任何元素E:

div[title~=english] {color:#f88;} //定位页面里所有具有属性title且属性值里拥有完整单词english的div容器,比如title="english"以及title="a english"

E[attr^=val]:该选择器定位具有属性attr且属性值以val开头的任何元素E:

div[class^=a] {color:#666;} //定位页面里具有属性class且属性值以a开头的div容器,比如class="a"以及class="ab"

E[attr$=val]:该选择器与E[attr^=val]正好相反,定位具有属性attr且属性值以val结尾的任何元素E:

div[class$=a] {color:#f00;} //定位页面里具有属性class且属性值以a结尾的div窗口,比如class="nba"以及class="cba"

E[attr*=val]:该选择器与E[attr~=val]相似,但更进一步,定位具有属性attr且属性值任意位置包含val的元素E,val可以是一个完整的单词,也可以是一个单词中的一部分:

a[title*=link] {text-decoration:underline;} //定位所有title里具有link字符串的a链接

4、伪类

:link:未访问的链接;

:visited:已访问的链接,不建议使用;

:hover:鼠标移动到容器,不仅限于链接,可用于页面中的任何元素;

:active:被激活时的状态,不仅限于链接,可用于任何具有tabindex属性的元素;

:focus:获得焦点时状态,不仅限于链接,可用于任何具有tabindex属性的无线:

input:focus {border:1px solid #333;} //输入框获得焦点时的样式

:enabled:已启用的界面元素:

input:enabled {border:1px solid #899;}

:disabled:已禁用的界面元素:

input:disabled {background:#eee;}

:target:该选择器定位当前活动页面内定位点的目标元素:

#info:target {font-size:24px;} //当访问的URL网址为 123.html#info 时,id="info"将加载这个字体样式

:default:应用于一个或多个作为一组类似元素中的默认元素的UI元素;

:valid:应用于有效元素:

input:valid {border:1px solid #6a6;} //当输入框验证为有效时加载这个边框样式,基于type或pattern属性

:invalid:应用于空的必填元素,以及未能与type或pattern属性所定义的需求相匹配的元素:

input:invalid {border:1px solid #f00;} //当输入框为空且必填时,或已填写但验证无效时,加载此边框样式

:in-range:应用于具有范围限制的元素,其中该值位于限制内;比如具有min和max属性的number和range输入框;

:o ut-of-range:与:in-range选择相反,其中该值在限制范围外;
:required:应用于具有必填属性required的表单控件;

:o ptional:应用于没有必填属性required的所有表单控件
:read-only:应用于其内容无法供用户修改的元素;

:read-write:应用于其内容可供用户修改的元素,比如输入框;

:root:根元素,始终指html元素;

E F:nth-child(n):该选择器定位元素E的第n个子元素的元素F:

div.class p:nth-child(3) {color:#f00;} //class="class"的div容器里的第3个元素p,如果第3个子元素不是p,此样式将失效

E F:nth-last-child(n):该选择器定位元素E的倒数第n个子元素的元素F;

E:nth-of-type(n):该选择器定位元素E的第n个指定类型子元素;

E:nth-lash-of-type(n):该选择器定位元素E的导数第n个指定类型子元素:

.class p:nth-child(2) 与 .class p:nth-of-type(2) 的区别在于,如果.class里的第2个子元素不是P元素时,.class p:nth-child(2) 的样式将无效,而.class p:nth-of-type(2) 将定位在 .class 里的第2个p元素

nth-child(n)、nth-last-child(n)、nth-of-type(n)、nth-last-of-type(n),这其中的 n 可以使用数字静态式,比如 .nth-child(2n+1) 将匹配第1、3、5...个元素

E:first-child:父元素的第一个子元素E,与:nth-child(1)相同;

E:last-child:父元素的倒数第一个子元素E;

E:first-of-type:与:nth-of-type(1)相同;

E:last-of-type:与:nth-last-of-type(1)相同;

E:only-child:父元素中唯一的子元素E;

E:only-of-type:父元素中唯一具有该类型的元素E;

E:empty:没有子元素的元素,没有子元素包括文本节点;

E:lang(en):具有使用双字母缩写(en)表示的语言的元素;

E:not(exception):该选择器将选择与括号内的选择器不匹配的元素:

p:not(.info) {font-size:12px;} //匹配所有class值不为info的p元素

5、伪元素

伪元素可用于定位文档中包含的文本,为与伪类进行区分,伪元素使用双冒号 :: 定义,但单冒号 : 也能被识别。

::first-line:匹配文本首行;

::first-letter:匹配文本首字母;

::before 与 ::after :使用 contnet 属性生成额外的内容并插入在标记中:

a[href^=http]::after {content:"link"} //在页面的a链接的后面插入文字link

::selection:匹配突出显示的文本:

::selection {background:#444; color:#fff;} //定义选中的文本颜色与背景色

当然,如果要方便的使用这些强大的CSS选择器的话,使用Chrome、Firefox之类的浏览器吧,最起码得抛弃IE9以下的IE版本浏览器吧。

[!--infotagslink--]

相关文章

  • vue Treeselect下拉树只能选择第N级元素实现代码

    这篇文章主要介绍了vue Treeselect下拉树只能选择第N级元素实现代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-01
  • 浅析Promise的介绍及基本用法

    Promise是异步编程的一种解决方案,在ES6中Promise被列为了正式规范,统一了用法,原生提供了Promise对象。接下来通过本文给大家介绍Promise的介绍及基本用法,感兴趣的朋友一起看看吧...2021-10-21
  • JS实现简单面向对象的颜色选择器实例

    这篇文章主要介绍了JS实现简单面向对象的颜色选择器,以完整实例形式分析了JavaScript基于面向对象实现颜色选择器的具体步骤与实现技巧,需要的朋友可以参考下...2016-04-23
  • PHP中print_r、var_export、var_dump用法介绍

    文章详细的介绍了关于PHP中print_r、var_export、var_dump区别比较以及这几个在php不同的应用中的用法,有需要的朋友可以参考一下 可以看出print_r跟var_export都...2016-11-25
  • Framewrok7 视图介绍(views、view)使用介绍

    下面我们来看一篇关于Framewrok7 视图介绍(views、view)使用介绍吧,希望这篇文章能够帮助到各位朋友。 一、Views 与View的介绍 1,Views (<div class="views">) (1)Vi...2016-10-02
  • Monolog PHP日志类库使用详解介绍

    PHP日志类库在低版本中我们都没有看到了但在高版本的php中就有了,下面我们来看一篇关于PHP日志类库使用详解介绍吧. Monolog遵循PSR3的接口规范,可以很轻易的替换...2016-11-25
  • uniapp 仿微信的右边下拉选择弹出框的实现代码

    这篇文章主要介绍了uniapp 仿微信的右边下拉选择弹出框的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-12
  • Element DateTimePicker日期时间选择器的使用示例

    这篇文章主要介绍了Element DateTimePicker日期时间选择器的使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-28
  • iOS自定义日期选择器

    这篇文章主要为大家详细介绍了iOS自定义日期选择器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-30
  • php获取当前url地址的方法介绍

    这篇文章介绍了php获取当前url地址的方法小结,有兴趣的同学可以参考一下 本文实例讲述了php获取当前url地址的方法。分享给大家供大家参考,具体如下: js 获取: ...2017-01-22
  • 基于xpath选择器、PyQuery、正则表达式的格式清理工具详解

    这篇文章主要介绍了基于xpath选择器、PyQuery、正则表达式的格式清理工具,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • PHP-GTK 介绍及其应用

    1. PHP-GTK介绍 1.1 PHP-GTK PHP-GTK是PHP的延伸模组,它可以让程式设计师写出在客户端执行的、且独立的GUI的程式。这个模组不允许在浏览器上显视GTK+的程式,它一开始就...2016-11-25
  • 十分钟轻松掌握dataframe数据选择

    这篇文章主要介绍了十分钟轻松掌握dataframe数据选择,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-04
  • PHP 获取文件目录权限函数fileperms介绍

    在php中要获取或目录权限我们可使用fileperms函数来获取,fileperms() 函数返回文件或目录的权限,。若成功,则返回文件的访问权限。若失败,则返回 false。 例子 1 ...2016-11-25
  • 不错的mod_perl编程的简单应用实例介绍

    介绍性指南 mod_perl 是个庞大而复杂的工具,它内建了许多模块帮助你方便地构建动态网站。这篇指南的目的是帮助你构建一个良好的 mod_perl 模块,并从中理解 mod_perl 的实现...2020-06-29
  • 详解element-ui动态限定的日期范围选择器代码片段

    这篇文章主要介绍了element-ui动态限定的日期范围选择器代码片段,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-03
  • php设置时区方法介绍

    php默认时区是欧美国家的所以与我们中国时区相差了整整8小时哦,下面我来给各位介绍php设置时区方法,有需要了解的朋友可进入参考。 在 php.ini 中,默认是 date.timez...2016-11-25
  • jQuery源码分析之sizzle选择器详解

    jquery从1.3开始,使用了新的选择器–sizzle。效率超过了以前的jquery版本的其他选择器。下面这篇文章主要介绍了jQuery源中sizzle选择器的相关资料,文中介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧。...2017-02-19
  • OpenCart网站迁移步骤详细介绍

    OpenCart是国外著名的开源电子商务系统,由英国人Daniel一人独立开发,其社区非常活跃,由各国网友翻译出来的语言包已经达到18种,其中包括中文,俄文,法文,西班牙文,德文等等,下面...2016-10-10
  • Mysql创建数据库和独立数据库帐号方法介绍

    本文章来给各位同学介绍phpMyadmin创建Mysql数据库及独立数据库帐号建立,如果你不会mysql命令来创建数据库之类的我们可以使用phpmyadmin来完成哦。 phpMyadmin创...2016-11-25