位置: IT常识 - 正文

::before和::after是什么?(before跟after区别)

编辑:rootadmin
::before和::after是什么?

推荐整理分享::before和::after是什么?(before跟after区别),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:before和after怎么区分,before与after的区别它们的用法,before和after属于什么词,before和after怎么讲,before 与after,before与after的区别它们的用法,before与after的区别它们的用法,before与after的区别它们的用法,内容如对您有帮助,希望把文章链接给更多的朋友!

本文从最简单的开始,解释如何理解和使用::before和::after。然后再在实际使用场景中去应用它。

 

::before和::after可以添加到选择器以创建伪元素的关键字。伪元素被插入到与选择器匹配的元素内容之前或之后。

content属性

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

2)::before和::after必须配合content属性来使用,content用来定义插入的内容,content必须有值,至少是空

3)这些添加不会出现在DOM中,不会改变文档内容,不可复制,仅仅是在css渲染层加入。所以不要用:before或:after展示有实际意义的内容,尽量使用它们显示修饰性内容

content可取以下值:

string

使用引号包一段字符串,将会向元素内容中添加字符串

p::before{ content: "《"; color: #000000;}p::after{ content: "》"; color:#000000;}<p>JavaScript高级程序设计</p>attr()

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

a::after { content: ' → ' attr(href); /* 在 href 前显示一个箭头 */} <a href="https://www.baidu.com/">百度地址</a>

a::after{ content: "【" attr(href) "】";}<a href="https://www.baidu.com/">百度地址</a>url()/uri()

用于引用媒体文件。比如:“百度”前面给出一张图片,后面给出href属性。 

a::before{ content: url("img/baidu_jgylogo3.gif");}a::after{ content:"("attr(href)")";}<a href="https://www.baidu.com/">百度地址</a>

注意

1)URL不能使用引号。如果你将URL用引号括起来,那么它会变成一个字符串和插入文本“url(image.jpg)”作为其内容,插入的而不是图像本身。

2)content属性,直接使用图片,即使写width,height也无法改变图片大小;

解决方案:如果要解决这个问题,可以把content:''写成空,使用background:url()来添加图片

/*伪元素添加图片:*/.wrap:after{ /*内容置为空*/ content:""; /*设置背景图,并拉伸*/ background:url("img/06.png") no-repeat center; /*必须设置此伪元素display*/ display:inline-block; /*必须设置此伪元素大小(不会被图片撑开)*/ background-size:100%; width:100px; height:100px;}

3)苹果端伪元素不生效,img、input和其他的单标签是没有:after和:before伪元素的(在部分浏览器中没有,如:苹果端会发现无效),因为单标签本身不能有子元素。

解决方案:给img包一个div可以解决

4)想要动态改变伪元素的图片,可以给当前元素添加伪元素图片的基础样式,再动态class来写伪元素的图片。

::before和::after的应用配合quotes 属性使用

 加括号

h1{ quotes:"(" ")"; /*利用元素的quotes属性指定文字符号*/}h1::before{ content:open-quote;}h1::after{ content:close-quote;}<h1>给标题加括号</h1>::before和::after是什么?(before跟after区别)

加引号

h2{ quotes:"\"" "\""; /*添加双引号要转义*/}h2::before{ content:open-quote;}h2::after{ content:close-quote;}<h2>给标题加引号</h2>

不指定,默认

h3::before{ content:open-quote;}h3::after{ content:close-quote;}<h3>不设置quotes</h3>装饰标题

h1 { display: grid; grid-template-columns: minmax(50px, 1fr) auto minmax(50px, 1fr); align-items: center; text-align: center; gap: 40px;}h1::before, h1::after { content: ''; border-top: 6px double;}<h1>标题</h1>

布局是通过将<h1>元素变成 3 列来实现的。左列和右列是双线,宽度均为minmax(50px, 1fr),这意味着它们的匹配宽度始终不小于50px。标题文本整齐地居中居中。

彩带标题

