Я застрял с моим кодом HTML/CSS, где мне нужно горизонтально центрировать два div (A, B) с фоновыми изображениями в одном абсолютно позиционированном div (C).
Беринга:
position
.Вот моя сцена, где мне удалось расположить (A) div внутри (C) http://jsfiddle.net/meridius/DGexR/ Но независимо от того, что я делаю, я не могу выполнить остальные.
РЕДАКТИРОВАТЬ:
Вот как это должно выглядеть как
Предварительный просмотр кода:
Для рабочего примера (с фоновым изображением) см. Вышеупомянутую скрипку.
HTML
<div class="desk">
<div class="figure">
<div class="type sprites-sachy sprite-WKing"></div>
<div class="special sprites-sachy sprite-halo"></div>
</div>
</div>
CSS
.desk { /* this class must not be touched */
position: absolute;
top: 129px;
left: 202px;
border: 1px solid #FF0000;
width: 65px;
height: 65px;
padding: 0;
float: left;
}
.figure {
bottom: 0;
left: 50%;
position: absolute;
}
.type {
margin-left:-50%;
z-index:2;
}
.special {
border: 1px solid #008000;
z-index:1;
/* display:none; uncomment this to see .figurka centered how it is supposed to */
}
ЗАМЕТКА:
Я бы хотел, чтобы этот вопрос не закрывался как слишком локализованный, поэтому позвольте мне сначала заявить, что я считаю, что я не единственный, у кого проблемы с позиционированием (и центрированием) элементов в CSS.
Когда вы используете display: none
или position: absolute
, .special
вынимается из потока, а .type
центрируется правильно.
Чтобы .special
горизонтально, вы можете использовать технику из CSS-TRICKS: центрирование элементов ширины и высоты в процентах: переместите его вверх и половину ширины влево
.special {
position: absolute;
top: 0;
transform: translate(-50%, 0);
}
Единственный элемент слева перемещается. .special
за .type
с z-index: -1
.
Посмотреть полный JSFiddle
Поскольку вы знаете, что ширина .sprite-halo
составляет 78px
, вы всегда можете использовать пиксельные значения, конечно
.special {
position: absolute;
top: 0;
left: -39px;
}
См. Также @Bipin Kumar Pal ответ.
transform
которое является экспериментальным, и IE поддерживает его только с v9 и выше. Я надеюсь, что смогу убедить нескольких людей, которых я знаю, используя v8 на WinXP, перейти на более зрелый браузер. Если вам случится знать, как добиться того же результата без transform
, я был бы более чем благодарен. Если нет, то все равно спасибо.
.sprite-halo{ background-position: 0 -1700px; width: 78px; height: 12px; background-color:darkgreen; position:absolute; top:0; left:-40px; z-index:-5;}
используйте этот код. Моя сторона работает.
Итак, вы получили эту структуру:
<div class="desk">
<div class="figure">
<div class="type"></div>
<div class="special"></div>
</div>
</div>
Убедитесь, что.desk является абсолютным или относительным позиционированием (что вы сделали). Обратите внимание, что поплавок ничего не сделает. На данный момент я предполагаю, что.type 200px h/200px w и.special - 150px h/150px w.
.desk { position: absolute; .. }
.desk .figure { position: absolute; width: 200px; height: 200px; bottom: 0; left: 50%; margin-left: -100px; }
.desk .type { position: absolute; z-index: 2; margin-left: -100px; left: 50%; top: 0; }
.desk .special { position: absolute; z-index: 1; margin-left: -75px; left: 50%; top: 0; }
Это.