Учебник JavaScript. Перемещение слоев


serge - Posted on 01 Ноябрь 2009

Свойства left и top определяют задают положение данного слоя. Вы можете менять его, записывая в эти атрибуты новые значения. Например, в следующей строке задается горизонтальное положение слоя в 200 пикселов:

document.layers["myLayer2"].left= 200;

Перейдем теперь к программе перемещения слоев - она создает нечто вроде прокрутки внутри окна браузера.

This text is inside a layer

Сам скрипт выглядит следующим образом:

<html>
 <head>
 <script language="JavaScript">
 <!-- hide
 
 function move() {
   if (pos < 0) direction= true;
   if (pos > 200) direction= false;
 
   if (direction) pos++
     else pos--;
 
   document.layers["myLayer2"].left= pos;
 }
 
 // -->
 </script>
 </head>
 <body onLoad="setInterval('move()', 20)">
 
 <ilayer name=myLayer2 left=0>
 <font size=+1 color="#0000ff"><i>This text is inside a layer</i></font>
 </ilayer>
 
 </body>
 </html>

Мы создаем слой с именем myLayer2. Можно видеть, что в тэге <body>мы пользуемся процедурой onLoad. Нам необходимо начать прокручивание слоя, как только страница будет загружена. В процедуре обработки события onLoad мы пользуемся функцией setInterval(). Это один из новых методов версии 1.2 языка JavaScript (то есть версии JavaScript, реализованной в Netscape Navigator 4.0). Им можно пользоваться, чтобы вызывать некую функцию мвновь и вновь через определенные интервалы времени. В прошлом для этого мы пользовались функцией setTimeout(). Функция setInterval() работает почти так же, однако Вам нужно вызвать ее всего лишь один раз.
С помощью setInterval() мы вызываем функцию move() каждые 20 миллисекунд. А функция move(), в свою очередь, всякий раз смещает слой на новую позицию. И поскольку мы вызываем эту функцию вновь и вновь, то мы получаем быстрый скроллинг нашего текста. Все, что мы нужно сделать в функции move() - это вычислить новую координату для слоя и записать ее: document.layers["myLayer2"].left= pos.

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

<script language="JavaScript1.2">
 <!-- hide
 document.write("Вы используете браузер, совместимый с JavaScript 1.2.");
 // -->
 </script>

Та же самая проблема возникает, когда мы работаем с объектом Image. Мы можем аналогичным способом переписать кодекс. Установка переменной browserOK решает эту проблему.

Следующий пример демонстрирует, как может осуществляться перекрывание слоев:

 

This text is inside a layer

Поиск

Добавить сайт в Закладки

ОднаКнопка