Аналогично этому вопросу: получить процентное значение правила CSS в jQuery
Однако я пишу плагин, и он должен изящно работать с ним, в зависимости от того, как изначально была указана ширина. Если элемент был первоначально указан в пикселях, это хорошо, так как это значение, которое .width ()
, .innerWidth ()
, outerWidth ()
и .css ('width')
return.
Но я хочу знать, был ли оригинал установлен в процентах. Таким образом, если размер элемента контейнера изменяется, я знаю, как пересчитать ширину, установленную для моего элемента.
Возможно ли это? Единственное, о чем я могу думать, - это попытаться перебрать в файле document.styles, чтобы найти соответствующие правила, но я думаю, что это будет более или менее невозможно сделать в общем. Есть еще идеи?
Спасибо!
Я не смог найти способ сделать то, что я просил в вопросе, но я придумал обходной путь, который позволяет мне сделать то, что мне нужно в моей ситуации. Код, о котором идет речь, относится к моему плагину jQuery под названием jScrollPane ( http://jscrollpane.kelvinluck.com/ ). В итоге я устанавливаю ширину в null (elem.css('width', null);
). Это удаляет ширину, которую я установил ранее, и позволяет элементу принять естественную ширину, определенную в таблице стилей (т.е. используя процент, если он был определен именно так). Затем я могу измерить это новое значение и использовать его для установки желаемой ширины...
Похоже, .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%». Надеюсь, я не пропустил ничего очевидного.