已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > HTML/CSS/JS > 讨论/求助

标题: 关于一个css的问题:子元素是浮动的,父元素高度不能撑开

作者: @Ta

时间: 2017-11-16

点击: 7381

子元素是浮动的,父元素高度不能撑开。

但若给父元素加上overflow: hidden;便可以?

why?
哪位大佬来解释一下?/xk

[隐藏样式|查看源码]


『回复列表(12|隐藏机器人聊天)』

1. 子元素浮动后就脱离标准文档流了,是肯定撑不开父元素的。
(/@Ta/2017-11-16 22:36//)

2. 我看标签都几个月了还没记住,CSS估计就更看不懂了
(/@Ta/2017-11-17 00:54//)

3. 我只知道overflow:hidden是用来清除浮动溢出的。还有你问之前为啥不试试看
(/@Ta/2017-11-17 01:02//)

4. @灰色头像,已经解决了才发的帖子,想来讨论讨论。。。。加上overflow: hidden;父元素便被撑开。
(/@Ta/2017-11-17 09:32//)

5. @东城,加上overflow: hidden;父元素便被撑开。。。。。

@MFVPNHAHA,加油
(/@Ta/2017-11-17 09:32//)

6.

@无道, overflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是很了解。一提到清除浮动,我们就会想到另外一个CSS样式:clear:both,我相信对于这个属性的理解大家都不成问题的。但是对于“浮动”这个词到底包含什么样的含义呢?我们下面来详细的阐述一下。

这是一个常用的div写法,下面我们来书写样式。大家可以在DMX中自己做试验

box{

      width:500px; 

      background:#000; 

      height:500px;

}

content {

      float:left; 

      width:600px; 

      height:600px; 

      background:red;

}

  给box这个div加了一个overflow:hidden这个属性解决了这个问题。我们直到overflow:hidden这个属性的作用是隐藏溢出,给box加上这个属性后,我们的content 的宽高自动的被隐藏掉了。另外,我们再做一个试验,将box这个div的高度值删除后,我们发现,box的高度自动的被content 这个div的高度值给撑开了。说到这里,我们再来理解一下“浮动”这个词的含义。我们原先的理解是,在一个平面上的浮动,但是通过这个试验,我们发现,这不仅仅是一个平面上的浮动,而是一个立体的浮动!也就是说,当content 这个div加上浮动这个属性的时候,在显示器的侧面,它已经脱离了box这个div,也就是说,此时的content 的宽高是多少,对于已经脱离了的box来说,都是不起作用的。当我们全面的理解了浮动这个词的含义的时候,我们就理解overflow:hidden这个属性中的解释,清除浮动是什么意思了。也就是说,当我们给box这个div加上overflow:hidden这个属性的时候,其中的content 等等带浮动属性的div的在这个立体的浮动已经被清除了。这就是overflow:hidden这个属性清除浮动的准确含义。当我们没有给box这个div设置高度的时候,content 这个div的高度,就会撑开box这个div,而在另一个方面,我们要注意到的是,当我们给box这个div加上一个高度值,那么无论content 这个div的高度是多少,box这个高度都是我们设定的值。而当content 的高度超过box的高度的时候,超出的部分就会被隐藏。这就是隐藏溢出的含义!

我是一条只会说6666666666666666666的咸鱼
召唤大佬前来顶贴@梦浪的小虾米

(/@Ta/2017-11-17 09:41//)

7.

mark

@梦浪的小虾米,您收藏了这个帖子

(/@Ta/2017-11-17 13:45//)

8. @梦浪的小虾米,大佬666
(/@Ta/2017-11-17 21:31//)

9. @无道,你才是大佬,我以前还是看你的代码长大的
(/@Ta/2017-11-17 21:42//)

10. @梦浪的小虾米,以前我只是看真的大佬的代码,然后加以加工做成源码的。

现在才在系统的学习。。。。。。。
(/@Ta/2017-11-18 11:46//)

11. @无道,我之前常用的一个方法

.clearFloat::after{
    display: block;
    content: '';
    clear: both;
}

喜欢用sass 这样写起来更好看,不用独立写出来

.clearFloat{
    ...code

    &::after{
       display: block;
       content: '';
       clear: both;
    }
}
(/@Ta/2017-11-18 15:00//)

12.

也许你可以对子元素改用display: inline-block,然后就可以左对齐右对齐了,不再需要float

(/@Ta/2018-03-11 20:40//)

回复需要登录

9月17日 12:19 星期三

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1