Студопедия — Изменение изображений в связи с событиями, инициируемыми самим читателем
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Изменение изображений в связи с событиями, инициируемыми самим читателем






 

Вы можете создать красивые эффекты, используя смену изображений в качестве реакции на определенные события. Например, Вы можете изменять изображения в тот момент, когда курсор мыши попадает на определенную часть страницы. Проверьте, как работает следующий пример, просто поместив курсор мыши на картинку (впрочем, при этом Вы получите сообщение об ошибке, если пользуетесь браузером, поддерживающим лишь JavaScript 1.0 — как этого избежать, мы узнаем чуть позже).

Исходный код этого примера выглядит следующим образом:

 

<a href="#"

onMouseOver="document.myImage2.src='img2.gif'"

onMouseOut="document.myImage2.src='img1.gif'">

<img src="img1.gif" name="myImage2" width=160 height=50 border=0></a>

 

При этом могут возникнуть следующие проблемы:

· Читатель пользуется браузером, не имеющим поддержки JavaScript 1.1.

· Второе изображение не было загружено.

· Для этого мы должны писать новые команды для каждого изображения на web-странице.

· Мы хотели бы иметь такой скрипт, который можно было бы использовать во многих web-страницах вновь и вновь, и без больших переделок.

Теперь мы рассмотрим полный вариант скрипта, который мог бы решить эти проблемы. Хотя скрипт и стал намного длиннее — но написав его один раз, Вы не больше будете беспокоиться об этих проблемах.

Чтобы этот скрипт сохранял свою гибкость, следует соблюдать два условия:

· Не оговоривается количество изображений — не должно иметь значения, сколько их используется, 10 или 100

· Не оговоривается порядок следования изображений — должна существовать возможность изменять этот порядок без изменения самого кода

Посмотрим этот код в работе:

Рассмотрим скрипт (я внес туда некоторые комментарии):

 

<html>

<head>

<script language="JavaScript">

<!- hide

// ******************************************************

// Script from Stefan Koch — Voodoo's Intro to JavaScript

// http://rummelplatz.uni-mannheim.de/~skoch/js/

// JS-book: http://www.dpunkt.de/javascript

// You can use this code if you leave this message

// ******************************************************

// ok, у нас браузер с поддержкой JavaScript

var browserOK = false;

var pics;

// — >

</script>

<script language="JavaScript1.1">

<!- hide

// браузер с поддержкой JavaScript 1.1!

browserOK = true;

pics = new Array();

// — >

</script>

<script language="JavaScript">

<!- hide

var objCount = 0; // количество изображений на web-странице

function preload(name, first, second) {

// предварительна\я загрузка изображений и размещение их в массиве

if (browserOK) {

pics[objCount] = new Array(3);

pics[objCount][0] = new Image();

pics[objCount][0].src = first;

pics[objCount][1] = new Image();

pics[objCount][1].src = second;

pics[objCount][2] = name;

objCount++;

}

}

function on(name){

if (browserOK) {

for (i = 0; i < objCount; i++) {

if (document.images[pics[i][2]]!= null)

if (name!= pics[i][2]) {

// вернуть в исходное систо\яние все другие изображени\я

document.images[pics[i][2]].src = pics[i][0].src;

} else {

// показывать вторую картинку, поскольку курсор пересекает данное изображение

document.images[pics[i][2]].src = pics[i][1].src;

}

}

}

}

function off(){

if (browserOK) {

for (i = 0; i < objCount; i++) {

// вернуть в исходное систо\яние все изображени\я

if (document.images[pics[i][2]]!= null)

document.images[pics[i][2]].src = pics[i][0].src;

}

}

}

// заранее загружаемые изображени\я — Вы должны здесь указать

// изображени\я, которые нужно загрузить заранее, а также объект Image,

// к которому они относ\ятс\я (первый аргумент). Именно эту часть

// нужно корректировать, если Вы хотите использовать скрипт

// применительно к другим изображени\ям (конечно это не освобождает

