为什么position的值会影响after元素的显示?

新手上路,请多包涵

有一段代码,结果是要显示一行文字和一条下划线,如下所示

clipboard.png

代码如下

<head>  
<style type="text/css">  
    .header {
  padding: 14px 15px 10px;
  color: #999999;
  font-size: 13px;
  position: relative;

}
.header:after {
  content: " ";
  position: absolute;
  left: 0;
  bottom: 0;
  right: 0;
  height: 1px;
  border-bottom: 1px solid #E5E5E5;
  color: #E5E5E5;
  left: 15px;
}

</style>  
<body>
    <div class="header">列表</div>
</body>

我对.header和.header:after中的position属性的作用不理解
1、如果把.header的position去掉,则下划线不显示
2、如果把.header的position换成absolute,则下划线显示一小部分
3、如果把.header:after中的position去掉或换成relative,下划线不显示
请问以上效果的原因是什么?

阅读 2.9k
2 个回答
  1. .header的position,下划线的定位基准就是body了,其实不是不显示,而是显示到底部去了
  2. 把.header的position换成absolute,.header变为内容的宽+padding的宽,下划线就是他们的宽度
  3. 把.header:after中的position去掉,那么就是文本块了,设置的top,left,height都不起作用了,就是一个空白

after伪类相当于一个inline元素,宽度根据内容拉伸,content里面没有内容,所以他的宽度为0,下划线不显示;设置position为absolute时,因为设置了left: 0; right: 0; 它会拉伸到和父级元素同等的宽度。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题