Преобразовать непиксельное значение CSS в px

0

Поскольку некоторые параметры измерения в css не всегда находятся в значениях px, как может быть такое непиксельное значение, преобразованное в px?

Пусть

var x = $('#element').css('parameter');

и пусть говорят, что значение такой переменной x равно 1.2em или какой-либо другой строке, содержащей не только число, но и информацию о типе измерения (px, em, pt, cm, in ,...).

Что такое все-браузерное решение для преобразования такой string в integer с результатами в px?

  • 3
    jQuery уже делает это: jsfiddle.net/j08691/2WQqF
  • 0
    ^^ Не знал этого. Опубликовать как ответ? И знаете ли вы, как jQuery это делает (я думаю, если бы я хотел сделать то же самое без jQuery)?
Показать ещё 11 комментариев

2 ответа

2

Вы можете использовать встроенный метод getComputedStyle который будет интерполировать любое значение non- px в пикселях. Например:

var el = document.getElementById('foo'); // has a relative font size

console.log(el.style.fontSize); // "5em"
console.log(window.getComputedStyle(el).fontSize); // "80px"

Оттуда вы можете преобразовать в целое число.

Пример документации JsBin и MDN.

  • 0
    Только для IE9 + ( developer.mozilla.org/en-US/docs/Web/API/… )
  • 0
    Да, вы можете использовать нестандартное свойство currentStyle в IE, если вам необходимо поддерживать IE8 или более currentStyle .
1
$("#element").css("padding","2em")
var value = parseInt($("#element").css("font-size"));
var padding = 2*value ;
console.log(padding);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню