今天在做布局的时候发现把table设置了position:absolute后 overflow居然不管用了,溢出的部分依然溢出。
百度后,才想起来... ...
position后,元素已经和父元素不在一个流里面了,而overflow只能对在同一流中的元素起作用。
简单说,
就是 table 已经是移民火星了,而table外面的div 依然还在地球,那么身在地球的div自然是管不了身在火星的table咯。
所以解决办法,
既然table移民了,那么它爹div也跟着移个民不就可以管着table了吗?
当子元素改变当前流后,父元素也跟着改变当前流,那么overflow就可以生效了。
下面引用一个例子:
<style> .box{ width:200px; height:150px; overflow:hidden; border:2px solid #000; float:left; margin-right:20px; } .relative{ position:relative; } .div{ width:200px; height:100px; background:#FF5400; margin-top:100px; position:absolute; } .zi{ width:200px; height:300px; background:#FF0000; } </style> <div class="box"> 高300px的子元素溢出隐藏 <div class="zi"></div> </div> <div class="box"> 不带relative <div class="div"></div> </div> <br><br><br><br><br><br> <div class="box relative"> 带上relative <div class="div"></div> </div>
效果图:
请原谅我懒的自己写demo。借下别人的demo用用。