现在我们经常在 html 源码中看到如下的写法:

这里的 ::after 和 ::before 就是我们今天来探讨的 css 伪元素之二 - :before && :after。

伪元素

首先我们要明白什么是伪元素,css 设置伪元素是为了方便给某些选择器添加特殊的效果。伪元素的语法格式一般为:

selector:pseudo-element {property:value;}

这里的 property 是指伪元素的属性。此外,css 类也可以与伪元素配合使用,格式如下:

selector.class:pseudo-element {property:value;}

伪元素就是这样通过赋值给自己属性从而给指定的选择器添加上样式的效果。

:before

如同对伪元素的名称一样,:before 是用来给指定的元素的内容前面插入新的内容。举例说明:

.before:before{content:'you before'; color:red;}

me

在这里我们给伪元素 :before 添加了属性 content,并赋值为 you before。我们来看效果:

//在指定元素的内容 me 前添加了新内容 you before

我们不难发现这里通过伪元素 :before 添加的新内容区域默认的 display 属性值为 inline,那么我们可不可以修改新内容区域的属性,答案是肯定的。你可以像修改其他元素一样修改它的样式,我们来将它的 display 属性值来改为 block。

.before:before{content:'you before'; display:block; color:red;}

me

现在我们再来看下效果:

 //由伪元素 :before 生成新内容区域果然变为了块元素

content 属性

对于伪元素 :before 和 :after 而言,属性 content 是否为必选项呢?我们尝试把 content 移除。

.before:before{display:block; color:red;}

me

//没有了 content 属性,新内容自然是为空的

//同时我们查看 html 源码会发现,:before 是没有生效的

那么我们设为空呢?

.before:before{content:''; display:block; color:red;}

me

//新内容依然为空

//此时 :before 生效

所以我们明白,对于伪元素 :before 和 :after 而言,属性 content 是必须设置的,那么在上面的例子,我们知道属性的值可以为字符串,那么还可以为其他形式吗?答案是可以的,它还可以是指向一张图片的 URL:

content: url( "img/icon.png" )

配合伪类使用

伪元素 :before 还可以配合伪类使用,这里举经常与 :before 配合使用的伪类 :hover 为例:

.before:hover:before{content:'you before'; color:red;}

me

//无内容

//鼠标移至 div 上时,新内容出现。

这里需要注意两者使用的顺序,伪元素应该位于后面,如果顺序改为 .before:before:hover 是无效的。

配合取值函数 attr() 使用

还有一种较为常见的用法,即配合取值函数 attr() 一起使用,如:

a::before{content: attr(title)}

此时达到的效果相当于:

专业面向开发者的中文技术问答社区

:after

伪元素 :after 与 伪元素 :before 类型相同,只不过它指定的属性 content 值为出现在指定元素内容的后面,同样举例说明:

.after:after{content:'after you'; color:#F00;}

I

//伪元素 :after 生成的新内容区域出现在指定元素内容的而后面

:after 其他特征与 :before 一致,可以参考上文,在此就不赘述。

参考

html css before,详解 CSS 属性 - :before :after相关推荐

  1. CSS中详解height属性

    目录结构: contents structure [+] hight属性值类型一览表 height的%的使用 定义 实例 需要注意的 参考文章 hight属性值类型一览表 value describt ...

  2. CSS中详解hight属性

    目录结构: contents structure [-] hight属性值类型一览表 height的%的使用 定义 实例 需要注意的 参考文章 hight属性值类型一览表 value describt ...

  3. apache伪静态把css 排除掉_(02)CSS 选择器详解 | CSS

    原创:itsOli @前端一万小时 本文版权归作者所有,未经授权,请勿转载! 本文节选自"语雀"私有付费专栏「前端一万小时 | 从零基础到轻松就业」 1. 伪类选择器有哪些?2. ...

  4. php css权重,详解css z-index的权重问题

    本篇文章给大家分享一下css的z-index权重问题.到底怎么样才能让我们想要排在上面的元素能在上面,想在下面的元素就老老实实的在下面. 一.一起看下面实战中z-index的几种情况:一个定义了定位, ...

  5. float属性html,详解CSS样式中的float属性

    详解CSS样式中的float属性.float是 css 样式的定位属性.我们在印刷排版中,文本可以按照需要围绕图片.一般把这种方式称为"文本环绕".在网页设计中,应用了CSS的fl ...

  6. 详解CSS float属性

    转自:http://luopq.com/2015/11/08/CSS-float/ \详解CSS float属性 Posted on 2015-11-08   |   In CSS   |   5条评 ...

  7. CSS中line-height属性详解(CSS之四)

    CSS中line-height属性详解 基本概念 line-height,又称行高,指的是两行文字基线之间的距离,又可以称为这行文字所占的高度. 图中两行基线之间的距离就是行高,基线相关可以查看CSS ...

  8. JSX设置CSS样式详解

    JSX设置CSS样式详解 1. 使用className设置样式(CSS的其他选择器也是同理) (1)定义一个CSS文件style.css,和普通CSS一样定义class选择器 .sty1{//和普通C ...

  9. 详解CSS的盒模型(box model) 及 CSS3新增盒模型计算方式box-sizing

    W3C规范 一般来说,页面中的每一个元素都会形成一个矩形盒子,渲染引擎根据给定的样式确定这个盒子的呈现.通俗的来说,页面的布局就是一个个盒子的排列和摆放.掌握了盒子呈现的本质,布局也就轻而易举. 在 ...

最新文章

  1. DHCP的安装与分配
  2. webpack4.0--如何安装和配置(一)
  3. nfs服务端服务停掉,导致的客户端访问挂载目录卡死的情况
  4. spring logback mysql_logback 日志输出格式
  5. NYOJ 622 Vote
  6. 如何创建SAP Commerce Cloud Page Templates
  7. 1380C. Create The Teams
  8. 7. Android Basic UI的布局 WidgetDemo基本组件演示
  9. go get 拉取指定版本_go语言学习笔记-基础知识-3
  10. Disable STRICT_TRANS_TABLES @Mysql 5.7
  11. oracle判断数字为复数,oracle学习笔记(十二) 查询练习(二) 高级查询
  12. 100首英文经典歌曲
  13. Linux rm -rf * 文件恢复记
  14. C++中前置++,后置++,+,左移运算重载符详细介绍
  15. nn,cnn(lenet5),c++代码
  16. pat甲级1013图柳神代码解析自学复盘
  17. STM8L051F3单片机竟然没有TIM1定时器,却有TIM2,3,4!!!害我调了一天没调出来
  18. scrapy_splash基本使用
  19. 瑞萨CPU平台的GPIO模拟I2C之三:SPHE1002读写调用
  20. centos 开启关闭网卡(禁用网卡)

热门文章

  1. 美术细化专业课程-张聪-专题视频课程
  2. IDS入侵检测IPS入侵防御
  3. 益聚星荣:B站详谈元宇宙最近两三年不会落地,现在布局已经太晚
  4. Very Deep Convolutional Networks for Large-Scale Image Recognition—VGG论文翻译—中文版
  5. php花朵飘落特效,WordPress 主题添加花瓣飘落特效
  6. 深入学习sniffer
  7. Node: Puppeteer + 图像识别 实现百度指数爬虫
  8. 图形学(6)多边形的区域填充
  9. 国际标准电话和手机号码的正确写法
  10. 用友通账套备份操作流程