h1 { position: relative; margin: 0 auto 20px; padding: 10px 40px; text-align: center; background-color: #875e46;}h1::before, h1::after { content: ''; width: 80px; height: 100%; background-color: #724b34; /* 定位彩带两端形状的位置,并且放在最底层 */ position: absolute; z-index: -1; top: 20px; /* 彩带两端的形状 */ clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 25% 50%); /* 绘制并定位彩带的阴影三角形 */ background-image: linear-gradient(45deg, transparent 50%, #5d3922 50%); background-size: 20px 20px; background-repeat: no-repeat; background-position: bottom right;}h1::before { left: -60px;}h1::after { right: -60px; transform: scaleX(-1); /* 水平翻转 */}--------------------------- <h1>标题</h1>实现更逼真的阴影

.box{margin:10px;width:300px;height:100px;border-radius:10px;background:#ccc}.shadow{position:relative;max-width:270px;box-shadow:0 1px 4px rgba(0,0,0,.3),0 0 20px rgba(0,0,0,.1) inset}.shadow::after,.shadow::before{position:absolute;z-index:-1;content:""}.shadow::after,.shadow::before{position:absolute;bottom:15px;left:10px;z-index:-1;width:50%;height:20%;content:""}.shadow::after,.shadow::before{position:absolute;bottom:15px;left:10px;z-index:-1;width:50%;height:20%;box-shadow:0 15px 10px rgba(0,0,0,.7);content:"";transform:rotate(-3deg)}.shadow::after{right:10px;left:auto;transform:rotate(3deg)}<div class="box shadow"></div>替换内容

有些情况下content可以不使用::before或::after。如果content设置为单个图像,那么你可以直接在元素上使用它来替换该元素的 HTML 内容。

如页面上分别有以下三个内容:

加了replace类之后

.replace { content: url(img/replace.png);}

1)具有简单文本的元素。它会被取代。 2)一个包含<img>在其中的元素。它也会被取代。 3)<img>直接一个元素。Firefox不会取代它,但其他浏览器会。

清除浮动

方式一:

.classic-clearfix::after { content: ''; display: block; clear: both;}

方式二:

.modern-clearfix { display: flow-root;}

模拟float:center的效果

float没有center这个取值,但是可以通过伪类来模拟实现。

原理:左右通过::before float各自留出一半图片的位置,再把图片绝对定位上去。

body { font: 14px/1.8 Georgia, serif;}#page-wrap { width: 60%; margin: 40px auto; position: relative; }#logo { position: absolute; top: 0; left: 50%; margin-left: -125px; }#l, #r { width: 49%; }#l { float: left; }#r { float: right; }#l:before, #r:before { content: ""; width: 125px; height: 250px; }#l:before { float: right; }#r:before { float: left; }<div id="page-wrap"> <img src="img/cat.jpg" id="logo"> <div id="l"> <p> Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus </p> </div> <div id="r"> <p> Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus </p> </div></div>

引用参考:

W3C官方文档

Diving into the ::before and ::after Pseudo-Elements

Faking ‘float: center’ with Pseudo Elements

小可爱看完就点个赞再走吧!🤞🤞🤞

本文链接地址:https://www.jiuchutong.com/zhishi/299618.html 转载请保留说明!

上一篇:一个简单的网页设计HTML5作业(如何用html编写一个简单的网页)

