Я хотел бы вернуть строку со всем содержимым правила CSS, например в формате, который вы бы видели во встроенном стиле. Я хотел бы иметь возможность делать это, не зная, что содержится в конкретном правиле, поэтому я не могу просто вытащить их по имени стиля (например, .style.width
и т. Д.)
CSS:
.test {
width:80px;
height:50px;
background-color:#808080;
}
Код на данный момент:
function getStyle(className) {
var classes = document.styleSheets[0].rules || document.styleSheets[0].cssRules
for(var x=0;x<classes.length;x++) {
if(classes[x].selectorText==className) {
//this is where I can collect the style information, but how?
}
}
}
getStyle('.test')
javascript
html
css
Диодей - Джеймс Макфарлейн
источник
источник
Ответы:
Адаптировано отсюда , основываясь на ответе Сканлиффа:
источник
var classes
должен бытьdocument.styleSheets[0].rules[0].cssRules
в Chrome. Это можно (творчески) добавить к прокладке в ответе.Поскольку принятый ответ от "nsdel" доступен только с одной таблицей стилей в документе, это адаптированное полное рабочее решение:
Примечание. Селектор должен быть таким же, как в CSS.
источник
global_
это просто псевдоним для объекта окна. Я отредактировал фрагмент кода. Теперь это должно сработатьРЕШЕНИЕ 1 (КРОСС-БРАУЗЕР)
РЕШЕНИЕ 2 (КРОСС-БРАУЗЕР)
источник
Некоторые отличия браузеров, о которых следует знать:
Учитывая CSS:
и, учитывая пример InsDel, классы будут иметь 2 класса в FF и 3 класса в IE7 .
Мой пример иллюстрирует это:
источник
Вот код для перебора всех правил на странице:
источник
Примечание: «меню» - это идентификатор элемента, к которому вы применили CSS. "className" имя класса css, которое нам нужно для получения его текста.
источник
item
метод принимает целочисленный индекс, а не имя класса).Я не нашел ни одного из предложений, которые действительно работают. Вот более надежный, который нормализует интервалы при поиске классов.
Вот это в действии из консоли Chrome.
источник
Я сделал аналогичную вспомогательную функцию, которая показывает ненужные стили для этой страницы. добавляет
<div>
в тело список всех неиспользуемых стилей.(для использования с консолью firebug)
источник
Адаптировали ответ julmot, чтобы получить более полный результат. Этот метод также вернет стили, в которых класс является частью селектора.
Кроме того, я создал функцию, которая собирает определения стилей css в поддереве корневого узла, который вы предоставляете (через селектор jquery).
Обратите внимание, что если класс определен несколько раз с одним и тем же селектором, указанная выше функция выберет только первый. Обратите внимание, что в примере используется jQuery (но cab относительно легко переписать, чтобы не использовать его)
источник
// работает в IE, не уверен в других браузерах ...
источник
Эта версия будет проходить через все таблицы стилей на странице. Для моих нужд стили обычно располагались со второй по последнюю из 20+ таблиц стилей, поэтому я проверяю их задом наперед.
источник
Я добавил возврат объекта, где атрибуты разбираются в стиле / значениях:
источник
style.cssText.match(...).1
равно нулю или не является объектомUncaught ReferenceError: classStyleTxt is not defined
Я создал версию, которая выполняет поиск во всех таблицах стилей и возвращает совпадения в виде объекта "ключ-значение". Вы также можете указать startWith для соответствия дочерним стилям.
возвращает:
из:
Код:
Я использую это в производстве как часть проекта чистой формы . Надеюсь, поможет.
источник
Я столкнулся с той же проблемой. И с помощью ребят я придумал действительно умное решение, которое полностью решает эту проблему (запускается на Chrome).
Извлечь все изображения из сети
источник
Одной строкой выводит сгенерированный css для любого запроса.
источник
На основе ответа @dude это должно возвращать соответствующие стили в объекте, например:
Это вернет:
Код:
источник
_.pickBy(classes[x].style, (k,v) => isNaN(parseInt(k)) && typeof(v) == 'string' && v && v != 'initial' && k != 'cssText' )