CSS专家的一个 - div是否有可能“逃脱”具有固定尺寸的div边界的约束和overflow:hidden
?
我在这里重新创建了示例:http: //jsfiddle.net/Wt3q4/1/
我尝试在所有元素上设置 z-indexes,并b
position:absolute
毫无乐趣地为 div 分配类。
CSS专家的一个 - div是否有可能“逃脱”具有固定尺寸的div边界的约束和overflow:hidden
?
我在这里重新创建了示例:http: //jsfiddle.net/Wt3q4/1/
我尝试在所有元素上设置 z-indexes,并b
position:absolute
毫无乐趣地为 div 分配类。
由于.b
嵌套了一个元素 that's position:relative;
,设置.b
为 absolute 不会做任何事情。据我所知,使用您定义的元素结构,不会有 CSS 解决方法。
如果不了解更多关于您的布局以及您要完成的工作,很难提出建议。如果有意义,您可以尝试设置一个“双容器”,并overflow:hidden;
在您想要显示它时使用 jQuery 函数将元素移出元素。
HTML
<div class="a">
<div class="b">
<div class="c">
</div>
</div>
</div>
<div id="show" class="button">Show!</div>
<div id="hide" class="button">Hide!</div>
CSS
.a{
position:relative;
height:200px;
width:200px;
border:3px solid #f00;
background:#ccc;
}
.b{
position:relative;
height:200px;
width:200px;
background:#ccc;
overflow: hidden;
}
.c{
width:50px;
height:300px;
border:3px solid #00f;
background:#dad;
margin:30px;
position:absolute;
z-index:333;
}
.hidden{
display: none;
}
.button {
width: 50px;
padding: 5px;
text-align: center;
border: 3px solid #aaa;
background: #ddd;
margin: 20px;
float: right;
}
jQuery
$('#show').on('click', function(){
$('.c').prependTo('.a');
$('.b').addClass('hidden');
});
$('#hide').on('click', function(){
$('.c').prependTo('.b');
$('.b').removeClass('hidden');
});
根据我对 CSS 块格式上下文的理解,您div.b
是 的子级div.a
,这意味着div.a
为div.b
. 在父元素上设置overflow: hidden
后,任何流出父内容框的子内容都将不可见。
如果您在父容器上进行设置,则这一点会更加明显,outline: 1px solid black
这样您就可以看到内容框的扩展,无论是overflow
隐藏的还是可见的。
您的问题确实涉及 CSS 视觉格式模型的基本要素。
怎么样:
.menu > li > ul {
position: absolute; /* you still need this here */
background-color: #9F26B4;
width: 10000000000000000px;
margin-left: -100000px;
padding-left: 100000px;
list-style: none;
z-index: 1000;
top: 0;
left: 0;
}
例如,这会从左到右溢出整个页面(假设 body overflow-x 设置为隐藏),然后将元素宽度设置为巨大宽度,将其边缘设置为负左以填充任何左侧内容,并填充到left 将元素内的对象移动到所需的 X 位置。你认为呢?