【发布时间】:2014-03-05 15:45:09
【问题描述】:
在我的身体中,我想要两个内容并排的 div,每个 div 的宽度为屏幕的 50%。但是我希望能够隐藏/显示第一个 div,然后第二个 div 的宽度会对此做出响应,将其宽度更改为 100% 或 50%。根据第一个 div 是否隐藏,填充 body 或 body 的其余部分。
任何想法如何做到这一点? (我知道如何用 jquery 显示/隐藏,我在想 HTML)
【问题讨论】:
标签: html
在我的身体中,我想要两个内容并排的 div,每个 div 的宽度为屏幕的 50%。但是我希望能够隐藏/显示第一个 div,然后第二个 div 的宽度会对此做出响应,将其宽度更改为 100% 或 50%。根据第一个 div 是否隐藏,填充 body 或 body 的其余部分。
任何想法如何做到这一点? (我知道如何用 jquery 显示/隐藏,我在想 HTML)
【问题讨论】:
标签: html
仅对第一个元素使用浮动,并让第二个元素适合剩余空间。
然后,如果元素通过width:50% 可见,则第二个元素将填充另一半。但是如果第一个被隐藏,第二个会填满整个屏幕。
HTML:
<input type="button" id="btn" value="toggle" />
<div id="wrapper">
<div id="left">Foo</div>
<div id="right">Bar</div>
</div>
CSS:
#wrapper, #right {
overflow: hidden;
}
#left {
float: left;
width: 50%;
background-color: #ffa;
}
#right {
background-color: #faf;
}
.hide {
display: none;
}
JS:
var left = document.getElementById('left');
document.getElementById('btn').onclick = function() {
left.className = left.className ? '' : 'hide';
};
【讨论】:
width: 100%; position: fixed; display:inline-block。您必须删除它们才能使其正常工作。
另一种可能性:使用display: table-cell。与浮点数相比,这具有两个列将具有相同高度的优点,并且设置包装器的高度也会为两列设置它。
HTML:
<input type="button" id="btn" value="toggle" />
<div id="wrapper">
<div id="left">Foo</div>
<div id="right">Bar</div>
</div>
CSS:
#wrapper {
display: table;
width: 100%;
}
#left, #right {
display: table-cell;
}
#left {
background-color: #ffa;
}
#right {
background-color: #faf;
}
.hide {
display: none !important;
}
JS:
var left = document.getElementById('left');
document.getElementById('btn').onclick = function() {
left.className = left.className ? '' : 'hide';
};
【讨论】:
您可以使用 flexbox 和 JQuery 来处理任意数量的 div。
https://jsfiddle.net/L8kfty5n/5/
function hideandshow() {
if ($('.hide').is(":checked"))
$("#div1").show();
else
$("#div1").hide();
}
.container {
display: flex;
flex-flow: row nowrap;
}
#div1,
#div2,
#div3 {
flex-grow: 1;
flex-basis: calc(100% / 3);
border: 1px solid #000;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div class="container">
<div id="div1">This disappears</div>
<div id="div2">This grows</div>
<div id="div3">This grows too</div>
</div>
<input class="hide" type="checkbox" name="hide" value="1" onchange="hideandshow()" checked/>
【讨论】: