为什么这里::before的伪盒子,不添加绝对定位就不见了呢?

为什么这里::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回答
好帮手慕久久 2023-03-01 11:15:13

同学你好,代码不全,老师按照源码给同学解释一下:

1、::before和::after的理解是对的。需要注意的是:1、二者默认是行内元素,没法设置宽高。2、默认情况下,二者是在“特定元素的前后显示”,具体显示什么内容需要通过content属性实现。3、我们可以通过其他手段让其显示成其他样子。

2、去掉定位后,由于before的content属性值是空字符串,即没有设置“显示什么内容”,所以看不到,和文档流、浮动没关。可以如下测试:

https://img1.sycdn.imooc.com//climg/63fec1bb09a152e406190241.jpg

https://img1.sycdn.imooc.com//climg/63fec1cc091d4fd604400091.jpg

3、设置定位后就可以给它们设置宽高、背景色等样式,即可以让其变相的显示成其他样子。

4、并不是所有的版心都需要设置overflow:hidden。如果去掉overflow:hidden不影响页面效果,就可以不设置。以“科室介绍”为例,该区域整体添加了高度:

https://img1.sycdn.imooc.com//climg/63fec2d1093c6dc803270108.jpg

所以即使子元素浮动了,dep-info也有高度,不会影响页面布局。因此此处的版心可以去掉overflow:hidden。

祝学习愉快!

  • 提问者 慕桂英1122475 #1

    如果这里将::before设置为 display:block,是不是也可以实现设置宽、高的目的?

    2023-03-01 11:32:09
  • 好帮手慕久久 回复 提问者 慕桂英1122475 #2

    可以。但是只设置成display:block,就没法利用left、top等属性随意的移动位置。

    2023-03-01 11:34:51
  • 提问者 慕桂英1122475 #3

    还有个问题,::before里面 content是一个必填项是么,即使不填内容也必须设置,否则不生效是么?谢谢老师解答了。

    2023-03-01 11:35:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师