Вычислить реальную ширину элемента без его отрисовки
Итак, изначальная задача:
Есть таблица из двух колонок. Необходимо ширину первой поставить по максимальному контенту, но не более 50%. Контент может представлять собой или <div class="some_style">Text</div> или <div class="some_style"> <img class="some_style_2" src="/images/image.gif" id="some_id"> <div class="some_style_3" id="some_id_2">Text</div> </div> Таким образом задача преобразуется в: Необходимо с учётом используемых стилей посчитать ширину контента в пикселях. На просторах и-нета было найдено решение, что мы отрисовываем невидимый span, содержащий копию этого элемента и берём его размер. Начальство сказало, что это хакерство, и надо писать собственную функцию, вычисляющую размер. Главная проблема, как я это себе представляю, это вычислить ширину надписи, потому что все границы, отступы и прочее из стилей извлечь можно. Кто может чего посоветовать на эту тему? |
Цитата:
как раз таки то, что они просят - это хакерство. правда, незачем создавать невидимый элемент, если уже есть на странице видимый, у которого можно все узнать |
Поищи ,была на форуме уже тема узнать длину текста в пикселях
|
Цитата:
а вообще, исходя из того, что ты сказал, начальство просто провоцирует тебя на хакерские решения. Раз оно такое умное, я думаю ему стоит для начала ознакомиться с алгоритмом определения ширины столбцов для нормального решения проблемы тебе надо показать таблицу с реальной информацией (без корректировок ширины) и сказать, что не нравится начальству в получившемся результате |
А что обычный offsetWidth не подойдёт?
Кликните по тексту в примере ниже: <span onclick="alert(this.offsetWidth+'px');">Текст</span> |
К сожалению я забыл уточнить, что используется свой достаточно сложный фреймворк, поэтому и есть необходимость узнать ширину текста + картинки. Настройкой css тут не обойтись.
To Vulkan: данное поле покажет ширину отображаемой части. Но текст может быть обрезан за счёт "overflow: hidden;" В данный момент пытаюсь реализовать вышеуказанная, используя canvas.measureText() и плюсуя отступы и границы из стилей. Пока не очень работает |
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 13:16. |