美文网首页CSS
| 伪元素应用

| 伪元素应用

作者: Hemingway_AT | 来源:发表于2019-08-19 00:02 被阅读0次

前言

本文涉及伪元素概要和用法,包括悬停提示、清除浮动及图形生成。

正文

W3C详尽列举了伪元素的值,分别有:first-letter、first-line、before、after。

先说第一组:first-letter和first-line;它们在CSS1标准中被定义,"first-letter" 伪元素用于向文本的首字母设置特殊样式,"first-line" 伪元素用于向文本的首行设置特殊样式,两者都只能用于块级元素,如p元素。

重点是第二组:before和after;它们在CSS2标准中被定义,可以在元素内容的前面或者后面插入新内容,如图片等。先看一段来自MDN的引言:

CSS伪元素::after用来创建一个伪元素,作为已选中元素的最后一个子元素。通常会配合content属性来为该元素添加装饰内容。这个虚拟元素默认是行内元素。

这里顺便提一下语法,双冒号::伪元素表示法是在CSS 3中引入的,用以区分伪类和伪元素(如:hover),当然::符号往下兼容、使用CSS2时代的表示法也是可以的。

  • 来一段代码开开胃:
<!-- HTML -->
<h1>案例:伪元素制作悬浮提示</h1>
<p>
  浮世万千,吾爱有三:
  <span data-descr="日为朝">日</span> 、
  <span data-descr="月为暮">月</span>、
  <span data-descr="卿为朝朝暮暮">卿</span>。
</p>
/* CSS */
span[data-descr] {
  position: relative;
  text-decoration: underline;
  color: #00F;
  cursor: help;
}

span[data-descr]:hover::after {
  content: attr(data-descr);
  position: absolute;
  left: 0;
  top: 24px;
  min-width: 100px;
  border: 1px #aaaaaa solid;
  border-radius: 10px;
  background-color: #ffffcc;
  padding: 6px;
  color: #000000;
  font-size: 14px;
  z-index: 1;
}

看看效果:


伪元素制作提示.gif
  • 上面的情境有点浪漫,咳咳,且看下面这个伪元素高频应用:浮动清除。
<!-- HTML -->
<body>
    <div class="clearFolat">
        <div class="box float">
            left
        </div>
        <div class="box float">
            right
        </div>
        <p>段落1</p>
        <p>段落2</p>
    </div>
    <div class="box">
        参照盒子
    </div>
</body>
/* CSS */
body {
    margin: 0;
}

.clearFolat {
    border: 1px solid black;
}

.clearFolat::after {
    content: "";
    display: block;
    clear: both;
}

.box {
    width: 200px;
    height: 200px;
    line-height: 200px;
    border: 1px solid white;
    background-color: green;
    color: black;
    text-align: center;
    opacity: 0.9;
}

.float {
    border-radius: 40px;
    border: 1px solid black;
}
    
.float:nth-of-type(1) {
    float: left;
    background-color: red;
}

.float:nth-of-type(2) {
    float: right;
    background-color: yellow;
}

p{
    background-color: #5F9EA0;
}
    
.normal {
    background-color: #0000FF;
}

效果录屏:


伪元素清除浮动.gif
  • 最后一个应用:伪元素画星星,画月亮主要利用了border-radius和box-shadow属性,下图是效果:


    moon and star.png

    星星由3个三角形拼成,画它的过程比较考验当年的平面几何基本功,折腾了蛮久,惭愧~~代码中部分参数计算如下:
    200 * tan(36°) ≈ 145
    145 * tan(18°) ≈ 47
    代码如下:

<!-- HTML -->
<div id="shape">
    <div id="moon">
        
    </div>
    <div id="star-five">

    </div>
</div>
/* CSS */
#shape {
    width: 400px;
    margin: 200px auto;
    position: relative;
}

#star-five {
    margin: 0px auto;
    position: relative;
    display: block;
    color: red;
    width: 0px;
    height: 0px;
    border-right: 200px solid transparent;
    border-bottom: 145px solid rgba(255, 0, 0, 1);
    border-left: 200px solid transparent;
    transform: rotate(36deg);
}

#star-five:before {
    content: '';
    display: block;
    position: absolute;
    top: -103px;
    left: -122px;
    height: 0;
    width: 0;
    border-bottom: 145px solid rgba(255, 0, 0, 1);
    border-left: 47px solid transparent;
    border-right: 47px solid transparent;
    transform: rotate(-36deg);
}

#star-five:after {
    content: '';
    display: block;
    position: absolute;
    top: 0px;
    left: -200px;
    width: 0px;
    height: 0px;
    border-bottom: 145px solid rgba(255, 0, 0, 1);
    border-left: 200px solid transparent;
    border-right: 200px solid transparent;
    transform: rotate(-72deg);
}

#moon {
  width: 400px;
  height: 400px;
  border-radius: 50%;
  box-shadow: 60px 60px 40px 40px rgba(255, 255, 0, 1);
  position: absolute;
  top: -100px;
  left: 60px;
}

结语

伪元素的好处在于可以简化HTML代码,提高可读性和可维护性;在图形生成的应用中更是巧妙,在不加载图片资源的情况下实现了精致的UI,真是令人难忘!

相关文章

  • | 伪元素应用

    前言 本文涉及伪元素概要和用法,包括悬停提示、清除浮动及图形生成。 正文 W3C详尽列举了伪元素的值,分别有:fi...

  • 平行四边形

    伪元素方案将所有样式(背景、边框等)应用到伪元素上,然后再对伪元素进行变形。如果希望伪元素保持良好的灵活性,可以自...

  • CSS的伪元素和伪类

    css中伪元素的应用 div里的伪元素有两个,分别是::before和::after伪元素是默认隐藏的::befo...

  • 细说CSS伪类和伪元素

    原文 博客原文 大纲 1、伪元素2、伪类元素3、伪元素和伪类元素的区别4、伪类和伪元素的使用 1、伪元素 伪元素在...

  • CSS小结

    1.伪元素有哪些: first-letterfirst-linebeforeafter应用:给元素添加边框动画,清...

  • 伪元素和伪类

    本文将介绍伪元素和伪类选择器的一些知识,以及在VUE中伪元素的动态数据更新; 伪元素和伪类: 伪元素:在内容元素的...

  • css 实现分割线的N种方法

    1.伪元素+transform:translateX(-100%); 伪元素 结合 定位 2.伪元素+flex (...

  • 巧用伪元素和伪类让我们的html结构更清晰合理

    css3为了区分伪类和伪元素,伪元素采用双冒号写法。 伪元素: [ 伪元素用于向某些选择器设置特殊效果,简单来说,...

  • CSS基础之伪类伪元素&样式优先权

    伪类&伪元素 首字样式控制 —— 使用伪元素::first-letter 首行样式控制 —— 使用伪元素::fir...

  • 伪元素初解

    一、伪元素与伪类 1. 常见的伪类 2. 伪元素 二、伪元素(这里只说::before和::after) 1. 了...

网友评论

    本文标题:| 伪元素应用

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