伪元素技巧
在 CSS 伪元素基本用法一文中讲述了伪元素的基础功能,本章学习一些进阶功能,看看伪元素能实现哪些方便好用的功能。
清除浮动
如果一个元素内部的子元素全部都是浮动的话,那么这个元素会出现高度塌陷,这个时候就需要清除浮动。高度塌陷的负面作用主要有:不能正确显示背景,边框不能撑开,margin 和 padding 不能正确显示。
假设有代码如下:
html:
1 | <div class="outer"> |
css:
1 | .outer { |
使用伪元素清除浮动的办法:
1 | .outer { |
其它清除浮动的办法:
(1)给父元素设置高度。
(2)clear: both 清除浮动。
常见的用法是在父元素结束之前,统一引入一个元素 clear: both 用来清除浮动。
html:
1 | <div class="outer"> |
css:
1 | .clear { |
这种方法实现起来很简单,不过缺点也很明显,引入了额外的 DOM 元素。
clear 属性可以对应的属性值有:
- left 在左侧不允许浮动元素。
- right 在右侧不允许浮动元素。
- both 在左右两侧均不允许浮动元素。
- none 默认值。允许浮动元素出现在两侧。
- inherit 规定应该从父元素继承 clear 属性的值。
(3)给父级元素定义 overflow: auto 或者 overflow: hidden
1 | .outer { |
使用 overflow 属性来清除浮动只可以使用 hiddent 和 auto 不能使用 visible。 为了兼容 IE 最好用 overflow:hidden,缺点是元素会被截断。
总结清除浮动最佳方案
1 | // 全浏览器通用的 clearfix 方案 |
扩大可点击范围
这点在移动端开发显得尤为重要,可以增强用户体验。
html:
1 | <button class="btn">click</button> |
css:
1 | .btn { |
还有一种不使用伪元素扩大可点击范围的方式是使用 border + background-clip
1 | .btn { |
实现分割线效果
我是分割线
实现方式
html:
1 | <p class="divide">我是分割线</p> |
css:
1 | .divide { |
调用元素属性
通过在 content 中使用 attr 函数可以调用元素的属性。
1 | a:after { |
引用媒体资源
1 | a:before { |
计数器 counter
- counter-reset:创建或者重置一个计数器
- counter-increment:计数器递增
- content:配合伪元素插入内容
html:
1 | <ol class="sites"> |
css:
1 | .sites { |
自制 checked 样式
- Apple
- Amazon
html:
1 | <ol id="sites"> |
css
1 | li { |
最后
在网上还有很多关于伪元素的用法,非常有趣,既能减少 DOM 元素数量,还能用 CSS 实现一部分 JS 的功能,非常酷炫,后面见到有趣的用法会不断记录。