2013-02-11 1 views
15

У меня есть абсолютно позиционированный блок текста внутри относительно позиционированного контейнера. Абсолютно позиционированный элемент превышает правую границу его контейнера.Сохранение нормального слова обертывания внутри абсолютно позиционированного контейнера

Проблема в том, что текст не обертывается, как обычно; это преждевременно нарушение, а не расширяется до его определяется max-width:

Наблюдаемое поведение:

enter image description here

Желаемая поведение

enter image description here

HTML/CSS ():

<style> 
.container { 
    position: relative; 
    width: 300px; 
    background: #ccc; 
    height: 100px; 
} 

.text { 
    position: absolute; 
    max-width: 150px; 
    left: 290px; 
    top: 10px; 
    background: lightblue; 
} 
</style> 

<div class="container"> 
    <div class="text">Lorem ipsum dolor sit amet</div> 
</div> 

Примечание: Пара изменений, которые появляются, чтобы достичь желаемого поведения, но не совсем то, что я ищу, включают в себя:

  • определения min-width: 150px на .text (текст может быть просто одним словом, и я не хочу, чтобы контейнер был увеличен)
  • позиционирование .text. по отношению к документу, а не к .container (она должна появиться рядом с контейнером, даже когда браузер изменен)
+0

Вам нужно один из них http://www.zazzle.com/css_is_awesome_mug-168716435071981928 – asawyer

ответ

12

Попробуйте использовать position: relative; на .text

EDIT: Кроме того, положить его в абсолютном позиционированноге обертки с пользовательского максимальной шириной

CSS

.container { 
    position: relative; 
    width: 300px; 
    background: #ccc; 
    height: 300px; 
} 

.wrap_text { 
    position: absolute; 
    max-width: 200px; 
    top: 10px; 
} 

.text { 
    position: relative; 
    left: 290px; 
    background: lightblue; 
} 

И HTML:

<div class="container"> 
    <div class="wrap_text"> 
     <div class="text"> 
      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
     </div> 
    </div> 
</div> 
6

изменить абсолютную позицию относительно и обернуть .text в абсолютно позиционируемый элемент.

http://jsfiddle.net/WmcjM/4/

.container { 
    position: relative; 
    width: 300px; 
    background: #ccc; 
    height: 300px; 
} 

.text { 
    position: relative; 
    /*min-width: 200px;*/ 
    left: 290px; 
    background: lightblue; 
} 

.wrap { 
    position: absolute; 
    max-width: 200px; 
    top: 10px; 
} 
+0

Интересно .. почему это работает? Каково заданное поведение для элемента 'position: relative' внутри другого элемента' position: relative'? – Emmett

+0

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

+1

Правильно, но, похоже, «знать, как широко быть», если '.text' имеет' left: 0' вместо 'left: 290px' (т. Е. Когда текстовое поле не превышает границу контейнера). – Emmett