Каков правильный способ достижения 3-колоночной компоновки с центром жидкости
Я работаю над компоновкой из трех столбцов с двумя боковыми панелями с фиксированной шириной (слева и справа) и центром жидкости. Я следил за A List Apart статьей Holy Grail, и, хотя это хорошо работает в большинстве браузеров, у меня возникают некоторые проблемы в Internet Explorer 7+.
Проблема с IE 7+ на самом деле не связана с этой техникой, а скорее из того, что страница выполняет рендеринг в режиме quirks. Однако, если я сделаю это в режиме соблюдения стандартов, многие устаревшие элементы будут смещены и потребуют полной перезаписи.
Учитывая, что эта статья датируется несколькими годами, является ли это самой современной ссылкой на эту тему? Или я должен применять другую технику?
Любое понимание наилучшего способа сделать это будет с благодарностью.
Ответы
Ответ 1
В плавающей колонке действительно нет смысла.
HTML:
<div id="wrapper">
<div id="left"></div>
<div id="center"> Center content</div>
<div id="right"></div>
</div>
CSS
#left {
position:absolute;
left:0;
width:50px;
height:100%;
background-color:pink;
}
#center {
height:100%;
margin: 0 50px;
background-color:green;
}
#right {
position:absolute;
right:0;
top:0;
width:50px;
height:100%;
background-color:red;
}
body, html, #wrapper {
width:100%;
height:100%;
padding:0;
margin:0;
}
Демо: http://jsfiddle.net/AlienWebguy/ykAPM/
Ответ 2
Абсолютное позиционирование работает для страницы с полной шириной, но о том, когда вы имеете фиксированную ширину, центрированную. Вышло решение, основанное на гибкой коробке, которая работает в IE8+. Flexie polyfill используется для старых браузеров
См. http://jsfiddle.net/lorantd/9GFwT/10/
<div id="header"></div>
<div id="main">
<div id="menu"></div>
<div id="content"></div>
<div id="summary"></div>
</div>
<div id="footer"></div>
#header {
background-color: #9B9EA7;
height: 70px;
}
body {
min-width: 500px;
max-width: 630px;
margin-right: auto;
margin-left: auto;
display: block;
}
#main {
display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */
display: -ms-flexbox; /* TWEENER - IE 10 */
display: -webkit-flex; /* NEW - Chrome */
display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */
display:-webkit-box; /* Safari and Chrome */
display:box;
width: 100%;
}
#menu {
background-color: #D42108;
width: 120px;
margin-top: 10px;
margin-right: 10px;
}
#content {
background-color: #FFD700;
height: 500px;
margin-top: 10px;
margin-right: 10px;
-webkit-box-flex: 2; /* OLD - iOS 6-, Safari 3.1-6 */
-moz-box-flex: 2; /* OLD - Firefox 19- */
width: 60%; /* For old syntax, otherwise collapses. */
-webkit-flex: 2; /* Chrome */
-ms-flex: 2; /* IE 10 */
flex: 2;
}
#summary {
width: 30px;
margin-top: 10px;
background-color: #9B9EA7;
}
#footer {
background-color: #353535;
width: 100%;
height: 50px;
margin-top: 10px;
clear: both;
}
Ответ 3
Я считаю, что это должно быть полезно в большинстве случаев.
См. ссылку ниже.
http://jsfiddle.net/ykAPM/278/
#left {
position:fixed;
left:0;
width:50px;
height:100%;
background-color:pink;
}
#center {
margin: 0 50px;
background-color:green;
overflow:auto
}
#right {
position:fixed;
right:0;
top:0;
width:50px;
height:100%;
background-color:red;
}
body, html, #wrapper {
width:100%;
height:100%;
padding:0;
margin:0;
}
#test{
height:1000px;
}