Добавление возможности разрешить пользователю выбирать цветовую тему для веб-сайта

#javascript #jquery #html #css #themes

#javascript #jquery #HTML #css #темы

Вопрос:

Я перепроектирую нашу корпоративную интрасеть. Я использую простую тему, основанную на 5 связанных цветах, для создания единого стиля на всех страницах. Одна вещь, которую я хотел бы сделать, это разрешить каждому пользователю выбирать свою собственную «тему». Достаточно просто создать несколько цветовых палитр, которые будут работать с моим дизайном. То, с чем я играю, — лучший способ реализовать это.

У меня было две мысли, но я открыт для всех предложений. Первым было бы создать базовую таблицу стилей, независимую от темы, и единообразно применять ее. Затем создайте отдельные таблицы стилей тем. Затем применяя это либо с помощью сценариев на стороне сервера, либо JavaScript / jQuery. Моя другая мысль — использовать одну таблицу стилей, а затем использовать jQuery для применения их к каждому элементу. Так, например:

 <div class="theme_color_1"></div>

<script type="text/javascript">
    function colorize(theme){
         if(theme === 0){
             $('.theme_color_1').addClass('blue_theme_1');
         }
         else if(theme === 1){
             $('.theme_color_1').addClass('red_theme_1');
         }
         else{
             $('.theme_color_1').addClass('default_theme_1');
         }
    }
</script>
 

И так по одному для каждого элемента темы. Мне просто интересно, есть ли у кого-нибудь опыт реализации такого типа функций и какой, по вашему мнению, «лучший» метод. Наш сайт довольно «легкий», поэтому я не очень обеспокоен обработкой / скоростью, когда дело доходит до манипулирования DOM или загрузки страницы.

Спасибо!

** Я только что использовал очень простой пример кода, так как я еще не начал его реализовывать. Если мой код недостаточно понятен, пожалуйста, дайте мне знать, и я предоставлю дополнительную информацию.

** Также обратите внимание, что я использую классический ASP (это то, с чем я застрял на данный момент), MS SQL, HTML 5, CSS 3 (используя PIE для обеспечения поддержки функций), JavaScript, jQuery и jQuery UI.

Комментарии:

1. Добавьте класс в тело, стиль, основанный на этом классе. Сохраните настройку в базе данных, добавьте ее в тег body при отображении страницы. ТАДА, все готово.

2. Интересно, не уверен, почему я об этом не подумал. Это, безусловно, было бы меньше накладных расходов, и я мог бы использовать единую таблицу стилей и единую функцию jQuery / JavaScript. Я все еще на стадии планирования, но как только я дойду до этого момента, я попробую и обновлю этот вопрос. Спасибо!

Ответ №1:

Вы можете сохранить тему, выбранную пользователем, в базе данных и, в зависимости от пользователя, вошедшего в систему, применить таблицу стилей.

например

 <% if rs("style") = 1 then %>
<link href="theme1.css" rel="stylesheet" type="text/css" />
<% elseif rs("style") = 2 then %>
<link href="theme2.css" rel="stylesheet" type="text/css" />
...etc.
 

Наличие базовой темы — абсолютно хорошая идея.

Комментарии:

1. Спасибо, это одно из возможных решений, которое я собираюсь использовать. Я еще не дошел до стадии разработки, где я могу применить это. Прямо сейчас я просто разрабатываю базовый css, чтобы у меня могли быть темы. Как только я получу достаточно далеко вниз, я попробую несколько предложений здесь.