我想將一些DOM放在一起,而且我真的不確定如何解決以下問題。我基本上需要有一個可見的.filterArea
,並且它上面的區域佔據了剩餘的空間。難度是我想我的.filterArea
根據寬度做出反應,而我不知道我的總高度是多少。根據剩餘空間自動調整分區大小(考慮以下分區)
body {
background-color: #fff;
}
.mainArea {
background: red;
color: white;
}
.filter-area .tags {
padding: 10px;
}
.tag {
margin: 5px;
padding: 5px;
background-color: #f6f6f6;
display: inline-block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.5/js/materialize.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.5/css/materialize.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="mainArea">
<p>
This is the main area
</p>
</div>
<div class="filterArea" data-bind="component: filterComponent">
<div class="filter-area">
<!-- Represent the different tags that can be applied as filters -->
<div class="tags">
<div class="tag" data-tag="lessThan" data-bind="click: addTag, dl-filterTagRipple">
<span class="name">Less than</span>
<span class="value" data-bind="dl-siformat: arg1">0</span>
</div>
<div class="tag" data-tag="lessThanOrEqualTo" data-bind="click: addTag, dl-filterTagRipple">
<span class="name">Less than or equal</span>
<span class="value" data-bind="dl-siformat: arg1">0</span>
</div>
<div class="tag" data-tag="equals" data-bind="click: addTag, dl-filterTagRipple">
<span class="name">Equals</span>
<span class="value" data-bind="dl-siformat: arg0">0</span>
</div>
<div class="tag" data-tag="greaterThan" data-bind="click: addTag, dl-filterTagRipple">
<span class="name">Greater than</span>
<span class="value" data-bind="dl-siformat: arg0">0</span>
</div>
<div class="tag" data-tag="greaterThanOrEqualTo" data-bind="click: addTag, dl-filterTagRipple">
<span class="name">Greater than or equal</span>
<span class="value" data-bind="dl-siformat: arg0">0</span>
</div>
<div class="tag" data-tag="between" data-bind="click: addTag, dl-filterTagRipple">
<span class="name">Between</span>
<span class="value" data-bind="dl-siformat: arg0">0</span>
<span class="name">and</span>
<span class="value" data-bind="dl-siformat: arg1">0</span>
</div>
<div class="tag" data-tag="within" data-bind="click: addTag, dl-filterTagRipple">
<span class="name">Within</span>
</div>
<div class="tag" data-tag="empty" data-bind="click: addTag, dl-filterTagRipple">
<span class="name">Empty</span>
</div>
</div>
<div class="filters scrollable numberFilters filtersEmpty" data-bind="css: filters().length === 0 ? 'filtersEmpty' : ''">
<div data-bind="dl-filter-scroll-top:$parent"></div>
<div data-bind="template: { foreach:filters,
name: function(item) { return item.func(); },
afterAdd: showFilter,
beforeRemove: hideFilter }"></div>
</div>
</div>
</div>
我已經看到了一些解決方案,但圍繞它們都依賴於其知道.filterArea
的固定高度。是否有一些CSS魔術可以在.filterArea
被處理後根據剩餘空間調整頂部的大小?
你能否闡述一下 「佔用剩餘的空間」?你的意思是.mainArea和.filter-area應該總計視口高度?要麼? – pivemi
@pivemi - 是的。組合的高度應該佔據完整的視口,但是我希望'.filter-area'優先,並確保在'mainArea'計算它的高度之前它是可見的。 – Ian
@pivemi我也有興趣知道,如果在頂部div(視口)添加「overflow-y:scroll」會導致任何問題?在這種情況下不需要,但可能需要滾動其他內容。 – Ian