#javascript #getboundingclientrect
#javascript #getboundingclientrect
Вопрос:
Предположим, у нас есть текст, переполняющий его контейнер div:
console.log(document.querySelector("p").getBoundingClientRect().width)
#myDiv {
width: 20px;
background-color: wheat;
border: 1px solid #ddd;
}
<div id="myDiv">
<p>foobarfoobarfoobarfoobarfoobar</p>
</div>
Как вы можете видеть, div контейнера имеет фиксированную ширину (20 пикселей), но даже если текст явно больше этого getBoundingClientRect()
, он не превышает это значение контейнера.
Есть ли какая-либо альтернатива для получения ограничивающего прямоугольника текстового элемента в этой ситуации?
Комментарии:
1. Но это значение правильное. Если вы поставите другой
<div>foo bar</div>
после своего оригинала<div>
, а затем установитеdiv { display: inline-block; }
, вы увидите, что оба<div>
s будут перекрываться, потому что фактический прямоугольник занимает только ширину20px
, даже если за этой границей происходит дополнительный рендеринг. В любом случае, зачем вам это нужно?2. @user4642212 «В любом случае, зачем вам это нужно?» Мне нужно вычислить длину текста на странице, которую HTML / CSS я не могу изменить.
Ответ №1:
Попробуйте настроить display: inline-block;
p
элемент так, чтобы он имел определенную ширину:
console.log(document.querySelector("p").getBoundingClientRect().width)
#myDiv {
width: 20px;
background-color: wheat;
border: 1px solid #ddd;
}
p {
display: inline-block;
}
<div id="myDiv">
<p>foobarfoobarfoobarfoobarfoobar</p>
</div>