HTML中 :after和:before的作用及使用方法(转)

本文介绍CSS中:before和:after伪元素的多种实用技巧,包括添加内容、清除浮动、创建图标及对话框等。

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

1.  :before 和 :after 的主要作用是在元素内容前后加上指定内容,示例:

HTML代码:

<p>你好</p>

CSS代码:

复制代码
p:before{
   content: 'Hello';
   color: red;
}
p:after{
    content: 'Tom';
    color: red;
}
复制代码

效果如图:

以上代码是:before和:after的基本用法,但是这两种伪类还有很多更方便的用法。

2. :after清除浮动

   元素设置浮动以后,其父元素以及父元素的兄弟元素的布局都会受到影响,如父元素的背景边框不能正常显示,父元素的兄弟元素位置布局错误等,

   为了避免这种浮动带来的影响必须要清除浮动,:after就是其中的一种方法。

   CSS代码:

复制代码
ul:after{
    content: '';
    display: block;
    width: 0;
    height: 0;
    clear: both;
}
复制代码

3. :before和:after 用来写小三角形

  在日常的工作中会经常遇到小三角形这样的小图标,可以用添加图片的方式实现,但是更方便的是用:after  :before伪类来实现。

  HTML代码:

<div class="demo">这是一个测试</div>

CSS代码:

复制代码
.demo:after{
    content: '';
    display: inline-block;
    width: 0;
    height: 0;
    border: 8px solid transparent;
    border-left: 8px solid #AFABAB;
    position: relative;
    top: 2px;
    left: 10px;
}
复制代码

 效果如图所示:

这样就可以在文字后面添加一个小三角形啦,是不是很方便

 4. 用:after和:before 写一个对话框

     HTML代码:

<div class="left">
  <p>吃了吗</p>
</div>
<div class="right">
  <p>吃过了,吃了红烧排骨和酸菜鱼</p>
</div>

    CSS代码:

复制代码
.left,.right{
    min-height: 40px;
    position: relative;
    display: table;
    text-align: center;
    border-radius: 7px;
    background-color: #9EEA6A;
}
.right{      /*使左右的对话框分开*/
    top: 40px;
    left: 60px;
}
.left > p,.right > p{    /*使内容居中*/
    display: table-cell;
    vertical-align: middle;
    padding: 0 10px;
}
.left:before,.right:after{   /*用伪类写出小三角形*/
    content: '';
    display: block;
    width: 0;
    height: 0;
    border: 8px solid transparent;
    position: absolute;
    top: 11px;
}
/*分别给左右两边的小三角形定位*/
.left:before{    
    border-right: 8px solid #9EEA6A;
    left: -16px;
}
.right:after{    
    border-left: 8px solid #9EEA6A;
    right: -16px;
}
复制代码

    效果如图所示

    

    上面的对话框是模仿微信的样式写的,用:before和:after写很方便哦

5.  下面写一个带边框的对话框,一个对话会同时用到:before和:after

     HTML代码不变

     CSS代码:

复制代码
.left,.right{
    min-height: 40px;
    position: relative;
    display: table;
    text-align: center;
    border-radius: 7px;
    background-color: #9EEA6A;
    border: 1px solid #736262;
}
.right{      /*使左右的对话框分开*/
    top: 40px;
    left: 60px;
}
.left > p,.right > p{    /*使内容居中*/
    display: table-cell;
    vertical-align: middle;
    padding: 0 10px;
}
.left:before,.right:after,.left:after,.right:before{   /*用伪类写出小三角形*/
    content: '';
    display: block;
    width: 0;
    height: 0;
    border: 8px solid transparent;
    position: absolute;
    top: 11px;
}
/*分别给左右两边的小三角形定位*/
.left:before{    
    border-right: 8px solid #9EEA6A;
    left: -16px;
}
.left:after{      /*左边对话框小三角形的边框样式*/
    border-right: 8px solid #736262;
    left: -17px;
    z-index: -1;
}
.right:after{    
    border-left: 8px solid #9EEA6A;
    right: -16px;
}
.right:before{    /*右边对话框小三角形的边框样式*/
    border-left: 8px solid #736262;
    right: -17px;
    z-index: -1;
}
复制代码

    效果如图所示:

   


本文转载自https://www.cnblogs.com/lynnmn/p/6254367.html,若涉及侵权,请联系删除!

### CSS `::after` `::before` 伪元素使用方法 #### 添加装饰性内容 为了向页面中的特定元素前后添加固定的内容,可以通过定义 `content` 属性来指定要插入的具体字符串。例如: ```css p::before { content: "* "; color: red; font-size: 24px; } p::after { content: ":____________"; } ``` 此段代码会在每一个 `<p>` 标签前加上红色星号,并在标签结尾处追加下划线作为占位符[^3]。 #### 清除浮动 另一个常见的应用场景是在父容器内放置子项时解决因内部元素浮动而导致布局错乱的问题。通常做法是利用 `::after` 来注入一个额外的空格并强制其清除前面所有的浮动对象: ```css .clearfix::after { display: table; clear: both; content: ""; } ``` 这里 `.clearfix` 类名可应用于任何需要清理浮动静态定位问题的HTML结构之上[^5]。 #### 创建图形或形状 还可以借助这两个伪元素配合边框其他样式属性创造出简单的几何图案或是更复杂的视觉组件。比如下面的例子展示了如何仅用少量CSS构建三角形箭头指示器: ```css .arrow-right::after { border-left: solid transparent; border-top-width: 8px; border-bottom-width: 8px; border-right-color: black; width: 0; height: 0; position: absolute; top: 50%; margin-top: -8px; left: 100%; content: ''; } .arrow-down::after { border-top: solid transparent; border-left-width: 8px; border-right-width: 8px; border-bottom-color: black; width: 0; height: 0; position: absolute; bottom: 100%; left: 50%; margin-left: -8px; content: ''; } ``` 上述片段分别实现了右指下降方向上的黑色实心箭头效果。 #### 结合交互状态改变外观 最后值得一提的是,`::before` `::after` 可以同其他选择器组合起来增强用户体验。例如,在按钮被点击或者鼠标悬停期间更改显示的文字或图标的颜色大小等特性: ```css .sbu-btn:hover::before, .sbu-btn:focus-visible::before { transform: scale(1.2); transition-duration: .3s ease-in-out; } ``` 这段代码使得当用户将光标移至带有`.sbu-btn`类别的按钮上方或将焦点置于该按钮上时,会触发相应的动画过渡效果[^2]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值