必须记住的 30 类 css 选择器 -pg电子游戏网站

8顶
0踩

必须记住的 30 类 css 选择器

2014-11-17 11:16 by 正式编辑 cao345657340 评论(7) 有11117人浏览
大概大家读知道`id`,`class`以及`descendant`选择器,并且整体都在使用它们,那么你正在错误拥有更大级别的灵活性的选择方式。这篇文章里面提到的大部分选择器都是在css3标准下的,所以它们只能在相应最新版本的浏览器中才能生效,你完全应该把这些都记在你聪明的脑袋里面。
1. *
* {
  margin: 0;
  padding: 0;
}

在我们看比较高级的选择器之前,应该认识下这个众所周知的清空选择器。星号呢会将页面上所有每一个元素都选到。许多开发者都用它来清空`margin`和`padding`。当然你在练习的时候使用这个没问题,但是我不建议在生产环境中使用它。它会给浏览器凭添许多不必要的东西。
`*`也可以用来选择某元素的所有子元素。
#container * {
  border: 1px solid black;
}

它会选中`#container`下的所有元素。当然,我还是不建议你去使用它,如果可能的话。


兼容性

  • ie6
  • firefox
  • chrome
  • safari
  • opera

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

在选择器中使用`#`可以用id来定位某个元素。大家通常都会这么使用,然后使用的时候大家还是得相当小心的。
需要问自己一下:我是不是必须要给这个元素来赋值个id来定位它呢?

`id`选择器是很严格的并且你没办法去复用它。如果可能的话,首先试试用标签名字,html5中的新元素,或者是伪类。

兼容性

  • ie6
  • firefox
  • chrome
  • safari
  • opera

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

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

兼容性

  • ie6
  • firefox
  • chrome
  • safari
  • opera

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

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

专家提示:如果你的选择器像`x y z a b.error`这样,那你就错了。时刻都提醒自己,是否真的需要对那么多元素修饰。

兼容性

  • ie6
  • firefox
  • chrome
  • safari
  • opera

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

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

兼容性

  • ie6
  • firefox
  • chrome
  • safari
  • opera

6. x:visited 和 x:link
a:link {color:red;}
a:visited {color: purple;}

我们使用`:link`这个伪类来定位所有还没有被访问过的链接。
另外,我们也使用`:visited`来定位所有已经被访问过的链接。

兼容性

  • ie7
  • firefox
  • chrome
  • safari
  • opera

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

这个叫相邻选择器。它指挥选中指定元素的直接后继元素。上面那个例子就是选中了所有`ul`标签后面的第一段,并将它们的颜色都设置为红色。

兼容性

  • ie7
  • firefox
  • chrome
  • safari
  • opera

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

`x y`和`x > y`的差别就是后面这个指挥选择它的直接子元素。看下面的例子:
  • list item
    • child
  • list item
  • list item
  • list item

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

兼容性

  • ie7
  • firefox
  • chrome
  • safari
  • opera

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

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

兼容性

  • ie7
  • firefox
  • chrome
  • safari
  • opera

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

这个叫属性选择器,上面的这个例子中,只会选择有title属性的元素。那些没有此属性的锚点标签将不会被这个代码修饰。那再想想如果你想更加具体的去筛选?那…

兼容性

  • ie7
  • firefox
  • chrome
  • safari
  • opera

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

上面这片代码将会把`href`属性值为`http://strongme.cn`的锚点标签设置为绿色,而其他标签则不受影响。

注意我们将值用双引号括起来了。那么在使用javascript的时候也要使用双引号括起来。可以的话,尽量使用标准的css3选择器。

这样可以用了,但是还是有点死,如果不是这个链接,而是类似的链接,那么这时就得用正则表达式了。

兼容性

  • ie7
  • firefox
  • chrome
  • safari
  • opera

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

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

兼容性

  • ie7
  • firefox
  • chrome
  • safari
  • opera

13. x[href^="href"]
a[href^="http"] {
   background:  no-repeat;
   padding-left: 10px;
}

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

注意我们没有搜索http://,那是没必要的,因为它都不包含https://。

那如果我们想找到所有指向一张图片的锚点标签呢?那我们来使用下`&`字符。

兼容性

  • ie7
  • firefox
  • chrome
  • safari
  • opera

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

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

兼容性

  • ie7
  • firefox
  • chrome
  • safari
  • opera

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

在回到第8条,我们如何把所有的图片类型都选中呢`png`,`jpeg`,’jpg’,'gif’?我们可以使用多选择器。看下面:
a[href$=".jpg"],
a[href$=".jpeg"],
a[href$=".png"],
a[href$=".gif"] {
   color: red;
}

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

兼容性

  • ie7
  • firefox
  • chrome
  • safari
  • opera

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

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


