Мне нужно предоставить интерфейс для проекта, где редактор может определять элементы контейнера с некоторыми переменными: он/она должен иметь возможность определять, сколько столбцов есть и как они ведут себя на разных размерах экрана.CSS: Как определить интервал между чувствительными столбцами
Для этого я взял решетку сетки (здесь: регрессивные сетки PureCSS) и позвольте ему выбрать размер столбца для данного столбца для заданного размера экрана. Таким образом, можно определить, будет ли на экране размером «большой» в этой строке должно быть два или три столбца, прежде чем он перейдет в следующую строку.
Я объясняю это не из-за технической части, а из-за того, что из-за этого у меня возникают проблемы.
Ситуация заключается в том, что макет страницы требует заполнения между этими столбцами, но не на внешней стороне строки.
Я пытаюсь решить эту проблему, используя небольшую настройку правил CSS поверх используемой структуры, которая работает нормально - пока это одна строка, которая не переносится на следующую строку. При меньшей ширине экрана он обертывается так, как должен, но прокладки больше не работают.
Вы знаете, как я мог это решить, имея в виду, что он должен состоять из правил, которые применяются «автоматически», без необходимости полагаться на дополнительные классы CSS?
Я сделал скрипку, чтобы продемонстрировать свою проблему. Редактору не нужно определять paddings для каждого размера экрана, поскольку он уже определяет размеры столбцов для него. Отступы должны работать «автоматически» таким образом.
<style>
/* Using SCSS for convenience */
body {
padding: 1em;
}
.pure-g {
margin-bottom: 1em;
> div {
border: thin solid black;
box-sizing: border-box;
padding: 0 .5em 1em .5em;
&:first-child {
padding-left: 0;
padding-right: .66em;
}
&:last-child {
padding-left: .66em;
padding-right: 0;
}
> div {
box-sizing: border-box;
height: 10em;
background-color: green;
}
}
&[data-cols="3"] {
> div:nth-child(2) {
padding-left: .33em;
padding-right: .33em;
}
}
&[data-cols="4"] {
> div:nth-child(2) {
padding-left: .33em;
}
> div:nth-child(3) {
padding-right: .33em;
}
}
}
</style>
<div class="pure-g" data-cols="3">
<div class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-3"><div></div></div>
<div class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-3"><div></div></div>
<div class="pure-u-1 pure-u-md-1 pure-u-lg-1-3"><div></div></div>
</div>
<div class="pure-g" data-cols="4">
<div class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-4"><div></div></div>
<div class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-4"><div></div></div>
<div class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-4"><div></div></div>
<div class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-4"><div></div></div>
</div>
<div class="pure-g" data-cols="5">
<div class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-5"><div></div></div>
<div class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-5"><div></div></div>
<div class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-5"><div></div></div>
<div class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-5"><div></div></div>
<div class="pure-u-1 pure-u-md-1 pure-u-lg-1-5"><div></div></div>
</div>
Краткое объяснение того, что я делал до сих пор:
- Тело должно иметь отступы, так что столбцы не трогать границы страницы. Можно было бы утверждать, что это может быть обработано столбцами, но в моей реальной ситуации там больше: ограниченная ширина контейнера вместо тела.
- Столбцы всегда должны иметь одно прокладку между собой, а 1-й край - снизу.
- Чтобы сделать столбцы с равным внутренним размером, мне нужно немного отрегулировать прокладку: из-за того, что нет внешней прокладки, первый и последний столбцы должны настраивать свои paddings, то же самое с теми, re touching. Я думаю, вы поймете, что я имею в виду.
- (Границы и внутренний DIV только визуализировать вещи)
https://jsfiddle.net/1jv43g02/
Спасибо за вашу помощь
Arne
Я не получить его, если вы хотите один ЕМ между во все времена , что с вещами .33 и .66? просто сохраните его .5: https: // jsfiddle.net/1jv43g02/1/- скрипка работает только на самом большом экране, где есть 3, 4 и 5 в строке, поскольку я не уверен, что другие стили находятся в вашей таблице стилей, которые влияют на меньшие экраны. – Pete
Приведите пример на [Twitter бутстрапе] (http://getbootstrap.com/). Столбцы имеют одинаковое правое и левое заполнение «padding: 0 20px;», а строки будут отрицать это дополнение через «margin: 0 -20px;», заставляя строку заполнить требуемые 100% контейнера. – AlexG
@Pete: Если вы не разделяете 1em по-разному, когда есть предметы с только одной стороной отступов, элементы будут иметь мягкие права, но не имеют одинаковый внутренний размер. – arnekolja