2016-08-20 7 views
0

Я пытаюсь создать страницу с несколькими 3 div в строке, которые выровнены по правому краю и по центру.Влево, вправо и в центре выровнены divs

Я пробовал использовать float:left и float:right, но все получилось очень плохо. Страница масштабируется супер случайным образом, и я хочу, чтобы divs стали в 2 столбцах, когда страница масштабируется, а затем до 1 столбца для мобильных устройств.

.container { 
 
    display: inline-block; 
 
    text-align: center; 
 
    width: 100%; 
 
    position: relative; 
 
} 
 
.left, 
 
.middle, 
 
.right { 
 
    width: 200px; 
 
    height: 200px; 
 
    background-color: red; 
 
    display: inline-block; 
 
} 
 
.left { 
 
    float: left; 
 
} 
 
.right { 
 
    float: right; 
 
}
<div class="container"> 
 

 
    <div class="left"> 
 
    <div class="content"> 
 
    </div> 
 
    </div> 
 
    <div class="middle"> 
 
    <div class="content"> 
 
    </div> 
 
    </div> 
 
    <div class="right"> 
 
    <div class="content"> 
 
    </div> 
 
    </div> 
 

 
</div>

jsFiddle: https://jsfiddle.net/azizn/j4cgef5g/

+1

http://stackoverflow.com/q/2603700/3597276 –

+0

Рассмотрите возможность просмотра медиа-запросов. Как должен вести себя 3-й предмет, если 2 строки? будет сосредоточено в двух ящиках? – Aziz

+0

Вы используете. Bootstrap. Фреймворк. ? –

ответ

-1

Ознакомьтесь с примерами, которые я привел ниже (CSS и HTML скрипт)

HTML

<div id='columns'> 
    <div id='col1'></div> 
    <div id='col2'></div> 
    <div id='col3'></div> 
</div> 

CSS

#columns{ 
    position: absolute; 
    height: 100%; 
    width: 100%; 
} 

#columns #col1{ 
    float: left; 
    width: 33.33%; 
    height: 100%; 
} 


#columns #col2{ 
    float: left; 
    width: 33.33%; 
    height: 100%; 
} 


#columns #col3{ 
    float: left; 
    width: 33.33%; 
    height: 100%; 
} 

@media media only screen and (max-width:1024px) and (min-width:540px){ 
    #columns #col1{ 
     width: 50%; 
    } 


    #columns #col2{ 
     width: 50%; 
    } 


    #columns #col3{ 
     width: 100%; 
    } 
} 

@media media only screen and (max-width:540px){ 
    #columns #col1{ 
     width: 100%; 
    } 


    #columns #col2{ 
     width: 100%; 
    } 


    #columns #col3{ 
     width: 100%; 
    } 
} 

Обратите внимание: я не тестировал приведенный выше пример, но он должен работать. Вы можете отредактировать свои значения ширины и высоты, как вы пожелаете, а также ширину для мультимедийных запросов. По мере того, как экран становится меньше, он удаляет столбцы 3 и 2 с дисплея, делая другие столбцы более крупными. Чтобы сделать три столбца в левой, центральной и правой положениях, вам не нужно указывать разные поплавки, так как они находятся в блоках, они автоматически сталкиваются и складываются слева, пока они не ударятся о край экрана. Именно поэтому ширина может составлять всего 33,33%, так как 33,333%, как правило, заставляют третий блок сбрасываться, так как недостаточно места. В большинстве случаев 0,01% мертвого пространства в любом случае не заметны.

+0

Спасибо, divs, кажется, занимают все пространство, хотя, и я хочу иметь некоторые поля. Но подумайте об этом, если я сделаю больше div внутри с размером, который я хочу, он должен работать, не так ли? – Shirohige

+0

Итак, я пробовал этот метод, и он работает по большей части. Проблема в том, что все выравнивается влево, когда я устанавливаю нестандартный размер столбцов. В основном я хочу, чтобы левый и правый столбцы совпадали с краями, а середина была в центре между ними. Можете ли вы мне помочь? – Shirohige

+0

Если вы хотите изменить размер 3-х разделов внутри, вам нужно будет изменить размер «столбцов» контейнера, так как они занимают треть своей ширины. Поэтому, если вы хотите, чтобы divs были 250px, когда они все видны, вы должны установить контейнер около 750px. Имейте в виду, что это никогда не будет точно, но в пределах 0.01-0.1px ошибки. – BilfredKerman

4

Это использование хрестоматийный пример для Flexbox:

.container{ 
    display: flex; 
    justify-content: space-between; 
} 

Вот пример: http://codepen.io/memoblue/pen/XKQqGg

Есть много ва ys, чтобы иметь дело с отзывчивым аспектом, но мне нужно будет более точно узнать, что макет должен выглядеть на разных контрольных точках, чтобы дать вам полезный ответ ...

+0

Да, но полностью игнорирует отзывчивый аспект. – Aziz

+0

Спасибо, я тоже попытался использовать flex и получил тот же результат. Тем не менее, масштабирование было проблемой. Я хочу, когда на экране будет установлена ​​определенная ширина двух столбцов, чтобы иметь ту же позицию или быть в центре (не уверен, как это будет выглядеть лучше) с некоторым краем сверху и снизу. В основном я создаю страницу для партнеров. Это выглядит примерно так: https://www.indiegogo.com/partners – Shirohige

+0

Я обновил ручку с макетом, похожим на страницу индигого, с которой вы связались. Однако это немного отличается от вашего первоначального описания. Я не выглядел, но я уверен, что они просто плывут по элементам ... Это даже не центрировано, когда есть 2 столбца. Mine is;) Я использую точки останова, соответствующие ширине элементов. Вам придется подстраиваться под свои размеры. Я также очистил HTML. Надеюсь, ты не против! Дайте знать, если у вас появятся вопросы. – memo

 Смежные вопросы

  • Нет связанных вопросов^_^