或许大家平时总是在用的选择器都是:#id  .class  以及标签选择器。可是这些还远远不够,为了在开发中更加得心应手,本文总结了30个CSS3选择器,希望对大家有所帮助。

1 *:通用选择器

* {   margin:0;   padding:0;  }

*选择器是选择页面上的全部元素,上面的代码作用是把全部元素的margin和padding设为0,最基本的清除浏览器默认样式的方法。

*选择器也可以应用到子选择器中,例如下面的代码:

#container * {   border:1px solid black;  }

这样ID为container 的所有子标签元素都被选中了,并且设置了border。

2 #id:id选择器

#container {
width: 960px;
margin: auto;
}

id选择器是很严格的并且你没办法去复用它。使用的时候大家还是得相当小心的。需要问自己一下:我是不是必须要给这个元素来赋值个id来定位它呢?

3 .class:类选择器

.error {
color: red;
}

这是个class选择器。它跟id选择器不同的是,它可以定位多个元素。当你想对多个元素进行样式修饰的时候就可以使用class。当你要对某个特定的元素进行修饰那就是用id来定位它。

4 selector1 selector2:后代选择器

li a {
text-decoration: none;
}

后代选择器是比较常用的选择器。如果你想更加具体的去定位元素,你可以使用它。例如,假如,你不需要定位所有的a元素,而只需要定位li标签下的a标签?这时候你就需要使用后代选择器了。

提示:如果你的选择器像X Y Z A B.error这样,那你就错了。时刻都提醒自己,是否真的需要对那么多元素修饰。

5 tagName:标签选择器

a { color: red; }
ul { margin-left: 0; }

如果你想定位页面上所有的某标签,不是通过id或者是’class’,这简单,直接使用类型选择器。

6 selector:link  selector:visited  selector:hover  selector:active  伪类选择器

一般情况下selector都为a标签,以上四种伪类选择器代表的意思如下:

link:连接平常的状态。
visited:连接被访问过之后。
hover:鼠标放到连接上的时候。
active:连接被按下的时候。

未移入a标签链接时:link
移入a标签链接时:link、hover
点击a标签链接时:link、hover、active

点击后未移入a标签连接时:link、visited

点击后移入a标签连接时:link、visited、hover

点击后再次点击a标签连接时:link、visited、hover、active

这个就是所有组合的样式了。

如果有多个同样的样式,后面的样式会覆盖前面的样式,所以这四个伪类的定义就有顺序的要求了,而大家所说的‘lvha’也是因为这个原因。
 
7 selector1 + selector2 :相邻选择器

ul + p {
color: red;
}
它指挥选中指定元素的直接后继元素。上面那个例子就是选中了所有ul标签后面的第一段,并将它们的颜色都设置为红色。
 
8 selector1 > selector2 : 子选择器

div#container > ul {
border: 1px solid black;
}

它与差别就是后面这个指挥选择它的直接子元素。看下面的例子:

<div id="container">
<ul>
<li> List Item
<ul>
<li> Child </li>
</ul>
</li>
<li> List Item </li>
<li> List Item </li>
<li> List Item </li>
</ul>
</div>

#container > ul只会选中id为’container’的div下的所有直接ul元素。它不会定位到如第一个li下的ul元素。
由于某些原因,使用子节点组合选择器会在性能上有许多的优势。事实上,当在javascript中使用css选择器时候是强烈建议这么做的。

9 selector1 ~ selector2 : 兄弟选择器

ul ~ p {
color: red;
}

兄弟节点组合选择器跟相邻选择器很相似,然后它又不是那么的严格。ul + p选择器只会选择紧挨跟着指定元素的那些元素。而这个选择器,会选择跟在目标元素后面的所有匹配的元素。

10 selector[title] : 属性选择器

a[title] {
color: green;
}

上面的这个例子中,只会选择有title属性的元素。那些没有此属性的锚点标签将不会被这个代码修饰。

11 selector[href="foo"] : 属性选择器

a[href="http://strongme.cn"] {
color: #1f6053; /* nettuts green */
}

上面这片代码将会把href属性值为http://strongme.cn的锚点标签设置为绿色,而其他标签则不受影响。
注意:我们将值用双引号括起来了。那么在使用Javascript的时候也要使用双引号括起来。可以的话,尽量使用标准的CSS3选择器。

12 selector[href*=”strongme”]   : 属性选择器

a[href*="strongme"] {
color: #1f6053;
}

指定了strongme这个值必须出现在锚点标签的href属性中,不管是strongme.cn还是strongme.com还是www.strongme.cn都可以被选中。
但是记得这是个很宽泛的表达方式。如果锚点标签指向的不是strongme相关的站点,如果要更加具体的限制的话,那就使用^$,分别表示字符串的开始和结束。

