В jQuery есть функции height () и width (), которые возвращают высоту или ширину в пикселях в виде целого числа ...
Как я могу получить отступ или значение поля элемента в пикселях и как целое число, используя jQuery?
Моей первой идеей было сделать следующее:
var padding = parseInt(jQuery("myId").css("padding-top"));
Но если, например, в ems дано дополнение, как я могу получить значение в пикселях?
Глядя на плагин JSizes, предложенный Крисом Пебблом, я понял, что моя собственная версия была правильной :). jQuery всегда возвращает значение в пикселях, так что просто разобрать его в целое число было решением.
Благодаря Крис Пеббл и Ян Робинсон
javascript
jquery
css
Малик Амурлаев
источник
источник
parseInt
. Цитируя MDN: " radix Int от 2 до 36, представляющее основание (основание в математических системах счисления) вышеупомянутой строки. Укажите 10 для десятичной системы счисления. Всегда указывайте этот параметр, чтобы избежать путаницы читателя и гарантировать предсказуемое поведение Разные реализации дают разные результаты, когда основание не указано, обычно значение по умолчанию равно 10 ". См .: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Ответы:
Вы должны быть в состоянии использовать CSS ( http://docs.jquery.com/CSS/css#name ). Возможно, вам придется быть более конкретным, например, «padding-left» или «margin-top».
Пример:
CSS
JS
Результат 10px.
Если вы хотите получить целочисленное значение, вы можете сделать следующее:
источник
JSizes
плагин из другого ответа (который я в итоге использовал) возвращает целое число, когда возвращаемое значение передаетсяParseInt(...)
, только FYI.parseInt($('a').css('margin-top').replace('px', ''))
.css()
равно будет возвращать значение с «px» в конце?Сравните внешнюю и внутреннюю высоту / ширину, чтобы получить общий запас и отступ:
источник
that.outerHeight(true) - that.outerHeight()
даст общие вертикальные поля, потому что externalHeight () будет включать отступы и границы, но исключать поля. См. Api.jquery.com/outerWidth/ .Функция parseInt имеет параметр radix, который определяет систему счисления, используемую при преобразовании, поэтому вызов
parseInt(jQuery('#something').css('margin-left'), 10);
возвращает левое поле как целое число.Это то, что использует JSizes.
источник
parseInt('auto', 10);
(auto
является действительнымmargin-left
).ПОЖАЛУЙСТА, не загружайте другую библиотеку только для того, чтобы сделать то, что уже доступно изначально!
jQuery
.css()
для начала конвертирует% и em в пиксельные эквиваленты,parseInt()
удаляет'px'
из конца возвращаемой строки и конвертирует в целое число:http://jsfiddle.net/BXnXJ/
источник
Вот как вы можете получить окружающие размеры:
Обратите внимание, что каждая переменная,
paddingTopBottom
например, содержит сумму полей с обеих сторон элемента; то естьpaddingTopBottom == paddingTop + paddingBottom
. Интересно, есть ли способ получить их отдельно. Конечно, если они равны, вы можете разделить на 2 :)источник
IE 7
. См .: stackoverflow.com/questions/590602/…Эта простая функция сделает это:
Использование:
источник
auto
,inherit
а%
ценностиNaN
это зависит от браузера. Насколько я знаю, jQuery не нормализуется в.css()
отличие от.width()
&.height()
Parse int
возвращает 0 для 0px
источник
Вы можете просто взять их, как с любым атрибутом CSS :
Вы можете установить их с помощью второго атрибута в методе css:
РЕДАКТИРОВАТЬ: Если вам нужно только значение пикселя, используйте
parseInt(val, 10)
:источник
хорошо, просто чтобы ответить на оригинальный вопрос:
вы можете получить отступ как целое число, которое можно использовать следующим образом:
Если вы определили другое измерение, например, px, просто замените «ems» на «px». parseInt интерпретирует строковую часть как неправильное значение, поэтому важно заменить его ... ничем.
источник
Вы также можете расширить фреймворк jquery чем-то вроде:
Тем самым добавляется функция в ваши объекты jquery под названием margin (), которая возвращает коллекцию, например функцию смещения.
FX.
источник
Не используйте string.replace ("px", ""));
Используйте parseInt или parseFloat!
источник
Я, вероятно, использую github.com/bramstein/jsizes плагин jquery для отступов и полей очень удобным способом, спасибо ...
источник
Бесстыдно принятый от Quickredfox .
Обновить
Изменено,
parseInt(val, 10)
так как это быстрее, чемparseFloat
.http://jsperf.com/number-vs-plus-vs-toint-vs-tofloat/20
источник
Не до некро, но я сделал это, что может определять пиксели на основе различных значений:
Таким образом, мы учитываем размер и авто / наследование.
источник
parseInt()
это неправильно, ширина или высота могут быть плавающими точками.