zoukankan      html  css  js  c++  java
  • css伪元素选择器

    CSS的元素选择器除了根据id(#)、class(.)、属性([ ])选取元素以外,还有很重要的一类,就是根据元素的特殊状态来选取元素。它们就是伪类和伪元素。跟id选择器、类选择器、属性选择器以及派生选择器等等这些从HTML文档层次结构(DOM树)中获取元素不同的是,伪类和伪元素是预定义的、独立于文档元素的。它们获取元素的途径也不是基于id、class、属性这些基础的元素特征,而是在处于特殊状态的元素(伪类),或者是元素中特别的内容(伪元素)。当然,伪类和伪元素的表示形式也使用“:”(英文冒号)与其它选择器相区分。

    伪类

    伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,而不是元素的id、class、属性等静态的标志。由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类。

    :link

    伪类将应用于未被访问过的链接,与:visited互斥。

    :hover

    伪类将应用于有鼠标指针悬停于其上的元素。

    :active

    伪类将应用于被激活的元素,如被点击的链接、被按下的按钮等。

    :visited

    伪类将应用于已经被访问过的链接,与:link互斥。

    下面的示例是对上述4个伪类效果的展示:

    [html] view plain copy
     
    1. <html>  
    2. <head>  
    3. <meta content="text/html"charset="utf-8" />  
    4. <style type="text/css">  
    5. a:link {color: #FF0000}  
    6. a:visited {color: #00FF00}  
    7. a:hover {color: #FF00FF}  
    8. a:active {color: #0000FF}  
    9. </style>  
    10. </head>  
    11. <body>  
    12. <ahrefahref="http://www.baidu.com">百度</a>  
    13. </body>  
    14. </html>  

    需要注意的是在CSS的定义中,同一个元素的:hover必须位于:link、:visited之后才能生效,:active必须位于:hover之后才能生效。

    :focus

    伪类将应用于拥有键盘输入焦点的元素。

    :first-child

    伪类将应用于元素在页面中第一次出现的时候。

    :lang

    伪类将应用于元素带有指定lang的情况。

    下面的示例展示了上述3个伪类的效果:

    [html] view plain copy
     
    1. <!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    2. <html>  
    3. <head>  
    4. <meta charset="utf-8"content="text/html" />  
    5. <title></title>  
    6. <style type="text/css">  
    7. div:first-child {  
    8.          background:#0F0;  
    9. }  
    10.    
    11. textarea:focus {  
    12.          background:#F00;  
    13. }  
    14.    
    15. div:lang(zh) {  
    16.          background:#00F;  
    17. }  
    18. </style>  
    19. </head>  
    20. <body>  
    21. <div>  
    22.          <textarea></textarea>  
    23. </div>  
    24. <div>  
    25.          <textarea></textarea>  
    26. </div>  
    27. <div lang="zh">  
    28.          <textarea></textarea>  
    29. </div>  
    30. </body>  
    31. </html>  

    伪元素

    与伪类针对特殊状态的元素不同的是,伪元素是对元素中的特定内容进行操作,它所操作的层次比伪类更深了一层,也因此它的动态性比伪类要低得多。实际上,设计伪元素的目的就是去选取诸如元素内容第一个字(母)、第一行,选取某些内容前面或后面这种普通的选择器无法完成的工作。它控制的内容实际上和元素是相同的,但是它本身只是基于元素的抽象,并不存在于文档中,所以叫伪元素。

    :first-letter

    伪元素的样式将应用于元素文本的第一个字(母)。

    :first-line

    伪元素的样式将应用于元素文本的第一行。

    :before

    在元素内容的最前面添加新内容。

    :after

    在元素内容的最后面添加新内容。

  • 相关阅读:
    swift 一些公共的宏重新定义
    iOS中正则表达式的使用
    失败的尝试,使用继承扩展数组,以及ES6的必要性
    用travis-ci编译android版nodejs
    用es6写一个分数库
    快速平方根算法的javascript实现
    windows中vim以及cmder的使用
    nodejs的交叉(跨平台)编译(to android)
    用链表实现nodejs的内存对象管理
    给socks-proxy-agent增加认证
  • 原文地址:https://www.cnblogs.com/aizhuli12/p/7337490.html
Copyright © 2011-2022 走看看