HTML, Excel, Word, SEOОсновы JavaScript ⇒ Управление стилями

ОСНОВЫ JavaScript

Учебник JavaScript
·Знакомство с JS. Переменные, операторы, операции
·Функции
·Модель HTML документа
·Иерархия документов в бразуере
·Формы
·Окна и фреймы
·Ссылки, заголовок, статус
·События
·События клавиатуры и мыши
·События. Таймер
·Стили. Управление стилями
·Слои и блоки. Управление видимостью
·Объекты JS
·Внешние объекты
·Внутренние объекты
·Массивы
·Регулярные выражения
·Математика в JS
·Пример простого калькулятора
·Дата и время
·Cookies и хранение состояния
·Немного об AJAX
·Работа с WebMoney



Управление стилями


Автор: Артемьев Сергей Игоревич ICQ: 438856621 email: _spin_@bk.ru

Язык JavaScript предоставляет средства для управления стилями элементов "на лету". Под стилем в данном случае понимается набор параметров элемента, определяющий его внешний вид и особенности поведения на странице.

Возможно два способа управления стилем - непосредственное программное изменение элементов стиля и переопределение стиля с использованием классов CSS.

Рассмотрим первый способ. Мы уже применяли его, когда рассматривали возможности перехвата событий клавиатуры. Смысл данного метода состоит в том, что необходимый внешний вид и поведение элемента достигается последовательным изменением свойств его стиля. Например:

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



Тестовая строка

А изменить скрипт надо так:

<script type="text/javascript" language="javascript"> 	
function doMouseEvt()
{
var elm = document.getElementById("styler");
if(elm)
{
if(elm.style.fontWeight == "bold")
{
elm.style.fontWeight = "normal";
elm.style.color = "black";
}
else
{
elm.style.fontWeight = "bold";
elm.style.color = "red";
}

}
}

window.setInterval("doMouseEvt();", 1000);

</script>
... <span id="styler">Тестовая строка</span>

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

Добавим в элемент head описание стилей необходимых классов и код скрипта:

<style type="text/css">
	.gray_green{
		font-size: 16px;
		font-weight: bolder;
		color: #C00;
		background-color: #FFFF33;
		border: 1px solid gray;
		padding: 5px;
		display:block;
		width: 150px;
		text-align:center;
	}
	.yellow_red{
		font-size: 16px;
		font-weight: normal;
		color: #009900;
		background-color:#CCCCCC;
		border: 1px solid #009900;
		padding: 5px;
		display:block;
		width: 150px;
		text-align:center;
	}
</style>




<script type="text/javascript" language="javascript">
    function doBlinkClass()
    {
 		var elm = document.getElementById("styler_class");
 		if(elm)
 		{
 			if(elm.className == "gray_green")
 				elm.className = "yellow_red";
 			else
 				elm.className = "gray_green";
 		}
        
    }
 	 window.setInterval("doBlinkClass();", 1000);
</script>

В элемент body добавим соответствующий тег с текстом:

 
<span class="gray_green" id="styler_class">Тестовая строка</span> 

В результате получим следующее:

Тестовая строка

На первый взглад может показаться, что второй метод значительно более громоздкий и неудобный, но смею вас заверит - это не так. Плюсов такого подхода всего три, но они полностью компенсируют все минусы.

Во-первых, использование классов уменьшает объём кода JavaScript и повышает его читаемость. Кроме того, программисту достаточно лишь описать каркасы стилей, задумываясь в процессе разработки не о внешнем виде скрипта, а о его функциональности. Следствие всего этого - возрастает скорость и качество разработки скрипта, снижается количество ошибок и упрощается отладка.

Вторая причина несколько глобальнее. Так уж получается, специалист, совмещающий в себе таланты программиста и художника - нечастое явление. Как правило человек является специалистом и гуру в чём-то одном. Поэтому программирование сайтов и их дизайн делают чаще всего разные люди. "Классовый" подход к управлению стилями из JavaScript позволяет полностью разделить работу программиста и дизайнера. А кроме того - позволяет менять внешний вид скрипта по своему усмотрению не меняя код JavaScript, т.е. без повторного привлечения программиста.

Третья причина более всего важна для разработчиков. Разделив код и описание стилей, можно спокойно зашифровать или как-то ещё закрыть код, защищая тем самым свой труд от банального воровства и плагиата. Это особенно актуально, если вы распространяете свои скрипты за деньги.

Таким образом , совмещение JavaScript и CSS позволяет добиться впечатляющих визуальных эффектов. Один из хороших примеров аккуратно и качественно написаного подукта - пакет highslide (http://highslide.com/). Этот пакет бесплатен для частного использования и распространяется с открытым исходным кодом, снабжен применами и комментариями.

 



В начало страницы



В начало страницы