Всегда ли значение margin-[x] полученное через getComputedStyle представлено в единице px?
Чисто в образовательных целях, может кто либо мне пояснить или указать источник с развернутой информации касательно моего вопроса?
Если смотреть в чужие исходники, одни используют для получения числового значения CSS свойства функцию parseFloat, подразумевая что значение представлено в px, например так: 1024 - (parseFloat(/* get marginLeft */) || 0). НО! Другие авторы, четко делаю проверку (как правило, с помощью регулярок) что значение CSS свойства - является числом и представлено в единице px. Почем так? И бывают ли ситуации когда значение может вернуться в единице отличной от px?
Спасибо! В описании к свойству marginTop
Computed value: the keyword auto or a computed 'length-percentage' value
то есть, по сути любой тип ед. измерения.
Дмитрий, я не помню где в спеке смотреть. Может на MDN где-то есть.
Я просто помню этот факт. Все свойства, определяющие размер и положение вычисляются внутри браузера в пикселях.
Сергей delphinpro, Нашел вот что для свойства margin-top: Computed value: the keyword auto or a computed 'length-percentage' value, где 'length-percentage' - по сути любая ед. измерения кроме специфичных.
Все просто, первые никогда не получали значение "auto" и прочие значения отличные от px, думают что все в px
Вторые получали такие значение, набили шишек, и делают более детальную проверку.
Дмитрий, как сказать, parseFloat вернет 0, а ожидаем в px, и обьект имеет фактический размер в px. в некоторых кейсах это может быть критическим, и сломает логику. Насчет других единиц, это поле может быть/будет computed. getComputedStyle применимо же не только к marginleft, и возвращает CSSStyleDeclaration object. Вот честно не помню могут там возвращаться % и в каких случаях. Возможно для объектов которые скрыты, нечто подобное и вернется. Возможно коллеги, кто с этим сталкивался подскажут. Но то что там не всегда логические пиксели - факт.