Мне нужно построить почти стандартную компоновку 3 столбцов
-----header-----
-s1-content-s2--
-----footer-----
Если sidebar1 и 2 имеют width:25%
а поле для контента - 50%. И он работает идеально.
Но разница в боковой панели1. На некоторых подстраницах для этого нет абсолютно никакого контента. Я установил css для sidebar1 в max-width:25%;
и когда ни один контент не отображается, div имеет 0px x 0px. Так почти сделано.
Конечным результатом является растяжение содержимого div до 75%, когда sidebar1 пуст.
Можно ли сделать это без уродливых взломов css или с помощью JS? Я проверил множество решений, и большинство из них работают неправильно.
Это обрабатывает дополнительный контент слева или справа.
HTML
<header></header>
<div id="wrapper">
<div id="left-sidebar">
Optional Content
</div>
<div id="content">
<p>To sailors, oaths are household words; they will swear in the trance of the calm, and in the teeth of the tempest; they will imprecate curses from the topsail-yard-arms, when most they teeter over to a seething sea; but in all my voyagings, seldom have I heard a common oath when God burning finger has been laid on the ship; when His "Mene, Mene, Tekel Upharsin" has been woven into the shrouds and the cordage.</p>
</div>
<div id="right-sidebar">
Optional Content
</div>
</div>
<footer></footer>
CSS
#wrapper {
display: table;
}
#left-sidebar, #content, #right-sidebar {
display: table-cell;
vertical-align: top;
}
header, footer {
background: pink;
width: 100%;
height: 2em;
}
#content {
}
#left-sidebar {
background: lime;
max-width: 25%;
}
#right-sidebar {
background: red;
max-width: 25%;
}
Вы должны использовать либо float
s, либо display: table
, я предпочитаю использовать последний, но каждый из них.
<div id="wrapper">
<div class="sidebar-one">
some (or no) content
</div>
<div class="content">
main content
</div>
<div class="sidebar-two">
sidebar two
</div>
</div>
#wrapper { display: table; }
#wrapper>div { display: table-cell; vertical-align: top; }
#wrapper .sidebar-one { max-width: 25%; }
#wrapper .sidebar-two { width: 25%; }
float: left
без оболочки верхнего уровня. Зачем вам float: left
что-то, что рассчитано на всю ширину экрана?