Я поискал и не нашел этого. Я пытаюсь получить ширину div, но если в нем есть десятичная точка, он округляет число.
Пример:
#container{
background: blue;
width: 543.5px;
height: 20px;
margin: 0;
padding: 0;
}
Если я это сделаю, $('#container').width();
он вернет 543 вместо 543,5. Как мне заставить его не округлять число и возвращать полное 543,5 (или любое другое число).
javascript
jquery
css
MoDFoX
источник
источник
Ответы:
Используйте собственный
Element.getBoundingClientRect
стиль, а не стиль элемента. Он был представлен в IE4 и поддерживается всеми браузерами:Примечание. Для IE8 и ниже см. Примечания «Совместимость браузера» в документации MDN.
Показать фрагмент кода
источник
width
иheight
свойства не поддерживаются во всех версиях IE, поэтому в некоторых случаях они должны быть рассчитаны , прежде чем они могут быть использованы: stackoverflow.com/questions/11907514/...getBoundingClientRect()
размеры вычисляются после применения преобразований CSS .display: none
).Ответ Росса Аллена - хорошая отправная точка, но использование getBoundingClientRect (). Width также будет включать отступы и ширину границы, что не относится к функции ширины jquery :
Если вы хотите получить
width
значение с точностью, вам придется удалить отступ и границу следующим образом:источник
.replace("px", "")
какparseInt
следует удалить , что для вас.parseFloat()
Возможно, использовать ?innerWidth()
будучи частью исходной проблемы, я опасаюсь, что расчет ширины границы здесь также работает с округленными значениями.Просто хотел добавить сюда свой опыт, хотя вопрос старый: консенсус, приведенный выше, похоже, заключается в том, что округление jQuery эффективно так же хорошо, как и необоснованный расчет, но это не похоже на то, что я делал .
Обычно мой элемент имеет плавную ширину, но содержимое изменяется динамически через AJAX. Перед переключением содержимого я временно блокирую размеры элемента, чтобы мой макет не раскачивался во время перехода. Я обнаружил, что с помощью jQuery вот так:
вызывает некоторую забавность, например, есть субпиксельные различия между фактической шириной и расчетной шириной. (В частности, я увижу, как слово перескакивает с одной строки текста на другую, указывая на то, что ширина была изменена, а не просто заблокирована.) Из другого вопроса - Получение фактической ширины элемента с плавающей запятой - я обнаружил out,
window.getComputedStyle(element).width
который вернет необоснованный расчет. Поэтому я изменил приведенный выше код на что-то вродеА с ЭТОМ кодом - никаких забавных подпрыгиваний! Этот опыт, кажется, предполагает, что необоснованное значение действительно имеет значение для браузера, верно? (В моем случае это версия Chrome 26.0.1410.65.)
источник
Для этого можно использовать
getComputedStyle
:источник
Используйте следующее, чтобы получить точную ширину:
источник
style.width