HTML块元素溢出其父元素
HTML block element overflowing its parent
我遇到了一个奇怪的(也许不是)行为,我想避免,因为最终的结果是一个可怕的用户体验。为了帮助你理解这个问题,我把下面的代码片段放在一起。
var counter;
var counterDisplay;
var intervalRef;
window.onload = function(){
console.log("loading");
counter = 11;
counterDisplay = document.getElementById("spCounter");
intervalRef = setInterval(tickHandler, 1000);
};
function tickHandler(){
counter--;
counterDisplay.innerHTML = counter.toString();
if(counter == 0){
stop();
return;
}
}
function stop(){
clearInterval(intervalRef);
document.getElementById("daddyLongLegs").style.display = "block";
}
html,body{
width:100%;
height:100%;
font-family:Arial;
font-size:16px;
}
.page-wrapper{
height:100%;
background-color:#eee;
}
.growing-element{
height:800px;
display:none;
margin: 100px 100px 0 100px;
background-color:#ddd;
}
<div class="page-wrapper">
<div class="container-element">
<!--This element's height never changes once the page has been rendered-->
<div>
The hidden child element below will magically appear in: <span id="spCounter">10</span> seconds
</div>
<!--This element's height changes anytime after the page has been loaded-->
<div id="daddyLongLegs" class="growing-element">
Now you see me...
</div>
</div>
</div>
代码片段非常简单,javascript所做的就是在10秒后显示一个子元素(#daddyLongLegs
)。使"问题"更有视觉色彩,使父元素(div.container-element
)与子元素不同。
现在,当子元素(#daddyLongLegs
)在10秒后显示时,它似乎不会"拉伸"父元素(div.container-element
)。这不是我想达到的行为。我希望父元素在其内容改变时重新调整其高度。但是,父元素的高度必须始终覆盖整个文档
如何使父元素在内容改变后重新调整其高度?是否有纯css解决方案 ?
.container-element
的定义高度为100%
如果你删除它,或者将其设置为auto
,它应该根据其内容计算高度。或者您可以将height
更改为min-height
,这将根据其内容计算高度,但不低于其父高度的100%。
如MDN所述,您可以使用min-height
属性而不是height
,因此每当<div>
的子属性上升时,它也将扩展父属性
所以从我的评论:
使用
min-height: 100%
代替height: 100%
.page-wrapper
将height改为100%,margin改为0;
var counter;
var counterDisplay;
var intervalRef;
window.onload = function(){
console.log("loading");
counter = 5;
counterDisplay = document.getElementById("spCounter");
intervalRef = setInterval(tickHandler, 1000);
};
function tickHandler(){
counter--;
counterDisplay.innerHTML = counter.toString();
if(counter == 0){
stop();
return;
}
}
function stop(){
clearInterval(intervalRef);
document.getElementById("daddyLongLegs").style.display = "block";
}
html,body{
width:100%;
height:100%;
font-family:Arial;
font-size:16px;
}
.page-wrapper{
height:100%;
background-color:#eee;
}
.growing-element{
height:100%;
display:none;
background-color:#ddd;
}
<div class="page-wrapper">
<div class="container-element">
<!--This element's height never changes once the page has been rendered-->
<div>
The hidden child element below will magically appear in: <span id="spCounter">10</span> seconds
</div>
<!--This element's height changes anytime after the page has been loaded-->
<div id="daddyLongLegs" class="growing-element">
Now you see me...
</div>
</div>
</div>
相关文章:
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- javascriptexecutor-不能点击body样式标记为“”的元素;溢出:隐藏;
- Make:如果父元素溢出,after元素将扩展到全宽
- 如何知道我的元素是否溢出
- 如何使内部元素具有位置:绝对覆盖溢出:隐藏外部元素
- 强制内部元素溢出-x
- 将DIV元素绑定到溢出滚动条
- 在具有可变高度的元素上隐藏溢出
- CSS webkit溢出隐藏和HTML元素高度
- 检测 Chrome 浏览器窗口的宽度和高度,以防止元素溢出
- 溢出:删除元素时,带有子 TABLE 滚动条的 DIV 上的自动滚动条会保留
- 在溢出元素中使用 Javascript 滚动
- 元素的绝对布局,将溢出但仅在 3 个侧面上受到限制
- 动态设置元素的高度以使其溢出:auto
- 仅溢出 DIV 中的一个元素
- 检查元素是否有内容溢出
- 如何使一个元素被填充以设置另一个元素's、 除此之外,html中溢出时文本可见
- ReactJS-将溢出的元素放入一个“"下拉按钮
- 禁用弹性滚动只对HTML,但维护元素溢出:滚动
- HTML块元素溢出其父元素