给这些元素设置了这个标志之后,我们就可以使用`~`来定位这些标签了。
/* 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. x:checked
input[type=radio]:checked {
   border: 1px solid black;
}

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

兼容性

  • ie9
  • firefox
  • chrome
  • safari
  • opera

18. x:after

`before`和`after`这俩伪类。好像每天大家都能找到使用它们的创造性方法。它们会在被选中的标签周围生成一些内容。
当使用`.clear-fix`技巧时许多属性都是第一次被使用到里面的。
.clearfix:after {
    content: "";
    display: block;
    clear: both;
    visibility: hidden;
    font-size: 0;
    height: 0;
  }
 
.clearfix { 
   *display: inline-block; 
   _height: 1%;
}

上面这段代码会在目标标签后面补上一段空白,然后将它清除。这个方法你一定得放你的聚宝盆里面。特别是当`overflow:hidden`方法不顶用的时候,这招就特别管用了。
还想看其他创造性的使用这个伪类,看[这里](http://net.tutsplus.com/tutorials/html-css-techniques/quick-tip-getting-clever-with-css3-shadows/)。

根据css3标准规定,可以使用两个冒号`::`。然后为了兼容性,浏览器也会接受一个双引号的写法。其实在这个情况下,用一个冒号还是比较明智的。

兼容性

  • ie8
  • firefox
  • chrome
  • safari
  • opera

19. x::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;要好看很多。
兼容性

  • ie6 (ie6只能在锚点标签上起作用)
  • firefox
  • chrome
  • safari
  • opera

20. x:not(selector)
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`.但是这个兼容对新介绍的特性不起作用。


兼容性

  • ie6
  • firefox
  • chrome
  • safari
  • opera

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

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

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

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

兼容性

  • ie9
  • firefox3.5
  • chrome
  • safari

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

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

这个技巧可以很正确的代替第16个tip,不同的就是它是从结尾处开始的,倒回去的。

兼容性

  • ie9
  • firefox3.5
  • chrome
  • safari
  • opera

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

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

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

兼容性

  • ie9
  • firefox3.5
  • chrome
  • safari

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

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

兼容性

  • ie9
  • firefox3.5
  • chrome
  • safari
  • opera

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

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

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

兼容性

  • ie7
  • firefox
  • chrome
  • safari
  • opera

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

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

  • list item
  • list item
  • list item

这里没啥内容,就是一个了 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`设置边框以凸显一定的深度。





兼容性

  • ie9
  • firefox
  • chrome
  • safari
  • opera

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

说实话,你会发现你几乎都不会用到这个伪类。然而,它是可用的,有会需要它的。

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

my paragraph here.

two paragraphs total.

two paragraphs total.


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

兼容性

  • ie9
  • firefox
  • chrome
  • safari
  • opera

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

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

使用`ul li`会选中所有`li`标签。这时候就要使用`only-of-type`了。
ul > li:only-of-type {
   font-weight: bold;
}


兼容性

  • ie9
  • firefox 3.5
  • chrome
  • safari
  • opera

30. x:first-of-type `first-of-type`伪类可以选择指定标签的第一个兄弟标签。

测试

my paragraph here.

  • list item 1
  • list item 2
  • list item 3
  • list item 4

来你把list item 2取出来,如果你已经取出来或者是放弃了,来继续。

解决办法1
办法很多,我们看一些比较方便的。首先是`first-of-type`。
ul:first-of-type > li:nth-child(2) {
   font-weight: bold;
}

找到第一个`ul`标签,然后找到直接子标签`li`,然后找到第二个子节点。
解决办法2
另一个解决办法就是邻近选择器。
这种情况下,找到`p`下的直接`ul`标签,然后找到它的最后一个直接子标签。

解决办法3
我们可以随便玩耍这些选择器。来看看:
ul:first-of-type li:nth-last-child(1) {
   font-weight: bold;   
}

先获取到页面上第一个`ul`标签,然后找到最后一个子标签。

兼容性

  • ie9
  • firefox 3.5
  • chrome
  • safari
  • opera

结论

如果你想向旧版本浏览器妥协,比如ie6,那你用这些新的选择器的时候还是得小心点。但别别让ie6组织你去学这些新的技能。那你就对自己太残忍了。记得多查查[兼容性列表](http://www.quirksmode.org/css/contents.html),或者使用[dean edward's excellent ie9.js script ](http://code.google.com/p/ie7-js/)来让你的浏览器具有这些特性。

第二个,使用向jquery的时候,尽量使用原生的css3选择器。可能 活让你的代码跑的很快。这样选择器引擎就可以使用浏览器原生解析器,而不是选择器自己的。
  • 大小: 25 kb
来自:
8
0
评论 共 7 条 请登录后发表评论
7 楼 2014-11-18 14:40
第四个demo链接??
6 楼 2014-11-17 20:15
很好的选择器,估计jquery采用的就是这种技术吧!
5 楼 2014-11-17 19:23
             
4 楼 2014-11-17 15:29
  
3 楼 2014-11-17 15:21
xlaohe1 写道
mmmmmmmmmmmmmmmmmmark.

qqqq
2 楼 2014-11-17 14:31
  
1 楼 2014-11-17 13:29
mmmmmmmmmmmmmmmmmmark.

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 附件风格测试 澳门pg电子游戏的版权所有:澳门pg电子游戏 copyright:2019-2020爱着苏タイル诊断テスト 注意 デーサ匿名は收集されており,个人を特定するものではありません。サイト利用者はこのサイトがcookieを使用してトラフィックデータを收集タをことに同意したものとみなします。 amazonへのリンクを掲携带を掲いますが,このサイトはamazonのアソシエイト・プログラムののメンバーではありません。掲载されているリンクは收益化を目的として设置してのではありません。 构建设置 # install dependencies $ yarn install # serve with hot reload at localhost:3000 $ yarn dev # package $ yarn run pack:package 有关工作原理的详细说明,请 。

  • 設計&テストのv字モデル    一般にウォーターフォール型開発におけるテストは、図1のようなv字モデルで表されます。dungeonは、このv字モデルにのっとった設計&テスト体系を採っています。    つまり、次のように要求分析と総合テスト、基本設計と結合テスト、詳細設計と単体テストを対比させ、各テストでは対応する設計書の内容を満たすことを確認するのです。

  • 测试:テスト用で作成

  • normal 0 7.8 pt 0 2 false false false microsoftinternetexplorer4 /* font

  • 库存-rest-api:rest apiのテスト

  • _(:з」∠)_都是每话保存的,第一次这样保存一部漫画,真花费数个小时才完成,需要的就下载 =-=-=-=-=-=-==-==-=-=-=-=-=-==-==-=-=-=-=-=-==-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [190611]狐妖小红娘漫画[1-337][797mb] 下载地址:https://waecy2.pipipan.com/f...

  • ex绅士just saw lxg. pretty awesome if you dig that (give or take 40 years) period in literary history. they created a pretty amazing fantasy world with advanced (re: 1930s) technology blowing away the...

  • 首先,作为一个播报员,向大家深深鞠躬——同学们,我错了。时隔n年才想起来继续更新现场。(众人:原来你还知道自己还有任务在身啊~)擦汗先…… 感谢cctv 感谢ntv 感谢沪江的各位同学们给了我这么一个机会。于是,我就义不容辞的把自己精心收藏的照片都贴出来吧(众人:汗||||) 这次参加女仆比赛的女仆们都很强大,个个都是女中豪杰。什么唱歌啦跳舞啦冷笑话啦叠被子啦武术啦猜拳啦喂柠檬啦……...

  • in the mid-2000s, bleach online is a free mmorpg game based on the bleach manga. toonami was in ascendancy. its mixture of american action cartoon reruns and first-run anime was proving potent bleac

  • java.lang.classcastexception: [ljava.lang.object; cannot be cast to xxx.action.entity.category at chentailei.action.test.ssh_categorydao.findbyparentid(ssh_categorydao.java:61) at sun.reflect.native

  • vmsdkテスト.ipa

  • 核试验 nuxt.jsのテストサイト 构建设置 # install dependencies $ npm install # serve with hot reload at localhost:3000 $ npm run dev # build for production and launch server $ npm run build $ npm run start # generate static project $ npm run generate 有关工作原理的详细说明,请查看 。

  • atcoder单元测试 atcoderの问题ページから,ユニットテストを生成するfirefox / google chromeアドオンです。 ダウンロード firefox版本: google chrome版: 対応言语 java(junit) kotlin(junit) c#(ms测试) python3(单元测试) 対応言语の切り替えは,拡张机能/アドオン→ac unit testの「オプション」で行えます。 ※デフォルトではjava (junit)になっています。 使い方 atcoderの问题ページを开く 右クリック→ユニットテストを生成をクリック されました,ユニットテストがクリッ

  • 对日外包必须品,日语单次学习好帮手。欢迎大家下载。免费资源。

  • projects-boardgame:boardgameのテスト

  • exhentai.org即著名绅士糟糕物分享网站e-hentai.org的里站,对于萝莉、正太或者澳门pg电子游戏的版权侵犯的写真(比如@factory系列),在表站是无法浏览的。但如果直接访问exhentai的话,是无法正常访问的,大概会看到这样一只国宝熊猫人。因为访问exhentai.org时会向forums.e-hentai.org发送请求,验证cookie,如果没有相应记录即返回一只伤心的熊猫。下面,就来介...

  • 69.147.76.* 于 2007-09-05 12:52:19发表:http://emeraldring.fora.pl/http://emeraldring.fora.pl/http://emeraldring.fora.pl/ - emerald cut wedding ring68.180.195.* 于 2007-09-04 07:12:53发表:child defense fun...

  • org.springframework.beans.factory.beancreationexception: error creating bean with name 'jdbcuserdao' defined in class path resource [schema.xml]: error setting property values; nested exception is org

  • private trackers comeand go, making it virtually impossible to keep a current updated list.due to popular demand, we’ve cleaned up our trackers listby removing the dead sites while adding a slew

  • 原文地址:http://coolshell.cn/articles/2451.html 打开twitter的注册页面,https://twitter.com/signup,查看一下源码,你会看到一个很长的禁用口令列表(见本文最下面),其中的某些口令的确很雷人。你可以参看本站

global site tag (gtag.js) - google analytics
网站地图