например, если у меня есть элемент div со значением style.width, равным 20 %, я бы хотел вернуть объект с этим значением в процентах (конечно, 20 %), пикселях (какой бы ни была фактическая ширина пикселя), em, pt, ex, и т. д.
Я понимаю, что «процент» не является значением «длины», и что не все свойства, которые принимают значения длины, принимают проценты, но хотят также включить это.
конечно, некоторые значения будут зависеть конкретно от элемента и, возможно, от его положения в DOM (например, для получения значения em потребуется вычисленный размер шрифта родительского элемента как ну).
Я могу предположить, что стиль задан явно для элемента - я знаю, как получить текущий вычисленный стиль элемента - я просто надеюсь не повторять работу, которую, вероятно, уже сделал кто-то другой. мне также известен http://www.galasoft.ch/myjavascript/Web ... ength.html, но он основан на style.pixelWidth или node.clientWidth и не работает в Chrome (я предполагаю, что он не работает и в Safari... и, возможно, в других).
я уже разработал значения цвета (rgb, rgba, hex, name) — это, конечно, намного проще. я работаю со значениями, которые математически изменяемы, поэтому на самом деле мне нужны только значения «длина» и «процент» (если вызывается набор свойств со значением, отличным от длины и непроцентным, например «font-size: Large», функция может завершиться неудачей или выдать ошибку).
если написано процедурно, идеально было бы что-то вроде этого:
Код: Выделить всё
function getUnits(target, prop){
var value = // get target's computed style property value
// figure out what unit is being used natively, and it's values - for this e.g., 100px
var units = {};
units.pixel = 100;
units.percent = 50; // e.g., if the prop was height and the parent was 200px tall
units.inch = 1.39; // presumably units.pixel / 72 would work, but i'm not positive
units.point = units.inch / 72;
units.pica = units.point * 12;
// etc...
return units;
}
Заранее спасибо за любую информацию или предложения.
Подробнее здесь: https://stackoverflow.com/questions/451 ... -css-units
Мобильная версия