13 selector[href^=”href”]  : 属性选择器

a[href^="http"] {
background: url(path/to/external/icon.png) no-repeat;
padding-left: 10px;
}

大家肯定好奇过,有些站点的锚点标签旁边会有一个外链图标,我也相信大家肯定见过这种情况。这样的设计会很明确的告诉你会跳转到别的网站。
用克拉符号就可以轻易做到。它通常使用在正则表达式中标识开头。如果我们想定位锚点属性href中以http开头的标签,那我们就可以用与上面相似的代码。
注意我们没有搜索http://,那是没必要的,因为它都不包含https://。

14 selector[href$=”.jpg”]  : 属性选择器

a[href$=".jpg"] {
color: red;
}

这次我们又使用了正则表达式$,表示字符串的结尾处。这段代码的意思就是去搜索所有的图片链接,或者其它链接是以.jpg结尾的。但是记住这种写法是不会对gifspngs起作用的。

15 selector[data-*=”foo”] : 属性选择器

a[data-filetype="image"] {
color: red;
}

回到上一条,我们如何把所有的图片类型都选中呢png,jpeg,’jpg’,’gif’?我们可以使用多选择器。看下面:

a[href$=".jpg"],
a[href$=".jpeg"],
a[href$=".png"],
a[href$=".gif"] {
color: red;
}

但是这样写着很蛋疼啊,而且效率会很低。另外一个办法就是使用自定义属性。我们可以给每个锚点加个属性data-filetype指定这个链接指向的图片类型。

a[data-filetype="image"] {
color: red;
}

16 selector[foo~=”bar”]  : 属性选择器

a[data-info~="external"] {
color: red;
} a[data-info~="image"] {
border: 1px solid black;
}

这个我想会让你的小伙伴惊呼妙极了。很少有人知道这个技巧。这个~符号可以定位那些某属性值是空格分隔多值的标签。
继续使用第15条那个例子,我们可以设置一个data-info属性,它可以用来设置任何我们需要的空格分隔的值。这个例子我们将指示它们为外部连接和图片链接。

<a href="path/to/image.jpg" data-info="external image"> Click Me, Fool </a>

给这些元素设置了这个标志之后,我们就可以使用~来定位这些标签了。

/* Target data-info attr that contains the value "external" */
a[data-info~="external"] {
color: red;
} /* And which contain the value "image" */
a[data-info~="image"] {
border: 1px solid black;
}

17 selector:checked : 伪类选择器

input[type=radio]:checked {
border: 1px solid black;
}

上面这个伪类写法可以定位那些被选中的单选框和多选框,就是这么简单。

18 selector:after : 伪类选择器
beforeafter这俩伪类。好像每天大家都能找到使用它们的创造性方法。它们会在被选中的标签周围生成一些内容。
当使用.clear-fix技巧时许多属性都是第一次被使用到里面的。

.clearfix:after {
content: "";
display: block;
clear: both;
visibility: hidden;
font-size: 0;
height: 0;
} .clearfix {
*display: inline-block;
_height: 1%;
}

上面这段代码会在目标标签后面补上一段空白,然后将它清除。这个方法你一定得放你的聚宝盆里面。特别是当overflow:hidden方法不顶用的时候,这招就特别管用了。
根据CSS3标准规定,可以使用两个冒号::。然后为了兼容性,浏览器也会接受一个冒号的写法。其实在这个情况下,用一个冒号还是比较明智的。

19 selector:hover  : 伪类选择器

div:hover {
background: #e3e3e3;
}

不用说,大家肯定知道它。官方的说法是user action pseudo class.听起来有点儿迷糊,其实还好。如果想在用户鼠标飘过的地方涂点儿彩,那这个伪类写法可以办到。
注意:旧版本的IE只会对加在锚点a标签上的:hover伪类起作用。
通常大家在鼠标飘过锚点链接时候加下边框的时候用到它。

a:hover {
border-bottom: 1px solid black;
}

专家提示:border-bottom:1px solid black;比text-decoration:underline;要好看很多。

20 selector1:not(selector2) : 伪类选择器

div:not(#container) {
color: blue;
}

取反伪类是相当有用的,假设我们要把除idcontainer之外的所有div标签都选中。那上面那么代码就可以做到。

或者说我想选中所有出段落标签之外的所有标签

:not(p) {
color: green;
}

21 selector::pseudoElement  : 伪类选择器

p::first-line {
font-weight: bold;
font-size:1.2em;
}

