Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.07.2018, 21:02
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

Посчитать длину элемента
Здравствуйте, скажите, как можно посчитать длину в пикселях длину строки.
Например я ввожу слово: hello world и он мне показывает сколько длина этой фразы.
Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 23.07.2018, 21:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Начинающий-Js-кодер,
всё зависит от элемента и его css в котором будет этот текст.
Ответить с цитированием
  #3 (permalink)  
Старый 23.07.2018, 21:08
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

Ну элемент пусть будет div и он должен создавать динамически с шириной взятой от ширины слова+5px слева и справа.
Ответить с цитированием
  #4 (permalink)  
Старый 23.07.2018, 21:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Начинающий-Js-кодер,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
   div {
      border: 2px solid green;
   }

  </style>


</head>

<body>
  <script>
    function fn(str)
    {
      var container = document.createElement("div")
      container.appendChild(document.createTextNode(str));
      document.body.appendChild(container);
      container.style.display = "inline"
      var width = container.offsetWidth;
      container.style.display = "";
      container.style.width = width + "px";
      container.style.padding = "0 5px";
    }
    fn("hello world")
  </script>

</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 23.07.2018, 21:35
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

Спасибо. Гениально. Но вопрос:
container.style.display = "inline"
...
	      container.style.display = "";

Зачем именно так делать?
Ответить с цитированием
  #6 (permalink)  
Старый 23.07.2018, 21:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Начинающий-Js-кодер,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
   div.test {
      border: 2px solid green;
      display: inline-block;
      padding: 0 5px;
      text-align: center;
   }

  </style>


</head>

<body>
  <script>
    function fn(str)
    {
      var container = document.createElement("div")
      container.appendChild(document.createTextNode(str));
      document.body.appendChild(container);
      container.classList.add("test")
    }
    fn("hello world")
  </script>

</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 23.07.2018, 21:40
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

Гений!
Ответить с цитированием
  #8 (permalink)  
Старый 23.07.2018, 21:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от Начинающий-Js-кодер
Зачем именно так делать?
div по умолчанию display: block; а значит он растянут максимально,
container.style.display = "inline" сужаем ширину до текста (надобы word-wrap: break-word; ещё)
container.style.display = ""; возращаем display=block
Ответить с цитированием
  #9 (permalink)  
Старый 23.07.2018, 21:48
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

Теперь понял. Идеальное решение.
Ответить с цитированием
  #10 (permalink)  
Старый 24.07.2018, 14:21
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

Хотел спросить:
Вот допустим есть у нас не 1 слово, а 5(или любое другое) и мы их должны вывести каждый в своем блоке отдельно, то есть так:
hello->world->hi->javascript->forum
Но расстояние между блоками должно быть строго 30 пикселей, тогда лучше делать не через inline-block, о пределять ширину каждого блока,потом прибавлять 30 пикселей и это будет позиция второго блока, так?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не корретная работа выбора элемента в динамическом <select> CTABP Элементы интерфейса 3 19.09.2017 15:24
Изменить класс родительского элемента STyLe Общие вопросы Javascript 1 29.05.2014 20:21
как узнать размер в пикселях элемента созданного элемента span Faab Общие вопросы Javascript 2 09.11.2013 16:46
Замена DOM элемента другим элементом MaxXxaM Events/DOM/Window 5 04.05.2013 01:24
Браузер не успевает определить высоту вновь созданного через XMLHttpRequest элемента Lockpickup AJAX и COMET 17 25.04.2011 17:58