2015-01-09 5 views
3

Как я могу центрировать элементы div горизонтально, поэтому, когда я изменяю ширину браузера, последний div спускается с помощью css?как i центр div элементов горизонтально в css?

Итак:

---||||-||||-||||--- 

--------||||-------- 

Когда я пишу:

<div style="float: left; position: relative; left: 50%;"> 
    <div style="float: left; position: relative; left: -50%;"> 
    <div style="width:315px; height:340px; float: left; margin-top: 10px; margin-bottom: 10px;">Text</div> 
    <div style="width:315px; height:340px; float: left; margin-top: 10px; margin-bottom: 10px;">Text</div> 
    ... 
    </div> 
</div> 

Затем после элемента идут вниз, все элементы DIV перейти на левую сторону.

+0

У вас есть определенная ширина? – wiesson

+0

Только divs имеют определенную ширину – TTopsecret

ответ

5

Я бы рекомендовал использовать display: inline-block на элементы, а затем с помощью text-align: center на контейнере для обработки центрирующее вы хотите:

Я очистил свой HTML, но здесь основной HTML форматирования с container класса и нескольких (как многие, как вы хотите) block класса DIVs:

<div class="container"> 
    <div class="block">Text</div> 
    <div class="block">Text</div> 
    <div class="block">Text</div> 
</div> 

CSS-изменяет параметры отображения блоков и выравнивание текста в контейнере:

div.block { 
    display: inline-block; /* this changes the elements to behave more like inline elements (think <span>s) */ 
    width: 315px; 
    margin: 10px 0; 
    height: 340px; 
} 
div.container { 
    width: 100%; 
    text-align: center; /* this is the magic that centers the elements */ 
} 

я собрал небольшую демонстрацию, которая должна помочь продемонстрировать этот метод: JSFIDDLE


Имейте в виду: небольшой «причуда» существует с display: inline-block CSS. это приводит к небольшому пространству между элементами. Это можно удалить несколькими способами, мои предпочтительные методы - либо использование комментариев, либо завершение закрывающих тегов DIV. (Проблема вызвана возвращением/пробелы между элементами в HTML):

<div class="container"> 
    <div class="block">Text</div><!-- 
    --><div class="block">Text</div><!-- 
    --><div class="block">Text</div> 
</div> 

<div class="container"> 
    <div class="block">Text</div 
    ><div class="block">Text</div 
    ><div class="block">Text</div> 
</div> 

reference for the quirk behavior

+0

Консолируя «небольшую причуду» на элементах встроенного блока, просто обратная связь здесь.Я предпочитаю решать эту проблему с дополнительным интервалом, устанавливая размер шрифта родительского элемента элементов встроенного блока, равным нулю. Затем, нацелитесь на элементы и сбросьте размер шрифта * внутри * их обратно к тому, что я хочу. Никакой дополнительной разметки и комментариев HTML не требуется, и позволяет вашей HTML-разметке продолжать хорошо форматироваться. – Meogi

+1

Итак, применительно к вашей html-разметке: .container {font-size: 0} .block {font-size: 16px} (или что вам нужно для этого). Рабочий пример пересмотренной копии вашей скрипты JS: http://jsfiddle.net/5ys369yt/8/ – Meogi

+0

Оке, это хорошо. Но что я должен делать, когда элементы не имеют одинакового количества строк? -> http://jsfiddle.net/5ys369yt/11/ – TTopsecret

1

Создайте контейнер <div>, который составляет 100% от заданной области. Затем установите каждую ширину <div> внутри контейнера как% и float: left;. Они будут складываться рядом друг с другом, пока они не подойдут и перейдут на следующую строку.

.container { 
 
    width: 100%; 
 
} 
 
.three { 
 
    width: 33%; 
 
    min-width: 225px; 
 
    float: left; 
 
    border: 1px solid black; 
 
}
<div class="container"> 
 
    
 
    <div class="three"> 
 
    <p>Something</p> 
 
    </div> 
 
    
 
    <div class="three"> 
 
    <p>Something</p> 
 
    </div> 
 
    
 
    <div class="three"> 
 
    <p>Something</p> 
 
    </div> 
 
    
 
</div>

Выполните фрагмент кода.

+0

Это не будет работать на небольших видовых экранах. Попробуйте вручную уменьшить размер окна вашего браузера, divs не изменяются. Просто голова –

+0

Да, я понял это и добавил минимальную ширину так, как будет. –

+0

Благодарим вас за ответ. Но по вашему коду та же проблема, элементы идут влево, но это должно быть в середине – TTopsecret

-1

Вы можете использовать медиа-запросы писать разный код CSS для разных размеров:

Media Queries

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