html19个选择器,你必须记住的30个CSS选择器_html/css_WEB-ITnose

5268f80b9b1e01f982625ef6fac83ca1.png

开篇 有30个CSS选择器你必须烂熟于心,它们适应于当今各大主流浏览器。

1.* * { margin: 0; padding: 0;}

*选择器选择的是每一个单一元素。很多程序员用上面的CSS将所有元素的margin和padding清零。虽然这是有效的,但最好还是别这么做,这会使得浏览器的负担很重。

*选择器也可以用在孩子选择器中。 #container * { border: 1px solid black;}

这会使#container所有孩子都有border,但还是那句话,如果不是必须得这么做,还是别用星选择器。

view demo

Compatibility IE6+

Firefox

Chrome

Safari

Opera

2.#x #container { width: 960px; margin: auto;}

id选择器的优先级很高,因此在用之前问问自己:我仅仅是为了找到这个元素而去给他加id的吗?

view demo

Compatibility IE6+

Firefox

Chrome

Safari

Opera

3..x .error { color: red;}

class选择器和id选择器不同,首先优先级没有id高,再者id选择器只能选择一个,而class选择器则可以筛选出来一组。

view demo

Compatibility IE6+

Firefox

Chrome

Safari

Opera

4.x y li a { text-decoration: none;}

当不是选择所有后代时,后代选择器将会非常有用,但有一点得注意:如果你的选择器是x y z a b.error, 那你就用错了。你得问问自己是否需要应用每一层?

view demo

Compatibility IE6+

Firefox

Chrome

Safari

Opera

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

如果想选择同一类元素,那就不要用id或class了,直接用元素选择器。

view demo

Compatibility IE6+

Firefox

Chrome

Safari

Opera

6.x:visted and x:link a:link { color: red; }a:visted { color: purple; }

我们常常用伪类:link筛选a标签是还未被点击;而用:visited去筛选哪些别点击过了。

view demo

Compatibility IE7+

Firefox

Chrome

Safari

Opera

7.x + y ul + p { color: red;}

相邻选择器会选择第一个相邻的元素,如上面的例子会让ul后第一个段落的字体变为红色(而ul与p之间是不能有其他元素的)。

view demo

Compatibility IE7+

Firefox

Chrome

Safari

Opera

8.x > y div#container > ul { border: 1px solid black;}

这也是一种后代选择器,但它与x y这种后代选择器不同,它只能选择直系后代。如: List Item Child

List Item

List Item

List Item

在这个例子中,#cotainer > ul只会选择第一个ul,而不会search到ul里面那个包含li的ul。

view demo

Compatibility IE7+

Firefox

Chrome

Safari

Opera

9.x ~ y ul ~ p { color: red;}

这种兄弟选择器与x + y类似,但不同的是,后者只能筛选第一个p,而这种却可以满足ul下所有的直系p标签。

view demo

Compatibility IE7+

Firefox

Chrome

Safari

Opera

10.x[title] a[title] { color: green;}

属性选择器。这将选择所有具有title属性的a标签。

view demo

Compatibility IE7+

Firefox

Chrome

Safari

Opera

11.x[href="foo"] a[href="http://net.tutsplus.com"] { color: #1f6053; /* nettuts green */}

这个选择器可以选择链接为href="http://net.tutsplus.com"的a标签,可如果这个里这个链接变了呢?,这未免有些严格,可以适当的用正则表达式去匹配。

view demo

Compatibility IE7+

Firefox

Chrome

Safari

Opera

12.x[href*="nettuts"] a[href*="tuts"] { color: #1f6053; /* nettuts green */}

'*'号将匹配href中含有nuttuts字符,如果想更加严格,还可以用^和$表示开始和结束。

view demo

Compatibility IE7+

Firefox

Chrome

Safari

Opera

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

这样去筛选具有有效href的a将匹配http://和https://.

view demo

Compatibility IE7+

Firefox

Chrome

Safari

Opera

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

这将会选择链接为jpg格式的图片链接,可是如果图片类型为png或gif等怎么办?

view demo

Compatibility IE7+

Firefox

Chrome

Safari

Opera

15.x[data-*="foo"] a[data-filetype="image"] { color: red;}

按照规则14.我们可能得: a[href$=".jpg"],a[href$=".jpeg"],a[href$=".png"],a[href$=".gif"] { color: red;}

可这也太。。。我们可以加一个属性用以标示。 Image Link a[data-filetype="image"] { color: red;}

view demo

Compatibility IE7+

Firefox

Chrome

Safari

Opera

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

~将会让我们匹配到属性值被空格分隔符分开的值,如: " Click Me, Fool

view demo

Compatibility IE7+

Firefox

Chrome

Safari

Opera

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

这个常常对checkbox非常有用。

view demo

Compatibility IE9+

Firefox

Chrome

Safari

Opera

18.x:after

伪类before和after已经有了一些新的用法,比如最常见的: .clearfix:after { content: ""; display: block; clear: both; visibility: hidden; font-size: 0; height: 0; }.clearfix { *display: inline-block; _height: 1%;}

没错,这就是默认标准clearfix的实现原理。

Compatibility IE8+

Firefox

Chrome

Safari

Opera

19.x:hover div:hover { background: #e3e3e3;}

但是得注意,:hover在早期IE中并不适用。

Compatibility IE6+(In IE6, :hover must be applied to an anchor element)

Firefox

Chrome

Safari

Opera

20.x:not(selector) div:not(#container) { color: blue;}

反选选择器。

view demo

Compatibility IE9+

Firefox

Chrome

Safari

Opera

21.x::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;}

伪元素选择器,注意尽量还是按标准来,多使用::而不是:。

view demo

Compatibility IE6+

Firefox

Chrome

Safari

Opera

22.x:nth-child(n) li:nth-child(3) { color: red;}

选择一组中特定的孩子。n表示第几个,也可以是表达式,如2n+1,2n.

view demo

Compatibility IE9+

Firefox 3.5+

Chrome

Safari

Opera

23.x:nth-last-child(n) li:nth-last-child(2) { color: red;}

如果li有400个,而你需要target到第397个,那用这个咱合适不过了。

view demo

Compatibility IE9+

Firefox 3.5+

Chrome

Safari

Opera

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

如果ul没有id,而你又要找第三个ul,那个这种方式是不错。

view demo

Compatibility IE9+

Firefox 3.5+

Chrome

Safari

Opera

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

与ul:nth-of-type刚好相反。

Compatibility IE9+

Firefox 3.5+

Chrome

Safari

Opera

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

view demo

Compatibility IE7+

Firefox

Chrome

Safari

Opera

27.x:last-child Example List Item

List Item

List Item 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;}

view demo

但是我不想要第一个的上边框和最后一个的下边框,可以这么做: li:first-child { border-top: none;}li:last-child { border-bottom: none;}

view demo

Compatibility IE9+

Firefox

Chrome

Safari

Opera

28.X:only-child div p:only-child { color: red;}

这将匹配div里只有一个p的元素。如: My paragraph here.

Two paragraphs total.

Two paragraphs total.

view demo

Compatibility IE9+

Firefox

Chrome

Safari

Opera

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

这将匹配元素内只有一个li的元素,有时这个做法很简便。比如要寻找只有一个列表的ul,可以: ul > li:only-of-type { font-weight: bold;}

view demo

Compatibility IE9+

Firefox 3.5+

Chrome

Safari

Opera

30.x:first-of-type Example My paragraph here. List Item 1

List Item 2 List Item 3

List Item 4

如何寻找上面的 "List Item 2"呢? 办法1 ul:first-of-type > li:nth-child(2) { font-weight: bold;} 办法2 p + ul li:last-child { font-weight: bold;} 办法3 ul:first-of-type li:nth-last-child(1) { font-weight: bold; }

view demo

Compatibility IE9+

Firefox 3.5+

Chrome

Safari

Opera

总结

上述选择器在IE6中的使用要尤其小心,但是别因为这而影响你阅读这篇文章。你可以参考一下浏览器兼容表,或者你可以用 Dean Edward's excellent IE9.js script 为旧版浏览器提供这些选择器的支持。

另外,当你在使用一些Javascript库时,如jQuery,请尽量的使用这些原生的CSS3选择器,因为浏览器选择器引擎将会按照浏览器的原生方式去解析,这将使得你的代码更加高效。

注:此文为译文我的博客请戳 | 原文请戳

1428d0e076c3959ab11d28a39bc84fab.png

5268f80b9b1e01f982625ef6fac83ca1.png

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值