美文网首页
CSS选择器

CSS选择器

作者: shandamengcheng | 来源:发表于2019-11-28 00:30 被阅读0次

    CSS选择器

    选择器基础

    CSS选择器是由与文档树中所有元素匹配的模式组成。当模式中的所有条件均满足时,选择器匹配,并且规则中的声明将应用于匹配的一个或多个元素。

    p { color:red;} 
    

    这个规则会匹配文档中所有的p元素,并将其中文本的颜色设置为红色。

    选择器概述

    一些术语:
    后代:文档数中的子代,孙子或者更高后代的元素。
    祖先:元素由于存在嵌套关系,所以一个元素,他可以是文档树中元素的父级,祖父母或更早的祖先。
    子代:元素的直接后代。两者之间没有其他元素。
    父母:元素的直接祖先。两者之间不能有其他元素。
    兄弟:与当前元素具有相同的父元素的元素。

    基本选择器

    序号 选择器 含义
    1 * 通用选择器,匹配任何元素
    2 E 元素选择器,匹配所有E标签的元素
    3 .infor 类选择器,匹配所有class属性中包含info的元素
    4 #foot id选择器,匹配所有id属性等于foot的元素

    例子:

    ‘ * { color: RED; }
    p { font-size:2em;}
    .infor { backgroud:blue; }
    ‘ #foot { color: pink; }
    p.infor { font-weight: bold; }
    p#foot { color: green; }

    这里要注意:p.infor 和 p .infor 有一些不一样。前一个表示规则应用于所有class属性包含infor的p元素,后一个表示规则应用于所有p元素的后代中,class属性包含infor的元素。*

    • 类选择器

      可以为一个元素分配多个类名称-该class属性可以包含一个用空格分隔的类名称列表,可以将类选择器仅用于具有多个类名的元素。p.info.error { color:#900; font-weight:bold; }此规则将匹ji配p在其类名称表中同时包含info和error的元素。

    类选择器和ID选择器的区别

    1. 同一个类名可以应用于多个元素,而ID能且只能应用于一个元素

    虽然,浏览器不会时时检测ID, 即把同一个ID应用于多个元素,浏览器不会报错且样式正常渲染,但是当使用DOM脚本函数时,对于类选择器来说,通过getElementsByClassName()函数可以获取到所有具有同一类名的元素,而getElementById()函数仅可以获取到第一个元素。

    1. id属性不支持值为以空格分隔的列表。也就是说,不能把多个ID选择符串在一起使用。而类选择符则可以。

    多元素的组合选择器

    选择器 含义
    E,F 多元素选择器,同时匹配所有E元素和F元素,其中逗号是必须的,用来分割元素
    E F 后代元素选择器,用于匹配所有E元素的后代元素F,E和F之间用空格分割
    E>F 子元素选择器,用于匹配所有E元素的子代F元素
    E+F 相邻同辈选择器,用于匹配所有属于同一父元素的且紧跟在E元素之后的兄弟F元素
    E~F 一般同辈选择器,匹配任何在E元素之后的同级F元素,两元素只需为属于同一父元素的同辈即可,不一定非要是紧邻同胞

    属性选择器

    选择器 含义
    E[att] 匹配任何具有att属性的E元素
    E[att=val] 匹配任何att属性值为val的E元素
    E[att^=val] 匹配任何att属性值以val开头的E元素
    E[att$=val] 匹配任何att属性值以val结尾的E元素
    E[att*=val] 匹配任何att属性值包含“val”字符串的E元素
    E[att~=val 匹配任何att属性具有多个空格分隔的值且其中一个值等于val的元素
    E[att1=val] 匹配所有att属性具有多个连字符号分隔(eg:us-image)的值且其中一个值以val开头的E元素,或者是val本身,主要用于lang元素。比如:“en”“en-us”“en-gb”等

    支持多个属性选择,E[att1][att2].... 属性的值与指定的值要完全一致

    <p class = "fir sec">Hello</p>
    

    若是要通过属性选择器匹配这个元素,顺序、个数等等要完全一致,即:

    p[class = "fir sec"]  // 顺序、个数等等要完全一致
    

    当用到最后一个属性选择器时,只有属性的值或为单个值,即val,或为多个值均是包含连字符时,规则才会被应用。

      div[class|="us"] {
                color: red;
            }
     <div class="us us-image us-hap">
            计算机科学与技术
        </div>
        <div class="us">
            Jona Zhu 小诸葛
        </div>
    

    以上代码最终结果:"计算机科学与技术"仍是黑色,"Jona Zhu 小诸葛"为红色。
    但是如果 class="us us-image us-hap"改为class="us us-image us-hap”,那么结果文本全是红色。

    伪类

    选择器 含义
    E:first-child 匹配父元素的第一个E元素
    E:link 匹配所有未被点击的链接
    E:visited 匹配所有被点击过的链接
    E:active 匹配鼠标已经按下还没有释放的E元素
    E:hover 匹配鼠标悬停其上的E元素
    E:focus 匹配当前获得焦点的E元素
    E:lang((c) 匹配lang属性等于c的E元素
    E:required 匹配带有required属性的表单元素
    E:optional 匹配无required属性的表单元素
    E:enabled 匹配表单中激活的元素
    E:disabled 匹配表单中禁用的元素
    E:checked 匹配被选中的表单单选或多选元素
    E:selection 匹配当前用户选中的元素

    结构性伪类

    选择器 含义
    :root 匹配文档的根元素,对于HTML文档,就是HTML元素
    :nth-child(n) 匹配其父元素的第n个子元素,第一个为1
    :nth-last-child(n) 匹配父元素倒数第n个子元素
    :nth-of-type(n) 与nth-child()类似,但会忽略非指定类型的元素
    :nth-last-of-type(n) 与nth-last-child()类似,但会忽略非指定类型的元素
    :last-child 匹配父元素中的最后一个子元素
    :only-child 匹配父元素中仅有的一个子元素,等同于:first-child:last-child
    :first-of-type 匹配父元素中同种标签的第一个元素
    :last-of-type 匹配父元素使用同一种标签的最后一个子元素
    :only-of-type 匹配父元素下使用同种标签的唯一的一个子元素
    :empty 匹配一个不包含任何子元素的元素。子元素只可以是元素节点或文本(包括空格)。
    :not(s) 匹配不符合一组选择器的元素,它有时也被称为反选伪类(negation pseudo-class)。不能包含另外一个否定选择器。
    :target 代表一个唯一的页面元素(目标元素),其id与当前URL片段匹配

    注意

    • :not() 伪类不能被嵌套,这意味着 :not(:not(...)) 是无效的。
    • 由于伪元素不是简单的选择器,他们不能被当作 :not() 中的参数,形如 :not(p::before) 这样的选择器将不会工作。
    • 可以利用这个伪类写一个完全没有用处的选择器。例如, :not(*) 匹配任何非元素的元素,因此,这个规则将永远不会被应用。
    • 可以利用这个伪类提高规则的优先级 ,例如: #foo:not(#bar)#foo 会匹配相同的元素,但是前者的优先级更高。
    • :not(.foo) 将匹配任何非 .foo 的元素,包括 <html><body>
    • 这个选择器只会应用在一个元素上,无法用它来排除所有父元素。比如, body :not(table) a 依旧会应用到表格元素 <table> 内部的 <a> 上, 因为 <tr>将会被 :not(table) 这部分选择器匹配。

    伪元素

    选择器 含义
    E:first-line 匹配E的第一行
    E:first-letter 匹配E元素的第一个字母
    E:before 在元素前面插入内容
    E:after 在元素后面插入内容

    ::first-line 和::first-letter伪元素只能应用于块级元素,如标签或段落等,不能应用于行内元素。

    参看文献

    相关文章

      网友评论

          本文标题:CSS选择器

          本文链接:https://www.haomeiwen.com/subject/ithvwctx.html