2013-08-06 8 views
2

Я хочу достичь слева: 0 тела, но я в положении относительно. Есть ли способ сделать это без изменения класса контейнера?Как «очистить» позицию относительно?

Я ищу что-то вроде clear: both плавающих объектов.

HTML:

<div class="container"> 
    <div class="absolute">Content</div> 
</div> 

стиль:

.container { 
    position: relative; 
    left: 100px; /*or any other value*/ 
} 

.absolute { 
    position: absolute; 
    left: 0; 
} 
+3

Если вы добавите товар обратно в тело, вы достигнете 'body: 0'. В противном случае позиционирование всегда будет относиться к '.container'. В зависимости от того, как настроен '.container', вы можете использовать отрицательную левую позицию, но я бы очень рекомендовал против этого. – Kyle

+0

One * fast-way * для решения этой проблемы используется следующий трюк: 'left: -100px' в' .absolute', но я думаю, что это не имеет смысла (по крайней мере для меня). Но подумайте со мной, Лео, почему вы хотите «абсолютное» что-то на экране в относительном слое? –

+0

Я не могу использовать left: -100px, и, к сожалению, я не могу выйти из контейнера. – Leo

ответ

6

Что вы просите нарушает предполагаемое использование абсолютно позиционированием элементов в пределах относительно содержащего блока. CSS2 spec говорит:

Несмотря на то, наружная коробка родитель фактически не смещение, установив его свойство «положение» к «относительно» означает, что его коробка может служить в качестве содержащего блока для позиционируемых потомков.

Любой способ сделать то, что вы просите хак, и вы должны пересмотреть либо (а) почему вам нужна иерархия быть как она есть, или (б) почему вам нужен блок, содержащий быть относительно расположения.

+0

Я действительно не верю в легкое решение, я спросил, ждет ли магов рубить. Я оставлю вопрос открытым, чтобы узнать, что-то придумает. Спасибо за ответ. – Leo

+0

Джонатан прав. Например, если вам нужно только переместить .container 100px вправо, есть много способов сделать это без его позиционирования! –

+0

Это всего лишь пример. – Leo

0
.container { 
    position: relative; 
    left: 100px; /*or any other value*/ 
    overflow: visible 
} 

.absolute { 
    position: absolute; 
    left: 0; 
} 
+1

Вы должны описать свое решение и объяснить, почему он решает проблему ... –

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