JQuery - узнать ширину элемента, как указано в CSS (например, в% age, если она указана в% age, а не только в px)
Аналогично этому вопросу:
получить процентное значение правила CSS в jQuery
Однако я пишу плагин, и он должен иметь дело с ним, изящно зависящим от того, как была определена ширина. Если элемент изначально был задан в пикселях, это нормально, поскольку это значение, возвращаемое .width()
, .innerWidth()
, outerWidth()
и .css('width')
.
Но я хочу знать, был ли он оригинальным, установленным в процентах. Так что, если элемент контейнера изменяет размер, я знаю, чтобы пересчитать ширину, которую я установил для своего элемента.
Возможно ли это? Единственное, что я могу придумать, - это попытаться выполнить цикл с помощью document.stylesheets, который ищет соответствующие правила, но я думаю, что более или менее невозможно сделать в целом. Любые другие идеи?
Спасибо!
Ответы
Ответ 1
Я не мог найти способ сделать то, что я просил в вопросе, но я придумал обходное решение, которое позволяет мне делать то, что мне нужно, в моей ситуации. Этот код предназначен для моего плагина jQuery, называемого jScrollPane (http://jscrollpane.kelvinluck.com/). В конце концов, я устанавливаю ширину в значение null (elem.css('width', null);
). Это удаляет ранее установленную мной ширину и позволяет элементу принимать естественную ширину, определенную в таблице стилей (т.е. Используя процент, если это было определено). Затем я могу измерить это новое значение и использовать это, чтобы установить ширину в желаемое число...
Ответ 2
Кажется, что .css('width')
работает для меня.
Небольшой пример, чтобы показать, что это работает:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<div style="width:10%;" id="foo"></div>
<script>
alert($("#foo").css('width'));
</script>
</body>
</html>
Это дает мне результат "10%". Надеюсь, я не пропустил ничего очевидного.