上面这段代码中 类 main 的 height 始终是 20px 如何改动才能是类 main 的 height 的属性值为 20px??
如何让 height 的属性值为所有元素的和???类 main 的 height 始终是 20px 如何改动才能是类 main 的 height 的属性值为 20px??没太明白。
原来大家没听明白呀!!我的意思是
在这里我明明用 div.content 吧 div.list-face 和 div.list-holder 包含起来,为什么 div.content 的高度是 0px 应该为 div.list-holder 的高度,也就是 295px。我在这里很不明白。
css 经典问题呀。布局浮动。
如果有这样一个场景
.content { width: 960px; margin: 0 auto }
.sidebar { float: left; width: 200px }
.main { float: left; width: 760px }
<div class="content">
<div class="sidebar">
something
</div>
<div class="main">
something...
</div>
</div>
甚至这样,content 也不会随着 main 的增高而增高。简单来说父级里的子级只要有浮动,父级的高度就不会收到子级的影响。所以清除浮动吧。
.content { width: 960px; margin: 0 auto }
.main { float: left }
<div class="content">
<div class="main">
something...
</div>
</div>
https://github.com/twitter/bootstrap/blob/master/docs/assets/css/bootstrap.css#L97
<div class="parent">
<div class="children">
xxx
</div>
</div>
子标签.children 如果 float 这个属性,就会影响父标签.parent 的高度,一般解决办法有几种:
一:
.parent{ height:auto; overflow:hidden }
这样最简单,但会有一个问题,如果.parent 下有一个子标签有 position 属性且需要定位到.parent 容器外层,就会出现被遮住的情况
二:
.parent { display: block; }
.parent::after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
这种方法在 IE 下可能不兼容
三:通杀且最恶心
<div class="parent">
<div class="children">
xxx
</div>
<div style=" clear:both; height:0px; overflow:hidden;"></div>
</div>
这个不会影响子标签的 position 效果,IE 兼容