下一篇:富文本编辑器介绍(富文本编辑器使用)

  • 2017年最新互联网十大免费推广方式,现在知道不算晚!(17互联网)

    2017年最新互联网十大免费推广方式,现在知道不算晚!(17互联网)

  • 华为p40的来电闪光灯如何设置(华为p40的来电闪光灯怎么设置)

    华为p40的来电闪光灯如何设置(华为p40的来电闪光灯怎么设置)

  • 注销了淘宝有啥后果(淘宝注销以后)

    注销了淘宝有啥后果(淘宝注销以后)

  • 淘宝发货无效联系人是什么意思(淘宝商家发货显示发货失败无效联系人)

    淘宝发货无效联系人是什么意思(淘宝商家发货显示发货失败无效联系人)

  • 抖音怎么关闭水印设置(抖音怎么关闭水印怎么关闭视频水印)

    抖音怎么关闭水印设置(抖音怎么关闭水印怎么关闭视频水印)

  • 荣耀play4tpro是玻璃机身吗(荣耀play4tpro用的什么屏幕)

    荣耀play4tpro是玻璃机身吗(荣耀play4tpro用的什么屏幕)

  • med-tl00是什么型号(mem_tl00)

    med-tl00是什么型号(mem_tl00)

  • iphone11屏幕是哪个厂商的(苹果11屏幕是哪里的)

    iphone11屏幕是哪个厂商的(苹果11屏幕是哪里的)

  • 电话拉黑名单了还可以发信息吗(电话拉黑名单了信息对方能收到吗)

    电话拉黑名单了还可以发信息吗(电话拉黑名单了信息对方能收到吗)

  • 苹果x漏液只能换屏幕吗(iphone x漏液还能用多久)

    苹果x漏液只能换屏幕吗(iphone x漏液还能用多久)

  • 相序错误是什么意思(相序错乱是怎么回事)

    相序错误是什么意思(相序错乱是怎么回事)

  • ask al00x是什么型号(型号ask-al00x是什么手机)

    ask al00x是什么型号(型号ask-al00x是什么手机)

  • 微信启动慢是啥原因(微信启动慢是怎么回事)

    微信启动慢是啥原因(微信启动慢是怎么回事)

  • ipadair3怎么连接u盘(ipadair3怎么连接一代手写笔)

    ipadair3怎么连接u盘(ipadair3怎么连接一代手写笔)

  • Windows 10uwp应用是什么意思(win10使用app)

    Windows 10uwp应用是什么意思(win10使用app)

  • 淘宝注销后可以用原来的手机号重新注册吗(淘宝注销后可以改会员名吗)

    淘宝注销后可以用原来的手机号重新注册吗(淘宝注销后可以改会员名吗)

  • ios13.3能降级吗(ios13能降级到10吗)

    ios13.3能降级吗(ios13能降级到10吗)

  • 腾讯会员微信能2人用吗(腾讯会员微信能登几个号)

    腾讯会员微信能2人用吗(腾讯会员微信能登几个号)

  • 微信自启动要不要打开(微信自启动应该关闭吗)

    微信自启动要不要打开(微信自启动应该关闭吗)

  • 哔哩哔哩直播回放在哪(哔哩哔哩直播回看怎么看)

    哔哩哔哩直播回放在哪(哔哩哔哩直播回看怎么看)

  • 怎么开淘宝网店(自己怎么开淘宝网店)

    怎么开淘宝网店(自己怎么开淘宝网店)

  • 魅族16屏幕辣眼睛吗(魅族16s屏幕刺眼)

    魅族16屏幕辣眼睛吗(魅族16s屏幕刺眼)

  • nova4与nova5的区别(nova4和nova5z)

    nova4与nova5的区别(nova4和nova5z)

  • qq怎样获得内测资格(怎样获得qq内测版)

    qq怎样获得内测资格(怎样获得qq内测版)

  • 苹果手机最下面一栏怎么设置透明(苹果手机最下面一行触摸失灵)

    苹果手机最下面一栏怎么设置透明(苹果手机最下面一行触摸失灵)

  • 企业办税权限怎么授权给个人
  • 预付账款可以开发票吗
  • 偶然所得代扣代缴义务人
  • 工商股权转让费用怎么算
  • 小微企业增值税减免政策
  • 什么是非限制
  • 向个人账户汇款选项
  • 如何核销财政票据的发票
  • 清理往来账管理办法
  • 会计凭证 借贷
  • 去年已认证发票红冲怎么报税
  • 车辆购置税多少?
  • 分公司亏损总公司账务处理
  • 收到合同款
  • 理财产品收益交税
  • 应税销售额是指
  • 投资收益率中投资总额包括哪些
  • 一般纳税人注销公司流程2023
  • 汉字防伪企业是哪家
  • 单位参加城镇职工基本养老保险基数怎么填
  • 研发费用没做账怎么调账
  • 分公司注销时有未分配利润需要交税吗
  • 利润分配需要缴纳企业所得税吗
  • 我的初级备考经验------极限挑战,超越自我
  • 不得免征和抵扣的税额
  • 坏账准备什么时候转回
  • ai自动生成代码
  • 成本票要交税吗
  • Linux中samba服务区怎么创建多个用户
  • c盘垃圾太多需要重装系统嘛
  • kb4507449安装失败
  • 小规模纳税人结转免交增值税
  • 逾期未申报如何申报
  • 记账凭证的总账科目是什么
  • php顺序查找和二分查找
  • 控制层框架
  • 货款退回账务处理方法
  • php正则表达式验证用户名
  • 已提足折旧固定资产改建支出 所得税怎么计算
  • d3.js下载
  • vue系列教程
  • 20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用
  • promise基本使用
  • 减资资产负债表怎么填
  • pythonjson文件存储
  • 存货报废如何处理方案
  • 购入的机器设备
  • 上年科目记错如何更正
  • 金税盘登录密码和口令从哪查
  • 差旅费 包括
  • 出纳开的收据找不到了怎么办
  • 白酒消费税计税价格由谁核定
  • sql server获取字段长度
  • 上月的普票下月可以记账么
  • 工程预付款如何缴税
  • 暂估费用科目
  • 未交税金免抵退多少税
  • 税控盘全额抵扣怎么做分录
  • 主营业务收入减少记哪方
  • 开业前的装修费怎么做账
  • mysql8.0存储过程
  • win8系统如何查看电脑型号
  • windows 10 build 9888
  • ubuntu 18.04网络连接
  • macbook pro怎么分区
  • winxp家庭版和专业版的区别
  • mac迅雷不限速
  • win10如何移动应用程序
  • 在linux系统中有一个重要的概念
  • win10系统怎么设置开机密码
  • GLWallpaperService分析一
  • jquery实现密码和确认密码
  • 对js关键字命名的优点
  • css控制html
  • Node.js中的全局对象有
  • 静态文件格式有哪些
  • 浅析Python中MySQLdb的事务处理功能
  • bootstrap轮播效果
  • 酒席发票
  • acfunp
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设