преобразование единиц CSS

Я пытаюсь вернуть свойство стиля во всех допустимых ' м, просто надеясь не повторять работу, которую, вероятно, уже сделал кто-то другой. мне также известно о http://www.galasoft.ch/myjavascript/WebControls/css-length.html , но он полагается на style.pixelWidth или node.clientWidth и не работает в Chrome (I Я бы предположил, что он также не работает в Safari ... и, возможно, в других).

Я уже разработал значения цвета (rgb, rgba, hex, name) - это, конечно, намного проще. Я работаю со значениями, которые являются математически изменяемыми, поэтому на самом деле мне нужны только значения «длина» и «процент» (если они вызываются для свойства, установленного с не-длиной, не с процентным значением - например, «размер шрифта: больше» - функция может выйти из строя или выдать ошибку).

если написано процедурно, что-то вроде этого было бы идеальным:

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;
}

Я не прошу кого-нибудь написать для меня код, но я надеюсь, что кто-то уже делал это раньше, и это доступно в какой-нибудь библиотеке с открытым исходным кодом, фреймворке, сообщении в блоге, тут, где угодно. в противном случае, если у кого-то есть умная идея, как оптимизировать процесс, это тоже было бы здорово (автор приведенной выше ссылки создал временный div и вычислил одно значение для определения соотношений для других единиц - удобная идея, но не тот, на которого я полностью продан, и определенно тот, которому потребовалась бы дополнительная логика, чтобы обрабатывать все, что я надеюсь принять).

заранее благодарим за любые идеи или предложения.

6
задан Phrogz 23 December 2010 в 02:37
поделиться