JavaScript: Переключаем стили
Дата последнего изменения: 1 Октября 2009
Метки статьи: Готовые решения, HTML, JavaScript, © Авторское
Метки статьи: Готовые решения, HTML, JavaScript, © Авторское
Однажды ко мне подошел наш web-дизайнер и спросил:
"- А можно ли сделать так, что бы дизайн страницы сайта менялся, без запросов к веб-серверу?"
"- Можно. Для этого нужно поставить простую функцию javascript'а , что бы включать/выключать нужный список стилей. Вот, смотри, я сейчас тебе покажу как это сделать."
Допустим у нас есть три варианта оформления DIV-тэга с классом "example_div".
Пропишем стили этих трех вариантов:
Теперь создадим на нашей странице DIV с классом example_div ...
...и установим три кнопки, которые будут включать один из трех, описанных ранее, вариантов стилей.
Теперь осталось только прописать javascript-функцию change_design()
В итоге у вас должно получиться вот так:
"- А можно ли сделать так, что бы дизайн страницы сайта менялся, без запросов к веб-серверу?"
"- Можно. Для этого нужно поставить простую функцию javascript'а , что бы включать/выключать нужный список стилей. Вот, смотри, я сейчас тебе покажу как это сделать."
Допустим у нас есть три варианта оформления DIV-тэга с классом "example_div".
Пропишем стили этих трех вариантов:
<style type="text/css" id="design_1" title="design_1"> DIV.example_div { background-color: red; width: 250px; border: 2px #000000 solid; color: #000000; } </style> <style type="text/css" id="design_2" title="design_2"> DIV.example_div { background-color: green; width: 250px; border: 2px blue solid; color: yeelow; } </style> <style type="text/css" id="design_3" title="design_3"> DIV.example_div { background-color: black; width: 250px; border: 2px red solid; color: #ffffff; } </style>
Обратите внимание на design_1, design_2 и design_3
Именно по этим идентификаторам мы будем определять, какой включить стиль.
Именно по этим идентификаторам мы будем определять, какой включить стиль.
Теперь создадим на нашей странице DIV с классом example_div ...
<div class="example_div">этот див будет менять свой стиль</div>
...и установим три кнопки, которые будут включать один из трех, описанных ранее, вариантов стилей.
<input type="button" value="1" onclick="change_design('design_1')"> <input type="button" value="2" onclick="change_design('design_2')"> <input type="button" value="3" onclick="change_design('design_3')">
Теперь осталось только прописать javascript-функцию change_design()
<script language="javascript"> function change_design(design_id) { // Заносим в переменную hash_css имена наших переключаемых стилей var hash_css = {'design_1':1, 'design_2':1, 'design_3':1}; // Просматриваем все стили, которые есть на нашей странице for (var i=0; i<document.styleSheets.length; i++) { var s = document.styleSheets[i]; var name_style = s.id || s.title; // Если имя нашедшегося стиля соответствует одному из переключаемых
// и оно не соответствует передаваемому, то выключаем его if (hash_css[name_style] && (name_style != design_id)) { s.disabled = true; } // Если имя нашедшегося стиля соответствует одному из переключаемых
// и оно соответствует передаваемому, то включаем его
if (hash_css[name_style] && (name_style == design_id)) { s.disabled = false; } } } </script>
В итоге у вас должно получиться вот так:
этот див будет менять свой стиль
Похожие материалы:
Комментарии:
19 Мая 2011 (12:33:23)
пасанчик
(гость)
• ответить
чет не понятненько...
10 Января 2013 (14:07:41)
Сергей
(гость)
• ответить
В Opera по-умолчанию загружается последний стиль. В Хроме третий вообще не работает ((
Корректно работает только в Мозиле. Вариант не подходит (
Корректно работает только в Мозиле. Вариант не подходит (