Иллюстрированный самоучитель по созданию сайтов :: Меню :: Главная [index.htm] 1. Как создают веб-страницы 1.1 Как создают веб-страницы 1.2. Как разместить веб-страничку на сервере 1.3. Как написать веб-страницу 1.4. Обзор программ для просмотра веб-страниц 1.5. Обзор программ для создания веб-страниц 1.6.(Часть-I) Создание веб-страниц при помощи программы Allaire Homesite/Cold Fusion 1.6.(Часть-II)Автоматизация ввода 2. Основные средства языка htmL 2.1. Простейшее форматирование текста 2.2. Самое главное на любой веб-странице — гиперссылки 2.3. Как создать списки на веб-странице 2.4. Создание таблиц 3. Графика на веб-странице 3.1.(Часть-I) Основные способы применения графики 3.1.(Часть-II)Изображение-карта 3.2. Графические форматы Интернета 3.3. Графические элементы оформления веб-страниц 3.4. Графические маркеры 3.5. Подготовка рисунков в программе Xara Webstyle 3.6.(Часть-I)Подготовка рисунков в программе Adobe Photoshop 3.6.(Часть-II)Украшение изображения мелкими деталями 4. Оформление веб-страницы с использованием стилей 4.1. Оформление с помощью атрибута STYLE 4.2. Определение стилей в специальной таблице 4.3. Обзор других возможностей стилевых таблиц 5. Использование звука на веб-странице 5.1. Добавление звукового оформления 5.2. Программы для сжатия звуковых фрагментов 5.3. Маленькие хитрости 6. Динамические веб-страницы на основе JavaScript 6.1. Простейшие примеры 6.2. Как писать собственные функции 6.3. Динамическое изменение внешнего вида страницы 6.4. Другие возможности языка JavaScript 7. Веб-страницы, реагирующие на действия пользователя 7.1. Ввод данных пользователем в формы htmL 7.2.(Часть-I)Страница, управляемая при помощи мыши 7.2.(Часть-II)Динамическое управление позиционированием элементов 7.3. Страница, управляемая с клавиатуры 7.4.(Часть-I)Динамическое отображение текста веб-страницы 7.4.(Часть-II)Использование других свойств при работе с текстом 7.5. Динамическое изменение графических элементов веб-страницы 8. Размещение элементов на веб-странице и навигация по сайту 8.1. Использование структуры фреймов 8.2. Управление расположением элементов веб-страницы с помощью таблиц 9. Дополнительные возможности формирования веб-страниц 9.1. Пример использования элемента управления Tabular Data 9.2. Пример простейшего серверного сценария Наш белый каталог сайтов | Добавить сайт Гостевая книга Контакты Добавить в избраное :: Друзья :: SiteUa - Створити свій сайт безкоштовно 1 Рейтинг Вконтакте ++ + :: Статистика :: - 7.2. Страница, управляемая при помощи мыши Мы уже говорили о том, что одним из самых привлекательных нововведе ний HTML 4.0 является возможность динамически изменять страницы и реагировать на действия пользователя. Давайте рассмотрим, как такая реакция может осуществляться. Помните, как в примерах Главы 4 мы изменяли цвет гиперссылки при наведении на нее мыши? Это происходило с помощью псевдокласса :hover. Однако этот псевдокласс пока что определен только для тега <А> . А как быть, если мы хотим изменить цвет обычного текста при наведении на него мыши? Рассмотрим, как это делается. Допустим, мы написали небольшую тесто вую страницу. <ТIТLЕ>Обработка событий мышиТIТLЕ> Этот текст не изменит свой цвет. Этот текст изменит свой цвет, если навести на него мышь! Этот текст не изменит свой цвет. Реакция на наведение Теперь давайте сделаем так, чтобы вторая строка этого текста действительно изменяла свой цвет при наведении указателя мыши. Для начала давайте выделим ее в отдельный блок:
Этот текст изменит свой цвет, если навести на него мышь!
Чтобы при наведении мыши что-нибудь произошло, нужно добавить обработчик событий onMouseOver:
Этот текст изменит свой цвет, если навести на него мышь
Итак, обработчик добавлен, однако пока он ничего не делает. В кавычки нужно поместить то действие, которое он должен выполнить. А что он дол жен сделать? Изменить цвет этого блока
, например, на красный. Доступ к свойствам текущего элемента осуществляется с помощью ключевого слова this:
Этот текст изменит свой цвет, если навести на него мышь!
Если теперь открыть эту страницу в броузере, то при наведении указателя мыши на вторую строку текста, цвет строки действительно изменится на красный. Однако, один раз изменившись, он так и останется красным. Чтобы при уводе указателя мыши со строки цвет изменился обратно на черный, добавим обработчик событий, реагирующий на увод указателя. Он называется onMouseOut:
Этот текст изменит свой цвет, если навести на него мышь!
Теперь при наведении указателя мыши на эту строку, ее цвет изменится на красный, а при уводе указателя — обратно на черный. Можно также использовать и доступ по названию элемента. Например, если установить в этом блоке атрибут ID="text1", то можно будет написать так:
Этот текст изменит цвет, если навести на него мышь!
Этот изменит свой цвет, если навести на него мышь!
Обратите внимание на то, что внутри кавычек расположен текст, написанный на языке JavaScript. Чтобы не загромождать текст HTML-документа, можно заранее определить соответствующие функции в разделе : <ТIТLЕ>Обработка событий мышиТIТLЕ> а при определении обработчиков событий писать только имена функций:
Этот текст изменит свой цвет, если навести на него мышь!
Результат будет тот же, что и в прошлый раз. Таким же образом можно изменить не только тот блок текста, на который мы навели указатель мыши, но и любые другие элементы, если только присвоить им имя. Например, если мы хотим одновременно с изменением цвета второй строки на красный изменять цвет третьей строки, скажем, на зеленый, достаточно будет сначала присвоить третьей строке имя:
Этот текст изменит свой цвет, если мышь навести на вторую строку!
а потом соответствующим образом изменить функции: function change() { document.all.textl.style.color="red"; document.all.text2.style.color="green"; } function change2() { document.all.textl.style.coior="black"; document.all.text2.style.color="black"; } Теперь при наведении мыши на вторую строку ее цвет будет изменяться на красный, а цвет третьей строки — на зеленый. К сожалению, здесь начинают сильно сказываться различия между броузерами. Доступ через метод documental! будет работать в Internet Explorer, но не сработает в Netscape. Чтобы этот пример мог работать в Netscape 6, необходимо доступ через метод document, all заменить на доступ через метод document. getElementByld( ). А как быть, если мы хотим, чтобы этот пример работал и в Internet Explorer, и в Netscape 6? Учет различий между броузерами Такие вопросы обычно решаются не просто. Но в данном случае мы можем осуществить проверку версии броузера и, в зависимости от ее результата, присвоить переменной textl либо значение document.all.textl, либо значение document.getElementByld("text1"). А затем в функциях замены цвета просто подставлять эту переменную. То же самое можно проделать и с переменной text2. Только нужно не забыть заранее определить эти переменные: var text1, text2; function brws() { if (navigator.appName!="Net scape") { textl=document.all.textl; text2=document.all.text2 ; } else { textl=document.getElementById("textl") ; text2=document.getElementById("text2"); } } Теперь необходимо сделать так, чтобы нагла функция brws( ) выполнялась сразу после загрузки страницы. Для этого установим в теге обработчик событий, реагирующий на загрузку элемента. Он называется onLoad: Посмотрим, что у нас получается в целом. 06pa6oткa событий мыши (1Е4, NN6) Этот текст не изменит свой цвет.
Этот текст изменит свой цвет, если навести на него мышь!
Этот текст изменит свой цвет, если мышь навести на вторую строку!
Результат можно увидеть на рис. 7.5. Теперь этот пример работает и в броузере Internet Explorer, и в броузере Netscape 6. Конечно, хотелось бы создавать такие страницы, которые бы работали по крайней мере в этих двух броузерах, потому что в Netscape версии 4 поддержка динамических страниц вообще очень слабая. Однако это не всегда возможно. В этой книге в дальнейшем все примеры будут ориентированы на броузер Internet Explorer версии 4 и выше (если специально не оговорено обратное). Рис. 7.5. Страница, на которой цвет строк может изменяться Кнопки, влияющие на вид страницы Теперь рассмотрим такой пример. Предположим, мы разместили на веб- странице сказку, с градиентным феном. Однако, возможно, кому-то этот фон может помешать читать текст, и, заботясь о пользователе, хочется предусмотреть кнопку, при нажатии на которую фон становился бы равномерно зеленоватым. Для пользователей, пред почитающих читать черные буквы на белом фоне, можно предусмотреть возможность смены цвета фона на белый. Для начала в соответствии с требованиями HTML 4.0 заменим атрибуты BGCOLOR= и BACKGROUND= тега на соответствующие стилевые свойства: Что же касается тега , то ему желательно присвоить имя для облегчения доступа к его свойствам: Теперь добавим сверху две кнопки: одну для выключения фонового рисунка, а другую — для смены цвета фона на белый:
Кнопки созданы, но пока при их нажатии ничего не происходит. Нам надо написать функцию, убирающую фоновый рисунок. Для этого нужно всего лишь стилевому свойству background-image присвоить значение none: function noBg() { document.all.doc.style.backgroundlmage='none'; } Обратите внимание на то, что в тексте на языке JavaScript (а не на языке CSS) нужно обязательно преобразовать название стилевого свойства с дефисом, как объяснялось выше. Теперь нужно сделать так, чтобы наша функция noBg() выполнялась при щелчке мыши на первой из кнопок. Для этого надо в соответствующий тег кнопки добавить обработчик событий, реагирующий на щелчок мыши. Он называется onClick: Аналогично создадим функцию для смены цвета фона на белый: function colChangeO ( document.all.doc.stylе.backgroundColor='white'; } и добавим ко второй кнопке обработчик события onClick: Если теперь открыть эту страницу в броузере, то при нажатии на кнопку Убрать фоновый рисунок градиентный фоновый перелив исчезнет, уступив место зеленоватому цвету, а при нажатии на кнопку Сделать фон белым фон страницы действительно станет белым. Однако неплохо бы дать пользователю и возможность обратной смены цвета и включения градиента. Он, конечно, может для этого нажать в броузере кнопку Обновить, однако рассчитывать на это некорректно, да и нс всякий пользователь сразу сообразит это сделать. Поэтому давайте при выключении фонового рисунка сменим надпись на кнопке. Для этого желательно дать кнопкам имена, например вот так: Можно было, разумеется, использовать и атрибут ID= вместо NAME=. Для того чтобы изменить надпись на первой кнопке, достаточно изменить значение ее атрибута VALUE=: document.all.butti.value='Вернуть фоновый рисунок'; Теперь давайте подумаем, как нам переделать функцию поВд(). Ведь она должна убирать фоновый рисунок, если он есть, и включать его, если его нет. Одновременно нужно соответствующим образом изменять надпись на кнопке. Следовательно, нужно сначала проверить, есть ли фоновый рисунок: function noBg() { if (document.all.doc.style.backgroundlmage="none") { document.all.doc.style.backgroundlmage='none' ; document.all.butti.value='Вернуть фоновый рисунок'; } else { document.all.doc.style.backgroundlmage="url('Images/gradi.jpg')"'; document.all.butti.values'Убрать фоновый рисунок'; } } В первой строке функции мы сравниваем значение стилевого свойства backgroundlmage со значением none, и если оно с ним не совпадает, то, значит, фоновый рисунок есть. В этом случае мы присваиваем этому спой ятву значение none и изменяем надпись на кнопке на Вернуть фоновый рису (нок. В противном же случае мы присваиваем свойству backgroundlmage значение, содержащее имя файла фонового рисунка, и изменяем надпись на кнопке на первоначальную. Таким же способом мы переделываем функцию colChange(). Сначала проверим значение свойства backgroundColor, и, если оно не совпадает со значением white (белый), присвоим ему это значение, а в противном случае присвоим первоначальное значение #BFFFBF. Одновременно будем изме нять и надпись на второй кнопке: function colChange() { it (document.all.doc.style.backgroundColor!='white'){ document.all.doc.style.backgroundColor"'white' ; document.all.butt2.value='Сделать фон зеленым'; } else { document.all.doc.style.backgroundColor='#BFFFBF' ; document.all.butt2,value='Сделать фон белым'; } } Теперь пользователь может с помощью первой кнопки включать и вык- лючать фоновый рисунок по желанию, а с помощью второй — переклю чать цвет фона с зеленоватого на белый и обратно. Однако остался еще один нерешенный вопрос. Дело в том, что если включен фоновый рису- нок, то переключение цвета фона не дает никакого видимого результат”, что может смутить пользователя. Поэтому, пока включен фоновый рису нок, лучше вообще не давать возможности нажимать на вторую кнопку. Internet Explorer позволяет сделать ее недоступной с помощью атрибут DISABLED. Поскольку изначально фоновый рисунок включен, установим этот атрибут сразу же при создании второй кнопки: А в функцию noBg( ) следует включить сброс атрибута DISABLED для второй кнопки при выключении фонового рисунка и, соответственно, уста новку этого атрибута при включении фона: function noBg() { if (document.all.doc.style.backgroundlmage!="none") { document.all.doc.style.backgroundlmage='none'; document.all.butti.value='Вернуть фоновый рисунок'; document.all.butt2.disabled=false; } else { document.a 11.doc.style.backgroundlmage="url('Images/gradi.jpg')"; document.all.butti.value='Убрать фоновый рисунок'; document.all.butt2.disabled=true; } } Вот теперь все становится на свои места. Пользователь сможет только тогда воспользоваться кнопкой для смены цвета фона, когда фоновый рисунок выключен. Можно было бы, конечно, и просто сделать вторую кнопку невидимой (с помощью стилевого свойства visibility), однако, на наш взгляд, это было бы менее наглядно. Давайте посмотрим, что у нас получилось в целом. CKА3KА
О ТОМ, КАК ИВАН-ДУРАК ПОСРАМИЛ ЦАРЯ ГOPOXA
авным-давно жил-был на белом свете царь Горох. И были у него поля гороховые, и леса гороховые, и степи гороховые, и даже моря гороховые. Все было гороховым. И была у него дочь — царевна Горошина. Волосы у нее были зеленые, и глаза тоже зеленые, потому что с детства только на горох и смотрела. Но вообще-то она была писаной красавицей. Все придворные царские, и бояре, и пажи, и лакеи, и даже слуги и повара дворцовые были по уши влюблены в нее. Но была у царевны Горошины одна странность — любила она смотреть по ночам на далекую звезду Адырлетавру, которая светила в том царстве так ярко, что обычные люди на той стороне, где звезда была, даже окон в домах не делали.
............................................
Тут и сказке конец, а кто слушал — молодец, ему пряник в награду и кило мармеладу.
Результат показан на рис. 7.6. Так страница будет выглядеть сразу после загрузки. Обратите внимание на то, что вторая кнопка изначально недоступна. Для красоты мы отделили наши кнопки от основного текста тем же разделителем, который использован в конце страницы. Рис. 7.6. Веб-страница, на которой “бесполезная” в данный момент кнопка недоступна Заметим, что приведенная выше страница будет работать только в Internet Explorer. Ее можно заставить работать и в Netscape 6 тем же способом, который мы применили в предыдущем примере — путем написания функции, присваивающей одной и той же переменной либо значение document.all, либо document.getElementByld, в зависимости от типа броузера: var doc, butti, butt2; function brws(), { if (navigator.appName!""Netscape") ( buttl=dofc.ument .all. butti; butt2=docwnent.all.butt2; doc=docunysnt. all. doc; } else ( buttl=document.getElementById("buttl") ; butt2=document.getElementById("butt2") ; doc=document.getElementById("doc") ; } } Затем следует переписать функции noBg() и colChange( ), убрав из них обра щение document.all: function noBg() { if (doc.style.backgroundlmage!="none") { doc.style.backgroundlmage='none' ; butti,value='Вернуть фоновый рисунок'; butt2.disabled=false; } else { doc.style.backgroundlmage="url('Images/gradi.jpg')"; butti.value='Убрать фоновый рисунок'; butt2.disabled=true; } function colChange() { if (doc.style.backgroundColor!='white') { doc.style.backgroundColor='white' ; butt2.value='Сделать фон зеленым'; } else { doc.style.backgroundColor='#BFFFBF' ; butt2.value='Сделать фон белым'; } } И, наконец, назначить выполнение функции brws() сразу после загрузки страницы: Теперь наш код будет одинаково работать и в Internet Explorer 4+, и в Netscape 6. Что касается Netscape 4, то, если постараться, можно заставить эту стра ницу работать и там, но это будет довольно сложно. В Netscape 4 нельзя получить доступ непосредственно к свойствам тега , однако броузер можно “обмануть”, использовав либо тег и коллекцию document.layers, либо свойства типа document.body.bgColor. Давайте лучше не будем этим заниматься, тем более что смотреть нашу страницу в Netscape 4 все равно можно, просто обе наши кнопки в нем вообще не отобразятся (этот броу зер не воспринимает теги вне элемента