Как заставить фиксированную ширину столбца с помощью сетки Bootstrap и поддерживать другие жидкости
Я использую Bootstrap и хочу создать сетку, показанную на следующем изображении.
Я хотел бы иметь боковую панель с фиксированным разрешением 330px, независимо от того, какие размеры экрана и что все внутри #page-content
можно изменять в зависимости от разрешения экрана моего посетителя. ![grid]()
Как я могу добиться макета, показанного на изображении? Если я сделаю следующее:
<div class="col-md-10" id="page-content">
<div class="col-md-2">...</div>
<div class="col-md-10">...</div>
</div>
<div class="col-md-2" id="sidebar">
...
</div>
и попробуйте зафиксировать ширину #sidebar
с помощью width="330px";
для экранов меньшего размера, содержимое сместится вправо, где его не будет видно. Поскольку Bootstrap назначает width: 16.66666667%;
для .col-md-2
, кажется, что мне нужно было бы избавиться от системы сетки для divов более высокого уровня, #page-content
и #sidebar
. Но тогда как я могу убедиться, что #page-conten
t заполняет оставшееся пространство слева от #sidebar
.
Ответы
Ответ 1
Сетка начальной загрузки должна была быть плавной, поэтому она должна меняться при изменении размера экрана.
Для желаемого макета вы можете сделать это, используя вместо этого display: flex
или display:table
. Я собираюсь пойти с display:table
для моего примера, так как там больше поддержки, чем у flexbox.
Вам нужно будет изменить свой HTML-код на что-то вроде:
<div class="page">
<div class="page-content">
<div class="row">
<div class="col-md-2">
<div class="blue">test</div>
</div>
<div class="col-md-10">
<div class="green">test</div>
</div>
</div>
</div>
<div class="sidebar">
<div class="gold">test</div>
</div>
</div>
А вот CSS, который я использовал:
.page {
display: table;
width: 100%;
}
.page-content,
.sidebar {
display: table-cell;
}
.sidebar {
width: 330px;
}
.blue,
.green,
.gold {
height: 50px;
}
.blue {
background-color: blue;
}
.green {
background-color: green;
}
.gold {
background-color: gold;
}
Вы можете проверить скрипку здесь: https://jsfiddle.net/m0nk3y/qjutpze4/
Ответ 2
Bootstrap 4.0 beta:
HTML:
<div class="container-fluid">
<div class="row">
<div class="col my-sidebar">
<h2>LEFT</h2>
<h6>(FIXED 230px COLUMN)</h6>
</div>
<div class="col text-center">
<h1>CENTER (FLUID COLUMN)</h1>
</div>
<div class="col my-sidebar">
<h2>RIGHT</h2>
<h6>(FIXED 230px COLUMN)</h6>
</div>
</div>
</div>
CSS:
.my-sidebar {
-ms-flex: 0 0 230px;
flex: 0 0 230px;
background-color: greenyellow;
}
@media (max-width: 690px) {
.my-sidebar {
display: none;
}
}
Здесь приведен пример: https://www.codeply.com/view/PHYTWFDFRU
В этом примере фиксированные столбцы исчезнут, если ширина окна браузера станет меньше 690 пикселей. Если вы хотите, чтобы они были всегда видимыми, удалите второй css-блок с помощью @media полностью.