Использование абсолютно позиционированного элемента внутри встроенного блочного элемента в Opera

Я продолжаю получать странные результаты в Opera 10.60, пытаясь абсолютно расположить блочный элемент внутри встроенного блочного элемента.

Образец кода:

<html><head><style type="text/css">
div.container {
    position: relative;
    display: inline-block;
    padding: 5px 100px;
    border: 1px solid red; 
}
div.block {
    display: block; 
    position: absolute; 
    top: 0px; 
    right: 0px; 
    border: 2px solid brown;
}
</style></head><body>

<div class="container">
  <div class="block">(>O.o)></div>
  Quick brown block <a href="#">jumps</a> over relative div. 
</div>

</body></html>

Opera позиционирует .block относительно последнего встроенного элемента (в этом примере) внутри того же родителя (.container), вместо того, чтобы позиционировать его относительно родителя.

Я что-то упустил, или это просто ошибка, и я должен искать наоборот?


person smugglerFlynn    schedule 21.07.2010    source источник
comment
в чем идея display:block для относительно позиционированного элемента? РЕДАКТИРОВАТЬ: неважно, я пропустил вопрос. Разве вы не можете создать какой-то встроенный элемент (например, span), чтобы поместить в него div?   -  person Robbert    schedule 21.07.2010


Ответы (2)


оберните свой контент в div или что-то еще, тогда это сработает. http://jsbin.com/isuke3/edit

person Rito    schedule 21.07.2010

Изменить position: relative; на position: absolute;

и он будет правильно выравниваться в браузерах. :)

person test    schedule 21.07.2010
comment
Это работает, да. Но на моем веб-сайте у меня есть уведомления, которые сделаны с кодом, аналогичным образцу, и я не могу так просто расположить их вокруг, не нарушая разметку. Похоже, я могу воспользоваться вашим советом и обернуть каждый абсолютно позиционированный .container другим нормально позиционированным блоком. Однако это удвоит длину кода :-) - person smugglerFlynn; 21.07.2010