我们可以使用::来选中某标签的部分内容,如第一段,或者是第一个字。但是记得必须使用在块式标签上才起作用。

伪标签是由两个冒号 :: 组成的。

定位第一个字

p::first-letter {
float: left;
font-size: 2em;
font-weight: bold;
font-family: cursive;
padding-right: 2px;
}

上面这段代码会找到页面上所有段落,并且指定为每一段的第一个字。

它通常在一些新闻报刊内容的重点突出会使用到。

定位某段的第一行

p::first-line {
font-weight: bold;
font-size: 1.2em;
}

::first-line相似,会选中段落的第一行 。

为了兼容性,之前旧版浏览器也会兼容单冒号的写法,例如:first-line,:first-letter,:before,:after.但是这个兼容对新介绍的特性不起作用。

22 selector:nth-child(n) : 伪类选择器

li:nth-child(3) {
color: red;
}

还记得我们面对如何取到堆叠式标签的第几个元素时无处下手的时光么,有了nth-child那日子就一去不复返了。

请注意nth-child接受一个整形参数,然后它不是从0开始的。如果你想获取第二个元素那么你传的值就是li:nth-child(2).

我们甚至可以获取到由变量名定义的个数个子标签。例如我们可以用li:nth-child(4n)去每隔3个元素获取一次标签。

23 selector:nth-last-child(n) : 伪类选择器

li:nth-last-child(2) {
color: red;
}

假设你在一个ul标签中有N多的元素,而你只想获取最后三个元素,甚至是这样li:nth-child(397),你可以用nth-last-child伪类去代替它。

24 selectorX:nth-of-type(n) : 伪类选择器

ul:nth-of-type(3) {
border: 1px solid black;
}

曾几何时,我们不想去选择子节点,而是想根据元素的类型来进行选择。

想象一下有5个ul标签。如果你只想对其中的第三个进行修饰,而且你也不想使用id属性,那你就可以使用nth-of-type(n)伪类来实现了,上面的那个代码,只有第三个ul标签会被设置边框。

25 selector:nth-last-of-type(n) : 伪类选择器

ul:nth-last-of-type(3) {
border: 1px solid black;
}

同样,也可以类似的使用nth-last-of-type来倒序的获取标签。

26 selector:first-child : 伪类选择器

ul li:first-child {
border-top: none;
}

这个结构性的伪类可以选择到第一个子标签,你会经常使用它来取出第一个和最后一个的边框。

假设有个列表,每个标签都有上下边框,那么效果就是第一个和最后一个就会看起来有点奇怪。这时候就可以使用这个伪类来处理这种情况了。

27 selector:last-child : 伪类选择器

ul > li:last-child {
color: green;
}

first-child相反,last-child取的是父标签的最后一个标签。
例如
标签

<ul>
<li> List Item </li>
<li> List Item </li>
<li> List Item </li>
</ul>

这里没啥内容,就是一个了 List。

ul {
width: 200px;
background: #292929;
color: white;
list-style: none;
padding-left: 0;
} li {
padding: 10px;
border-bottom: 1px solid black;
border-top: 1px solid #3c3c3c;
}

上面的代码将设置背景色,移除浏览器默认的内边距,为每个li设置边框以凸显一定的深度。

28 selector:only-child : 伪类选择器

div p:only-child {
color: red;
}

说实话,你会发现你几乎都不会用到这个伪类。然而,它是相当有用的,说不准哪天你就会用到它。

它允许你获取到那些只有一个子标签的父标签下的那个子标签。就像上面那段代码,只有一个段落标签的div才被着色。

<div><p> My paragraph here. </p></div>
<div>
<p> Two paragraphs total. </p>
<p> Two paragraphs total. </p>
</div>

上面例子中,第二个div不会被选中。一旦第一个div有了多个子段落,那这个就不再起作用了。

29 selector:only-of-type: 伪类选择器

li:only-of-type {
font-weight: bold;
}

结构性伪类可以用的很聪明。它会定位某标签下相同子标签的只有一个的目标。设想你想获取到只有一个子标签的ul标签下的li标签呢?

使用ul li会选中所有li标签。这时候就要使用only-of-type了。

