Могу ли я сохранить «тему» ​​CSS как документ JSON в CouchDB?(а потом загрузить и применить?) - PullRequest
1 голос
/ 18 декабря 2011

Синтаксис CSS немного похож на JSON, поэтому мне интересно, могу ли я динамически загружать и применять «тему» ​​CSS из CouchDB, используя AJAX.Я знаю, что уже могу служить CSS-файлом в качестве вложения, но если бы CSS был настоящим документом, он мог бы обновляться пользователями.Также может быть несколько таких документов, таких как css "themes".Как это будет работать?Я вижу 2 проблемы:

1) как сохранить CSS как JSON (в одном большом строковом поле или как структурированный документ?)

2) как применить CSS динамически.

Я обнаружил, что с помощью jQuery я могу применить CSS к выбранным элементам, но он не работает так же, как "обычный" CSS, потому что правила приоритета не применяются - вы просто влияете на все выбранные элементыкаждый раз, когда вы вызываете функцию .css().Что мне действительно нужно, так это способ загрузить весь «CSS-файл» (как документ) и применить его целиком, как если бы это был обычный CSS-файл.

Может быть, функция "_show" может преобразовать структурированныйДокумент JSON / CSS в «обычную» строку CSS со стандартным синтаксисом CSS?Тогда мне просто нужно выяснить, как «применять» его во время выполнения.

Цените любые мысли, идеи и соответствующие ссылки - спасибо.

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

Вы могли бы:

  1. Сохранить CSS как большую строку в CouchDB
  2. Создайте страницу ajax, которая будет просто отображать сохраненные данные из базы данных, получая динамическую строку запроса для решения, какой файл показывать. Пример: http://example.com/change_css?file=new_style2.css
  3. Всякий раз, когда вам нужно изменить тему текущего пользователя, вы можете удалить старую и просто добавить новую, например $('head').append('<link rel="stylesheet" type="text/css" href="http://example.com/change_css?file=new_style2.css">')
  4. Браузер должен автоматически загрузить и применить новый CSS.

Не уверен, что это динамическое хранение в CouchDB - лучший подход: вы всегда можете хранить статические файлы и изменять их на лету. Хранение CSS как Json, с другой стороны, потребует анализа и может потребовать много времени.

1 голос
/ 18 декабря 2011

Вы правы в том, что функция _show является хорошим способом динамически генерировать не-json ответ из документов CouchDB. Что касается загрузки этого CSS, код должен выглядеть следующим образом:

var cssTag = $("head").add("link");
cssTag.attr("rel", "stylesheet");
cssTag.attr("type", "text/css");
cssTag.attr("href", filename);

Короче говоря, вы добавляете тег link в head.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...