Какой JavaScript-фреймворк может искать правила таблиц стилей CSS и редактировать их свойства?

Вопрос

Какой фреймворк JavaScript (прототип, script.aculo.us, Mootools, MochiKit ...) имеет достойное редактирование правил CSS поддержка?

Речь идет об изменении правила стиля. Я хочу иметь динамических классов CSS , которые меняются. Пример:

<style>
#answer, .reveal { display: none; color: blue; }
#answer { /* additional stuff */ }
</style>

Теперь с помощью JavaScript я хочу изменить правило, в котором есть «display: none». - Я убежден, что иногда это правильный путь; Я не ищу альтернативы, когда это неправильно.

Какая структура упрощает следующее:

  1. выбрать правило из всех правил (например, «#answer, .reveal»)
  2. какое значение имеет выбранное правило (я) для «отображения»?
  3. удалите свойство «display» из правила (правил)

(пункты 2 и 3. легко выполняются только с DOM, если я получаю дескриптор правила CSS обратно из фреймворка)

Frameworks которые недостаточно хороши:

Таблица стилей YUI, например, может искать правила только на одном листе за раз (ограничено, но достаточно для меня), но не может отображать, редактировать или извлекать правила с несколькими селекторами, как мой первый пример (на мой вкус слишком ограниченный).

YUI также не имеет возможности получить отдельные свойства (базовая модель DOM может, но вы не можете получить эту структуру через YUI). Вы можете удалить только свойство «display», если вы воспользуетесь правилом средствами YUI.

Dojo имеет плохо документированный и неполный материал в dojox.html.styles

Ext JS имеет Ext.util.CSS. Я проверил код и обнаружил ошибку в getRule () ... В остальном это довольно небрежно с сопоставлением селекторов (плохое влияние IE), что делает его плохим для правил мультиселектора. Он также не может удалять свойства через API, но может предоставить вам CSSRule, чтобы вы могли сделать это самостоятельно. - Обход дерева CSS настолько примитивен, насколько это возможно: нет спуска по медиа-правилам или импорту.

PD:

$ ('. Show'). Css (... что угодно ...) не является ответом, потому что он вообще не затрагивает правила CSS (он касается атрибутов CSS некоторого элемента (s) вместо)!

15
задан Robert Siemer 26 October 2014 в 10:33
поделиться