2012-01-11 6 views
-1

Мне нужна помощь в центрировании одного DIV с помощью DIV.Центр DIV Внутри DIV?

Я хочу иметь один контейнер DIV, который автоматически ширина занимать всю ширину экрана (назовем его headerContainer

В headerContainer, я хочу еще 3 DIVs:.

  • A левый ДИВ (400px в ширину)
  • центр DIV (100px в ширину)
  • право DIV (200px в ширину).

Я хочу, чтобы центр DIV находился прямо в середине экрана. Прямо сейчас я могу получить его только в центре между левым и правым DIV.

Спасибо за любую помощь.

ответ

0

Что вы можете сделать, это добавить еще один div на конце, который делает обе стороны равными, и установить visibility: hidden; (не display: none;); таким образом он будет центрировать средний div.

Например, в этом случае у вас будет один @ 400px, другой @ 100px, другой @ 200px и еще один, скрытый, 200px.

С уважением, Richard

1

Это работает.

.headerContainer{ 
    width:auto !important; 
} 
.leftDiv{ 
    float:left; 
    width:400px; 
} 
.rightDiv{ 
    float:right; 
    width:200px; 
} 
.centerDiv{ 
    display:inline; 
    width:100px; 
    margin-left:auto; 
    margin-right:auto; 
} 

.

<div class="headerContainer"> 
<div class="leftDiv"></div> 
<div class="centerDiv"></div> 
<div class="rightDiv"></div> 
</div> 
+0

Ты код не работает. 'rightDiv' переносится на новую строку. См .: http://jsfiddle.net/Xxwrm/show – Sparky

+0

Это сработало для меня! – Ibanez

+0

Я добавил правый div после центра div, и это привело к тому, что правый div исчез. Вы должны добавить правый div перед добавлением центрального div. – Ibanez

0
<div class="headerContainer"> 
<div class="leftDiv">left</div> 
<div class="rightDiv">right</div> 
<div class="centerDiv">center</div> 
</div> 

Этот HTML с этим CSS будет работать. Я покрасил DIV, чтобы сделать его очевидным.

.headerContainer{ 
    width:auto; 
} 
.leftDiv{ 
    float:left; 
    width:400px; 
    background:pink; 
} 
.centerDiv{ 
    width:100px; 
/* 
    margin-left:auto; 
    margin-right:auto; 
*/ 
    margin:0 auto; 
    background:cyan; 
} 
.rightDiv{ 
    float:right; 
    width:200px; 
    background:lightgray; 
} 

Однако, если экран не 700px широко, вы получите некоторую обертку.

Вот скрипку для него тоже: http://jsfiddle.net/johnpapa/9bN2p/

+0

По существу, вы исправили сломанный код Тревиса, но я не вижу веских оснований полагать '! Important' на ширину' .headerContainer', особенно если это уже поведение 'div' по умолчанию. Пожалуйста, объясните это. Сокращение CSS можно использовать на полях для '.centerDiv',' margin: 0 auto; 'Смотрите: http://jsfiddle.net/Xxwrm/4/show – Sparky

+0

@ Sparky672 - я обновил сообщение, чтобы показать сокращенную маржу синтаксис, и оставил старый стиль в своих комментариях. Я также удалил! Важно, потому что это действительно не нужно здесь вообще. «! important» - это способ сказать браузеру применить этот стиль, даже если другое правило пытается его переопределить. Я применяю его только тогда, когда вижу конфликт. Вот сообщение на тему: http://webdesign.about.com/od/css/f/blcssfaqimportn.htm –

+0

Спасибо. Я понимаю значение '! Important', я просто ставил под сомнение его ненужное использование для этого случая. – Sparky

0

Вы можете использовать современное решение граждения flex концепции CSS3.

.parent { 
 
    display: flex; 
 
    height: 300px; 
 
    /* Or whatever */ 
 
    background-color: green; 
 
} 
 
.child { 
 
    width: 100px; 
 
    /* Or whatever */ 
 
    height: 100px; 
 
    /* Or whatever */ 
 
    margin: auto; 
 
    /* Magic! */ 
 
    background-color: yellow; 
 
}
<div class="parent"> 
 
    <div class="child ">Div1</div> 
 
</div>

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