当子级元素浮动时让父级元素高度自适应的三种方法(以及多个子集元素同时存在浮动和绝对定位时的问题的解决办法)
2017-07-29 17:26
801 查看
例如:
效果:
这就是我们经常遇到的问题了,即子级元素浮动的时候父级元素的高度就塌方了……,不过淡定,我们首先就可以想到为父级元素设置高度这种方法来解决的嘛,不过,我们要自适应!自适应!自适应!不要强迫让父级元素站起来,那么,这个时候我们有如下三种方法让父级元素自觉地站起来为子级元素撑起一片天空。
方法一:
这个方法比较常用,即为父级元素添加:
这样就好了,就好了。
虽然这个方法可以解决高度自适应的问题,但是,如果这个时候该父级元素下面同时存在某个子集元素用的绝对定位,而且还定位到这个父级元素的范围外去了,就尴尬了,因为那个绝对定位的子元素(第一部分)找死也找不到了,哎,都是overflow: hidden; 害的,被隐藏了。
就是这样子:
这个问题我还是常遇到,不知道你是不是也这有过这样的经历。不过,总有解决的办法嘛。
方法二:
将上面代码中父级元素的 overflow: hidden; 改为:
(right也可)
看吧:
就可以了。这样,父级元素的自适应问题解决了,子级元素的绝对定位问题也解决了。当然,由于父级元素使用浮动而导致的其父父级元素如果出现什么问题了,就需要大家根据实际情况灵活解决了。
这样看来,上面两种方法还是都有缺陷嘛,难道就没有一种能够比较美丽(真的要美丽啊)地解决这个问题的方法吗?有的,有的,我们继续:
方法三:
我们既不为父级元素设置 overflow: hidden; 也不设置 float: left;。我们为父级元素添加如下CSS:
然后,“刷新”一点,哈哈,效果就出来了(同上),其中,display设置为 block或者inline-block都可。而且这方法也很是比较美丽的,然后,就喜欢上它了,哈哈。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> div { width: 200px; } #parent { border: 1px solid red; } #child { float: left; } </style> </head> <body> <div id="parent"> <div id="child"> 我是child </div> </div> </body> </html>
效果:
这就是我们经常遇到的问题了,即子级元素浮动的时候父级元素的高度就塌方了……,不过淡定,我们首先就可以想到为父级元素设置高度这种方法来解决的嘛,不过,我们要自适应!自适应!自适应!不要强迫让父级元素站起来,那么,这个时候我们有如下三种方法让父级元素自觉地站起来为子级元素撑起一片天空。
方法一:
这个方法比较常用,即为父级元素添加:
overflow: hidden;
这样就好了,就好了。
虽然这个方法可以解决高度自适应的问题,但是,如果这个时候该父级元素下面同时存在某个子集元素用的绝对定位,而且还定位到这个父级元素的范围外去了,就尴尬了,因为那个绝对定位的子元素(第一部分)找死也找不到了,哎,都是overflow: hidden; 害的,被隐藏了。
就是这样子:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> div { width: 100px; } #parent { position: relative; overflow: hidden; margin-left: 100px; border: 1px solid red; text-align: right; } #child { float: left; } #child2 { position: absolute; left: -80px; background-color: #0088CC; } </style> </head> <body> <div id="parent"> <div id="child"> 我是child </div> <div id="child2"> 我是child2 </div> </div> </body> </html>
这个问题我还是常遇到,不知道你是不是也这有过这样的经历。不过,总有解决的办法嘛。
方法二:
将上面代码中父级元素的 overflow: hidden; 改为:
float: left;
(right也可)
看吧:
就可以了。这样,父级元素的自适应问题解决了,子级元素的绝对定位问题也解决了。当然,由于父级元素使用浮动而导致的其父父级元素如果出现什么问题了,就需要大家根据实际情况灵活解决了。
这样看来,上面两种方法还是都有缺陷嘛,难道就没有一种能够比较美丽(真的要美丽啊)地解决这个问题的方法吗?有的,有的,我们继续:
方法三:
我们既不为父级元素设置 overflow: hidden; 也不设置 float: left;。我们为父级元素添加如下CSS:
#parent::after { content: ""; display: block; clear: both; }
然后,“刷新”一点,哈哈,效果就出来了(同上),其中,display设置为 block或者inline-block都可。而且这方法也很是比较美丽的,然后,就喜欢上它了,哈哈。
相关文章推荐
- 清除浮动-解决父级元素高度不能适应子级元素高度的问题
- <转载>如何解决子级用float浮动父级div高度不能自适应的问题
- <转载>如何解决子级用float浮动父级div高度不能自适应的问题
- 三种方法解决浮动元素父容器高度自适应问题
- <转载>如何解决子级用float浮动父级div高度不能自适应的问题
- 三种方法解决浮动元素父容器高度自适应问题
- 子元素浮动父容器高度不能自适应的CSS解决方法
- 解决 IE6 不支持绝对定位 fixed 以及IE6下被绝对定位的元素在滚动的时候会闪动的问题
- 利用overflow属性解决子元素float浮动后父级元素高度无法自适应的问题
- 子元素浮动父容器高度不能自适应的CSS解决方法
- 子元素浮动父容器高度不能自适应的CSS解决方法
- IE7浏览器绝对定位被下边元素遮挡问题解决办法
- 百度“搜索设置”之关于在页面定位某元素,而其中又参杂动态页面存在的问题解决方法
- 解决子级用css float浮动,而父级div不能自适应高度问题
- 子元素浮动父容器高度不能自适应的CSS解决方法
- 解决子级对象使用css float浮动 而父级div不能自适应高度,不能被父级内容撑开解决方法,父级div没有高度解决方法
- 闭合浮动,元素浮动或绝对定位后失去文档流的友好解决办法
- 子元素浮动父容器高度不能自适应的CSS解决方法
- 子元素浮动父容器高度不能自适应的CSS解决方法