Слои и сценарии

Удобно использовать слои в сочетании с программами-скриптами. Доступ к слоям можно осуществить, обращаясь к свойству layers объекта document. Document.layers — это множество всех слоев в документе. Чтобы из этой коллекции выбрать один конкретный слой, необходимо в квадратных скобках указать номер слоя или его имя. Заметим, что номер слоя не обязательно равен z-индексу этого слоя. Z-индекс и номер слоя могут не совпадать в том случае, если в качестве z-индексов использованы непоследовательные числа. В коллекции же document.layers слои пронумерованы последовательно.

Сейчас мы узнаем о том, как можно управлять слоями при помощи JavaScript. И опять мы начнем с рассмотрения примера, в этом примере пользователь имеет возможность скрыть или показать слой путем нажатия кнопки. Вспомним, что объекты в JavaScript могут быть представлены несколькими способами, и слои здесь не являются исключением. Возможно наилучшим способом обращения к слоям является присвоение каждому слою его имени и обращение к слою по его имени. Если мы зададим имя слоя при помощи свойства name, указав его в ярлыке <layer> следующим образом

<layer ... name=myLayer>
...
</layer>,

то мы сможем в дальнейшем обратиться к слою посредством выражения document.layers["myLayer"] или выражения document, my Layer. Конечно, остается возможность обращения к слоям посредством числовых индексов, самый нижний слой при этом может быть описан при помощи выражения document.layers[0].

В качестве примера рассмотрим файл div.htm. Использование слоев, вложенных друг в друга, является эффектным механизмом оживления HTML-страниц. На этой странице два дочерних слоя, вложенных в родительский слой, при помощи программы-сценария перемещаются друг относительно друга.

Файл div.htm (Netscape Navigator)

<html>
<head>
<script language="JavaScript">
// начальное положение
var pos0= 0;
var pos1= 0;
var pos2= 0;
// проверка: двигаемся или стоим
var move0= true;
var move1= false;
var move2= false;
// каково направление движения
var dir0= false;
var dir1= false;
var dir2= true;
function startStop(which)
{
if (which == 0) move0= imove0;
if (which == 1) move1= imove1;
if (which == 2) move2= imove2;
}
function move()
{
if (move0)
{
// move parentLayer
if (dir0) pos0-
else pos0++;
if (pos0 <-100) dir0 = false;
if (pos0 >100) dir0 = true;
document.layers["parentLayer"].left=100 + pos0;
}
if (move1)
{
// двигаем родительский слой
if (dir1) pos1—
else pos1++;
if (pos1<-20) dir1= false;
if (pos1>20) dir1= true;
document.layers["parentLayer"].layers["layer1"].top= 10 + pos1;
}
if (move2)
{
// двигаем родительский слой
if (dir2) pos2-
else pos2++;
if (pos2 < -20)dir2=false;
if (pos2 > 20) dir2= true;
document.layers["parentLayer"].layers["layer2"].top= 10 + pos2;
}
}
</script>
</head>
<body onLoad="setInterval('move()', 20)">
<ilayer name=parentLayer left=100 top=0>
<layer name=layer1 z-index=10 left=0 top=-10>
Это первый слой
</layer>
<layer name=layer2 z-index=20 left=200 top=-10>
Это второй слой
</layer>
<br><br>
Это родительский слой
</ilayer>
<form>
<input type="button" value="Двигаем/Останавливаем родительский слой"
onClick="startStop(0);">
<input type="button" value="Двигаем/останавливаем первый слой layer1"
onClick="startStop(1);">
<input type="button" value="Двигаем/останавливаем второй слой layer2"
onClick="startStop(2);">
</form>
</body>
</html>

В этом файле слои layer1 и layer2 вложены в слой parentLayer.

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

Недостатком слоев является то, что их понимает только броузер Netscape Navigator. Internet Explorer при загрузке страницы, содержащий слои, выдаст сообщение об ошибке. При необходимости использовать Internet Explorer, следует изменить текст HTML-страницы. Вместо слоев можно использовать элемент <div>. Div — это блочный элемент. При его использовании требуется использование как открывающего, так и закрывающего ярлыков. Все, что расположено между этими ярлыками, объединяется в относительно самостоятельный блок. Этим блоком можно управлять при помощи сценариев. Если вместо слоев, в которых содержится информация, подобно тексту, написанному на листе бумаги, использовать блок <DIV>, то можно организовать работу HTML-страницы похожую на то, как она работает при загрузке в броузер Netscape Navigator страницы со слоями. См. пример


<<пред. страница

Оглавление

след. страница >>


Hosted by uCoz