让孩子在溢出之外可见:隐藏的父级
在CSS中, overflow:hidden
被设置在父容器上,以允许它随着它们的浮动子元素的高度而扩展。
但它也有另一个有趣的function,结合margin: auto
…
如果以前的兄弟姐妹是一个浮动元素,它实际上会与它并列。 这就是说,如果兄弟是float:left
那么带有float:none overflow:hidden
的容器将出现在兄弟右侧,而不是换行 – 就像在正常stream程中漂浮一样。 如果前面的兄弟是float:right
那么容器将出现在兄弟的左边。 调整此容器的大小将准确显示它在浮动元素之间居中。 说如果你有两个兄弟姐妹,一个float:left
另一个float:right
,容器将出现在两者之间的中心。
所以这是问题
如何保持这种布局而不掩盖孩子?
在网上search,让我知道如何clear:both
和扩大一个容器…但我找不到任何其他的解决scheme来维持左/右先前孩子居中。 如果你让容器overflow:visible
那么容器突然忽略浮动元素的布局stream,并出现在浮动元素的顶部。
所以问题 :
我必须有容器overflow:hidden
以保持布局…
我怎么能这样做,让孩子们不被掩盖? 我需要让孩子完全相对于容器外的父母定位。
要么
我如何overflow:visible
所以我可以绝对定位一个孩子相对于容器之外的父母…是继续保持兄弟般的浮动式布局stream?
你可以使用clearfix
来做“布局保存”,就像overflow: hidden
一样。
.clearfix:before, .clearfix:after { content: "."; display: block; height: 0; overflow: hidden; } .clearfix:after { clear: both; } .clearfix { zoom: 1; } /* IE < 8 */
添加class="clearfix"
类到父级,并删除overflow: hidden;
没有任何发布的答案为我工作。 设置的position: absolute
的子元素做了工作。
这是一个古老的问题,但我自己也遇到过。
我有半解决scheme的前一个问题的情况(“儿童可见溢出:隐藏的父母”)
如果父div不需要是position:relative,只需将children的样式设置为visible:visible。
如果父母的职位确实需要职位:亲戚,唯一可能的办法是find孩子的位置:固定。 这在我的情况下很幸运,但我想可能不会在别人的工作。
这里是一个蹩脚的例子只是张贴到一个HTML文件来查看。
<div style="background: #ff00ff; overflow: hidden; width: 500px; height: 500px; position: relative;"> <div style="background: #ff0000;position: fixed; top: 10px; left: 10px;">asd <div style="background: #00ffff; width: 200px; overflow: visible; position: absolute; visibility: visible; clear:both; height: 1000px; top: 100px; left: 10px;"> a</div> </div> </div>
对于其他人,如果clearfix没有为你解决这个问题,可以给非浮动的兄弟姐妹添加边际,这个浮动的兄弟姐妹的宽度与浮动的兄弟姐妹的宽度相同。