Как выровнять div вертикально на полную неизвестную ширину? [Дубликат]

0

Я имею в виду, если у меня есть div, с 200px высоты и 200px ширины, и я хочу выровнять его по вертикали (я могу выровнять его горизонтально с "margin: auto", но есть ли способ выровнять его по вертикали без knowking высота экрана?

Спасибо и сори за мой английский, это не мой родной язык

edit: высота экрана

Теги:
alignment

4 ответа

2
Лучший ответ

Вот пример, FIDDLE

div {
  position: absolute;
  width: 200px;
  height: 200px;
  top: 50%;
  left: 50%;
  margin-top: -100px;
  margin-left: -100px;
}
  • 0
    но если изображение отзывчивое, у меня будет что-то вроде этого: img{ width: 100%; max-width: 524px;} поэтому, когда ширина экрана меньше, это больше не будет работать
  • 0
    @ nick Да, в таком случае я рекомендую тебе jQuery;)
Показать ещё 7 комментариев
3

Центрирование вещей с помощью табличного дисплея очень удобно... Взгляните на это: http://jsfiddle.net/F9J4B/

Обратите внимание, что это не "макет с таблицей"... Это всего лишь три div, которые используют правила отображения таблицы. Правила семантики не нарушаются =)

HTML

<div class="table">
    <div class="tr">
        <div class="td">
            <p>Hello! I'm a DOM element. <br>I can be whatever size i want, and still still be in the center of things.</p>
        </div>
    </div>
</div>

CSS

body, 
html {
    height:100%
}
.table {
    width: 100%;
    height: 100%;
    display: table;
    background-color: #eee;
}
.tr {
    display: table-row;

}
.td {
    display: table-cell;
    text-align: center;
    vertical-align: middle;
}
2

Центрирование коробки внутри другой коробки:

div{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}

независимо от размера ящиков.

Внешнему ящику может потребоваться position: relative; для позиционирования внутренних ящиков для работы.

1

Медиа-запрос обрабатывает изображение, когда экран становится слишком маленьким.

.vertcenterdiv {
     position: absolute; 
     background-image: url('http://upload.wikimedia.org/wikipedia/commons/2/27/Square_200x200.svg'); 
     background-position: center center; 
     background-repeat: no-repeat; 
     background-size: 100% auto;  
     height: 200px; 
     width: 200px; 
     top: 50%; 
     left: 50%; 
     margin-top: -100px; 
     margin-left: -100px;
}
@media (max-width: 200px) {
     .vertcenterdiv {
          position: absolute; 
          height: 100%; 
          width: 100%; 
          top: 0; 
          left: 0; 
          margin-top: 0; 
          margin-left: 0;
     }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню