murzix
@murzix
Я что-то нажал и оно само

Как рассчитать ширину всплывающего окна под размер строки?

Имеем строку известной длинны. Нам нужно показать всплывающее окно с явным указанием ширины. Как рассчитать ширину этого окна, чтобы влезла вся строка?

Умножать .length на ширину самой широкой буквы (Ж или Щ) - не предлагать. Для больших строк не подходит.
  • Вопрос задан
  • 501 просмотр
Решения вопроса 1
а width: auto - не подойдет?
странная задача
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Нормального варианта решения этой задачи, насколько я знаю, не существует.
Я вижу два костыля:
  1. Хранить ширину каждого возможного символа и собирать из них общую ширину. То ещё удовольствие. Плюс, шрифт у пользователя может быть какой угодно.
  2. Делать окно какой-то фиксированной ширины, вставлять туда текст и проверять высоту - если равна одной строке, то пытаться сжимать окно на какое-то количество пикселей, пока текст не перестанет помещаться. Если высота больше одной строки, то последовательно увеличивать. Нужно подобрать способ при котором окно не будет мелькать перед глазами пользователя, но который позволит получать корректные размеры окна и обрабатывать всякие граничные значения.
Ответ написан
Комментировать
alsopub
@alsopub
Попробуйте jsfiddle.net/philfreo/MqM76
Взято отсюда stackoverflow.com/questions/1582534/calculating-te...
Но у меня есть сомнения что это будет всегда адекватно работать.
Ответ написан
Комментировать
На длину строки сильно влияет CSS, потому, чтобы рассчитать её виртуально, нужно как минимум знать окружение в которое она вставится. И даже если знать всё-равно это сложно и глупо. Мне видится самым простым обернуть строку в элемент с white-space: nowrap и в момент рендера брать ширину этого элемента через offsetWidth и ставить её окну.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы