2016-06-24 3 views
2

Update: Последний код, который работает во всех браузерах, расположенных в этом JSFiddle - https://jsfiddle.net/webvitaly/yu00ugft/5/CSS столбцы и выпуск Маржа

Я пытаюсь сделать реагирующие столбцы, используя чистый CSS подход.

У меня проблема, когда столбцы иногда имеют разницу/маржу вверху.

JSFiddle ссылку, чтобы попытаться исследовать - https://jsfiddle.net/webvitaly/yu00ugft/

Как решить эту проблему?

CSS:

.fx-columns { 
    background: yellow; 
    -webkit-column-count: 2; 
    -moz-column-count: 2; 
    column-count: 2; 
    -webkit-column-gap: 30px; 
    -moz-column-gap: 30px; 
    column-gap: 30px; 
} 

.fx-columns-3 { 
    -webkit-column-count: 3; 
    -moz-column-count: 3; 
    column-count: 3; 
} 

.fx-columns-4 { 
    -webkit-column-count: 4; 
    -moz-column-count: 4; 
    column-count: 4; 
} 

.fx-columns .fx-column { 
    -webkit-column-break-inside: avoid; 
    break-inside: avoid; 
    background: pink; 
    clear: both; 
    margin-bottom: 20px; 
} 

HTML:

<div class="fx-columns fx-columns-4"> 
    <div class="fx-column"> 
    <h3>Header</h3> 
    <p>Text paragraph</p> 
    </div> 
    <div class="fx-column"> 
    <h3>Header</h3> 
    <p>Text paragraph</p> 
    <p>Text paragraph</p> 
    <p>Text paragraph</p> 
    </div> 
    <div class="fx-column"> 
    <h3>Header</h3> 
    <p>Text paragraph</p> 
    <p>Text paragraph</p> 
    </div> 
    <div class="fx-column"> 
    <h3>Header</h3> 
    <p>Text paragraph</p> 
    <p>Text paragraph</p> 
    <p>Text paragraph</p> 
    <p>Text paragraph</p> 
    </div> 
    <div class="fx-column"> 
    <h3>Header</h3> 
    <p>Text paragraph</p> 
    </div> 
    <div class="fx-column"> 
    <h3>Header</h3> 
    <p>Text paragraph</p> 
    <p>Text paragraph</p> 
    </div> 
    <div class="fx-column"> 
    <h3>Header</h3> 
    <p>Text paragraph</p> 
    <p>Text paragraph</p> 
    <p>Text paragraph</p> 
    </div> 
    <div class="fx-column"> 
    <h3>Header</h3> 
    <p>Text paragraph</p> 
    </div> 
    <div class="fx-column"> 
    <h3>Header</h3> 
    <p>Text paragraph</p> 
    <p>Text paragraph</p> 
    </div> 
    <div class="fx-column"> 
    <h3>Header</h3> 
    <p>Text paragraph</p> 
    <p>Text paragraph</p> 
    <p>Text paragraph</p> 
    </div> 
</div> 
+0

Это вызвано сбрасыванием полей на тэгах 'h3', и это отменит это:' .fx-columns .fx-column {overflow: auto; } '... или как этот' .fx-columns .fx-column h3 {margin-top: 0; } '... или как этот' .fx-columns .fx-column {display: inline-block; } ' – LGSon

+0

Возможный дубликат [Что делает' overflow: hidden \ "в следующем примере?] (Http://stackoverflow.com/questions/37958873/what-does-overflowhidden-do-in-the-following- пример) – LGSon

+0

'display: inline-block;' сделает столбцы нечувствительными. – webvitaly

ответ

7

В настоящее время вы храните контент от разрывов между столбцами. Однако браузер разбивает margin между столбцами, что приводит к тому, что некоторые из столбцов не начинаются сверху.

Добавьте это в CSS:

.fx-column { 
    display: inline-block; 
} 

Затем вы должны дать столбцы фиксированную ширину.

Знайте, однако, что существует множество проблем с использованием свойства count count css. См. Это article для получения дополнительной информации.

Редактировать: Если вы хотите, чтобы ширина столбцов была отзывчивой, вы можете просто установить их на width: 100%, чтобы они расширялись по мере расширения браузера.

+0

'display: inline-block;' сделает столбцы нечувствительными. – webvitaly

+1

Вы можете установить 'width: 100%', и столбцы будут расширяться, как и они, без 'display: inline-block'. Я добавлю это к моему ответу. Спасибо за ввод – jtmingus

+0

Спасибо. Ваш подход отлично работает во всех браузерах. https://jsfiddle.net/webvitaly/yu00ugft/5/ – webvitaly

0

Вы можете установить верхний край-и топ-отступы в ноль, чтобы решить эту проблему. Вы можете использовать CSS универсальный (*) селектор:

*{padding-top:0; margin-top:0;} 

Но помните, универсальные стили селектор будет применяться ко всей странице.

+0

Что делать, если мне нужен запас и дополнение для .fx-column, h3 и P-метки? – webvitaly

+0

просто добавьте «display: inline-block;» в fx-столбце, как сказал jtmingus. –