一个关于after伪元素的错误使用

初学前端,对于前端的理解不是很深,往往会犯很多错误,其实更多的错误反而更容易加深理解

图1如下

图1

出现了图2的情况

图2

看到这种情况应该属于清除浮动失败引起的。

然后我尝试着将代码中点红色部分注释,用了最常用的几个清除浮动的办法,比如给div加深样式clear:both或者overflow:hidden等方法都能够去除浮动,唯独代码中给ul加:after清除浮动的办法不行。

然后开始排查是不是:after使用失败的原因,但是好像不是这个原因,所以我就查找了资料发现了一个原因,那就是我对:after层级问题理解错误了。我将:after属于的DOM层理解与ul平级的DOM层了,所以这也是我错误的真正原因。其实伪元素作为DOM层,是在容器内进行渲染的,而非在容器外。

作为DOM元素,伪元素都是在容器内进行渲染的

解决办法(1)是给ul加了一个父类div,然后该父类设置class为cl,这样就能将:after伪元素在容器内渲染了,从而清除浮动。


图3

方法二是将ul的float属性去除。

最后显示正常为图4

图4

关于:after使用的几点:

(1):after这个伪元素属于行内元素,不过可以使用属性 display 改变这一点。

(2)所有主流浏览器都支持 :after 伪元素,但对于IE来说,只有IE8以上版本支持。

代码:图5

图5

效果


这样可以证明了:after伪元素属于行内元素,并且是在h1容器内部进行渲染的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,171评论 1 92
  • <a name='html'>HTML</a> Doctype作用?标准模式与兼容模式各有什么区别? (1)、<...
    clark124阅读 3,844评论 1 19
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,367评论 0 1
  • 简介浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工 作原理,我们将看到,从你在地址栏输入google.c...
    听风阁阅读 3,398评论 0 7
  • 网上有很这方面的解决方案,我要分享的是相对简单实用的一种方案,适合救急可直接放入项目中使用,希望能帮助到您,只需要...
    Scorpio_青牙阅读 1,213评论 0 11

友情链接更多精彩内容