zoukankan      html  css  js  c++  java
  • ::before和::after伪元素的用法

    css3为了区分伪类和伪元素,伪元素采用双冒号写法。

    常见伪类——:hover,:link,:active,:target,:not(),:focus。

    常见伪元素——::first-letter,::first-line,::before,::after,::selection。

    ::before和::after下特有的content,用于在css渲染中向元素逻辑上的头部或尾部添加内容。

    这些添加不会出现在DOM中,不会改变文档内容,不可复制,仅仅是在css渲染层加入。

    所以不要用:before或:after展示有实际意义的内容,尽量使用它们显示修饰性内容,例如图标。

    举例:网站有些联系电话,希望在它们前加一个icon☎,就可以使用:before伪元素,如下:

    <!DOCTYPE html>
    <meta charset="utf-8" />
    <style type="text/css">
        .phoneNumber::before {
        content:'260E';
        font-size: 15px;
    }
    </style>
    <p class="phoneNumber">12345645654</p>

    结果:

    content:

    ::before和::after必须配合content属性来使用,content用来定义插入的内容,content必须有值,至少是空。默认情况下,伪类元素的display是默认值inline,可以通过设置display:block来改变其显示。

    content可取以下值。

    1、string

    使用引号包一段字符串,将会向元素内容中添加字符串。如:a:after{content:""}

    如下:

    <!DOCTYPE html>
    <meta charset="utf-8" />
    <style type="text/css">
    p::before{
        content: "《";
        color: blue;
    }
    p::after{
        content: "》";
        color: blue;
    }
    </style>
    <p>平凡的世界</p>

    结果:

    2、attr()

    通过attr()调用当前元素的属性,比如将图片alt提示文字或者链接的href地址显示出来。

    <style type="text/css">
    a::after{
        content: "(" attr(href) ")";
    }
    </style>
    <a href="http://www.cnblogs.com/starof">starof</a>

    3、url()/uri()

    用于引用媒体文件。

    举例:“百度”前面给出一张图片,后面给出href属性。

    <style>
    a::before{
        content: url("https://www.baidu.com/img/baidu_jgylogo3.gif");
    }
    a::after{
        content:"("attr(href)")";
    }
    a{
        text-decoration: none;
    }
    </style>
    ---------------------------
    <body>
    <a href="http://www.baidu.com">百度</a>
    </body>

    效果:

    4、counter()

    调用计数器,可以不使用列表元素实现序号功能。

    配合counter-increment和counter-reset属性使用:

    h2:before { counter-increment: chapter; content: "Chapter " counter(chapter) ". " }

    代码:

    <style>
    body{
        counter-reset: section;
    }
    h1{
        counter-reset: subsection;
    }
    h1:before{
        counter-increment:section;
        content:counter(section) "、";
    }
    h2:before{
        counter-increment:subsection;
        content: counter(section) "." counter(subsection) "、";
    }
    </style>
    ------------------------------------------------
    <body>
    <h1>HTML tutorials</h1>
    <h2>HTML Tutorial</h2>
    <h2>XHTML Tutorial</h2>
    <h2>CSS Tutorial</h2>
    
    <h1>Scripting tutorials</h1>
    <h2>JavaScript</h2>
    <h2>VBScript</h2>
    
    <h1>XML tutorials</h1>
    <h2>XML</h2>
    <h2>XSL</h2>
    
    </body>
  • 相关阅读:
    plsql excel导入报错:未发现数据源名称并且未指定默认驱动程序
    exception java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    Android DiskLruCache 源代码解析 硬盘缓存的绝佳方案
    uestc 360(区间合并)
    UI_UITabBarController
    【C++ Primer】用于大型程序的工具
    Java 从基础到进阶学习之路---类编写以及文档凝视.
    Android 项目的代码混淆,Android proguard 使用说明
    android:Activity四种启动模式简单介绍
    已有数据库(单机)部署Database Vault
  • 原文地址:https://www.cnblogs.com/qq1312583369/p/10258456.html
Copyright © 2011-2022 走看看