html before伪类清除,CSS :before and :after 伪元素的最佳实践

本文总结了CSS伪元素:before和:after的八个实用场景,包括插入内容、图标、链接样式、面包屑导航、清除浮动、引用标记、箭头形状和标题样式。通过这些技巧,可以在不增加额外DOM节点的情况下,实现丰富的页面设计和布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里给大家总结一下,伪元素的八大最佳实践场景。希望对各位的日常开发有所启发。

场景一:插入内容

假设我们有如下的HTML代码

paragraph text

我们可以用伪元素添加内容比如:

p:before {

content: "this is ";

font-weight: bold;

font-style: italic;

}

将会出现如下效果:

AAffA0nNPuCLAAAAAElFTkSuQmCC

请记住,实际上这种做法是在内容之前或之后添加元素。它不是出现在所选元素旁边的东西,而是与其内容有关。

场景二:插入Icons图标

通过伪元素:before and :after 插入图标是非常流行的做法。因为我们可以给伪元素添加几乎任何CSS样式属性(常见的情况是:创建的伪元素是一个块并附加背景图像)

比如我们给出一段HTML代码

paragraph text

通过伪元素方式添加icon图标

p:before {

content: "";

display: block;

background: url("icon.jpg") no-repeat;

width: 20px;

height: 20px;

float: left;

margin: 0 6px 0 0;

}

在浏览器中呈现出如下效果

AAffA0nNPuCLAAAAAElFTkSuQmCC

场景三:给链接添加额外的样式

有时候,将不同风格的链接指向外部资源是一种很好的做法。通过伪元素的方式,可以很容易地实现它。假设我们有以下几段文字:

Krasimir Tsonev is developer

who likes to write and tweet.

我们可以在该链接之后添加一个小图标,指示它指向当前域外部的页面。

a {

text-decoration: none;

font-weight: bold;

color: #000;

}

a:after {

content: "";

display: inline-block;

background: url("icon-external.jpg") no-repeat top right;

width: 14px;

height: 12px;

}

呈现如下效果:

AAffA0nNPuCLAAAAAElFTkSuQmCC

场景四:面包屑导航

通常当我们做面包屑导航的时候,面包屑之间有链接和分隔符。可以通过伪元素的方式实现,而不是添加而外元素到DOM中。

Home

Team

Developers

CSS代码如下:

a {

text-decoration: none;

font-weight: bold;

color: #000;

}

a:after {

content: " /";

}

a:first-child:before {

content: " » ";

}

a:last-child:after {

content: "";

}

可以得到如下效果

AAffA0nNPuCLAAAAAElFTkSuQmCC

场景五:清除浮动

在一些不做responsible的PCweb页面,使用浮动属性进行布局仍然很受欢迎。但是,一旦一个元素浮动,你需要另一个元素来清除浮动。

例如下面的代码:

* html

Home

Products

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at purus ac lacus ultrices vehicula.

* css

a {

float: left;

display: block;

width: 100px;

... other styling

}

AAffA0nNPuCLAAAAAElFTkSuQmCC

文本应该在链接下面,而不是添加新的DOM节点。我们可以使用:在伪元素之前清除浮动:

p:before {

content: "";

display: block;

clear: both;

}

AAffA0nNPuCLAAAAAElFTkSuQmCC

场景六:引用

:before and :after 伪元素非常适合作为引用标记。

Martin Fowler said

Any fool can write code that a computer can understand.

Good programmers write code that humans can understand.

只有使用CSS才能达到以下效果:

AAffA0nNPuCLAAAAAElFTkSuQmCC

span.quoted {

font-family: Georgia;

font-size: 16px;

display: block;

margin: 14px 0 0 0;

font-style: italic;

}

span.quoted:before {

content: "“";

font-size: 40px;

color: #999;

line-height: 0;

display: inline-block;

margin: 0 6px 0 0;

}

span.quoted:after {

content: " ”";

font-size: 40px;

color: #999;

line-height: 0;

display: inline-block;

margin: 0 0 0 4px;

}

场景七:插入箭头形状

设计师给弹出窗口或者很好看的工具提示经常会添加这种箭头形状的设计。它们的实现有点麻烦。幸运的是,我们可以利用伪元素的方式解决这个问题,而不需要额外的图像或者JavaScript代码。

AAffA0nNPuCLAAAAAElFTkSuQmCC

HTML代码如下:

What is CSS?

这个页面的样式是,在左边有一个标题,并在右边弹出。我们需要在描述文本的左边添加这个小箭头,指向标题。可以用伪元素这样实现:

h2 {

float: left;

width: 170px;

}

.popup {

float: left;

width: 340px;

background: #727272;

padding: 10px;

border-radius: 6px;

color: #FFF;

position: relative;

font-size: 12px;

line-height: 20px;

}

.popup:before {

content: "";

display: block;

width: 0;

height: 0;

border-top: 12px solid transparent;

border-bottom: 12px solid transparent;

border-right: 12px solid #727272;

position: absolute;

top: 16px;

left: -12px;

}

场景八:给标题添加样式

在有一些单页网站,我们会通过标题来分割页面的组织部分。每个标题由两条线包围。就像这样:

AAffA0nNPuCLAAAAAElFTkSuQmCC

再一次,我们利用伪元素方式轻松实现:

h2 {

width: 100%;

margin: 0;

padding: 0;

text-align: center;

}

h2:after {

display: inline-block;

margin: 0 0 8px 20px;

height: 3px;

content: " ";

text-shadow: none;

background-color: #999;

width: 140px;

}

h2:before {

display: inline-block;

margin: 0 20px 8px 0;

height: 3px;

content: " ";

text-shadow: none;

background-color: #999;

width: 140px;

}

结论

使用伪元素:before and :after 最大的好处是可以在不添加新的DOM节点的情况下对HTML进行样式设置。 CSS是前端控制视觉的工具,结合伪元素,可以轻松完成很多精巧的设计,好看的样式。

延伸阅读:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值