css_那些被忽略但有时又很强的选择器

忙里偷闲的学习

在切页面的时候,我们免不了要和css打交道,甚至说是颇深,在HTML中,想要快速的定位元素,除了广为人知的.class、#id、通配符*、element元素等选择器,css还为我们提供了更多在某些场景下,效率更高的选择器。所以,最好自己也尝试一下,不然就算你看过这篇随手记,也几乎没太大用处。即便不太容易记住,但是会留个印象,是吧~
PS:星星表示此选择器在本文中的强调程度。和常见度无关

CSS3选择器 —— 元素选择器 [element] (★★)

  1. element{}。这个会选择所有能匹配到的element;如div{},则所有的div都会被选中。
  2. element1,element2,....{}。这个会选择所有能匹配到element;如div, a, p{} ,则所有的div,a,p都会被选中。
  3. element1 element2{} 这个会选择父元素为element1的所有的element2子元素;如div a{},则div下所有的a都会被选中。
  4. element1>element2{}。这个会选择紧跟着element1的element2元素;如<div><p></p><p></p></div> div+p{} ,则div中的第一个p会被选中。

CSS3选择器 — — 属性选择器 [attribute](★★★★)

<a target="_blank" href="https://petergooo.github.io" title="a b c a-hello">这是一个demo1</a>
<a target="_self" href="http://petergooo.github.io" title="hey hi hello a">这是一个demo2</a>

选择器前面也可以添加元素,如:a[src^='https']{ … }, .info[title*='info']。

  1. [target]{}。这个会选择带所有带target属性的元素。在这里,上面两个a标签都会被选中。
  2. [target=_blank]{}。这个会选择所有带target属性且值为_blank的元素。在这里,上面两个a标签只有第一个被选中。
  3. [title~=hi]{}。这个会选择所有带title属性且值包含 hi 的元素。在这里,上面两个a标签第二个会被选中。
  4. [title|=a]{}。这个会选择所有带title属性且值是以a开头的元素。在这里,上面两个a标签只有第一个被选中。
  5. PS:上面2、3、4三个规则,属性的值是一个单词。而下面三个则是字符串。注意字符串和单词是不一样的
  6. [src^="https"]{}。这个会选择所有带src属性且值是以"https"开头的元素。在这里,上面两个a标签只有第一个被选中。
  7. [title$="hello"]{}。这个会选择所有带title属性且值是以"hello"结尾的元素。在这里,上面两个a标签第一个会被选中。
  8. [title*="hi"]{}。这个会选择所有带title属性且值包含 "hi" 的元素。在这里,上面两个a标签第二个会被选中。

CSS3选择器—— 伪 类/元素选择器 [:...](★★★★★)

前言

这个是本文中的重点所在了,说实话,很多伪类/元素选择器,真的很不错,但也真的很难在实际运用中见到,我想大概是因为繁琐吧,毕竟大家都习惯了class统治样式,其他的都是不入流的小招式,233333.

就拿我举例来说,在某个页面的样式中,需要将后端给的数据渲染到页面中,但是这个数量是一直增加的。每当第三个元素,就与其他的有所区别。我得知需求后,第一个想法就是js判断。。。可是这样违背了样式的控制权给了js

还好旁边的前端小哥经验颇深,且说我有什么不知道的或者觉得可以再优化的地方,就找他。滴~好人卡。。。

他看到这个问题,抢过我的键盘,啪啪啪啪,哦不,哒哒哒几行css代码完美的解决!

握草,这么吊。。。厉害了我的哥。

这时我也看到了 :nth-child(n);这个css选择器。对不起,请收下我的膝盖,我保证我之前看过这个选择器,但我也确定我只是看过而没有用,就忘记了。GG。遂在午休时候,认真的补了一遍css选择器,咋补?当然是选择原谅她啊,然后晚饭后写了这篇《那些被忽略但有时又很强的选择器》

