资讯专栏INFORMATION COLUMN

css选择器

番茄西红柿 / 574人阅读

摘要:前言选择器是前端的基本功只要你是一个前端这个一定要掌握今天之所以要重温一下选择器主要是和大家再复习一下选择器中的一些常用符号的使用例如等的使用之所以要复习呢是因为我一个写后端的哥们前端写的也很好但是他今天突然问我中加号和大于号是啥意思我说这

前言

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

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

</>复制代码

  1. 基本选择器
  2. ID选择器:#header {}
  3. 类选择器:.header {}
  4. 元素选择器:div {}
  5. 子选择器:ul > li {}
  6. 后代选择器:div p {}
  7. 伪类选择器:a:hover {}
  8. 属性选择器:input[type="text"] {}
  9. id优先级高于类class;
  10. 后面的样式覆盖前面的;
  11. 指定的高于继承;
  12. css选择器之特殊符号
  13. 1、>(大于号)
  14. 大于号代表选择子元素,这个我们经常用,值得注意的是h1>strong 和h1 strong的区别
  15. 2个都是选择子元素,但是h1>strong 只选择某个元素的子元素。例如如下:
  16. This is class="haorooms">very very important.

  17. This is really very important.

  18. h1>strong ,只有第一个h1下面的strong被选中,第二个不起作用。但是h1 strong,所有的h1下面的strong都被选中了。
  19. 2、+
  20. 选择相邻兄弟,这点和jquery相同。
  21. 例如:
  22. This is a heading.

  23. This is paragraph.

  24. This is paragraph.

  25. h1 + p {margin-top:50px;} //h1后面的第一个p元素会有50px的间距。代表选择紧接在h1 元素后出现的段落
  26. 属性选择器
  27. css属性选择器用处也比较多,之前参加第二节css开发者大会的时候,有的老师分享,他们公司基本上都是用属性选择器来写css,这样字面明了,他们都不怎么用class。我感觉这个要分情况,那个老师讲的项目是angularjs的,因此属性选择器比较实用!
  28. css的选择器的详细介绍
  29. 举几个例子
  30. 1、把包含标题(title)的所有元素变为红色
  31. 如下写:
  32. *[title] {color:red;}
  33. 2、将同时有href 和title 属性的HTML 超链接的文本设置为红色
  34. a[href][title] {color:red;}
  35. 3、指定将http://www.51wendang.com /post/css_wl_wys 这篇文字颜色变红
  36. a[href="http://www.51wendang.com /post/css_wl_wys"] {color: red;}
  37. 当然也可以多个属性一起,这里就不多举例了!
  38. 4、属性与属性值必须完全匹配
  39. 我们来看一个classdiv
  40. class="important haorooms">This paragraph is a very important warning.

  41. 我们用class选择,大家都晓得,很简答,但是用属性选择,我们用如下:
  42. p[class="important"]
  43. 是选择不到的,因为还有一个haorooms。因此,必须这样写:
  44. p[class="important haorooms"] {color: red;}
  45. 5、根据部分属性值选择
  46. 看到上面多个属性必须完全匹配,很不爽,那么有没有可以部分匹配属性的方法呢?答案是有的。还是上面的例子,我们如下选择就可以了!
  47. p[class~="haorooms"] {color: red;}
  48. 如果需要根据属性值中的词列表的某个词进行选择,则需要使用波浪号(~)。
  49. 6、字符串匹配属性选择器
  50. 上面说到了~(波浪号选择),有朋友会把他和*= 搞混,例如,如下例子:
  51. "importanthaorooms">This paragraph is a very important warning.

  52. 我们可以用[haorooms * ="haoroom"]来选择,这个和~的区别就是包含,~是几个属性直接有空格,空格中的一个。*=没有空格,但是包含某个字符。除此之外,还有开头选择和结尾选择,和jquery类似:
  53. [haorooms^="haorooms"] 选择haorooms 属性值以"haorooms" 开头的所有元素
  54. [haorooms$="haorooms"] 选择haorooms 属性值以"haorooms" 结尾的所有元素7、特定属性选择类型
  55. 请看下面的例子:
  56. *[lang|="en"] {color: red;}
  57. 上面这个规则会选择lang 属性等于en 或以en- 开头的所有元素。因此,以下示例标记中的前三个元素将被选中,而不会选择后两个元素:
  58. "en">Hello!

  59. "en-us">Greetings!

  60. "en-au">Gday!

  61. "fr">Bonjour!

  62. "cy-en">Jrooana!

  63. CSS的基本选择器
  64. 1、元素选择器
  65. 这是最基本的CSS选择器,HTML文档中的元素本身就是一个选择器:
  66. p {line-height:1.5em; margin-bottom:1em;}
  67. 2、关系选择器
  68. E F:后代选择器,该选择器定位元素E的后代中所有元素F:
  69. ul li {margin-bottom:0.5em;}
  70. E > F:子选择器,该选择器定位元素E的直接子元素中的所有元素F,它将忽略任何进一步的嵌套:
  71. ul > li {list-style:none;} //仅限ul的直接子元素li,如果li里面还嵌套着另一个ul 结构时,最里面的li 将被忽略
  72. E + F:相邻兄弟选择器,该选择器定位与元素E具有相同父元素且在标记中紧邻E的元素F:
  73. li + li {border-top:1px solid #ffffd;} //定位具有相同父元素ul里除第一个li之外的所有li
  74. E ~ F:一般兄弟选择器,该选择器定位与元素E具有相同父元素且在标记中位于E之后的所有元素F:
  75. h1 ~ p {color:#f00;} //定位具有相同父元素的,h1标签之后的所有p标签
  76. 3、属性选择器
  77. E[attr]:该选择器定位具有属性attr的任何元素E:
  78. input[required] {border:1px solid #f00;} //定位页面里所有具有必填属性"required"的input
  79. E[attr=val]:该选择器定位具有属性attr且属性值为val的任何元素E:
  80. input[type=password] {border:1px solid #aaa;} //定位页面里的密码输入框
  81. E[attr|=avl]:该选择器定位具有属性attr且属性值为val或以val-开始的任何元素E:
  82. p[class|=a] {color:#333;} //定位页面里所有的P段落里具有class属性且属性值为a或是a-开始的,比如class="a"以及class="a-b"
  83. E[attr~=val]:该选择器定位具有属性attr且属性值为完整单词val 的任何元素E:
  84. div[title~=english] {color:#f88;} //定位页面里所有具有属性title且属性值里拥有完整单词english的div容器,比如title="http://www.51wendang.comglish"以及title="a english"
  85. E[attr^=val]:该选择器定位具有属性attr且属性值以val开头的任何元素E:
  86. div[class^=a] {color:#666;} //定位页面里具有属性class且属性值以a开头的div容器,比如class="a"以及class="ab"
  87. E[attr$=val]:该选择器与E[attr^=val]正好相反,定位具有属性attr且属性值以val结尾的任何元素E:
  88. div[class$=a] {color:#f00;} //定位页面里具有属性class且属性值以a结尾的div窗口,比如class="nba"以及class="cba"
  89. E[attr*=val]:该选择器与E[attr~=val]相似,但更进一步,定位具有属性attr且属性值任意位置包含val的元素E,val可以是一个完整的单词,也可以是一个单词中的一部分:
  90. a[title*=link] {text-decoration:underline;} //定位所有title里具有link字符串的a链接
  91. 4、伪类
  92. :link:未访问的链接;
  93. :visited:已访问的链接,不建议使用;
  94. :hover:鼠标移动到容器,不仅限于链接,可用于页面中的任何元素;
  95. :active:被激活时的状态,不仅限于链接,可用于任何具有tabindex属性的元素;
  96. :focus:获得焦点时状态,不仅限于链接,可用于任何具有tabindex属性的无线:
  97. input:focus {border:1px solid #333;} //输入框获得焦点时的样式
  98. :enabled:已启用的界面元素:
  99. input:enabled {border:1px solid #899;
  100. :disabled:已禁用的界面元素:
  101. input:disabled {background:#eee;}
  102. :target:该选择器定位当前活动页面内定位点的目标元素:
  103. #info:target {font-size:24px;} //当访问的URL网址为123.html#info 时,id="info"将加载这个字体样式
  104. :default:应用于一个或多个作为一组类似元素中的默认元素的UI元素;
  105. :valid:应用于有效元素:
  106. input:valid {border:1px solid #6a6;} //当输入框验证为有效时加载这个边框样式,基于type或pattern属性
  107. :invalid:应用于空的必填元素,以及未能与type或pattern属性所定义的需求相匹配的元素: input:invalid {border:1px solid #f00;} //当输入框为空且必填时,或已填写但验证无效时,加载此边框样式
  108. :in-range:应用于具有范围限制的元素,其中该值位于限制内;比如具有min和max属性的number和range输入框;
  109. :o ut-of-range::in-range选择相反,其中该值在限制范围外;
  110. :required:应用于具有必填属性required的表单控件;
  111. :o ptional:应用于没有必填属性required的所有表单控件
  112. :read-only:应用于其内容无法供用户修改的元素;
  113. :read-write:应用于其内容可供用户修改的元素,比如输入框;
  114. :root:根元素,始终指html元素;
  115. E F:nth-child(n):该选择器定位元素E的第n个子元素的元素F:
  116. div.class p:nth-child(3) {color:#f00;} //class="class"的div容器里的第3个元素p,如果第3个子元素不是p,此样式将失效
  117. E F:nth-last-child(n):该选择器定位元素E的倒数第n个子元素的元素F;
  118. E:nth-of-type(n):该选择器定位元素E的第n个指定类型子元素;
  119. E:nth-lash-of-type(n):该选择器定位元素E的导数第n个指定类型子元素:
  120. .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元素
  121. nth-child(n)、nth-last-child(n)、nth-of-type(n)、nth-last-of-type(n),这其中的n 可以使用数字静态式,比如.nth-child(2n+1) 将匹配第135...个元素
  122. E:first-child:父元素的第一个子元素E,与:nth-child(1)相同;
  123. E:last-child:父元素的倒数第一个子元素E;
  124. E:first-of-type::nth-of-type(1)相同;
  125. E:last-of-type::nth-last-of-type(1)相同;
  126. E:only-child:父元素中唯一的子元素E;
  127. E:only-of-type:父元素中唯一具有该类型的元素E;
  128. E:empty:没有子元素的元素,没有子元素包括文本节点;
  129. E:lang(en):具有使用双字母缩写(en)表示的语言的元素;
  130. E:not(exception):该选择器将选择与括号内的选择器不匹配的元素:
  131. p:not(.info) {font-size:12px;} //匹配所有class值不为infop元素
  132. 5、伪元素
  133. 伪元素可用于定位文档中包含的文本,为与伪类进行区分,伪元素使用双冒号:: 定义,但单冒号: 也能被识别。
  134. ::first-line:匹配文本首行;
  135. ::first-letter:匹配文本首字母;
  136. ::before::after :使用contnet 属性生成额外的内容并插入在标记中:
  137. a[href^=http]::after {content:"link"} //在页面的a链接的后面插入文字link
  138. ::selection:匹配突出显示的文本:
  139. ::selection {background:#444; color:#fff;} //定义选中的文本颜色与背景色
  140. 当然,如果要方便的使用这些强大的CSS选择器的话,使用Chrome、Firefox之类的浏览器吧,最起码得抛弃IE9以下的IE版本浏览器吧

 

 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/2084.html

相关文章

  • WEB前端 CSS

    摘要:后代选择器,儿子选择器,毗邻选择器,弟弟选择器。后代选择器后代选择器标签选择器后跟标签后代,无论直属还是间接直属,直接后代毗邻后代中最近的一个弟弟,找到和自己同级的标签如通过多个选择器好到具体的标签。目录 WEB前端 CSS WEB前端 CSS TOC CSS简介 CSS引入方式 CSS结构 CSS选择器 标签选择...

    darry 评论0 收藏0
  • 编写高效的 CSS 选择CSS魔法

    摘要:最基本的选择器是元素选择器比如选择器比如还有类选择器比如。选择器和类选择器在速度上的差异基本上没有关系。现在我们回到讨论开始的地方,哪类选择器是最高效的哪个是会影响选择器效率的关键选择器写代码的时候,关键选择器是能否高效的决定因素。 高效的CSS已经不是一个新的话题了,也不是我一个非得重拾的话题,但它却是我在工作之时,所感兴趣的,关注已久的话题。 有很多人都忘记了,或在简单的说没有意识...

    forrest23 评论0 收藏0
  • 编写高效的 CSS 选择CSS魔法

    摘要:最基本的选择器是元素选择器比如选择器比如还有类选择器比如。选择器和类选择器在速度上的差异基本上没有关系。现在我们回到讨论开始的地方,哪类选择器是最高效的哪个是会影响选择器效率的关键选择器写代码的时候,关键选择器是能否高效的决定因素。 高效的CSS已经不是一个新的话题了,也不是我一个非得重拾的话题,但它却是我在工作之时,所感兴趣的,关注已久的话题。 有很多人都忘记了,或在简单的说没有意识...

    hyuan 评论0 收藏0
  • 前端面试题-CSS选择性能优化

    摘要:不要在编写规则时用标签名或类名不要在编写规则时用标签名把多层标签选择规则用规则替换,减少查找避免使用子选择器后代选择器在中是最昂贵的选择器。如果你关心页面性能的话,他们真不该被使用扩展阅读前端面试题选择器前端面试题优先级 一、CSS选择符 CSS选择符由一些初始化参数组成,这些参数指明了要应用这个CSS规则的页面元素。 作为一个网站的前端开发工程师,应该避免编写一些常见的开销很大的CS...

    Scott 评论0 收藏0
  • 前端面试题-CSS选择性能优化

    摘要:不要在编写规则时用标签名或类名不要在编写规则时用标签名把多层标签选择规则用规则替换,减少查找避免使用子选择器后代选择器在中是最昂贵的选择器。如果你关心页面性能的话,他们真不该被使用扩展阅读前端面试题选择器前端面试题优先级 一、CSS选择符 CSS选择符由一些初始化参数组成,这些参数指明了要应用这个CSS规则的页面元素。 作为一个网站的前端开发工程师,应该避免编写一些常见的开销很大的CS...

    XGBCCC 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<