2016-09-22 2 views
4

Я хотел бы получить в моем JS-коде «оригинальное» свойство ширины CSS, применяемое к элементу, а не ширину среза (вычисляемую).
например.Как получить свойство ширины css элемента

.foo { 
    width: 50% /* or 123px, or 5em, ...*/ 
} 

в этом случае, я хочу, чтобы получить "50%", а не значение точек вычисляется во время выполнения. Если значение задано в em, я хочу получить em как результат. window.getComputedStyle(foo, null).getPropertyValue('width'), возвращает значение пикселя (по крайней мере, на Google Chrome).
На самом деле мне нужно текстовое значение правила CSS, применяемого к элементу.

+0

Где вы хотите получить? В вашем браузере инструменты разработчика, в JavaScript, ...? –

+0

Возможный дубликат http://stackoverflow.com/questions/324486/how-do-you-read-css-rule-values-with-javascript –

+0

@KilianStinson, согласен, это почти дубликат, но в http: // stackoverflow.com/questions/324486/how-do-you-read-css-rule-values-with-javascript он хочет получить значение правила для класса, в моем случае я хочу получить значение CSS, применяемое к моему элементу независимо от классов. В принципе, я хочу получить значение после запуска механизма CSS –

ответ

0

foo.width in pixels/parentElement.width * 100 = foo.width in % так в JS, например:

var width = document.getElementById('foo').offsetWidth; 
var parentWidth = document.getElementById('parentOfFoo').offsetWidth; 

var fooWidthPercentage = width/parentWidth * 100; 
console.log(fooWidthPercentage); 
+1

Импликация вопроса заключается в том, что если значение 'width' равно' 10em', OP будет хотеть возвращать '10em', аналогично, если значение равно' 24vmin' ... это не кажется проблемой преобразования ширины в процентное значение, но вместо этого получить назначенное значение и единицы (предположительно, не зная заранее, что эти единицы могут быть). –

+0

Я бы не видел, как это может вызвать проблему, не будет ли javascript измерять ширину в пикселях (или конвертировать 10em/24vmin в пикселы)? так я все равно понимаю JS. – Grey

+0

JavaScript может определенно конвертировать из 'px' в' rem' (или что-то еще), но для того, чтобы знать, что нужно выполнить преобразование, необходимо сначала выяснить, какие единицы преобразовать в, что само по себе включает в себя извлечение исходного значения свойства из таблицы стилей (s), в этот момент преобразование было бы ненужным. –

Смежные вопросы