zoukankan      html  css  js  c++  java
  • CSS选择器

      CSS选择器的准确书写,保证了元素应用样式的正确性,CSS中选择器主要包括:

    1、元素选择器:

      最常见的 CSS 选择器是元素选择器。换句话说,文档的元素就是最基本的选择器。元素选择器又称为类型选择器(type selector)。类型选择器匹配文档语言元素类型的名称。类型选择器匹配文档树中该元素类型的每一个实例。如果设置 HTML 的样式,选择器通常将是某个 HTML 元素,比如 p、h1、em、a,甚至可以是 html 本身:

    html {color:black;}
    h1 {color:blue;}
    p {color:silver;}

    2、类选择器:

      类选择器允许以一种独立于文档元素的方式来指定样式。该选择器可以单独使用,也可以与其他元素结合使用。只有适当地标记文档后,才能使用这些选择器,所以使用这两种选择器通常需要先做一些构想和计划。要应用样式而不考虑具体设计的元素,最常用的方法就是使用类选择器。

      如有这样一段HTML代码:

    <h1 class="important">
    This heading is very important.
    </h1>
    
    <p class="important">
    This paragraph is very important.
    </p>

      如果只想选择所有类名相同的元素,可以在类选择器中忽略元素选择器:

    .important {color:red;}
    或者
    *.important {color:red;}

      只想选中p时,类选择器可以结合元素选择器来使用,选择器现在会匹配 class 属性包含 important 的所有 p 元素,但是其他任何类型的元素都不匹配,不论是否有此 class 属性。选择器 p.important 解释为:“其 class 属性值为 important 的所有段落”。 因为 h1 元素不是段落,这个规则的选择器与之不匹配,因此 h1 元素不会变成红色文本。:

    p.important {color:red;}

      通过把两个类选择器链接在一起,仅可以选择同时包含这些类名的元素(类名的顺序不限)。如果一个多类选择器包含类名列表中没有的一个类名,匹配就会失败。

    .important.urgent {background:silver;}

      这段代码在以下元素中不能显示:

    <p class="important warning">
    This paragraph is a very important warning.
    </p>

      但是在下面的元素中就能实现:

    <p class="important urgent warning">
    This paragraph is a very important and urgent warning.
    </p>

    3、id选择器

      在某些方面,ID 选择器类似于类选择器,不过也有一些重要差别。首先,ID 选择器前面有一个 # 号 - 也称为棋盘号或井号。第二个区别是 ID 选择器不引用 class 属性的值,毫无疑问,它要引用 id 属性中的值。

      类选择器可以为任意多个元素指定类。前一章中类名 important 被应用到 p 和 h1 元素,而且它还可以应用到更多元素。

      与类不同,在一个 HTML 文档中,ID 选择器会使用一次,而且仅一次。

      不同于类选择器,ID 选择器不能结合使用,因为 ID 属性不允许有以空格分隔的词列表。

      类似于类,可以独立于元素来选择 ID。有些情况下,您知道文档中会出现某个特定 ID 值,但是并不知道它会出现在哪个元素上,所以您想声明独立的 ID 选择器。例如,您可能知道在一个给定的文档中会有一个 ID 值为 mostImportant 的元素。您不知道这个最重要的东西是一个段落、一个短语、一个列表项还是一个小节标题。您只知道每个文档都会有这么一个最重要的内容,它可能在任何元素中,而且只能出现一个。

    4、后代、子级、同级选择器

      在 CSS1 中,通过这种方式来应用规则的选择器被称为上下文选择器 (contextual selectors),这是由于它们依赖于上下文关系来应用或者避免某项规则。在 CSS2 中,它们称为派生选择器,但是无论你如何称呼它们,它们的作用都是相同的。

      派生选择器允许你根据文档的上下文关系来确定某个标签的样式。通过合理地使用派生选择器,我们可以使 HTML 代码变得更加整洁。

      派生选择器包括选择被包含元素的后代选择器,选择子级的子级选择器,选择相邻的后面兄弟元素的相邻同级选择器,选择后面兄弟元素的同级选择器。

      比方说,你希望列表中的 strong 元素变为斜体字,而不是通常的粗体字,可以这样定义一个后代选择器:

    li strong {
        font-style: italic;
        font-weight: normal;
      }

      这样会选择到li里面所有的strong元素。

      如HTML代码所示:

    <p><strong>我是粗体字,不是斜体字,因为我不在列表当中,所以这个规则对我不起作用</strong></p>
    
    <ol>
    <li><strong>我是斜体字。这是因为 strong 元素位于 li 元素内。</strong></li>
    <li>我是正常的字体。</li>
    </ol>

      当li里面存在strong和p,p里面又有strong元素,这时想要选择li的strong而不选中p里面的strong时,可以写作:

    <p><strong>我是粗体字,不是斜体字,因为我不在列表当中,所以这个规则对我不起作用</strong></p>
    
    <ol>
    <li>
      <
    strong>我是斜体字。这是因为 strong 元素位于 li 元素内。</strong>
      <
    p>我是普通文字样式<strong>我是粗体但不是斜体,我不是li的子级元素</strong></P>
    </
    li> <li>我是正常的字体。</li> </ol>

      此时的css代码应当写作:

    li>strong {
        font-style: italic;
        font-weight: normal;
      }

      当希望实现选中标题下面的第一个段落设置为粗体,而不会选中后面的段落时,可以使用选择相邻的同级选择器:

    <h1>我是标题,没有设置任何样式</h1>
    <p>我是h1相邻的兄弟元素,我是粗体</P>
    <p>我不是相邻的兄弟元素,我不是粗体</p>

      对应的css代码应当写作:

    h1+p{
         font-weight: bold;          
     }

      当h1后面还跟有其余的元素,如div时,h1后面只能跟div,再写p时无法选中段落,因为此时h1和p已经不是相邻关系。如果想要选中后面的其余兄弟元素,应当使用:

    h1~p{
      font-weight: bold;  
    }

      样式将会设置到每一个前面有h1兄弟元素的p上面。

    5、属性选择器

      可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。只有在规定了 !DOCTYPE 时,IE7 和 IE8 才支持属性选择器。在 IE6 及更低的版本中,不支持属性选择。

      下面的例子为带有 title 属性的所有元素设置样式:

    [title]
    {
    color:red;
    }

      当想要指定属性为某一属性值时,如为 title="hello" 的所有元素设置样式:

    [title=W3School]
    {
    border:5px solid blue;
    }

      当属性的值为多个值时,下面的例子为包含指定值的 title 属性的所有元素设置样式。适用于由空格分隔的属性值:

    [title~=hello] { color:red; }

      带有包含指定值的 lang 属性的所有元素设置样式。适用于由连字符分隔的属性值:

    [lang|=en] { color:red; }

      当属性值以某段字符开始时,选中这些元素设置样式:

    [title^=hello] { color:red; }

      当属性值包含某段字符时,选中这些元素设置样式:

    [title*=hello] { color:red; }

      当属性值以某段字符结束时,选中这些元素设置样式:

    [title$=hello] { color:red; }

      属性选择器可以配合基本选择器使用,这样只会选中对应属性的这一种标签。另外,属性选择器在为不带有 class 或 id 的表单设置样式时特别有用:

    input[type="text"]
    {
      width:150px;
      display:block;
      margin-bottom:10px;
      background-color:yellow;
      font-family: Verdana, Arial;
    }
    
    input[type="button"]
    {
      width:120px;
      margin-left:35px;
      display:block;
      font-family: Verdana, Arial;
    }

    6、伪类选择器和伪元素选择器

      常见的伪类选择器:

      :link  

      :hover

      :active

      :visited

      :lang

      结构性的伪类选择器包括有

      :root()选择器,从字面上我们就可以很清楚的理解是根选择器,他的意思就是匹配元素E所在文档的根元素。在HTML文档中,根元素始终是<html>。:root选择器等同于<html>元素。

      :not()选择器称为否定选择器,可以选择除某个元素之外的所有元素。

      :empty()选择器表示的就是空。用来选择没有任何内容的元素,这里没有内容指的是一点内容都没有,哪怕是一个空格。

      :target()选择器来对页面某个target元素(该元素的id被当做页面中的超链接来使用)指定样式,该样式只在用户点击了页面中的超链接,并且跳转到target元素后起作用。

      :nth-child()  /  :nth-of type选择某个元素的一个或多个特定的子元素。(选择元素中的第一个子元素,:first-child() ,同样可以适用于倒数在中间加上last即可,以及only-child指定唯一子元素)

      伪元素选择器包括(本身为两个冒号,现在习惯写作一个冒号):

      :first-line  /  :first-letter选择器选择元素的第一行  /  第一个字母,比如说改变每个段落的第一行文本的样式,我们就可以使用这个

      :before和:after这两个主要用来给元素的前面或后面插入内容,这两个常用"content"配合使用,见过最多的就是清除浮动,也可以用来绘制三角形或者对话框,清除浮动将after设置为块级元素,在进行clear

      ::selection选择被用户选取的元素部分。

    7、选择器总览

        查看更多选择器戳这里

  • 相关阅读:
    margin折叠及hasLayout && Block Formatting Contexts
    视口(viewport)原理详解之第二部分(移动端浏览器)
    Git & SSH
    .NET Core 3.0 System.Text.Json 和 Newtonsoft.Json 行为不一致问题及解决办法
    阿里云函数计算 .NET Core 初体验
    Oracle PLSQL 存储过程无法进入单步调试
    解释器错误:没有那个文件或目录
    不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。
    Oracle 11G R2 安装图解
    Oracle UTL_HTTP
  • 原文地址:https://www.cnblogs.com/zzmiaow/p/7748644.html
Copyright © 2011-2022 走看看