Вопрос
Какая инфраструктура JavaScript (прототип, script.aculo.us, Mootools, MochiKit...) имеет достойную поддержку редактирования правил CSS?
Речь идет об изменении правила стиля. Я хочу иметь динамические классы CSS, которые меняются. Пример:
<style>
#answer, .reveal { display: none; color: blue; }
#answer { /* additional stuff */ }
</style>
Теперь, используя JavaScript, я хочу изменить правило, в котором есть "display: none". - Я убежден, что иногда это правильный путь; Я не ищу альтернативы, когда это неправильный способ сделать.
Какая структура позволяет сделать следующее:
- выберите правило из всех правил (например, "#answer,.reveal" )
- какое значение имеет выбранное правило для "отображения"?
- удалить свойство "display" из правила (ов)
(2 и 3. легко выполняются только с помощью DOM, если я получаю дескриптор правила CSS обратно из фреймворка)
Рамки, которые недостаточно хороши:
YUIs StyleSheet, например, может искать только правила на одном листе за раз (ограниченный, но достаточно для меня), но он не может отображать, редактировать или извлекать правила мультиселектора, такие как мой первый пример (слишком ограниченный по моему вкусу).
YUI также не имеет возможности получить отдельные свойства (базовая DOM может, но вы не можете получить эту структуру через YUI). Вы можете удалить свойство "display" в одиночку, хотя, если вы получите правило от YUI, значит.
Dojo имеет некоторые плохо документированные и неполные вещи в dojox.html.styles
Ext JS имеет Ext.util.CSS. Я проверил код и обнаружил ошибку в getRule()... В противном случае это довольно неряшливо с выбором селектора (плохое влияние IE), что делает его плохой для правил с несколькими селекторами. Он также не может удалять свойства через API, но может дать вам CSSRule, чтобы вы могли сделать это сами. - Прогулка по дереву CSS настолько примитивна, насколько это может быть: ни опускаться на правила или импорт СМИ.
PD:
$('. open'). css (... независимо...) не является ответом, потому что он вообще не касается правил CSS (он затрагивает атрибуты CSS для некоторых элементов)