Если мы проверим спецификацию, связанную с шириной абсолютно позиционированного элемента , мы можем прочитать это:
'width' и 'right' - это 'auto', а 'left' не является 'auto', тогда ширина уменьшается до нужной.Затем решите для «правильного» * 1006 *
Таким образом, в вашем случае ширина вашего элемента будет уменьшена, чтобы соответствовать:
Расчет ширины сжатия для подгонкианалогично вычислению ширины ячейки таблицы с использованием алгоритма автоматического размещения таблиц.Грубо говоря: рассчитайте предпочтительную ширину, отформатировав содержимое без разрывов строк, кроме тех, где происходят явные разрывы строк, а также рассчитайте предпочтительную минимальную ширину, например, попробовав все возможные разрывы строк.CSS 2.1 не определяет точный алгоритм.В-третьих, рассчитайте доступную ширину: это определяется путем определения «ширины» после установки «влево» (в случае 1) или «вправо» (в случае 3) на 0.
Тогда сжатие ширина подгонки: min (max (предпочтительная минимальная ширина, доступная ширина), предпочтительная ширина).
Чтобы сделать это легко и без учета минимальной / максимальной ширины,ширина вашего элемента будет пытаться соответствовать содержимому, не превышая ширину его родительского контейнера (содержащего блок).Добавляя min / max-width, вы просто добавляете больше ограничений.
Одна идея исправить это, чтобы удалить positon:relative
из родительского элемента, чтобы он больше не содержал блок элемента position:absolute
(* 1024).* это будет исходный содержащий блок , который достаточно широк, чтобы избежать ограничения доступной ширины ).
Затем используйте поле вместо верхнего / левого, чтобы контролировать позицию:
let p = document.getElementById( 'parent' );
let b = true;
setInterval( ()=> {
b = !b;
let w = 10;
if( b ) {
w = 300;
}
p.style.width = `${w}px`
}, 5000 );
#parent {
background-color: cyan;
width: 100px;
height: 25px;
transition: width 2s;
}
#tooltip {
position: absolute;
margin-top: 30px;
min-width: 50px;
max-width: 200px;
background-color: yellow;
padding: 5px;
border: 1px solid black;
}
<div id="parent">
<div id="tooltip">
My long tooltip text that wraps to multiple lines as needed.
</div>
</div>