ul > li:only-of-type {
font-weight: bold;

最后记住:使用像jQuery等工具的时候,尽量使用原生的CSS3选择器。可能会让你的代码跑的很快。这样选择器引擎就可以使用浏览器原生解析器,而不是选择器自己的。
如果还有同学对 nth-of-type 与 nth-child的认识还是不明确,可以移步到深入理解css3中nth-child和 nth-of-type的区别这篇文章。

总结30个CSS选择器的更多相关文章

  1. 30类css选择器

    大概大家都知道id,class以及descendant选择器,并且整体都在使用它们,那么你正在错误拥有更大级别的灵活性的选择方式.这篇文章里面提到的大部分选择器都是在CSS3标准下的,所以它们只能在相 ...

  2. 这 30 类 CSS 选择器,你必须理解!

    CSS 选择器是一种模式,用于选择需要添加样式的元素.平时使用最多也是最简单的就是 #id..class 和标签选择器,在 CSS 中还有很多更加强大更加灵活的选择方式,尤其是在 CSS3 中,增加了 ...

  3. 前端必须掌握的30个CSS选择器

    也许你已经学会了CSS的三个简单常用的选择器:#ID,.class,标签选择器,可是这些就足够了吗?随着CSS3的到来,作为前端开发者需要掌握下面三十个基本的选择器,这样才可以在平时开发中得心用手. ...

  4. 必须记住的 30 类 CSS 选择器

    大概大家读知道`id`,`class`以及`descendant`选择器,并且整体都在使用它们,那么你正在错误拥有更大级别的灵活性的选择方式.这篇文章里面提到的大部分选择器都是在CSS3标准下的,所以 ...

  5. 你须知道的30个CSS选择器 »

    你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远远不是css的全部.下面向大家系统的解析css中30个最常用的选择器,包括我们最头痛的浏览器兼容性问题.掌握了它们,才能真正领 ...

  6. 前端页面设计常见的30个CSS选择器

    1. *   -->   通配符选择器 * { margin: 0; padding: 0; } 星号符会选择页面每个元素.很多开发者用它把所有margin和padding归零.这当然是快捷测试 ...

  7. 看这一篇就够了,css选择器知识汇总

    对大多技术人员来说都比较熟悉CSS选择器,举一例子来说,假设给一个p标签增加一个类(class),可是执行后该class中的有些属性并没有起作用.通过Firebug查看,发现没有起作用的属性被覆盖了, ...

  8. 30个最常用css选择器解析(zz)

    你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远远不是css的全部.下面向大家系统的解析css中30个最常用的选择器,包括我们最头痛的浏览器兼容性问题.掌握了它们,才能真正领 ...

  9. 30个最常用css选择器解析

    转自:http://www.cnblogs.com/yiyuanke/archive/2011/10/22/CSS.html 你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远 ...

随机推荐

  1. centos环境自动化批量安装软件脚本

    自动化安装jdk软件部署脚本 准备工作: 1.在执行脚本的服务器上生成免密码公钥: 安装expect命令 yum install -y expect ssh-keygen 三次回车 2.将jdk-7u ...

  2. VUE 入门基础(3)

    三,模板语法 Vue将模板编译成虚拟DOM渲染函数,结合响应系统,在应用状态改变时,vue能够智能地计算出重新渲染组件的最小代价并DOM操作上. 插值,文本 数据绑定常见的形式就是使用"Mu ...

  3. Python内置函数总结

    1.abs() 取绝对值 1 2 3 4 >>> a = abs(-7) >>> b= abs(7) >>>print(a,b) 7 7 2.al ...

  4. 关于js调用外部部署的web api

    没想到多年之后我还得继续写这些东西.... 瀑布汗~ 最近不得不开始研究用web api MVC的项目中,在js文件里,实现点击一个按钮调用外部发布好的api,再从api把值回传给js页面,跳转. 经 ...

  5. spring-mybatis jar下载地址

    http://central.maven.org/maven2/org/mybatis/mybatis-spring/1.3.0/

  6. centos 安装 svn

    1: yum 安装 svn yum install  -y subversion 2验证是否安装完成 svnserve –version svnserve, version 1.6.11 (r9344 ...

  7. MySQL数据库引擎介绍、区别、创建和性能测试的深入分析

    本篇文章是对MySQL数据库引擎介绍.区别.创建和性能测试进行了详细的分析介绍,需要的朋友参考下   数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎 ...

  8. 背包九讲 && 题目

    ★.背包求方案数的时候,多重背包是不行的,因为产生重复的背包会有多种情况. ★.背包记录路径的时候,其实是不行的,因为更新了12的最优解,如果它依赖于6这个背包,然后你后面改变了6这个背包,就GG 1 ...

  9. Memento(备忘录)-对象行为型模式

    1.意图 在布破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可以将对象恢复到原先保存的状态. 2.别名 Token 3.动机 为了允许用户取消不确定的操作或从错误中 ...

  10. 第四章 ngrok使用

    网址(下载):http://www.ngrok.cc/ 注册:http://www.ngrok.cc/login 管理后台:http://www.ngrok.cc/user.html 创建隧道,产生隧 ...