为什么这里::before的伪盒子,不添加绝对定位就不见了呢?
问题描述:
老师好,我在mdn查了::befor、::after的用法,我理解是在特定元素(比如这里就是h4
)前后添加一个伪元素/伪盒子,用以添加比如图片等内容。正常应该出现在特定元素的前、后。
但为什么这里如果我去掉绝对定位,这个::before就不见了呢?他不是正常就应该出现在H4的前面么?h4这里没有设浮动,应该不会脱离文本流啊?
另外在版心这个盒子,为什么要设overflow:hidden?我尝试去掉好像也没有什么变化?
相关代码:
.content .dep-info {
height: 400px;
background-color: #fafafa;
}
/* 在html中补一个版心,然后居中 */
.content .dep-info .center {
width: 1200px;
margin: 0 auto;
overflow: hidden;
padding-top: 37px;
position: relative;
}
/* 查看更多用子绝父相定位 */
.content .dep-info .center .more {
position: absolute;
right: 0;
top: 37px;
color: #999999;
}
/* 可是信息列表 */
.content .dep-info .center .col{
float: left;
width: 265px;
padding-left: 35px
;
}
.content .dep-info .center .col h4{
text-align: center;
margin-bottom: 18px;
margin-top: 20px;
position: relative;/* 给before、after两个伪盒子做相对参照 */
content:'';
position: absolute;
left: 162px;
top:12px;
width: 40px;
height: 2px;
background-color: #00978e;正在回答 回答被采纳积分+1
同学你好,代码不全,老师按照源码给同学解释一下:
1、::before和::after的理解是对的。需要注意的是:1、二者默认是行内元素,没法设置宽高。2、默认情况下,二者是在“特定元素的前后显示”,具体显示什么内容需要通过content属性实现。3、我们可以通过其他手段让其显示成其他样子。
2、去掉定位后,由于before的content属性值是空字符串,即没有设置“显示什么内容”,所以看不到,和文档流、浮动没关。可以如下测试:


3、设置定位后就可以给它们设置宽高、背景色等样式,即可以让其变相的显示成其他样子。
4、并不是所有的版心都需要设置overflow:hidden。如果去掉overflow:hidden不影响页面效果,就可以不设置。以“科室介绍”为例,该区域整体添加了高度:

所以即使子元素浮动了,dep-info也有高度,不会影响页面布局。因此此处的版心可以去掉overflow:hidden。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星