2015-11-25 3 views
0

Я пытаюсь центрировать абсолютный позиционированный логотип и другие элементы, чтобы следовать за заголовком ширины 100%.Центрирование абсолютного позиционированного поля в быстродействующем месте

Какова процедура центрирования элемента с абсолютным позиционированием и обеспечения его, а остальные элементы, которые я добавлю, будут оставаться центрированными при перемещении от 320 пикселей до 475 пикселей.

Вот код ниже я до сих пор, она сосредоточена на 320px, но не остаются в центре, как я расширяю страницу:

@media (max-width: 475px) and (min-width: 320px) 
#header { 
height: 170px; 
width: 100%!important; 
position:relative; 
} 

#logo 
left: 21%; 
top: -7px; 
position: absolute; 
} 
+0

Ваш CSS в порядке, отсутствует '' {после '# logo', например ... –

+0

Почему вы используете абсолютное позиционирование? Как выглядит ваш HTML-код? –

+0

Как насчет '#logo {margin: auto; Слева направо: 0; right: 0;} ' – Chris

ответ

0

Не уверен, что вы даже нужно медиазапросы для этого.

Как насчет чего-то подобного? Оберните свой логотип и любой другой контент, который хотите сосредоточить в inline-blockdiv, и установите контейнер заголовка на text-align:center.

.header { 
 
    height:100px; 
 
    background-color:grey; 
 
    text-align:center; 
 
} 
 

 
.logo { 
 
    display:inline-block; 
 
    width:100px; 
 
    height:100px; 
 
    background-color:blue; 
 
}
<div class="header"> 
 
    <div class="logo"></div> 
 
</div>

... или, если требуется только некоторые биты, сосредоточенные и другие не:

.header { 
 
    position:relative; 
 
    height:100px; 
 
    background-color:grey; 
 
} 
 

 
.content { 
 
    position:absolute; 
 
    height:80px; 
 
    padding:10px; 
 
    text-align:center; 
 
} 
 

 
.left {  
 
    left:0; 
 
    background-color:red; 
 
} 
 

 
.center { 
 
    left:50%; 
 
    transform:translateX(-50%); 
 
    background-color:blue; 
 
} 
 

 
.right { 
 
    right:0; 
 
    background-color:red; 
 
}
<div class="header"> 
 
    <div class="content left">Left</div> 
 
    <div class="content center">Centered</div> 
 
    <div class="content right">Right</div> 
 
</div>

0

Если вы не должны поддерживать старые браузеры, и вы не против использовать CSS3, тогда вы можете использовать это в своем .logo классе:

left: calc(50% - XXXpx); 

где XXX должна составлять половину ширины вашего логотипа

+0

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

+0

К настоящему времени это очень поддерживается, но если вас это беспокоит, вы можете проверить список совместимости здесь: http://caniuse.com/#search=calc – Vi100

+0

У старого браузера не хватает поддержки, это беспокоиться, но в остальном это отлично работает даже на следующих элементах, которые я добавил: – Molder

0

Другим вариантом будет использовать относительное положение и и запас: 0 авто; вместо абсолюта и процента в левом;

логотип {

margin: 0 auto; 
position: relative; 

}

здесь рабочий пример: http://jsfiddle.net/3yLd2n5q/

надеюсь, что это помогает

+0

В вопросе говорится «абсолютный позиционированный логотип» ... – Vi100

+0

Просто давая варианты ... –

+0

Спасибо, я попробую. Я никогда не могу расшифровать, когда margin: 0 auto будет работать, а когда этого не будет! – Molder

0

Используйте абсолютно позиционирован элемент в качестве контейнера для ваш логотип и другие элементы NTS.

Для центрирования контейнера:

top:50%; 
left: 50%; 
transform: translate(-50%, -50%); 

Затем установите выравнивания текста по центру к центру элементов внутри контейнера.

Вот скрипка - http://jsfiddle.net/0a70ccz1/

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