Тема изменения / CSS на основе пользователя

вам нужно использовать $or

$or: [{x: 10, y: 20},{x: 20, y: 70}]
10
задан Aliaksandr Sushkevich 12 September 2018 в 18:49
поделиться

8 ответов

Я был там несколько месяцев назад. При использовании динамического CSS, сгенерированного выделенным обработчиком/, сервлет был первым решением, для улучшения производительности, специализированный CSS теперь производится на файле, сверхсдирающем кору основные элементы стандартного CSS:

<link rel="stylesheet" href="standard.css" />
<link rel="stylesheet" href="<%= customer_code %>/custom_style.css" />
...
<img scr="<%= customer_code %>/logo.png" />

Каждый пользовательский CSS будет иметь свой собственный URL, таким образом, можно будет сделать браузер, кэширующий их.

Это сделает Вас сохраняющий для каждого запроса, который выполнят пользователи:

  1. трафик от базы данных до прикладного уровня
  2. трафик от прикладного уровня до браузера
  3. некоторые вычисления на прикладном уровне

Я буду второй идея, пользователю придется заполнить детализацию веб-формы, какие настройки они хотят сделать.

6
ответ дан 4 December 2019 в 01:58
поделиться

Во-первых, определите, какие ресурсы могут быть заменены, и могут ли ресурсы быть добавлены. Необходимо будет сохранить их где-нибудь; для маленьких ресурсов, таких как логотипы дб прекрасен, вероятно, иначе необходимо волноваться о размере в дб.

Затем можно определить, сколько функциональности Вы хотите, чтобы пользователь настроил: просто цвета или все стили? Если это - просто цвета, можно определить некоторые переменные в файле CSS и служить файлу динамично с данными, загруженными из дб. Файл CSS можно было бы назвать styles.asp и содержать код, такой как это:

.header_area {
  border: 1px solid <%=headerBorderColor%>;
  background-color:  <%=headerBGColor%>;
  foreground-color:  <%=headerFGColor%>;
}

(Синтаксис, который я использовал, является синтаксисом JSP, я не знаю ASP, но идея является тем же.)

С другой стороны, позвольте пользователю указывать всю таблицу стилей, или замена по умолчанию или добавление его. Затем сохраните весь лист в DB и служите, он с помощью его собственного URL (не встраивайте его в страницу).

<link rel="stylesheet" href="default_styles.css">
<link rel="stylesheet" href="white_label_css.asp">

Удостоверьтесь, что Вы устанавливаете заголовки кэша и тип контента соответственно на файле CSS при обслуживании его с помощью страницы ASP.

Если Вы обеспокоены тем, какой удовлетворяют пользователя, может вставить white_label_css файл, можно ограничить его путем создания инструмента пользователя, который генерирует CSS и хранит ее в дб. Например, вместо того, чтобы позволить пользователю загружать любой файл и хранить его в дб, пользователь должен был бы заполнить детализацию веб-формы, какие настройки они хотят сделать. Таким образом, можно удостовериться, что только определенные правила/изменения CSS позволяются (но это не может быть достаточно гибко).

3
ответ дан 4 December 2019 в 01:58
поделиться

Мне нравится идея использовать динамический CSS с помощью Обработчика ASP.NET...

<link rel="stylesheet" href="style.ashx" />

style.ashx

<!--WebHandler Language="C#" Class="StyleSheetHandler"-->

StyleSheetHandler.cs

public class StyleSheetHandler : IHttpHandler {
        public void ProcessRequest (HttpContext context)
        {   
            context.Response.ContentType = "text/css";
            context.Response.ContentEncoding = System.Text.Encoding.UTF8;

            string css = BuildCSSString(); //not showing this function

            context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(600));
            context.Response.Cache.SetCacheability(HttpCacheability.Public);
            context.Response.Write( css );
        }

        public bool IsReusable
        {
            get { return true; }
        }

}

BuildCSSString () Функция создаст CSS на основе значений, сохраненных в базе данных, и возвратит ее для переопределения основного стиля на основной странице.

1
ответ дан 4 December 2019 в 01:58
поделиться

Ваш предложенный метод - то, как я пошел бы о решении этой проблемы: загрузите управляемые пользователем значения (возможно, просто цвета и размеры шрифта) в таблицу, связанную с пользователем.

Логотип/аватар, который Вы хотите, чтобы пользователь имел, может быть сохранен в дб или как файл на фс.

0
ответ дан 4 December 2019 в 01:58
поделиться

Я думаю, что это зависит от того, насколько опытный Ваши пользователи о CSS. Если они - веб-разработчики или имеют тот наклон, имение их пишет, что CSS прекрасен, вероятно. В противном случае необходимо будет или генерировать его статически на основе их входа и сохранить его в базе данных, ИЛИ можно просто сохранить вводимые значения и динамично генерировать CSS с помощью пользовательского обработчика.

Пользовательский подход обработчика означал бы, что Вы могли заменить значениями прямо в середине CSS, не имея необходимость волноваться о! важный или порядок, в котором объекты, как объявляют, гарантируют надлежащие переопределения, происходят.

0
ответ дан 4 December 2019 в 01:58
поделиться

С php, например, можно создать динамическую CSS, таким образом, это вместе с информацией пользователя, хранившей в дб, было бы, конечно, достаточно.

Попробуйте здесь или здесь как введение.

0
ответ дан 4 December 2019 в 01:58
поделиться

Я избегал бы использования! важный пункт и вместо этого просто гарантирует, чтобы их значения появились в a <style> тег после импорта обычных таблиц стилей.

Иначе я сделал бы это тот же путь.

-1
ответ дан 4 December 2019 в 01:58
поделиться

Если я понял правильно, Вы хотите упростить цвет и связанные с типографией изменения. Что относительно расположения? Если мы безопасно предполагаем, что только окрашивают, и типография собираются измениться, мы можем снова использовать те же классы стиля в конце существующего основного файла CSS и таким образом переопределить стили (использующий! важный, хотя хорошая идея, препятствует тому, чтобы пользователи переопределили с их пользовательскими стилями).

Эти недавно созданные классы могут быть сжаты до однострочной строки и сохранены как varchar, который затем связывался бы/копировался бы встроенный при создании страницы. Я могу думать о следующих опциях

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

Если бы расположение собирается измениться, мы находимся в более толстом супе, я избежал бы этого, как сложности, связанные со сценариями/обработкой событий, слишком очень.

0
ответ дан 4 December 2019 в 01:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: