2012-01-10 2 views
22

Я пытаюсь сделать div для моей целевой страницы моего веб-центра в самом центре экрана, но он не работает.Попытка центрировать div горизонтально и вертикально на экране

Вот мой код

CSS:

.centerDiv{ 
width:800px; 
margin:0 auto; 
border-radius: 5px; 
background:#111; 
padding:10px;} 

HTML:

<div id="centerDiv" class="centerDiv"> 
    <h1>Title</h1> 
    <p>Text will go here.</p> 
</div> 

Спасибо.

+0

Нужно ли вам поддерживать ie7? – mrtsherman

+1

Я не очень волновался за поддержку ie7, хотя ie8 было бы неплохо. –

ответ

27

Примечание: Если вы пытаетесь центрирования DIV по горизонтали и по вертикали Я предлагаю смотреть в flexbox. Вы по-прежнему должны будете поддерживать резервную поддержку, но flexbox - это будущее, и это потрясающе.

Обновление: flexbox поддерживается всеми modern browsers сейчас.

Прежде всего, необходимо предоставить div статическую ширину и высоту.

Во-вторых, вы должны установить position: absolute; и left: 50%; top: 50%;, то вы должны сделать margin-left и margin-top, которые составляют половину высоты и ширины. Затем он отобразится правильно.

CSS:

.centerDiv{ 
    width: 800px; 
    border-radius: 5px; 
    background: #ccc; 
    padding: 10px; 
    height: 50px; 
    position: absolute; 
    margin-top: -25px; 
    margin-left: -400px; 
    top: 50%; 
    left: 50%; 
} 

http://jsfiddle.net/wJ7dY/

P.S. Я немного изменил стиль, чтобы вы могли прочитать текст. Надеюсь это поможет!

+0

Это прекрасно работает, спасибо. :) –

+3

Рад, что это помогло. Имейте в виду, если вы добавите больше текста, вам нужно будет отрегулировать «height: 50px;» и «margin-top: -25px;» соответственно. Margin-top должен ** ВСЕГДА ** быть половиной общей высоты! (То же самое с 'width' и' margin-left'.) – Jassi

+0

+1 как работает в IE7 и режиме просмотра совместимости. –

1

Попробуйте следующее:

.centerDiv{ 
    position: absolute; 
    top: 50%; 
    height: 400px; 
    margin-top: -200px; /* Half of the height */ 
    left: 50%; 
    width:800px; 
    margin-left: -400px; /* Half of the width */ 
    border-radius: 5px; 
    background:#111; 
    padding:10px; 
} 
13

Этот код (demo) позволяет для любого width и height быть установлены без необходимости обновлять какие-либо другие свойства (например, top = height/2) или полагаться на методы, которые Арен» т хорошо поддерживается (например, display:table; Один недостаток является поддержка старых версий IE не хватает Комбинируя это с другим решением для IE только, вероятно, вы лучше всего

The CSS:...

.absoluteCenter { 
/* Must manually set width/height */ 
width:800px; 
height:500px; 

/* The magic centering code */ 
margin:auto; 
position:absolute; 
top:0;bottom:0; /* Aligns Vertically - Remove for Horizontal Only */ 
left:0;right:0; /* Aligns Horizontally - Remove for Vertical Only */ 

/* Prevent div from overflowing main window */ 
max-width:100%; 
max-height:100%; 
overflow:auto; 
} 

/* IE 7 and Below */ 
:first-child+html .absoluteCenter, 
* html .absoluteCenter { 
/* Place code here to override all above values, and add IE friendly centering */ 
} 

И HTML:

<div class="absoluteCenter"> 
Content of DIV 
</div> 
+0

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

+0

*: first-child + html .absoluteCenter, * html .absoluteCenter {/ * Статический код здесь * /} - И вы «приветствую :) – 0b10011

+0

не работал для меня без статической ширины/высоты. что я делаю неправильно? http://jsfiddle.net/Victornpb/2X6M2/1/ –

0

набора маржа авто вместо 0 авто и вам нужна высота. Я думаю, 100% для вашей цели.

5

Что вы ищете, это display:table и display:table-cell. Этот параметр должен вертикально выравнивать элемент #center в элементе #parent независимо от высоты элемента #center. Я верю, что вам требуется высота элемента #parent.

HTML

<div id="parent"> 
<div id="center"> 
    <h1>Title</h1> 
    <p>Text will go here.</p> 
</div> 
</div> 

CSS

#parent{ 
display: table; 
width: /* Your width */; 
height: /* Your height */; 
} 

#center{ 
position: relative; 
display: table-cell; 
width: /* Your width */; 
height: /* Your height */; 
vertical-align: middle; 
margin: 0 auto; 
} 

Я просто использовал это вчера, используя display:table на body. Этот метод должен быть compatible through to IE8.

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