花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 87|回复: 45

一帖搞懂伪元素::before和::after

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2022-10-21 12:20 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    本帖最后由 马黑黑 于 2022-10-21 12:58 编辑

    关于元素的 ::before 和 ::after 伪元素,我们接触过不少,但基本都是零零星星的,这里有必要梳理一下。

    我们先做个简单一点的元素,然后再依次给它加上两个伪元素:

    <style>
    
    .mnBox {
       width: 400px;
       height: 200px;
       border: 1px solid gray;
       position: relative;
    }
    
    /* 这里添加伪元素代码 */
    
    </style>
    
    <div class="mnBox"></div>
    
    效果:
    
    

    这个真的简简单单,没什么要解释的,唯独要强调的是 mnBox 盒子的 position 属性,要定位,一般建议相对定位,即,position: relative;,特殊需要时也可以采用其他定位,如绝对定位(absolute)。因为只有父元素定位了,将来子元素所做的定位才会以父元素做参照,而前述两个伪元素,我们以前反复提及,它们是特殊的子元素。

    下面我们先加入 ::before 伪元素,CSS代码放在 .mnBox {} 之后:

    .mnBox::before {
       position: absolute;
       content: '伪元素 ::before';
       width: 150px;
       height: 50px;
       left: 10px;
       top: 10px;
       background: olive;
       color: orange;
       padding: 10px;
    }
    

    绝对定位(position: absolute;)是强烈建议的,这么做,配合父元素的 relative 定位,伪元素就会以父元素为自己的定位参照,不至于找不着北;content 属性是必须的,否则伪元素渲染不出来,其值可以为空字串、实字串,也可以是相关变量(我们后面会简单谈到 attr 变量)。其他方面,从代码中可以看到,和元素的属性设置没有区别,拥有常规元素的一切属性,可以设置尺寸、物理位置、内边距、前景色和背景色等等。

    html代码无需改变,效果就出来了:

    加 ::after 伪元素道理同 ::before,下面的代码加在 CSS 里面,习惯上放在 *::before {} 之后:

    .mnBox::after {
       position: absolute;
       content: '伪元素 ::after';
       width: 150px;
       height: 150px;
       left: 100px;
       top: 50px;
       background: teal;
       color: orange;
       padding: 10px;
    }
    
    效果:
    
    


    上面效果,我们看到,伪元素 ::after 的盒子溢出了父盒子。这是正常现象:伪元素隶属于父元素,但它可以拥有自己的尺寸和位置,其物理位置和尺寸最终导致它身居何处,但这一切,由于有了父子关系的 position 配套定位的约束,我们在设计的时候就都可以预见得到,因为,在我们营造的环境里,伪元素的定位总是以父元素为参照,参照点是父元素的左上角的 xy坐标 {0,0}。同时,请观察一下 ::before 和 ::after 的层级关系:后者总是后来者居上(不论CSS代码中两个伪元素谁先谁后)。

    请特别注意:伪元素必须使用 content 属性,单词是“内容”之意,它用来表明伪元素的内容,如我们前例伪元素显示的文本(不需要伪元素文本的,请用空字串表示,即 '')。伪元素要显示的文本,可以在 CSS 里设定,也可以在 HTML 代码中指定,这时,CSS伪元素代码中,需要使用 attr 变量:

    content: attr(data-mytext);

    data- 是规定好的标准前缀,使用其他的字串替代 data 在一些编辑器中会被警告,但浏览器会支持。data- 之后紧跟着自定义的字串,可以是语义化的。然后,在HTML主元素代码中设定待输出内容:

    <div class="mnBox" data-mytext="我是伪元素"></div>

    还可以通过JS读取和写入 attr 数据:

    <script>
    
    let ele = document.querySelector('.mnBox'); //获得 mnBox 操作句柄
    let dataStr = ele.dataset.mytext; //读取伪元素内的文本
    console.log(dataStr); //控制台显示读取内容
    ele.dataset.mytext = '我的文本修改了'; //修改伪元素文本内容
    dataStr = ele.dataset.mytext; //再次读取伪元素内的文本
    console.log(dataStr); //控制台显示新读取内容
    
    </script>
    

    dataset方法正是我们做模拟逐字同步歌词显示模块所用到的,虽然大家可能不怎么留意到该模块中JS的实现细节。

    关于伪元素的一些扩展知识:

    ① 不是所有的HTML容器(元素)都拥有伪元素,一般说来,绝大多数双标签的容器都有伪元素,但也有例外,如 iframe 就没有伪元素;绝大多数的单标签容器没有伪元素,img 是个例外。

    ② 伪元素首先是假的,假在,常规方法在 DOM 树里面遍历不到它;同时它又是真真切切的元素,我们从上面的演示中可以感知到他的真实存在。总而言之,伪元素是一个伪造的元素,它真实存在但在 DOM 树种遍历不到它。

    ③ 伪元素和伪类的主要区别:概念和功能上,伪元素是对其所寄生的主元素的伪造,而伪类不伪造元素,而是用于制定主元素的特殊效果,亦即赋予元素一个自身不能制定的样式(如鼠标悬停在元素上面是改变文本颜色);写法上,CSS3规定,伪类有一个小角冒号引导(:hover),伪元素用的引导符号是一对小角冒号(::first-letter)。

    ④ 其他伪元素:CSS中常用到的共有四个伪元素,除了业已介绍的 ::before 和 ::after,还有:

    	::first-letter - 首字母相关
    	::first-line - 首行相关
    

    评分

    参与人数 2威望 +100 金钱 +200 经验 +100 收起 理由
    红影 + 50 + 100 + 50 赞一个!
    小辣椒 + 50 + 100 + 50 很给力!

    查看全部评分

  • TA的每日心情
    无聊
    2025-5-5 04:26
  • 签到天数: 597 天

    [LV.9]以坛为家II

    185

    主题

    5874

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥飞龙在天王者至尊大将风范音画大师天籁妙音花潮贵宾

    发表于 2022-10-21 12:27 | 显示全部楼层
    前排听讲
    我就来看看
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-10-21 12:31 | 显示全部楼层

    这个,俺多不好意思,你是实实在在的高手,来批评指导差不多
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2025-5-5 04:26
  • 签到天数: 597 天

    [LV.9]以坛为家II

    185

    主题

    5874

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥飞龙在天王者至尊大将风范音画大师天籁妙音花潮贵宾

    发表于 2022-10-21 12:46 | 显示全部楼层
    马黑黑 发表于 2022-10-21 12:31
    这个,俺多不好意思,你是实实在在的高手,来批评指导差不多

    哪敢啊,每天来转转不就为了学点新东西吗。
    我就来看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-10-21 12:48 | 显示全部楼层
    起个网名好难 发表于 2022-10-21 12:46
    哪敢啊,每天来转转不就为了学点新东西吗。

    学无止境,希望多指点
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2025-5-5 04:26
  • 签到天数: 597 天

    [LV.9]以坛为家II

    185

    主题

    5874

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥飞龙在天王者至尊大将风范音画大师天籁妙音花潮贵宾

    发表于 2022-10-21 12:51 | 显示全部楼层
    马黑黑 发表于 2022-10-21 12:48
    学无止境,希望多指点

    确实是学无止境,但指点是万万不敢的。
    我就来看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-10-21 12:53 | 显示全部楼层
    起个网名好难 发表于 2022-10-21 12:51
    确实是学无止境,但指点是万万不敢的。

    牵须了不是
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2025-5-5 04:26
  • 签到天数: 597 天

    [LV.9]以坛为家II

    185

    主题

    5874

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥飞龙在天王者至尊大将风范音画大师天籁妙音花潮贵宾

    发表于 2022-10-21 13:19 | 显示全部楼层

    须不够长啊
    我就来看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2025-5-5 04:26
  • 签到天数: 597 天

    [LV.9]以坛为家II

    185

    主题

    5874

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥飞龙在天王者至尊大将风范音画大师天籁妙音花潮贵宾

    发表于 2022-10-21 13:49 | 显示全部楼层
    本帖最后由 起个网名好难 于 2022-10-21 19:16 编辑

    真正的“前”和“后”
    860188669999
    我就来看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-10-21 18:11 | 显示全部楼层

    扯扯能长
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2025-5-5 04:26
  • 签到天数: 597 天

    [LV.9]以坛为家II

    185

    主题

    5874

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥飞龙在天王者至尊大将风范音画大师天籁妙音花潮贵宾

    发表于 2022-10-21 18:16 | 显示全部楼层
    本帖最后由 起个网名好难 于 2022-10-21 18:18 编辑

    无处抓手所以不牵须
    我就来看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-11-25 21:11
  • 签到天数: 1 天

    [LV.1]初来乍到

    1421

    主题

    6万

    回帖

    12万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀青草情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀男儿情怀鹰傲苍穹心香一瓣音画大师天籁妙音风雨同行我心永远喜乐安康中秋征文指尖上的流年花潮管理

    发表于 2022-10-21 18:46 | 显示全部楼层
    这个就是以前加的效果,发帖后跑帖子外面了,有了绝对地址可以控制在自己运行的空间内
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-10-21 18:57 | 显示全部楼层
    小辣椒 发表于 2022-10-21 18:46
    这个就是以前加的效果,发帖后跑帖子外面了,有了绝对地址可以控制在自己运行的空间内

    父子元素,父要定位,子也要定位。一般的配套是父相对(relative)、子绝对(absolute)。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-10-21 18:59 | 显示全部楼层

    额,都刮光了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-10-23 20:01 | 显示全部楼层
    来学习了,最后面提到的两个首字母和首行的,倒是从来没见到过呢
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-10-23 20:30 | 显示全部楼层
    红影 发表于 2022-10-23 20:01
    来学习了,最后面提到的两个首字母和首行的,倒是从来没见到过呢

    也不常用,报纸类可以用用
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-10-24 17:00 | 显示全部楼层
    马黑黑 发表于 2022-10-23 20:30
    也不常用,报纸类可以用用

    哦哦,不常用的就不理了,常用的还学不会呢
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-10-24 17:44 | 显示全部楼层
    红影 发表于 2022-10-24 17:00
    哦哦,不常用的就不理了,常用的还学不会呢

    需要用时,查查资料就好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-10-24 21:09 | 显示全部楼层
    马黑黑 发表于 2022-10-24 17:44
    需要用时,查查资料就好

    一点不会的东东查资料都没用
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-10-24 22:18 | 显示全部楼层
    红影 发表于 2022-10-24 21:09
    一点不会的东东查资料都没用

    查了就会的
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2025-12-16 23:18 , Processed in 0.089087 second(s), 29 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表