CSS 巧用 before after 伪类

我们知道 ::before::after 是 CSS 中的伪类,它们基本功能是在 CSS 渲染中向元素的内容前面和后面插入内容。虽然在实际 HTML 中我们没有增加任何标签,并且会在浏览器中展现出来。

他们在实际的开发过程中我们使用的比较少,但是它的确有很巧妙的地方值得我们来开发:

动态在元素中添加字符串

  • 场景:当需要在列表、或者多处相同样式中增加一个不变的字符串时,我们可以使用它;
  • 例如:产品列表,价格的展示前面都加上 ¥
  • 建议:注意场景,少使用;
  • 代码:
.price::before {
    content: "¥"
}

不改变元素尺寸的边框

  • 场景:在宽度为百分比的元素中,为此元素增加边框,此时会导致元素超过原有的百分比;
  • 例如:导航条宽度为文档的 100% ,刚好撑满文档,但是需要在周围增加 1px 的边框,导致导航条宽度超过了浏览器宽度;
  • 建议:中等程度使用,有替代方案;
  • 代码:
.meun {
    width: 100%;
    height: 80px;
    position: relative;
}
.menu::before {
    content: ""
    position: absolute;
    left: 0;
    border-left: 1px solid #ccc;
}
.menu::after {
    content: ""
    position: absolute;
    left: 0;
    border-right: 1px solid #ccc;
}

0.5px 细边框

参考:如何制作 0.5 像素的细线

简单几何图形

  • 场景:很多简单的几何图形,我们可以通过它们只需要用一个样式就可以解决问题;
  • 例如:带尖角的气泡对话框、筛选组件的下拉箭头;
  • 建议:强烈推荐;
  • 代码:
.select::after {
    content: "";
    position: absolute;
    top: 50%;
    margin-top: -7px;
    right: 10px;
    display: inline-block;   
    border-left: 1px solid #000; 
    border-bottom: 1px solid #000;  
    width: 14px; 
    height: 14px;  
    transform: rotate(-45deg);  
}

清除浮动

  • 场景:当一个元素在众多设置了浮动样式float: left的后面,但是又要另起一行时;
  • 建议:强烈推荐;
  • 代码:
.container::before {
    content: "";
    display: table;
} 

.container::after {
    clear: both;
}

总结

利用 ::before ::after 伪类,动态的在元素开始和末尾增加标签这一特性,我们可以做出很多丰富的样式而且又减少了 DOM 的复杂度,当然它还有更多更丰富的用法等待着我们来挖掘。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,854评论 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,881评论 1 45
  • CSS 是什么 css(Cascading Style Sheets),层叠样式表,选择器{属性:值;属性:值}h...
    崔敏嫣阅读 1,517评论 0 5
  • 1.CSS基本概念 1.1 CSS的定义 CSS(Cascading Style Sheets)层叠样式表,主要用...
    寥寥十一阅读 1,902评论 0 6
  • 想必很多亲们和我一样,也是这个大城市的小小一员,每天上班下班,在这个陌生的城市穿梭在出租房和公司两个地方。每个月那...
    一路上有你真好阅读 760评论 0 0