Проблема вы страдаете от не связано с вашими стилями применяются псевдо элементы. Вы хотите, чтобы абсолютно позиционированный элемент становился потенциально более широким, чем его относительно позиционированный контейнер, который по умолчанию он не будет делать. Вы можете указать подсказки, чтобы они всегда имели ширину, например. 340px
, и это сработает. Однако в данный момент всплывающая подсказка будет не более шириной, чем span
.
Одним из способов (хаки) является расширение ширины элементов span
. Вы можете сделать это, применив большой отступ и отрицательный запас по элементам, следующим образом.
padding: 0 170px;
margin: 0 -170px;
Это расширит ширину пролета, но заставляет его показывать ширину, которая должна иметь из-за отрицательных полей. Однако есть плохие побочные эффекты от этого. Вы можете видеть это в this Fiddle (я просто применил изменения к вашим). Следует отметить, что всплывающая подсказка появляется, когда мышь находится близко к тексту, потому что диапазон расширяется. Кроме того, всплывающая подсказка может появиться в неправильном положении при разрыве линии.
Возможно более приятный подход, а именно наличие абсолютно позиционируемого контейнера, который всегда имеет ширину 340px
и в этом случае имеется фактическая подсказка, с max-width: 340px
. Однако это требует дополнительного элемента контейнера и, следовательно, невозможно с вашим подходом псевдоэлемента ... Если вы хотите это увидеть, я могу создать демоверсию.
Я не понимаю, какую ширину вы на самом деле хотите. вы хотите его «на основе текстового контента» _how_? – andi