// Вас от об\язанности подредактировать в документе также и раздел body)

preload("link1", "img1f.gif", "img1t.gif");

preload("link2", "img2f.gif", "img2t.gif");

preload("link3", "img3f.gif", "img3t.gif");

// — >

</script>

<head>

<body>

<a href="link1.htm" onMouseOver="on('link1)"

onMouseOut="off()">

<img name="link1" src="link1f.gif"

width="140" height="50" border="0"></a>

<a href="link2.htm" onMouseOver="on('link2)"

onMouseOut="off()">

<img name="link2" src="link2f.gif"

width="140" height="50" border="0"></a>

<a href="link3.htm" onMouseOver="on('link3)"

onMouseOut="off()">

<img name="link3" src="link3f.gif"

width="140" height="50" border="0"></a>

</body>

</html>

 

 

Данный скрипт помещает все изображения в массив pics. Создает этот массив функция preload(), которая вызвается в самом начале. Вызов функции preload() выглядит просто как:

preload("link1", "img1f.gif", "img1t.gif");

Это означает, что скрипт должен загрузить с сервера два изображения: img1f.gif и img1t.gif. Первое из них — это та картинка, которая будет представлена, пока курсор мыши не попадает в область изображение. Когда же пользователь помещает курсор мыши на изображение, то появляется вторая картинка. При вызове функции preload() в качестве первого аргумента мы указываем слово "link1"; и тем самым задаем на web-странице объект Image, которому и будут принадлежать оба предварительно загруженных изображения. Если Вы посмотрите в нашем примере в раздел <body>, то обнаружите изображение с тем же именем link1. Мы пользуем не порядковый номер, а именно имя изображения для того, чтобы иметь возможность переставлять изображения на web-странице, не переписывая при этом сам скрипт.

Обе функции on() и off() вызываются посредством программ обработки событий onMouseOver и onMouseOut. Поскольку сам элемент image не может отслеживать события MouseOver и MouseOut, то мы обязаны сделать на этих изображениях еще и ссылки.

Можно видеть, что функция on() возвращает все изображения, кроме указанного, в исходное состояние. Делать это необходимо потому, что в противном случае выделеными могут оказаться сразу несколько изображений (дело в том, что событие MouseOut не будет зарегистрировано, если пользователь переместит курсор с изображения сразу за пределы окна).

Изображения — без сомнения могучее средство уличшения Вашей web-страницы. Объект Image дает Вам возможность создавать действительно сложные эффекты. Однако заметим, что не всякое изображение или программа JavaScript способно улучшить Вашу страницу. Если Вы пройдетесь по Сети, то сможете увидеть множество примеров, где изображения использованы самым ужасным способом. Не количество изображений делает Вашу web-страницу привлекательной, а их качество. Сама загрузка 50 килобайт плохой графики способна вызвать раздражение. При создании специальных эффектов с изображениями с помощью JavaScript помните об этом и ваши посетителями/клиентами будут чаще возвращаться на Ваши страницы.

 







Дата добавления: 2015-09-19; просмотров: 385. Нарушение авторских прав; Мы поможем в написании вашей работы!



Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

Тема 5. Анализ количественного и качественного состава персонала Персонал является одним из важнейших факторов в организации. Его состояние и эффективное использование прямо влияет на конечные результаты хозяйственной деятельности организации.

Билет №7 (1 вопрос) Язык как средство общения и форма существования национальной культуры. Русский литературный язык как нормированная и обработанная форма общенародного языка Важнейшая функция языка - коммуникативная функция, т.е. функция общения Язык представлен в двух своих разновидностях...

Патристика и схоластика как этап в средневековой философии Основной задачей теологии является толкование Священного писания, доказательство существования Бога и формулировка догматов Церкви...

Условия, необходимые для появления жизни История жизни и история Земли неотделимы друг от друга, так как именно в процессах развития нашей планеты как космического тела закладывались определенные физические и химические условия, необходимые для появления и развития жизни...

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

Примеры задач для самостоятельного решения. 1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P   1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия