• Web前端学习第七天·fighting_CSS样式的编写和使用(二)


    属性选择器

      目前使用的并不多。新浪和京东有使用。

      可以根据元素的属性即属性值来选择元素。

      单个属性时的语法:*[属性名称]{样式}

      例如:(表示所有有href属性的标签)

    1 <style type="text/css">
    2      *[href]{
    3          color:red;
    4      }
    5 </style>
    1 <style type="text/css">
    2      span[href]{
    3          color:red;
    4      }
    5 </style>

      上面的代码中表示span标签中具有href属性的元素,给它的内容的颜色设置为红色。span中的href属性并没有实际意义。

      

      多个属性时的语法:*[属性名称][属性名称]{样式}

      例如:(表示类名为a的具有href和name属性的元素)

    1 <style type="text/css">
    2     .a[href][name]{
    3         color:red;
    4     }
    5 </style>

      

      根据属性值匹配,要求完全匹配时的语法:*[属性名称="属性值"]{样式}

      例如:

    1 <style type="text/css">
    2     input[type="text"]{
    3         color:red;
    4     }
    5 </style>

      上述的示例可以将文本框输入的字体颜色变为红色。

      

      根据属性值的单词匹配的语法:*[属性名称~="单词"]{样式}

      例如:(表示div中类名中包含单词“note”的元素,“war note”匹配,“warnote”不匹配)

    1 <style type="text/css">
    2     div[class~="note"]{
    3         color:red;
    4     }
    5 </style>

      

      根据属性值包含的内容匹配的语法:*[属性名称*="内容"]{样式}

      例如:(表示div中类名中包含单词“note”的元素,“warnote”和“war note”都是匹配的)

    1 <style type="text/css">
    2     div[class*="note"]{
    3         color:red;
    4     }
    5 </style>

      如果~=和*=同事存在,heml解析的顺序(与优先级相反)是怎样的呢?

        与它们出现在html中的位置有关,出现在前面的先执行,出现在后面的后执行,后面执行的属性值会覆盖前面执行的属性值,也就是说后执行的优先级高。

      

      以属性值开头的内容选择的语法:*[属性名称^="内容"]{样式}

      例如:(以“btn”开头的name属性值对应的元素被选中)

    1 <style type="text/css">
    2     div[name^="btn"]{
    3         color:red;
    4     }
    5 </style>

      

      以属性值开头的单词的选择的语法:*[属性名称|="单词"]{样式}

      例如:(input标签中以“btn”单词开头的name属性值对应的元素被选中)

    1 <style type="text/css">
    2     input[name|="btn"]{
    3         color:red;
    4     }
    5 </style>

      以属性值结尾的内容的选择的语法:*[属性名称$="内容"]{样式}

      例如:(button标签中的name属性值以“btn”结尾的标签被选中)

    1 <style type="text/css">
    2     input[type="button"][name$="btn"]{
    3         color:red;
    4     }
    5 </style>

    交集选择器(ID选择器的一种)

      由两个选择器组合而成,第一个是标签选择器,第二个是类选择器或者ID选择器,用于更加明确的选择某个元素。

      语法:标签.class(或者标签#id){样式}(注意:第一个必须是标签选择器,中间不能有空格)。

      html执行各类选择器的顺序(与优先级相反):

        浏览器默认的样式

        标签选择器

        类选择器

        交集选择器(标签.class)

        id选择器

        交集选择器(标签.id)

        行内样式

      使用频率并不高。

    分组选择器

      由多个选择器通过逗号连接在一起,也称之为并集选择器。

      例如:body,div,dl,dt,dd,ul{margin:0;padding:0}(通常使用这类代码初始化CSS去掉页面的内边距和外边距)。

      具体使用可查看新浪网的源码。

      

    考虑到网页加载的速度和流量,通常会对CSS样式文件和JS脚本文件做压缩处理(即去掉多余的空格等)。

    伪类样式选择器

      超链接有很多的行为,比如:鼠标悬浮在上面,鼠标点击(点击后会发现超链接样式与其他的不同),鼠标离开后的样式,都可以通过伪类样式来实现。

      CSS3.0中增加了许多伪类选择器。主要介绍CSS1.0和CSS2.0中的伪类选择器。

      E:link  设置超链接a在未被访问前的样式,用在<a>标签中。(E表示选择器:类选择器、ID选择器、标签选择器,但是不能是元素选择器)

        语法:E:link{样式}   

        例如:注释掉的代码段与该伪类选择器看似实现同样的功能,实际上是不同的。使用伪类选择器的样式只作用于超链接,也就是说如果<a>标签没有设置href的属性值,那么它就会呈现出默认样式而不会被设置为橘色。如果使用的是注释掉的代码(标签选择器),则所有的<a>标签不管是不是超链接,它们都会变成橘色。

      E:visited  设置超链接a在其链接地址被访问以后的样式。

        语法:E:visited{样式}

      E:hover  设置元素在其鼠标悬停的样式。

        语法:E:hover{样式}

      E:focus  设置对象在成为输入焦点(该对象的focus事件发生)时的样式。webkit(Google浏览器)内核浏览器会默认给:focus状态的元素加上outline(外边的线条)的样式。

        语法:E:focus{样式}

      E:first-child  应用该样式的第一个元素,而不是子元素。(也就是说html解析中第一个被用到的E标签,而不是指E标签中的第一个子元素)

        语法:E:first-child{样式}

    例如:

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5     <title>伪类样式选择器</title>
     6     <meta charset="utf-8" />
     7     <style type="text/css">
     8         a:link {
     9             color: orange;
    10         }
    11         /*a {
    12             color: orange;
    13         }*/
    14         a:visited {
    15             color:gray;
    16         }
    17         a:hover {
    18             color:red;
    19             text-decoration:none;
    20         }
    21         input:focus {
    22             /*实线边框,2px,红色*/
    23             border:2px solid red;
    24             /*谷歌浏览器默认加上外边框了,需要我们自己去掉外边框*/
    25             outline:none;
    26         }
    27         /*是指第一个被使用的div标签,而不是指div标签的第一个子元素*/
    28         div:first-child {
    29             border:2px solid red;
    30         }
    31     </style>
    32 </head>
    33 <body>
    34     <div>
    35         <p>第一段</p>
    36         <p>第二段</p>
    37         <p>第三段</p>
    38     </div>
    39     <div>
    40         <input/>
    41         <span>第一个&lt;span&gt;标签</span>
    42         <ul>
    43             <li>
    44                 <a href="http://www.baidu.com" title="百度">百度</a>
    45                 <span>搜索网站</span>
    46             </li>
    47             <li>
    48                 <a href="http://www.baidu.com" title="新浪">新浪</a>
    49                 <span>门户网站</span>
    50             </li>
    51             <li>
    52                 <a href="http://www.baidu.com" title="网易">网易</a>
    53                 <span>门户网站</span>
    54             </li>
    55         </ul>
    56         <span>第二个&lt;span&gt;标签</span>
    57         <p>段落标签</p>
    58     </div>
    59 </body>
    60 </html>

    注意:伪类选择器中不能有空格

    练习

      

    1分组选择器

    2属性选择器

    3类选择器

    4后代选择器

    5分组选择器(后代选择器)

    6分组选择器(后代选择器,伪类选择器)

    7分组选择器

    8子元素选择器(前面是一个后代选择器)

    9伪类选择器(前面是后代选择器)

    10后代选择器

      

  • 相关阅读:
    如何用纯 CSS 创作一个跳动的字母 i
    如何用纯 CSS 创作一个变色旋转动画
    如何用纯 CSS 创作气泡填色的按钮特效
    如何用纯 CSS 创作一个跳 8 字型舞的 loader
    如何用纯 CSS 创作一只徘徊的果冻怪兽
    如何用纯 CSS 创作一个单元素抛盒子的 loader
    如何用纯 CSS 创作单元素点阵 loader
    如何用纯 CSS 创作一个摇摇晃晃的 loader
    [Monkey King]
    473. 核电站问题
  • 原文地址:https://www.cnblogs.com/Candy1029/p/5516375.html
Copyright © 2020-2023  润新知