在这个分类,选择器实在是太多了,详细说明我就不做搬运工了,我就挑几个我觉得不错的,写出来吧,在文末会给参考文档。

a标签相关选择器

  1. :link 选择所有未被访问的链接。
  2. :visited 选择所有已被访问的链接。
  3. :active 选择活动链接。

input相关的选择器

  1. :enabled 选择每个启用的input 元素。
  2. :disabled 选择每个禁用的 input 元素
  3. :checked 选择每个被选中的 input 元素。
  4. :focus 获取焦点的input元素。 这个常见的应用场景是在表单时,对应的输入框样式

常见伪类/元素选择器

  1. :hover 鼠标移动到上面的样式。 这个常见的应用场景是用作遮罩层
  2. ::before, ::after 元素的前后样式。 这个常见的应用场景有:清除浮动、添加特定的样式、等等
    1. PS:这里是用了两个冒号,因为它们是伪元素,虽然说用单冒号也能生效,但是为了推动css3,我们还是统一用双冒号咯。
    2. 附上两篇文章总结伪类和伪元素 ———— ——— 详解 CSS 属性 - 伪类和伪元素的区别
  3. :not(selector) 给非所选元素设定样式

这里有趣的几个有:

  1. ::first-letter : 给所选元素的首字母/中文 应用样式。这个选择器可以做首字母效果。很方便,代码如下:

    <p class="a">Oh my god</p><p class="a">我的天</p>
    <style>
      .a::first-letter{
        font-size:200%;
        color:#8a2be2;
    </style>
    
  2. ::first-line: 给所选元素的首行应用样式。这个应用不太多吧。。

  3. ::selection 选择被用户选取的部分。 这个应用场景有,当用户选择文本是,就可以使用这个选择器,让被选取的的文本更有趣。这个选择器支持的样式也有限。

  4. :target 这个就很有趣了,不过不支持ie8及以下。 当前页面活动的锚点的样式。代码示例:

    <style>
      :target{
        border:2px solid #ccc;
        background-color: #e5eecc;
      }
    </style>
    <a href="#id1">jump target1</a>
    <a href="#id2">jump target2</a>
    <p id="id1">target1</p>
    <p id="id2">target2</p>
    

    效果体验如下。点击两个锚点,对应的id活跃时,就可以有背景。

    <a href="#id1">jump target1</a> ——— <a href="#id2">jump target2</a>
    <p id="id1">target1</p>
    <p id="id2">target2</p>

  1. 最后一个当属 :nth-child(n) 啦

    就像我上面说的,这个选择器用来循环选择某个元素,简直不要太爽!

    <span>aaa</span>
    <span>bbb</span>
    <span>ccc</span>
    <style>
      span:nth-child(3n){
        background-color:green;  //原谅他啊
      }
    </style>
    

    <span class="c">aaa</span><span class="c">bbb</span><span class="c">ccc</span>

    <style>.c{display:inline-block;margin:0;border:1px solid #ccc; width:33%;text-align:center}.c:nth-child(3n){background-color:green;}</style>

写到最后写懵逼了。

这懵逼的排版。。。。原谅我吧

233333333333

参考文档

CSS 选择器参考手册

原文链接

那些被忽略但有时又很强的选择器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,703评论 1 92
  • 其实平时用得多的选择器无非也就是那么几个,时间久了,许多不常用的选择器就慢慢忘记了。为了不让自己忘记这些选择器,今...
    盛夏晚清风阅读 1,801评论 0 5
  • 本课来自http://www.imooc.com/learn/9请不要用作商业用途。 HTML5 HTML介绍 H...
    PYLON阅读 3,174评论 0 5
  • 学习CSS的最佳网站没有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_阅读 1,002评论 0 1
  • 看完这本书算是几天没缓过来,没错,沉浸到故事里了。 通常看完一本书我都会写一点点感受,所得所悟那种。写完再去...
    大强书斋阅读 96评论 0 0