Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.01.2011, 00:21
Новичок на форуме
Отправить личное сообщение для archytector Посмотреть профиль Найти все сообщения от archytector
 
Регистрация: 10.01.2011
Сообщений: 2

Вычислить реальную ширину элемента без его отрисовки
Итак, изначальная задача:
Есть таблица из двух колонок. Необходимо ширину первой поставить по максимальному контенту, но не более 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, содержащий копию этого элемента и берём его размер. Начальство сказало, что это хакерство, и надо писать собственную функцию, вычисляющую размер. Главная проблема, как я это себе представляю, это вычислить ширину надписи, потому что все границы, отступы и прочее из стилей извлечь можно.
Кто может чего посоветовать на эту тему?
Ответить с цитированием
  #2 (permalink)  
Старый 10.01.2011, 00:29
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,234

Сообщение от archytector
Начальство сказало, что это хакерство, и надо писать собственную функцию, вычисляющую размер.
объясни им, что они ошибаются, и это наиболее верное решение.
как раз таки то, что они просят - это хакерство.

правда, незачем создавать невидимый элемент, если уже есть на странице видимый, у которого можно все узнать
Ответить с цитированием
  #3 (permalink)  
Старый 10.01.2011, 00:41
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

Поищи ,была на форуме уже тема узнать длину текста в пикселях
Ответить с цитированием
  #4 (permalink)  
Старый 10.01.2011, 01:39
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от archytector
Необходимо ширину первой поставить по максимальному контенту, но не более 50%
надо максимально ужать контент по ширине? <ширина первого столбца> = max(<ширина изображения>, <ширина слова>) ?

а вообще, исходя из того, что ты сказал, начальство просто провоцирует тебя на хакерские решения. Раз оно такое умное, я думаю ему стоит для начала ознакомиться с алгоритмом определения ширины столбцов

для нормального решения проблемы тебе надо показать таблицу с реальной информацией (без корректировок ширины) и сказать, что не нравится начальству в получившемся результате

Последний раз редактировалось x-yuri, 10.01.2011 в 01:44.
Ответить с цитированием
  #5 (permalink)  
Старый 10.01.2011, 08:13
Аватар для Vulkan
Профессор
Отправить личное сообщение для Vulkan Посмотреть профиль Найти все сообщения от Vulkan
 
Регистрация: 25.05.2010
Сообщений: 511

А что обычный offsetWidth не подойдёт?
Кликните по тексту в примере ниже:
<span onclick="alert(this.offsetWidth+'px');">Текст</span>
Ответить с цитированием
  #6 (permalink)  
Старый 11.01.2011, 22:17
Новичок на форуме
Отправить личное сообщение для archytector Посмотреть профиль Найти все сообщения от archytector
 
Регистрация: 10.01.2011
Сообщений: 2

К сожалению я забыл уточнить, что используется свой достаточно сложный фреймворк, поэтому и есть необходимость узнать ширину текста + картинки. Настройкой css тут не обойтись.
To Vulkan: данное поле покажет ширину отображаемой части. Но текст может быть обрезан за счёт "overflow: hidden;"
В данный момент пытаюсь реализовать вышеуказанная, используя canvas.measureText() и плюсуя отступы и границы из стилей. Пока не очень работает
Ответить с цитированием
  #7 (permalink)  
Старый 11.01.2011, 22:33
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от archytector
данное поле покажет ширину отображаемой части. Но текст может быть обрезан за счёт "overflow: hidden;"
В данный момент пытаюсь реализовать вышеуказанная, используя canvas.measureText() и плюсуя отступы и границы из стилей. Пока не очень работает
мышки резались, кололись, но продолжали есть кактус...
Ответить с цитированием
  #8 (permalink)  
Старый 12.01.2011, 09:26
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,781

Сообщение от archytector
Есть таблица из двух колонок. Необходимо ширину первой поставить по максимальному контенту, но не более 50%.
Эти 50% от чего исчисляются? От ширины всей таблицы?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно задать максимальную ширину элемента theo_ jQuery 10 30.03.2020 00:45
Надо узнать наличие скролла и его ширину Snipe Элементы интерфейса 1 26.11.2010 15:00
Обработка события элемента внутри создавшего его объекта pauluss Общие вопросы Javascript 10 10.09.2010 17:01
Как определить ширину элемента Kein Events/DOM/Window 8 31.05.2010 16:27
Массивы удаление элемента и вставка на его место другого mycoding Общие вопросы Javascript 1 19.04.2010 22:30