2015-05-06 3 views
9

Итак, у меня есть родительский элемент, расположенный относительно, чтобы позволить элементу всплывающей подсказки располагаться внутри внутри. Я знаю, что вам необходимо добавить «left: 0, right: 0», так что ширина элемента все еще может быть установлена ​​в auto, что я и сделал. Однако мой родительский элемент имеет фиксированную ширину, с которой всплывающая подсказка становится сдержанной, поэтому автоматическая ширина не может выходить за ее пределы, есть ли какой-либо путь вокруг этого?CSS Позиционированный Абсолютный Элемент, автоматическая ширина вне границ родителя?

CSS:

.parent { 
    position: relative; 
    width: 100px; 
    height: 100px; 
} 

.tooltip { 
    position: absolute; 
    top: 0; 
    left: 0; 
    right: 0; 
    margin: 0 auto; 
    text-align: center; 
    width: auto; 
    padding: 5px 10px; 
} 

элементы:

<div class="parent"> 
    <div class="tooltip">Text goes here</div> 
</div> 

Нет JS пожалуйста, ищет решение CSS, спасибо!

+0

'{право: -20px}' – isherwood

+0

Похоже, ваши потребности CSS '.tooltip' вместо' .child' ... –

+0

@HonoreDoktorr Это была просто ошибка при смене названия класса здесь. – Danny

ответ

25

Не устанавливая как left и right на .tooltip и установка white-space: nowrap должны это сделать:

.tooltip { 
    position: absolute; 
    top: 0; 
    left: 0; 
    margin: 0 auto; 
    text-align: center; 
    width: auto; 
    padding: 5px 10px; 
    white-space: nowrap; 
} 

Working example.

Вам необходимо использовать this solution чтобы центрировать абсолютный элемент. Однако для этого требуется дополнительный элемент. Demo

+0

Спасибо, это работает в термины ширины, но теперь мой элемент уже не сосредоточен внутри родителя, к сожалению! – Danny

+1

Для этого вы можете использовать «margin-left: -50%» (а не «margin: 0 auto», который не будет центрировать абсолютно позиционированные блоки), хотя есть проблемы с отсечением, когда '.parent' находится на в левой части страницы. См. Http://jsfiddle.net/xkok9v4p/2/ для примера. –

+0

@isherwood на самом деле прав, мой второй пример только * кажется * для работы b/c длины моего примера всплывающей подсказки, но этого нет: http://jsfiddle.net/xkok9v4p/4/ –

1

Я не видел эту проблему раньше, но то, что я думаю, происходит, заключается в том, что width: auto; автоматически наследует свойства своего родителя. Поэтому либо вы должны ввести число в (width: 50px;), либо процент (width: 50%).

+0

Я хочу, чтобы ширина была текучей на основе ее содержимого, на данный момент она не может превышать 100 пикселей родителя, текст переполняется за ее пределами, но фактическая ширина элемента составляет всего 100 пикселей. – Danny

2

Если .parent может быть встроенным, вы могли бы сделать .tooltip визуализации в виде таблицы, и она будет Autosize, чтобы соответствовать его содержимое, но в отличие от использования white-space:nowrap, он также поддерживает max-width.

.parent { 
    display: inline; 
    position: relative; 
} 

.tooltip { 
    position: absolute; 
    display: table; 
    top: 0; 
    left: 0; 
    text-align: center; 
    padding: 5px 10px; 
    max-width: 200px; 
} 
+1

Это должен быть принятый ответ imo. – StephenRios

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