Академический Документы
Профессиональный Документы
Культура Документы
2010 г.
1
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Информация о курсе
Предварительные знания
Базовые навыки работы с текстовым редактором и веб-браузером, знакомство с
Интернет. Для разделов, касающихся Javascript, необходимо представления о языках
программирования, желательно - об объектно-ориентированном программировании.
Лекции
1. Обзор HTML и CSS
Назначение языка HTML. Стандарт HTML и спецификация XHTML. Структура документа
HTML. Назначение языка CSS.
2. Текстовые элементы HTML
Параграфы, заголовки, элементы логического и физического форматирования текста.
Списки, гиперссылки.
3. Знакомство с HTML и CSS
Цель. Практически изучить структуру HTML-документа, научиться подключать таблицы
стилей и настраивать внешний вид страницы при их помощи.
4. Атрибуты стиля (CSS attributes)
5. Механизмы CSS
6. Позиционирование средствами CSS
Типы позиционирования элементов в CSS и их особенности. Позиционирование на
основе плавающих элементов. Приёмы центрирования и наложения элементов.
7. Создание динамического меню навигации при помощи списков и правил CSS
Цель. Научиться применять элементы HTML (списки и гиперссылки), а также свойства
CSS (модель отображения, псевдоклассы гиперссылок) для формирования системы
навигации на веб-странице.
8. Изображения
9. Таблицы
10. Табличная и бестабличная вёрстка
Макет страницы. Колонки, колонтитул, подвал. Формирование макета средствами HTML-
таблиц и правил CSS
11. Создание макета страницы средствами правил CSS
Цель. Практическое освоение основных приемов верстки HTML-страницы с несколькими
разделами.
12. Сценарии Javascript
13. Обработка событий при помощи сценариев Javascript
Цель. Изучение приемов динамического изменения страницы в ответ на действия
пользователя.
14. Динамический HTML и Объектная Модель Документа
15. Динамический HTML
Цель. Изучение приёмов динамического формирования HTML-документа.
16. События. Объект event
17. HTML-формы
18. Создание формы с динамической проверкой
19. Внедрение объектов в документ HTML
Возможности и недостатки динамических HTML-страниц. Применение технологий Java,
Flash, SVG, AJAX, Silverlight (обзор)
20. Знакомство с Silverlight
Цель. Знакомство с программой Microsoft Expression Blend. Создание анимированной
Silverlight-заставки и размещение её в HTML-документе
21. Перспективы и расширения HTML
2
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
3
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
<a href="http://www.bing.com/">Поиск</a>.
Как видно, обозначения тэгов подобраны таким образом, чтобы их легко было отличить
от обычного текста. Угловые скобки зарезервированы для выделения тэгов в
гипертексте. При необходимости использовать эти символы в самом тексте их
обозначают по-другому: < и > (сокращения от less than и greater than - меньше и
больше).
<имя_элемента имя_атрибута1="значение_атрибута1"
имя_атрибута2="значение_атрибута2"...> Текст </имя_элемента>
4
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<hr />
Последняя такая рекомендация появилась в 1999 году - это HTML версии 4.01. А в 2000
году Международная организация по стандартизации (ISO) приняла HTML в этой версии
как международный стандарт (ISO/IEC 15445:2000).
Структура нужна для того, чтобы всё имело своё законное место - текст, тэги, стили,
скрипты, служебная информация.
Существенный смысл ОТД заключается в том, чтобы указать, согласно каким правилам
написан HTML-документ. В рамках стандарта HTML 4.01 возможны вариации:
5
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Строгое ОТД:
Переходное ОТД:
Если вообще опустить ОТД, то браузер сам сделает предположение о том, согласно
каким правилам отображать документ.
<html>
</html>
Проще всего ответить на вопрос, что должно размещаться в разделе head, таким
образом: там размещается всё, что не входит в тело документа, но необходимо для его
правильного отображения. Тело документа - такие вполне зримые элементы как абзацы
с текстом, списки, изображения и таблицы. Шапка документа - его заголовок,
метаданные (информация о самом документе, а не о его содержимом), стили, скрипты.
<head>
<title>Заголовок документа</title>
</head>
6
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<body>
<p>Hello, World!</p>
</body>
XHTML
Во всех предыдущих примерах (и в большинстве последующих) все HTML-элементы
имеют как открывающий, так и закрывающий тэги. Однако стандарт HTML 4.01
допускает и упрощённую разметку: во многих случаях закрывающие тэги не
необходимы, поскольку последующий открывающий тэг автоматически закрывает
предыдущий. Существует ещё целый ряд допущений со стороны стандарта HTML,
сокращающих написание кода для удобства разработчика. Значения атрибутов можно
вводить без кавычек; некоторые атрибуты вовсе можно указывать без значений. Но все
эти допущения совершенно неприемлемы в рамках другого стандарта - XHTML (где X
означает Extended - расширенный).
Стандарт XHTML 1.0 появился в 2000 году, и долгое время официальная позиция W3C
заключалась в том, что будущее HTML - это именно XHTML, и развиваться будет только
этот стандарт. В настоящее время эта позиция изменилась: готовится HTML 5, а
последнее достижение в развитии XHTML - стандарт 1.1 - был признан излишне строгим
и в целом не принят сообществом разработчиков.
7
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Тем не менее, в данном учебном курсе весь материал даётся в виде, отвечающем
требованиям XHTML. Нарушения единообразия - довольно сомнительное удобство, и мы
не рекомендуем ради них игнорировать стандарт XHTML. В основном XHTML 1.0 - это
тот же HTML 4.01, за следующими исключениями.
Минимальный XHTML-документ
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Заголовок</title>
</head>
<body>
</body>
</html>
8
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Дело в том, что в большинстве случаев XHTML-документы читает парсер HTML - для
него это не представляет затруднений, ведь XHTML, добавляя к HTML строгости, вместе
с этим добавляет совсем немного того, чего нет в HTML (например, самозакрывающиеся
теги и значения атрибутов, совпадающие с их именами). Почему? Потому что
документы XHTML обычно передаются как text/html. А почему они передаются таким
образом? Потому что, если передавать XHTML-документы как text/xml, то браузер IE
(самый популярный в настоящее время) будет совершенно отказываться их читать.
Впрочем, существует трюк, предложенный W3C, позволяющий обойти эту трудность, но
9
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Упражнения.
10
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<title></title>
</head>
<body>
<p style="color: Blue; font-family: Verdana; font-size: 14pt; background:
#B9FFCF;">
Несколько абзацев текста синего цвета, написанный шрифтом гарнитуры Verdana
кеглем
14 пунктов на светло-зелёном фоне.
</p>
<p style="color: Blue; font-family: Verdana; font-size: 14pt; background:
#B9FFCF; ">
Стиль всех абзацев одинаковый.
</p>
<p style="color: Blue; font-family: Verdana; font-size: 14pt; background:
#B9FFCF;">
Однако встроенные стили приходится повторять для каждого из них.
</p>
</body>
</html>
Листинг 1.1. Встроенные стили (html, txt)
table {
border: 1px solid black;
}
Данное правило CSS означает: "таблицы везде (где не указано иное) должны иметь
сплошную рамку чёрного цвета толщиной в 1 пиксел".
11
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
background: #B9FFCF;
}
</style>
</head>
<body>
<p>
Ещё несколько абзацев текста синего цвета, написанный шрифтом гарнитуры
Verdana кеглем 14 пунктов на светло-зелёном фоне.
</p>
<p>
На этот раз стиль абзацев определён при помощи правила CSS, применённого
к элементу p.
</p>
<p>
Поэтому все абзацы выглядят одинаково - при существенно меньшем количестве
работы по написанию и, главное, переделке стилей.</p>
</body>
</html>
Листинг 1.2. Каскадный стиль (html, txt)
Упражнение. Замените цвет текста (color) на чёрный (black) в стиле абзаца. Сравните
трудоёмкость этого изменения с предыдущим упражнением.
Краткие итоги
Для разметки веб-страниц создан язык HTML, стандартизованный консорциумом WWW.
Разметка состоит из элементов с атрибутами; границами элементов являются
открывающие и закрывающие тэги.
Вопросы
• Что означают аббревиатуры HTML и CSS?
• Что такое тэг, элемент, атрибут?
• Какое содержимое может иметь элемент?
• Какая последняя версия стандарта HTML? Кем и когда она создана?
• В чём отличие строгого и переходного ОТД?
• Какие элементы обязательно должны входить в документ HTML?
• В чём принципиальное отличие XHTML от HTML?
• Какие правила отличают XHTML от HTML?
• Для чего указывается пространство имён в XML-документе?
• В чём назначение CSS?
12
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
• Заголовки и абзацы
o Заголовок (h1..h6 - header 1...6)
o Абзац (p - paragraph)
• Логическое и физическое форматирование. Разбивка на строки
o Выделения (strong, em - emphasis, span)
o Управление разбивкой текста на строки (br, nobr, pre)
• Секция, список
o Секция (div - division)
o Список (ol - ordered list, ul - unordered list)
o Таблица (table)
• Якорь. Специальные символы
o Якорь (a - anchor)
o Специальные символы
• Вопросы
Заголовки и абзацы
Заголовок (h1..h6 - header 1...6)
<h1>
Это заголовок 1</h1>
<h2>
Это заголовок 2</h2>
<h3>
Это заголовок 3</h3>
<h4>
Это заголовок 4</h4>
<h5>
Это заголовок 5</h5>
<h6>
Это заголовок 6</h6>
Листинг 2.1. Заголовки уровней 1-6 (html, txt)
13
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Абзац (p - paragraph)
p {
text-indent: 2.5em;
margin-top: 0.2em;
margin-bottom: 0.2em;
}
...
<p>
По умолчанию браузер визуально отделяет абзацы друг от друга вертикальным
отступом, что эквивалентно установке свойств margin-top и margin-bottom
в некоторое отличное от нуля значение.
</p>
<p>
В данном примере этим свойствам задано небольшое значение (0.2em, т.е.
14
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
15
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
16
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
других элементов.
Единица измерения, использованная в данном примере для задания высоты поля - em,
что означает "равна высоте шрифта" (em - латинская буква m, напечатанная шрифтом
Cicero - стандартная единица измерения в полиграфии) . Соответственно, 0.5em
означает "равно половине высоты шрифта".
Упражнение.
strong {
color: Red;
}
.accent {
background: #BFFFBF;
color: Blue;
font-weight: bold;
}
...
<p>
Элемент strong по умолчанию делает вложенный текст полужирным, em - <em>
курсивом</em>, но при помощи стилей такое поведение <strong>легко
переопределяется</strong>.
Элемент span по умолчанию никак не влияет на вложенный в него текст -
к нему всегда нужно <span class="accent">применять стиль</span>.
</p>
Листинг 2.4. Выделения в тексте (html, txt)
17
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Таблица 2.1.
Элемент Описание
abbr Указывает, что заключённый в нём текст является сокращением
acronym Указывает, что заключённый в нём текст является акронимом
(сокращением, составленным из заглавных букв)
address Определяет контактный адрес автора документа - например, e-mail
blockquote Определяет блочную цитату (длинную выдержку из другого документа),
которая отображается, как правило, со специальным отступом и курсивом
cite Указывает, что заключённый в нём текст является библиографической
ссылкой
code Используется для показа программного кода (как правило, отображается
моноширинным шрифтом)
del Указывает, что заключённый в нём текст автор исключил из текущей
редакции документа - отображается, как правило, зачёркнутым текстом
dfn Употребляется для выделения термина, впервые появившегося в тексте
(как правило, отображается курсивом)
em Логическое ударение (как правило, отображается курсивом)
ins Указывает, что заключённый в нём текст автор добавил в текущую
редакцию документа - отображается, как правило, подчёркнутым текстом
kbd Используется для показа текста, который пользователь должен вводить с
клавиатуры (как правило, отображается моноширинным шрифтом)
q Определяет короткую цитату
18
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Таблица 2.2.
Элемент Описание
b Определяет полужирный текст
big Определяет крупный текст
i Определяет текст курсивом
small Определяет мелкий текст
sub Определяет текст – нижний индекс
sup Определяет текст – верхний индекс
tt Определяет текст телетайпа (моноширинный)
Как видите, одних и тех же визуальных результатов можно добиться при помощи
разных элементов. Делая выбор, следует руководствоваться не только тем, как элемент
будет отображаться на экране, но и тем, как, например, произнёс бы его синтезатор
речи или как бы мог его интерпретировать поисковый робот. В одних случаях
предпочтение отдаётся логическому форматированию, в других - физическому.
<p>
<b>полужирный текст</b></p>
<p>
<i>курсив</i></p>
<p>
<u>подчёркнутый текст</u></p>
<p>
<tt>моноширинный текст</tt></p>
<p>
<big>на 1 пункт крупнее</big></p>
<p>
<small>на 1 пункт мельче</small></p>
<p>
Верхний и нижний индексы:
<i>c</i><sub>0</sub> + <i>c</i><sub>1</sub><i>x</i>+
<i>c</i><sub>2</sub><i>x</i><sup>2</sup>
</p>
Листинг 2.5. Элементы физического форматирования текста (html, txt)
19
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<title>Untitled Page</title>
</head>
<body>
<p>
Этот абзац будет разбит на строки
<br />
здесь и
20
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<br />
здесь.</p>
<p>
<nobr>Этот очень длинный абзац вообще не будет разбит на строки -
пользуйтесь горизонтальной прокруткой.
Curabitur vitae tincidunt lorem... </nobr>
</p>
Листинг 2.6. элементов HTML для разбивки текста на строки (html, txt)
21
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Секция, список
22
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
блок реализуется при помощи секции либо списка. Подробно использование блоков
рассмотрено в лекциях "Позиционирование" и "Табличная и бестабличная вёрстка"
ol {
list-style-type: upper-roman;
}
...
<p>
Первый список:</p>
<ol>
<li>Пункт</li>
<li>Ещё один пункт</li>
<li>Последний пункт</li>
<li>Вложенный список:
<ul>
<li>Пункт</li>
<li>Ещё один пункт</li>
<li>Последний пункт</li>
</ul>
</li>
</ol>
Листинг 2.8. Списки и их оформление стилями (html, txt)
23
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
list-style-image:url(write.gif);
padding-left:10px;
}
...
<ul>
<li>Пункт</li>
<li>Ещё один пункт</li>
<li>Последний пункт</li>
</ul>
Листинг 2.9. Изображение в качестве маркера (html, txt)
Как видно из примера, пункты в списке должны обрамляться элементами li (list item -
элемент списка), которые, в свою очередь, погружаются в элемент ol или ul.
Упражнение.
o circle
o disc
o decimal
o square
o lower-alpha
o lower-roman
o upper-alpha
o upper-roman
o none
• list-style-image Позволяет вместо маркера из стандартного набора
использовать любое изображение. При этом необходимо учитывать, что размер
изображения должен быть подходящим (в CSS нет средств для его изменения), а
на тот случай, если загрузка изображений в браузере отключена, рекомендуется
указывать и какое-либо значение свойства list-style-type.
24
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Упражнение. Задайте списку: а) рамки (сначала для списка в целом, затем для
его пунктов); б) фоновый цвет; в) отступ слева. Пользуясь
псевдоселектором first-letter, измените цвет и размер начальных букв
пунктов списка.
Таблица (table)
Якорь (a - anchor)
Составные части URL имеют следующий смысл (здесь показаны только наиболее
простые, необходимые элементы):
25
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
протокол://сервер/файл#якорь
<style type="text/css">
a:link {
color: #33ccff;
}
a:visited {
color: #cecece;
}
a:hover {
color: #336666;
}
a:active {
color: #339999;
}
</style>
…
<a id="start"></a>
<a href="#div2">К секции div2</a>
<a href="#end">В конец документа</a>
<a href="http://ya.ru">На Яндекс</a>
<div id="div1">
<strong>Это текст в секции div1 </strong> - Lorem ipsum dolor sit amet...
<a id="anchor1"></a>
Lorem ipsum dolor sit amet…
</div>
<div id="div2">
26
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<a id="end"></a>
<a href="#start">В начало документа</a>
<a href="#div1">К секции div1</a>
<a href="http://ya.ru">На Яндекс</a>
Листинг 2.10. Гиперссылки и их оформление стилями (html, txt)
Специальные символы
27
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Примеры:
©
®
Вопросы
1. Для чего нужны заголовки в документе, при помощи каких элементов они
создаются и как выглядят?
2. Какой элемент формирует абзац?
3. Чем отличаются логическое и физическое форматирование? Назовите несколько
элементов соответствующих и поясните их значения.
4. Какие средства используются для указания разрывов строк в тексте, кроме
блочных элементов?
5. Для чего обычно используется элемент div?
6. Какие способы маркировки и нумерации списков заложены в HTML?
7. Каких эффектов (касающихся маркировки) можно достичь, применяя правила
CSS к элементам списка?
8. Каким образом включается гиперссылка в HTML-документ?
9. Перечислите и определите основные составные части URL.
10. Почему для специальных символов необходимы особые обозначения? Какие это
обозначения?
28
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
Введите определение типа документа XHTML 1.0 Transitional, затем элемент html, а
внутри него - head (с заголовком) и body - пока без содержимого. Напоминаем, что
определение пустого элемента состоит из открывающего и следующего сразу за ним
закрывающего тэга. Примеры этих элементов имеются в первой лекции. Советуем не
копировать (на этот раз), а набрать вручную - это дает некоторую гарантию того, что
вы будете помнить то, как код должен выглядеть и быстрее находить в нем ошибки (с
которыми вы рано или поздно столкнетесь).
29
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
версию этого браузера (на момент написания курса - 8.0). Необходимо также делать
проверку и в других браузерах - профессионалы держат под рукой все современные (и
многие старые) версии всех популярных браузеров. По крайней мере, в одном из
современных ориентированных на стандарты браузеров проверку делать имеет смысл
(помимо IE) - дело в том, что во многом из-за своей популярности IE ведет себя
наиболее нестандартно - это обусловлено стремлением его разработчиков "не обрушить
Web", а поддерживать совместимость с прошлыми версиями различных спецификаций
(многие из которых содержат ошибки).
<style type="text/css">
body {
}
</style>
Теперь по порядку назначим при помощи этого правила элементу body следующий ряд
свойств:
30
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
1. Вставка изображения.
Сейчас понадобится файл с каким-либо графическим изображением типа GIF, JPG или
PNG. Его геометрические размеры должны быть не слишком большими, чтобы оно
аккуратно вписывалось в окно браузера. Ширина окна браузера обычно равна полной
ширине экрана (если нет полосы вертикальной прокрутки) - например, 1280px. Если от
ширины окна отнять удвоенный отступ нашей страницы (поскольку он делается с обеих
сторон), толщину рамки и удвоенное поле, то получится максимальная ширина
изображения, при которой страница будет полностью помещаться в доступную ширину
окна (не требуя горизонтальной прокрутки). Кроме того, потом мы сделаем для
изображению рамку с полем, что еще сократит пространство на странице. И, наконец,
слишком большие изображения выглядят обычно не очень хорошо - все эти
соображения приводят к заключению, что ширину изображения лучше выбирать
достаточно небольшой.
31
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
для этого ему нужно загрузить это изображение. Возможны ситуации, когда браузеру
знать размеры изображения необходимо, но загружать само изображение не нужно -
здесь явное указание размеров будет полезным. Еще один полезный момент явного
указания размеров в разметке заключается в том, что, компонуя страничные элементы,
вы оперируете, как правило, размерами в пикселах, и наличие размеров изображения
в разметке страницы помогает вам в этой задаче.
Вставьте в документ (внутри элемента body, но после заголовка и абзаца) элемент img:
p, h1, h2 {
text-indent: 40px;
}
32
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
.greenspan {
color:Green;
text-decoration:underline;
}
33
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
img {
padding: 10px;
border: 1px solid #777;
}
.pic {
margin-left: auto;
margin-right: auto;
}
.pic p {
}
34
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
35
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
• Размеры и цвета
o Единицы размеров
o Цвета
• Шрифт и текст
• Рамки, поля, отступы, фон
o Рамки
o Поля
o Отступы
o Фон
• Размещение и размер. Переполнение и обрезка
• Наследование. Разбивка на страницы
o Наследование элементами свойств контейнеров
o Свойства, относящиеся к представлению документа на печатном носителе
o Вопросы
Размеры и цвета
Единицы размеров
Относительные единицы:
36
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
• ex – размер буквы x
• px – вычисляется на основе разрешения монитора или принтера
• % – размер относительно другого, как правило, родительского элемента.
Например, ширина ячейки таблицы может быть выражена в процентах от
ширины таблицы
div {
border: 1px solid black;
}
#px {
width: 200px;
}
#percent {
width: 40%;
}
#em {
width: 17em;
}
...
<div id="px">
Ширина этой секции указана в пикселах
</div>
<div id="percent">
Ширина этой секции указана в процентах
</div>
<div id="em">
Ширина этой секции указана в em
</div>
Листинг 4.1. Использование различных единиц измерения для задания ширины (html, txt)
Упражнение. Откройте пример в новом окне браузера и измените а) масштаб
страницы; б) размер шрифта; в) ширину окна. Проследите за шириной блоков.
Цвета
Цвет в CSS может быть задан по имени или в виде шестнадцатеричного числа,
определяющего интенсивности красного, зеленого и синего цветов (RGB схема).
Стандарт HTML 4.01 определяет только 16 цветов, спецификация CSS 2.1 добавляет
37
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
еще один цвет; RGB схема позволяет задать свыше 2,000,000 цветов, от черного
(#000000) до белого (#FFFFFF).
p { color: red; }
/* стандартный цвет */
p { color: #f00; }
/* #rgb */
p { color: #ff0000; }
/* #rrggbb */
p { color: rgb(255,0,0); }
/* целые в диапазоне 0 – 255 */
p { color: rgb(100%, 0.0%, 0%); }
/* диапазон 0.0% - 100.0% */
Шрифт и текст
Описание шрифта и форматирования текста состоит из целого ряда отдельных
атрибутов. Многие термины здесь почерпнуты из типографской практики.
Пример:
.p1 {
font-size: small;
}
/* варианты: xx-small, x-small, small, medium, large, x-large, xx-large */
.p2 {
font-size: larger;
}
/* варианты: larger, smaller */
.p3 {
font-size: 10pt;
}
/* абсолютный размер 10 пунктов */
.p3 {
font-size: 10px;
}
/* размер 10 пикселей. Зависит от разрешения экрана или принтера */
.p3 {
font-size: 120%;
}
/* 120% от размера шрифта родительского элемента */
38
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
• normal – обычный
• bold – жирный
• bolder – жирнее родительского
• lighter – светлее родительского
• 100 – самый светлый
• 200
• 300
• 400 – то же что normal
• 500
• 600
• 700 – то же что bold
• 800
• 900 – самый жирный
li {font-weight: bold;}
p {line-height: 8mm;}
Пример:
p {
font: italic normal 400 12px/14px Arial;
}
/* выделенные жирным значения обязательны, остальные могут быть опущены */
Эквивалентно
p {
font-style: italic;
font-variant: normal; /* значение по умолчанию можно опустить*/
font-weight: 400; /* значение по умолчанию можно опустить*/
font-size: 12px;
line-height: 14px;
font-family: Arial;
}
39
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
h1 {text-transform: capitalize;}
Text-align задает выравнивание текста внутри блока влево (left), вправо (right), по
центру (center) или по ширине (justify). Text-indent определяет отступ первой
строки текста от левой границы блока.
p {
text-align: justify;
text-indent: 20px;
}
/* допускаются положительные и отрицательные значения */
p {
font: 14px Verdana;
}
...
<p>
Ко всем абзацам данного примера применено стилевое правило,
устанавливающее
кегль 14px и гарнитуру Verdana. Данный абзац демонстрирует эти свойства
в чистом виде.
</p>
<p style="font-size: larger">
Текст этого абзаца крупнее, поскольку к нему применен встроенный стиль
со значением свойства font-size:larger.
</p>
<p style="line-height: 200%; color: Red">
В этом абзаце увеличен межстрочный интервал путем задания свойства стиля
line-height: 200%, что означает удвоенную высоту строки. Кроме того,
тексту
назначен красный цвет.
</p>
40
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<p>
Эффект <span style="letter-spacing: 3px">разреженного текста
</span>достигается
путем применения свойства letter-spacing.
</p>
Пример 4.2. Свойства шрифта и текста (html, txt)
Отдельные стили для каждой границы задаются при помощи свойств border-bottom-
style, border-left-style, border-top-style и border-right-style, принимающих
такие же значения.
41
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Поля
Пустое пространство между содержимым блока и его рамкой (или если, рамки нет, то
границей фона) - поле - задается свойством padding. Его размер можно указать в
любых единицах измерения.
Свойство padding - сокращенное: оно позволяет задать либо сразу все поля
одинаковыми (если указано одно значение), либо различные вертикальные и
горизонтальные поля (если указано два значения), либо четыре различных поля,
перечисленных в следующем порядке: top, right, bottom, left.
Примеры:
p { padding: 20px; }
/* все поля равны 20 пикс */
p { padding: 5px 20px; }
/* вертикальные поля равны 5 пикс, а горизонтальные 20 пикс */
p { padding: 5px 20px 5px 10px; }
/* сверху 5, справа 20, снизу 5, а слева 10 пикс */
Отступы
Фон
42
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
body {
margin: 5px;
padding: 5px 10px;
border: 5px solid gray;
background-color: #2ae;
}
...
<div>
<p>
В данном примере к элементу body применены свойства margin, padding,
border
и background-color. В упражнении предлагается назначить эти же свойства
другим элементам страницы - абзацу, списку (и его элементам), а также
изображению.
</p>
<ul>
<li>margin - отступ</li>
<li>padding - поле</li>
<li>border - рамка</li>
<li>background-color - цвет фона</li>
</ul>
<img src="Rock.jpg" alt="Rock" />
</div>
Листинг 4.3. Поля, рамки, отступы и фон (html, txt)
43
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
width и height устанавливают ширину и высоту элемента. Следует иметь в виду, что
фактическая высота элемента на экране - это общая сумма высоты, верхнего и нижнего
44
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
div {
position: absolute;
border: 2px solid black;
padding: 3px;
}
#scrolling {
overflow: scroll;
top: 10%;
bottom: 10%;
left: 0;
right: 20%;
}
#hidden {
top: 30%;
left: 10%;
width: 150px;
height: 97px;
overflow: hidden;
}
#visible {
overflow: visible;
right: 50px;
top: 100px;
max-width: 150px;
max-height: 100px;
}
...
<div id="scrolling">
Эта секция имеет свойство стиля overflow: scroll - поэтому полосы
прокрутки
показаны (хотя и не нужны).
</div>
<div id="hidden">
Эта секция имеет свойство стиля overflow: hidden - поэтому не
поместившийся
в нее текст остается невидим. sed ultrices sed, malesuada pulvinar metus.
</div>
<div id="visible">
Эта секция имеет свойство стиля overflow: visible - поэтому часть текста
(если его много ) может выходить за ее границы.
</div>
Листинг 4.4. Применение свойства overflow (html, txt)
45
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
#div1, #div2 {
position: absolute;
width: 320px;
height: 320px;
}
#div1 {
background-image: url(clipped.png);
}
#div2 {
clip: rect(10px 240px 280px 20px);
background-color: Blue;
}
...
<div id="div1"></div>
<div id="div2"></div>
Листинг 4.5. Обрезка абсолютно позиционированных блоков (html, txt)
46
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
h1 {
display: inline;
}
a {
display: block;
}
...
<div>
<h1>
Этому заголовку назначено стилевое свойство display: inline
</h1>
и поэтому он располагается в одной строке с соседними элементами.
<a href="#">Эта и следующая гиперссылки</a>
<a href="#">сделаны блочными элементами</a>
47
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
48
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
body {
color: red;
font-size: 20px;
border: 5px double blue;
padding: 5px;
}
...
<div>
<h1>
Заголовок 1 уровня</h1>
Текст в абзаце. В данном примере элементу body назначены следующие
стилевые
свойства: цвет текста, размер шрифта, рамка и поле. Как видите, вложенные
элементы наследуют эти свойства выборочно.
<a href="#">Гиперссылка</a>.
</div>
Листинг 4.7. Наследование стилей (html, txt)
49
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
50
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Вопросы
51
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
52
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
• Каскадность
• Альтернативные стили
• Вопросы производительности
53
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Этот подход (inline style) удобен в случаях, когда требуется одноразово изменить
отображение элемента, однако представьте, что обширная и, часто, одинаковая
стилевая информация будет помещена во множество последовательных элементов. Это,
во-первых, утяжеляет документ, во-вторых, затрудняет его редактирование
(потребуется заменить стили во всех вхождениях), в-третьих, не позволяет применить
различные стили для различных носителей информации (экран, принтер и т.д.).
Стандарт описывает отделение содержимого (контента) от стилевой информации.
54
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
• Разработчик или администратор сайта может применять одну таблицу для многих
документов
• Разработчик может менять таблицу стилей, не меняя самого документа
• Средства просмотра (браузеры) могут загружать таблицы стилей селективно,
базируясь на типе носителя.
• Стандарт HTML позволяет включать в документ любое число внешних таблиц
стилей; язык таблиц стилей определяет, как эти таблицы будут
взаимодействовать между собой
• Разработчик может определять взаимоисключающие таблицы стилей
(называемые альтернативными), и конечный пользователь может выбирать одну
из них. Браузер, такой как Internet Explorer 8, позволяет делать такой выбор.
• Разработчик может определить одну из альтернативных таблиц стилей как
предпочтительную, и браузер будет использовать ее по умолчанию.
Default-Style: compact
Если предпочтительная таблица стилей указана несколько раз (в элементах meta и/или
HTTP заголовке), предпочтение отдается последней в списке.
Из двух или более элементов link или style, задающих предпочтительную таблицу
стилей, выигрывает первая запись.
55
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
При этом следует иметь в виду, что не все браузеры, в том числе Internet Explorer 8,
понимают этот метод.
Здесь атрибут media элементов link и style задает тип носителя информации.
Голосовой браузер будет использовать только таблицу corporate-aural.css
(media="aural"), экран и принтер - corporate-screen.css и corporate-print.css,
соответственно, плюс стили из элемента style.
Наследование стилей
56
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Правила CSS
h1 {
color: red;
font-size: large;
}
Селекторы
Простой селектор – это селектор типа либо универсальный селектор (*), за которым
сразу (без пробелов) могут следовать селектор ID, селекторы класса и/или псевдо-
класса.
Селектор типа
Универсальный селектор
57
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
В этом примере правило определяет тонкую синюю рамку вокруг каждого элемента.
Селекторы атрибутов
Помечает элементы, имеющие атрибут lang (естественный язык) со значением "ru" или
"ru-ru", красным, а английский текст (lang="en-us" или lang="en-uk") синим. Как
правило, этот селектор применяется для различения естественных языков.
Селектор класса
58
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Имя класса должно следовать сразу после точки (.) без пробела. В простом селекторе
может быть задан более чем один класс; точка требуется перед каждым именем.
Как отмечает спецификация, "CSS дает настолько большую власть атрибуту class, что
разработчики могут создавать собственный "язык документа", основываясь на
элементах, практически не имеющих собственного форматирования (таких
как div и span), и определяя стилевую информацию через атрибут class .
Разработчикам следует избегать этой практики, так как структурные элементы языка
документа часто имеют общепринятое значение, тогда как созданные разработчиком
классы – нет". Все же следует признать, что концепция классов появилась в CSS
существенно раньше введения селекторов атрибутов.
Селектор ID
Пример:
59
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
border-style: dashed;
}
#grayBorder {
border-color: gray;
}
...
<p class="Bordered">
Это абзац класса Bordered</p>
<p class="Bordered dashed">
Это абзац классов Bordered и dashed</p>
<p id="grayBorder" class="Bordered dashed">
Это абзац классов Bordered и dashed, имеющий также id</p>
Листинг 5.1. Использование селекторов (html, txt)
Псевдо-классы
a:link {
color: Blue;
}
a:visited {
color: yellow;
60
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
}
a:hover {
color: Red;
}
a:active {
color: green;
}
Для того, чтобы псевдо-классы работали, как описано, они должны быть определены
именно в этом порядке.
input[type="text"]:focus {
background: yellow;
}
input[type="text"]:focus {
background: yellow;
}
...
<p>Этот элемент выделяется жёлтым цветом, когда получает фокус ввода:</p>
<input type="text" />
Пример 5.2. Использование псевдоклассов (html, txt)
Псевдо-элементы
p.FirstParagraph:first-letter {
font-size: 200%;
}
61
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
p.FirstParagraph:first-line {
font-variant: small-caps;
}
p.Note:before {
content: "Примечание: ";
}
Комбинаторы
Нередко разработчику требуется изменить оформление элемента в зависимости от
контекста, в котором он находится, например, рядом с какими или внутри каких
элементов он расположен. Спецификация CSS позволяет отбирать элементы по этим
признакам.
Потомки
Соединение двух (или более) простых селекторов пробелом (S1 S2) отбирает элементы
S2, находящиеся внутри элементов S1.
<div class="note">
<p>
Этот абзац соответствует правилу div.note p</p>
<table>
<tr>
<td>
<p>
Этот абзац также соответствует правилу div.note p</p>
</td>
</tr>
</table>
</div>
p.note {...}
p .note {...}
Первый соответствует абзацу класса note, второй – любому элементу класса note,
являющемуся потомком элемента p (абзаца).
Прямые потомки
Комбинация S1>S2 (или S1 > S2) отбирает элементы S2, являющиеся прямыми
потомками элементов S1.
62
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<body>
<p>
Соответствует правилу body > p</p>
<div>
<p>
Не соответствует правилу body > p</p>
</div>
</body>
Близкие соседи
<div>
<h1>
Главная страница</h1>
<h2>
Соответствует правилу h1 + h2</h2>
<h2>
Не соответствует правилу h1 + h2</h2>
</div>
div {
padding: 8px;
border: 4px dotted green;
}
.red_block {
border: 4px solid red;
}
...
<div class="red_block">
<h1>
Заголовок 1-го уровня</h1>
<h2>
Заголовок 2-го уровня</h2>
<p>
Абзац текста</p>
<div>
<h1>
Заголовок 1-го уровня</h1>
<ul>
<li>Первый элемент списка</li>
<li>Второй элемент списка</li>
<li>Вложенный список:
<ol>
<li>Элемент вложенного списка</li>
<li>Элемент вложенного списка</li>
</ol>
</li>
</ul>
</div>
</div>
Листинг 5.3. Использование комбинаторов (html, txt)
63
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Импорт (@import)
<style type="text/css">
64
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
@import "basestyle.css";
p {
font-family: Verdana;
}
</style>
эквивалентно
Браузер игнорирует @import, если это правило находится внутри блока ({…}) или
следует после любого другого правила кроме @import и @charset. Таким образом,
следующие записи ошибочны:
<style type="text/css">
h1 {
color: red;
}
@import "mystyle.css";
</style>
<style type="text/css">
@import "mystyle.css";
@media print {
@import "print-style.css";
Body {
background: white;
}
</style>
<style type="text/css">
@import "mystyle.css";
h1 {
color: red;
}
</style>
<style type="text/css">
@import "mystyle.css";
@import "print-style.css" print;
@media print {
body {
background: white;
}
</style>
Носитель (@media)
Это правило позволяет задавать набор правил для различных типов носителей в
пределах одной таблицы стилей.
<style type="text/css">
@media screen {
body {
65
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
background: blue;
color: white;
}
/* body */}
/* @media */
@media print {
body {
background: transparent;
color: black;
}
/* body */}
/* @media */
</style>
66
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
@page :left {
margin-left: 4cm;
margin-right: 3cm;
}
@page :right {
margin-left: 3cm;
margin-right: 4cm;
}
@page :first {
margin-top: 10cm /* Верхнее поле для первой страницы 10 см */;
}
Кодировка (@charset)
@font-face {
font-family: "MyFont";
src: url(FontSourceFile.eot);
}
h1 {
font-family: "Verdana" , "MyFont";
}
Число Число
Число
Селектор Атрибут style (a) классов типов Специфичность
атрибутов id (b)
(c) (d)
* 0 0 0 0 0
67
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
li 0 0 0 1 1
ul li 0 0 0 2 2
li:first-line 0 0 0 2 2
ul ol+li 0 0 0 3 3
.class1 0 0 1 0 10
li.class2 0 0 1 1 11
li[class="class1"] 0 0 1 1 11
li[id="myId"] 0 0 1 1 11
.class1.class2 0 0 2 0 20
li.class1.class2 0 0 2 1 21
li#myId 0 1 0 1 101
style="" 1 0 0 0 1000
Вопросы
• Какими способами можно связать HTML-документ с таблицей стилей?
• Из чего состоит правило CSS?
• Что такое простой селектор?
• Что выбирает селектор типа?
• Что выбирает селектор класса?
• Что выбирает селектор ID?
• Какой смысл придают правилу CSS комбинаторы потомков и соседей?
• Перечислите и охарактеризуйте определяемые CSS псевдоклассы и
псевдоэлементы.
• Какие типы носителей определяет спецификация CSS? Как связать таблицу
стилей с носителем?
• Как разрешаются конфликты определения стилей?
68
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
69
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
body {
background-image: url(Pos_divs_body.png);
}
div {
color: Blue;
border: solid 1px blue;
margin: 2px;
padding: 4px;
font-size: large;
}
div div {
color: Red;
border: solid 1px red;
}
...
<div>
Это текст в контейнере div - Lorem ipsum...
<div>
Это текст в контейнере div - Lorem ipsum... </div>
Это текст в контейнере div - Lorem ipsum...
</div>
Листинг 6.1. Нормальный поток (html, txt)
70
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Абсолютное позиционирование.
<style type="text/css">
body {
padding: 0;
margin: 0;
}
div {
border: solid 1px blue;
padding: 4px;
}
.static {
color: Blue;
padding: 2em;
}
.abs {
position: absolute;
top: 0px; right: 0px;
color: Red;
border: solid 1px red;
}
</style>
...
<div class="static">
Это текст в обычном (статически позиционированном) контейнере div -
Lorem ipsum...
<div class="abs">
Этот контейнер div позиционирован абсолютно вправо (top: 0px;
right: 0px;) - Lorem ipsum dolor sit amet
</div>
</div>
Листинг 6.2. Абсолютно позиционированный блок в правом верхнем углу (html, txt)
71
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
72
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
div {
width: 40%;
float: left;
margin: 3px;
73
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
padding:3px;
border:solid 1px blue;
color:Blue;
}
...
<div>
Это плавающий контейнер div - Lorem ipsum... </div>
<div>
Это плавающий контейнер div - Lorem ipsum ...</div>
Листинг 6.4. Позиционирование на основе плавающих элементов. Плавающий блочный элемент и
обтекающий его блочный элемент (html, txt)
<div class="floating">
Это плавающий контейнер div - Lorem ipsum...
</div>
74
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
div {
margin-left: auto;
margin-right: auto;
75
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
width: 300px;
background: #ccc;
}
...
<div>
Если задать блочному элементу значение auto в свойствах margin-left и
margin-right, то он центрируется по горизонтали в своём контейнере...
</div>
Листинг 6.6. Методы центрирования элементов на странице. Горизонтальное центрирование разметки
(html, txt)
76
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Относительное позиционирование
div {
width: 70%;
border: 4px dotted gray;
padding: 4px;
padding-bottom: 30px;
position: relative;
margin: 10px auto;
}
div span {
position: absolute;
bottom: 0;
right: 0;
background: #ddd;
77
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
padding: 2px;
margin: 2px;
}
...
<div>
<span>Внутренний блок 1</span> Один из эффективных приёмов
позиционирования
состоит в том, чтобы размещать маленькие объекты относительно других
объектов
на странице, например, блок внутри блока. Для этого блок-контейнер
позиционируют
относительно (при этом он остаётся на месте и не выбивается из
нормального
потока), а внутренний блок - абсолютно.
</div>
<div>
<span>Внутренний блок 2</span> Данный пример показывает размещение
абсолютно
позиционированных элементов span в правых нижних углах их контейнеров.
Внутренние блоки позиционированы посредством задания свойств bottom: 0;
right: 0;
</div>
Листинг 6.8. Применение относительного позиционирования (html, txt)
78
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Упражнения. Придумайте разметку для такой структуры блоков: один сверху на всю
ширину окна; ещё три - под ним, в один горизонтальный ряд, одинаковой ширины (с
небольшими полями между блоками).
Фиксированное позиционирование
Часто бывает нужно, чтобы некоторые элементы страницы были постоянно видимыми,
например, навигационная панель, поле для поиска или логотип сайта, а, как известно,
большинство веб-страниц длиннее высоты экрана. Используя
значение fixed свойства position, вы можете зафиксировать некоторые элементы в
определенных местах, разрешая при этом пользователям прокручивать содержимое
очень длинной веб-страницы. Фиксированное позиционирование работает во многом
подобно абсолютному — вы точно так же можете использовать
свойства top, bottom, left или right для размещения элемента. Как и абсолютное,
фиксированное позиционирование удаляет элемент из потока HTML. Он "плавает" над
другими частями страницы, которые просто игнорируют его. Фиксированное
позиционирование не работает в Internet Explorer версий 6 и ниже.
div {
margin-left: 210px;
}
.fixed {
position: fixed;
left: 10px;
top: 100px;
list-style-position: inside;
margin: 10px;
border: 1px solid black;
background: #ccc;
padding: 3px;
width: 170px;
}
...
<ul class="fixed">
<li>Это список,</li>
<li>позиционированный фиксированно</li>
<li>в точке (10px; 100px)</li>
</ul>
<div>
<p>
Это длинный блок текста, и для его полного просмотра нужно прокручивать
страницу вниз. Фиксированно позиционированный список при этом остаётся
на месте.
</p>
...
</div>
Листинг 6.9. Применение фиксированного позиционирования (html, txt)
79
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Наложение элементов
img {
position: absolute;
width: 50%;
}
img:hover {
z-index: 1000;
}
...
<img src="Crataegus.jpg" alt="Crataegus" title="Crataegus" />
<img style="top: 10%; right: 0" src="Cypripedium C.jpg" alt="Cypripedium C"
title="Cypripedium calceolus" />
<img style="top: 40%; right: 30%;" src="Cypripedium M.jpg" alt="Cypripedium
M" title="Cypripedium macranthos Sw" />
Листинг 6.10. Наложение элементов. Применение свойства z-index (html, txt)
80
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Вопросы
1. Перечислите типы позиционирования CSS.
2. Каковы правила размещения элементов в нормальном потоке?
3. Охарактеризуйте абсолютное позиционирования и область его применения.
4. Как задаётся позиционирование на основе плавающих элементов?
5. Для чего обычно применяется относительное позиционирование?
6. Как достичь центрирования элемента на странице по горизонтали и по
вертикали?
7. Как работает фиксированное позиционирование?
8. Как можно регулировать порядок наложения элементов?
81
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Как правило, такие динамические меню принято создавать средствами языка Javascript,
позволяющего совершать любой сложности манипуляции с элементами веб-страницы.
Однако, существует и решение на CSS - довольно простое и красивое, хотя и не любую
фантазию дизайнера выполняющее. Рассмотрим его пошагово.
1. Запустите Visual Web Developer (или Visual Studio) и создайте новый документ
HTML.
2. Внутри элемента head введите подходящий заголовок страницы.
3. Введите открывающий тэг <style>. Обратите внимание, что программа даёт
подсказки по мере набора текста (эта технология называется Intellisense): введя
открывающую угловую скобку, вы видите перечень html-элементов, а введя
пробел после имени элемента, вы видите перечень допустимых имён атрибутов
данного элемента (в данном случае необходим атрибут type). Поставив знак
равенства после имени атрибута, вы можете увидеть список его допустимых
значений (в тех случаях, когда такой список существует в принципе). Всякий
раз значение можно выбрать из списка щелчком мыши либо, если по мере ввода
оно выделилось автоматически, просто нажать Enter или пробел.
4. После ввода закрывающей угловой скобки редактор автоматически добавит
закрывающий тэг </style>.
5. Создайте в теле документа набор категорий в виде неупорядоченного списка
(ul), каждый элемент которого содержит список ссылок (см. пример).
6. <ul id="MainMenu">
7. <li><a href="#" title="Популярные блюда">Популярные
блюда</a>
8. <ul>
9. <li><a href="/Italian.htm">Итальянская кухня</a></li>
10. <li><a href="/Snack.htm">Закуски</a></li>
11. <li><a href="/Breakfast.htm">Закуски</a></li>
12. <li><a href="/Sweets.htm">Сласти</a></li>
13. <li><a href="/Fruits.htm">Фрукты</a></li>
14. </ul>
15. </li>
16. <li><a href="#" title="Подарки к празднику">Подарки к
празднику</a>
17. <ul>
18. <li><a href="/Anniversary.htm">Юбилеи</a></li>
19. <li><a href="/Baby.htm">Малышам</a></li>
20. <li><a href="/Birthday-Food.htm">День рождения</a></li>
21. <li><a href="/Congratulations.htm">Поздравляем!!!</a></li>
22. </ul>
82
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
23. </li>
24. <li><a href="#" title="Выбор по цене">Выбор по цене</a>
25. <ul>
26. <li><a href="Under-1000.htm">Меньше 1000 руб</a></li>
27. <li><a href="1000-To-1500.htm">От 1000 до 1500 руб</a></li>
28. <li><a href="1500-To-2000.htm">От 1500 до 2000 руб</a></li>
29. <li><a href="2000-To-3000.htm">От 2000 до 3000 руб</a></li>
30. <li><a href="3000-up.htm">Дорого</a></li>
31. </ul>
32. </li>
33. <li><a href="#" title="Фрукты и Овощи">Фрукты и Овощи</a>
34. <ul>
35. <li><a href="/Dried-Fruits-Nuts.htm">Сухофрукты и
Орехи</a></li>
36. <li><a href="/Fruit-Baskets.htm">Корзины фруктов</a></li>
37. <li><a href="/Fruit-Towers.htm">Горы фруктов</a></li>
38. <li><a href="/Healthy-Food.htm">Здоровая пища</a></li>
39. <li><a href="/Organic-Food.htm">Без пестицидов</a></li>
40. </ul>
41. </li>
42. <li><a href="#" title="Садовые и комнатные цветы">Цветы</a>
43. <ul>
44. <li><a href="/Fresh-Flowers.htm">Живые цветы</a></li>
45. <li><a href="/Plants-And-Dish-Gardens.htm">Садовые
цветы</a></li>
46. <li><a href="/Sympathy-Flowers.htm">"Говорящие"
цветы</a></li>
47. </ul>
48. </li>
49. <li><a title="Корпоративные подарки" href="/Corporate-
Food.htm">
50. Корпоративные подарки</a> </li>
51. </ul>
83
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
84
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
62. Добавьте последний штрих: пусть элементы обоих списков при наведении
указателя немного изменяют цвет фона (правило #MainMenu li:hover).
85
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
86
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
8. Лекция: Изображения
Содержание
Элемент img
Элемент img - строчный, и его можно вставлять непосредственно в текст абзаца, пункт
списка или ячейку таблицы - при этом не происходит начала новой строки.
87
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Как правило, JPEG хорош для фотографий, позволяя достичь наилучшего сжатия с
минимальными потерями, а GIF и PNG - для схем и пиктограмм.
Также часто для элемента img указывают ширину и высоту посредством задания
значения атрибутов width и height. Браузер не может верно скомпоновать макет
страницы, не зная размеров входящих в неё изображений, поэтому в том случае, если
эти атрибуты не указаны, браузер должен будет делать отдельный запрос к веб-
серверу (изображения всегда загружаются отдельно от разметки). Возможны ситуации,
когда браузеру знать размеры изображения необходимо, но загружать само
изображение не нужно, поэтому width и height рекомендуется, как правило,
указывать. Очевидно, эти атрибуты позволяют также изменять масштаб и пропорции
изображения на веб-странице, однако, следует иметь в виду, что увеличение масштаба
для точечных изображений всегда ведёт к существенной потере качества, а
уменьшение таким способом, как правило, не вполне оправдано: если изображение
должно быть меньше, то почему бы не уменьшить сам файл изображения? Иначе по
сети передаётся больший объём, чем необходимо.
<style type="text/css">
.percent_size {
width: 30%;
min-width: 200px;
}
img {
margin: auto;
}
</style>
<img class="percent_size" src="Crataegus.jpg" alt="Crataegus" />
<img class="percent_size" src="Cypripedium M.jpg" alt="Cypripedium
macranthos Sw" />
<img class="percent_size" src="Cypripedium C.jpg" alt="Cypripedium
calceolus" />
Листинг 8.1. Процентное задание размеров изображений (html, txt)
88
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
.left {
float: left;
margin-right: 8px;
}
.right {
89
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
float: right;
margin-left: 8px;
}
div {
margin: 8px 0;
overflow: hidden;
}
p {
margin: 0;
}
...
<div>
<img class="left" src="flower1.jpg" alt="flower" />
<p>
Этот текст обтекает изображение, т.е. занимает свободное пространство
сбоку и снизу от него. При помощи CSS данный эффект достигается за счёт
применения к обтекаемому объекту свойства float со значением left или
right. Обычно при этом указывают ещё и отступ (margin).
</p>
</div>
<div>
<img class="right" src="flower2.jpg" alt="flower" />
<p>
Изображения вместе с текстом заключены в данном примере в секции,
которым
назначен небольшой вертикальный отступ (margin: 8px 0). Свойство
clear:both
назначать здесь нет необходимости, поскольку секция стремится занять
100%
ширины своего контейнера, и не станет обтекать другие элементы (если её
ширину специально не ограничить). Контейнеры, содержащие плавающие
элементы
имеют неприятную особенность неправильно определять собственную высоту
(не учитывается высота плавающего элемента). В качестве противодействия
элементам div в данном примере назначено стилевое свойство overflow:
hidden,
которое решает эту проблему.
</p>
</div>
Листинг 8.2. Обтекание изображений текстом (html, txt)
90
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Фоновые изображения
Представляют собой мощный механизм внесения разнообразия в визуальное
представление страницы. Фоновое изображение (одно в CSS 2, и несколько в CSS 3)
можно назначить практически любому блочному элементу - body, div, table, ul и т.д.:
background-image: url(файл);
Путь к файлу может быть, как обычно, абсолютным, относительным или корневым. По
умолчанию изображение повторяется в обоих направлениях, заполняя всю площадь
элемента, которому оно назначено. Дополнительные CSS-свойства позволяют
управлять размещением изображения.
91
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
background-attachment:fixed;
Могут быть указаны не все эти свойства, а только те, которые должны отличаться от
значений по умолчанию.
body {
padding-left: 100px;
background-image: url(Texture.jpg);
background-repeat: repeat-y;
}
...
<div>
<h1>
Заголовок 1 уровня</h1>
<p>
Фоновое изображение (одно в CSS 2, и несколько в CSS 3) можно назначить
практически любому блочному элементу - body, div, table, ul и т.д.:
background-image:
url(файл);
</p>
<p>
По умолчанию изображение повторяется в обоих направлениях, заполняя всю
площадь элемента, которому оно назначено. Дополнительные CSS-свойства
позволяют управлять размещением изображения. В данном примере
изображение
повторяется только по вертикали, поскольку задано свойство background-
repeat:
repeat-y.</p>
</div>
Листинг 8.3. Фоновые изображения (html, txt)
92
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
93
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
div {
background-image: url(rnd_bot.png);
background-position: left bottom;
background-repeat: no-repeat;
width: 200px;
}
h3 {
background-image: url(rnd_top.png);
background-position: left top;
background-repeat: no-repeat;
margin: 0;
padding: 12px;
padding-bottom: 5px;
}
94
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
p {
padding: 12px;
padding-top: 0;
margin: 0;
}
...
<div>
<h3>
Заголовок 3 уровня</h3>
<p>
Изображение разделено на две части, первая из которых назначена в
качестве
фона заголовку: background-image: url(rnd_top.png). Фон заголовка
размещён
слева вверху (background-position: left top) и без повтора (background-
repeat:
no-repeat).
</p>
<p>
Нижняя часть изображения назначена фоном секции (в которую входят и
заголовок,
и абзацы). Оно позиционировано слева внизу и также без повтора.
</p>
</div>
Листинг 8.4. Создание рамки при помощи фоновых изображений (html, txt)
95
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Упражнения.
Попробуйте увеличивать и уменьшать количество текста в заголовке и в абзаце, чтобы
выяснить границы применения рассматриваемого приёма.
Создайте новый HTML-документ с несколькими заголовками и абзацами. Нарисуйте от
руки в редакторе Paint (или любом другом) волнистую горизонтальную линию
небольшой длины. При рисовании постарайтесь, чтобы начальная и конечная точки
находились примерно на одном уровне по вертикали, и чтобы кривая в этих точках
имела примерно одинаковый наклон. Сохраните рисунок в формате png и при помощи
CSS-правила для элемента заголовка поместите его в HTML-документ. Заголовки
должны подчёркиваться линиями.
96
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Ролловеры. Карты
Ролловеры
a {
background-image: url(A_rollover_bg.png);
background-repeat: no-repeat;
display: block;
min-height: 27px;
padding-top: 4px;
padding-left: 35px;
font-size: 16px;
text-decoration: none;
}
a:visited {
background-position: 0 -81px;
}
a:hover {
background-position: 0 -54px;
text-decoration: underline;
}
a:active {
background-position: 0 -27px;
}
div {
width: 230px;
}
...
<p>
Для гиперссылок в данном примере определено единственное фоновое
изображение.
Четырём различным состояниям, определённым для гиперссылки (link,
visited,
hover и active), которым в CSS 2 соответствуют псевдоклассы, назначены
разные позиции этого изображения (background-position).</p>
<div>
<a href="#">link - (0; 0) </a>
<a href="#">active - (0; -27px) </a>
<a href="#">hover - (0; -54px) </a>
<a href="#">visited - (0; -81px) </a>
</div>
Листинг 8.5. Использование изображений-ролловеров в меню (html, txt)
97
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
98
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Вопросы
1. Какой элемент используется для вставки изображения в документ? Какие
атрибуты должен иметь этот элемент?
2. Какие свойства позволяют указать или ограничить размеры изображения?
3. Как достигается обтекание изображений текстом?
4. Какие свойства определяют фоновое изображение элемента?
5. Для чего используются ролловеры и как они создаются при помощи фоновых
изображений?
99
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
100
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
9. Лекция: Таблицы
Содержание
101
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
...
<table>
<tr>
<td>Фамилия </td><td>Телефон </td>
</tr>
<tr>
<td>Иванов </td><td>9094567 </td>
</tr>
<tr>
<td>Петров </td><td>9045732 </td>
</tr>
</table>
Листинг 9.1. Таблица минимальной структуры (html, txt)
102
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
К ячейкам (td и th) применимо большинство обычных стилевых правил, включая цвет,
фон, выравнивание текста и т.п. Для содержимого ячейки также представляет интерес
его вертикальное выравнивание - для этого определено CSS-свойство vertical-align,
принимающее ряд значений, включая middle(середина - по умолчанию), top (верх)
и bottom (низ). Этому CSS-свойству эквивалентен HTML-атрибут valign.
Упражнения.
Уберите стилевое правило border-collapse.
Измените цвет фона ячеек.
Сделайте ячейки, содержащие фамилии, заголовочными. Почему пропали рамки и как
их вернуть?
В варианте примера с внешней границей попробуйте следующие значения
свойства border-style: solid, none, groove, double, ridge, inset, outset.
Уберите css-объявление толщины границы ячейки. Почему границы стали толще?
Элемент caption
Обычно одна или несколько строк вверху таблицы содержит заголовки столбцов,
образуя верхний колонтитул таблицы. Отличие верхнего колонтитула от остальных
строк таблицы заключается, во-первых, в том, что он может каким-либо образом
выделяться. Во-вторых, при распечатке длинных таблиц колонтитул должен появляться
на каждой странице. HTML 4 предоставляет элемент thead для разметки верхнего
колонтитула таблицы, и, поскольку он имеет как физический смысл (влияет на
внешний вид), так и логический (влияет на понимание, а также на невизуальные
методы воспроизведения), то рекомендуется его всегда использовать.
Элемент tbody объединяет строки в группы - они могут быть отделены друг от друга
линейками специальной толщины.
Где и в каком количестве могут содержаться эти элементы - показано на рис. 9.2:
103
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Рис. 9.3. Структура таблицы (при наличии в ней элементов thead и tbody)
table {
border-collapse: collapse;
}
thead {
font-weight: bold;
text-align: center;
background-color: #eee;
}
tbody {
border-bottom: solid 3px;
}
tfoot {
font-style: italic;
text-align: center;
background-color: #eee;
}
td {
border: solid 1px;
padding: 2px;
}
...
<table>
<thead>
<tr>
<td>Верхний </td><td>колонтитул </td>
</tr>
</thead>
<tbody>
<tr>
<td>Первый </td><td>tbody </td>
</tr>
...
</tbody>
<tbody>
<tr>
104
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
105
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Предназначены для того, чтобы назначать свойства столбцам или группам столбцов.
Вообще, таблица задаётся набором строк, но работа со столбцами часто бывает
необходима - например, для задания ширины или фонового цвета столбца - и поэтому
HTML предоставляет эти два специальных элемента. Для того чтобы назначить свойства
всем ячейкам одного столбца, используйте элемент col. Этот элемент может появляться
только в элементе colgroup, а colgroup - только вtable:
<table>
<colgroup>
<col class="middle">
<col class="top">
</colgroup>
...
<colgroup width="20%">
<col />
<col />
<col />
<col />
</colgroup>
<colgroup width="10%">
<col />
<col />
</colgroup>
Как видите, число столбцов в группе задаётся либо их явным перечислением (обычно
это делается в том случае, если некоторые из них нуждаются в дополнительных
атрибутах), либо указанием их количества в значении атрибута span.
.graycol {
background: #eee;
}
.widecol {
width: 200px;
}
...
<table>
<colgroup>
<col class="graycol" span="2" />
<col />
<col class="graycol" span="2" />
<col class="widecol" />
</colgroup>
<thead>
<tr>
<td>Класс graycol</td><td>Класс graycol</td><td>без
стиля</td><td>Класс
graycol</td><td>Класс graycol</td><td>Класс widecol</td>
</tr>
</thead>
106
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<tr>
<td></td><td></td><td></td><td></td><td></td><td>Вообще, таблица
задаётся
набором строк</td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td>но работа со столбцами
часто бывает необходима</td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td>например, для задания
ширины
или фонового цвета столбца</td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td>- для этого HTML
предоставляет
элементы colgroup и col</td>
</tr>
</table>
Листинг 9.3. Применение элементов colgroup и col (html, txt)
<td colspan="3">
107
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<td rowspan="3">
<table>
<thead>
<tr>
<td colspan="2">colspan="2"</td><td colspan="3">colspan="3"
</td><td> </td>
</tr>
</thead>
<tr>
<td rowspan="2">rowspan="2"</td><td></td><td></td><td></td><td>
</td><td></td>
</tr>
<tr>
<td></td><td rowspan="2" colspan="2">rowspan="2" colspan="2"
</td><td></td><td rowspan="3" style="text-align: center">rowspan="3"
</td>
</tr>
<tr>
<td></td><td></td><td></td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td>
</tr>
</table>
Листинг 9.4. Применение атрибутов colspan, rowspan и valign (html, txt)
108
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
109
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
• tHead
• tBodies[]
• tFoot
• rows[] - также применимо к thead, tbody и tfoot.
• cells[]
Пример:
table {
border-style: outset;
border-width: 6px;
border-collapse: collapse;
font-size: 16px;
font-family: Courier;
}
caption {
margin-bottom: .4em;
}
td, th {
border: solid 1px;
padding: 3px;
text-align: center;
width: 2em;
}
thead, th, td:first-child {
background-color: #ddd;
font-weight: bold;
}
...
<table id="MyTable">
<caption>
Таблица умножения однозначных чисел</caption>
<thead>
</thead>
<tbody>
</tbody>
</table>
<script type="text/javascript">
var table = document.getElementById('MyTable');
/*создание тела таблицы*/
/*создаём строку заголовка*/
var head_row = table.tHead.insertRow(-1);
head_row.insertCell(-1);
110
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
</script>
Листинг 9.5. Динамически созданная таблица (html, txt)
Рассмотрим этот пример. С точки зрения структуры HTML-документа, в нём имеется два
элемента: таблица MyTable и элемент script. Браузер, загрузив элементscript,
выполняет содержащуюся в нём программу (хотя язык скрипта и необходимо указывать
в атрибуте type, но единственным общепринятым языком скриптов для всех браузеров
является именно Javascript). Программа формирует таблицу, ссылаясь на неё по
имени table и, причём ссылка получается следующим образом:
111
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Свойство innerHTML позволяет задать разметку для содержимого любого контейнера (за
исключением фреймов). Задавая его для ячейки таблицы, мы тем самым помещаем в
эту ячейку текст (в принципе, можно поместить структуру любой сложности), и этот
текст сразу же появляется в таблице в окне браузера.
Не будем здесь повторять общий курс информатики и объяснять, что такое переменная
- достаточно сказать, что с переменными Javascript можно работать в основном так же,
как и в других языках. Специфика в том, что, хотя переменная Javascript обычно
принимает значение определённого типа (число, строка, объект и т.п.), сама
переменная не типизирована: в неё всегда можно записать значение другого типа.
Поэтому при описании переменных тип не указывается, в отличие, например, от
Паскаля и Си.
2 + 3 //результат: 5
'2' + '3' //результат: '23'
Инкремент:
Цикл:
do {
//тело цикла
} while(/*условие продолжения цикла*/);
Упражнение. Проанализируйте код скрипта с учётом рассмотренных моментов.
112
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Вопросы
1. Какие элементы необходимо должны присутствовать в таблице?
2. Каково назначение колонтитулов таблицы?
3. Как и с какой целью столбцы объединяются в группы?
4. Какие атрибуты используются для объединения ячеек по горизонтали и
вертикали?
5. Какие манипуляции с содержимым таблицы можно производить при помощи
методов и свойств объектной модели таблицы?
113
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
• Табличная вёрстка
• CSS-вёрстка. Макет с одной колонкой
• CSS-вёрстка. Макет с двумя колонками
• CSS-вёрстка. Макет с тремя колонками. Асимметричный макет
• Вопросы
Задача вёрстки HTML-страниц появилась раньше, чем язык CSS, поэтому у неё давно
имеется решение, не основанное на стилях. Любой макет страницы можно представить
как таблицу, ячейки которой имеют требуемые размеры, позиции, оформление и
содержание. Метод вёрстки, основанный на таблицах, совершенно универсален,
достаточно прямолинеен и прост, он влечёт за собой сравнительно немного трудностей,
связанных с кросс-браузерной совместимостью. Большой недостаток всего один: этот
метод не даёт никаких средств для поддержки изменчивости дизайна, т.е. смены
оформления макета. При табличной вёрсткеоформление неразрывно связано с
содержанием документа.
Табличная вёрстка
Рассмотрим сначала пример табличной вёрстки, демонстрирующий основные приёмы
разметки - объединение ячеек, установку границ и вертикальное выравнивание.
<table>
<tr>
<td colspan="3" class="header">
<h1>
Ut nec rutrum quam</h1>
</td>
</tr>
<tr>
<td colspan="3" class="nav"><a href="#">Praesent </a>
<a href="#">Donec </a><a href="#">Vestibulum </a><a href="#">Curabitur
</a></td>
</tr>
<tr>
<td width="20%" class="menu"><a href="#">Maecenas malesuada</a> <a
href="#">Integer molestie</a>
<a href="#">Vivamus aliquet</a> <a href="#">Aliquam imperdiet</a>
<a href="#">Morbi pellentesque </a></td><td width="55%" class="main">
<h2>
Sed faucibus rutrum sodales</h2>
<p>
In hac habitasse platea dictumst...
</p>
<p>
Integer molestie ipsum a arcu mollis ornare...
</p>
114
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
115
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Разметки с непостоянной шириной решают эти проблемы, но у них также есть свои
собственные ограничения. На маленьком экране свободная разметка может настолько
сжаться, что весь дизайн развалится, а при очень широком экране растянется так, что
посетителям придётся читать ненормально длинные строки текста.
Есть CSS-свойства, которые предусмотрены для того, чтобы решить эту проблему: min-
width, min-height, max-width и max-height.
Свойства max- задают максимальные размеры. С ними вы будете уверены, что ваши
страницы не станут слишком широкими, а значит, непригодными для чтения.
#frame {
width: 70%;
min-width: 400px;
margin-left: auto;
margin-right: auto;
background-color: #ddd;
padding: 5px;
}
...
<div id="frame">
<h1>
Заголовок страницы</h1>
<p>
В случае одноколоночного макета достаточно применить горизонтальное
центрирование
к единственной колонке (которая обычно представлена в разметке
секцией).
Дизайн с фиксированной шириной гарантирует то, что разметка выглядит
неизменно
при различных размерах мониторов. Однако на очень маленьком мониторе
посетителю,
116
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
117
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
#frame {
width: 85%;
min-width: 400px;
margin: 0 auto;
}
#col1 {
float: left;
width: 66%;
padding-right: 4px;
margin-right: 4px;
border-right: 1px solid black;
}
#col2 {
float: left;
width: 30%;
padding: 4px;
background-color: #ddd;
}
#footer {
clear: both;
border-top: 1px solid black;
padding-top: 5px;
margin-top: 5px;
}
...
<div id="frame">
118
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<div id="col1">
<h1>
Заголовок страницы</h1>
<p>
Переходя к большему числу колонок, будем применять позиционирование
на
основе плавающих элементов...
</p>
<p>
В остальном идея проста: колонки снабжаются свойством float:left и
указанием
ширины, а также отступа и поля...</p>
</div>
<div id="col2">
<p>
Задавая колонкам фоновые цвета, вы обнаружите, что, когда в колонке
мало
содержимого, заполненный фоном блок смотрится не вполне
эстетично...</p>
</div>
<div id="footer">
© Копирайт
</div>
</div>
Листинг 10.3. Варианты вёрстки двухколоночного макета при помощи CSS. Макет с 2 столбцами
непостоянной ширины (html, txt)
119
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
120
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
}
Пример 10.4. Варианты вёрстки двухколоночного макета при помощи CSS. Макет с 2 столбцами
фиксированной ширины - заполнение фоном всей высоты меньшего столбца (html, txt)
body {
background-color: #bbb;
}
#frame {
width: 760px;
margin: 0 auto;
background-color: #eee;
}
#header {
border-bottom: 1px solid black;
padding: 5px;
text-align: center;
}
#col1 {
float: left;
width: 200px;
padding-left: 10px;
121
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
}
#col2 {
float: left;
width: 328px;
padding-left: 10px;
padding-right: 10px;
margin-left: 10px;
margin-right: 10px;
border-left: 1px solid black;
border-right: 1px solid black;
}
#col3 {
float: left;
width: 170px;
padding-right: 10px;
}
#footer {
clear: both;
border-top: 1px solid black;
padding: 5px;
margin-top: 5px;
text-align: center;
}
...
<div id="frame">
<div id="header">
<h1>
Заголовок страницы</h1>
</div>
<div id="col1">
<p>
Левая колонка имеет ширину 200px и левое поле 10px.</p>
</div>
<div id="col2">
<h2>
Центральная колонка</h2>
<p>
Все 3 колонки - плавающие, и их суммарная ширина (вместе со всеми
полями,
отступами и рамками) равна 760px.</p>
<p>
Все секции помещены в один общий контейнер, которому задана ширина
760px
и который центрирован горизонтально на странице.</p>
</div>
<div id="col3">
<p>
Правая колонка имеет ширину 328px, горизонтальные поля 10px,
горизонтальные
отступы 10px и однопиксельные сплошные рамки.</p>
</div>
<div id="footer">
Нижний колонтитул имеет поле 5px, отступ сверху 5px и однопиксельную
рамку
сверху.
</div>
</div>
Листинг 10.5. Варианты вёрстки трёхколоночного макета при помощи CSS (html, txt)
122
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
#main {
bottom: 10%;
left: 5%;
width: 40%;
}
#title {
top: 50%;
left: 50%;
width: auto;
}
#title h1 {
margin: 0;
}
#block2 {
top: 2%;
right: 2%;
width: 25%;
}
div:hover {
z-index: 1;
}
...
<div id="main">
<p>
<strong>Центральный блок</strong> имеет ширину 40% (от ширины страницы)
и позиционирован абсолютно следующим образом: bottom: 10%; left: 5%;.
</p>
<p>
"Неправильный" дизайн - с произвольным размещением элементов -
используется
123
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<div id="title">
<h1>
Заголовок</h1>
</div>
<div id="block2">
<strong>Блок 2 </strong>позиционирован при помощи свойств top: 2%; right:
2%;
</div>
Листинг 10.6. Асимметричный макет с непостоянной шириной элементов (html, txt)
Вопросы
1. В чём заключаются преимущества и недостатки табличной вёрстки макета
страницы?
2. В чём заключаются преимущества и недостатки вёрстки с фиксированной и
непостоянной шириной колонок?
3. Как гарантировать, что суммарная ширина элементов, размеры которых
измеряются как в пикселах, так и в процентах, не превосходит ширины окна?
4. Какой приём используется для заполнения фоном всей высоты колонки с
небольшим количеством содержимого?
5. Какую HTML-структуру имеет многоколоночный макет?
124
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
Макет будет состоять из трех колонок и двух колонтитулов. Как правило, для верстки
макета оперируют секциями (элементами div). Создайте в теле документа пять
элементов - в качестве левой панели используйте готовое вертикальное меню из
лабораторной работы 2, а остальные элементы - секции:
Для нижнего колонтитула установите свойство clear: both, чтобы он "не плавал". Если
в меню у вас текст имеет белый цвет, то, чтобы его увидеть, задайте какой-либо
фоновый цвет всему меню.
125
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
#header h1 {
margin: 0;
padding: 10px;
}
126
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
1. Верхний колонтитул
Добавьте фоновое изображение - можете использовать файл либо другое на ваш
выбор.
2. Основной раздел.
Цвета заголовков в этом разделе (и в остальных) приведите к единой цветовой гамме.
Между абзацами вставьте горизонтальные линии (элементы hr). Добавьте пространства
между абзацами (используя свойства margin-top и margin-bottom). Горизонтальным
линиям назначьте такой же цвет, как у заголовков, и центрируйте их, задав ширину
50% и автоматические отступы слева и справа. Создайте правила для первых букв
абзаца, изменив их цвет (под цвет заголовков), размер (раза в 3 больше) и добавив
свойство float: left.
3. Правая панель.
Заголовки уменьшите, выровняйте по центру и уберите вертикальные отступы. У
абзацев также уменьшите вертикальные отступы.
4. Нижний колонтитул.
Вставьте в него элемент логического форматирования address, внутри которого
поместите ссылку на некоторый почтовый адрес:
<address>
<a href="mailto:webmaster@site.com">Webmaster</a>
</address>
#footer a {
font-weight: bold;
color: #ddd;
}
5. "Ложные" столбцы.
Чтобы высота левой и правой колонок была не меньше, чем у центральной, придется
применить специальный трюк: заполнить страницу вертикально фоновым
изображением, имеющим высоту 1 пиксел и повторяющим в горизонтальном
направлении раскраску колонок. Понятно, что на самом деле колонки останутся той же
высоты (которая зависит от содержимого и полей), но внешне будет казаться, что они
"достают" до нижнего колонтитула.
Создайте еще одну секцию с id="Wrapper" и поместите в нее все, что находится внутри
элемента body. В определение стиля секции Wrapper добавьте файлbackground.png в
127
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
128
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
129
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<script type="text/javascript">
document.write('Hello from Javascript');
</script>
130
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
a = 2;
var b2 = 3;
sum_a_b2 = a + b2;
В Javascript есть три простых типа данных: строка (String), число (Number) и
логический тип (Boolean), два составных типа: объект (Object) и массив (Array) и
два специальных типа: пустое значение (Null) и неопределенное значение
(Undefined). Тип данных ассоциирован не с именем переменной, а с ее значением.
"простая строка"
'еще одна строка'
"don't worry"
Десятичное
Число Описание
представление
0.0001, .0001, 0.0001 Разные представления числа с плавающей запятой
1e-4, 1.0e-4
125 125 Целое
0377 255 Восьмеричное представление целого
0378 378 Десятичное целое. Восьмеричное представление
допускает лишь цифры от 0 до 7
0xff 255 Шестнадцатеричное представление
0x3e7 999 Шестнадцатеричное представление
00.001 0x0.001 - Ошибка компиляции. Восьмеричные и
шестнадцатеричные числа могут быть только
целыми
if (x == 10)
a = c; // выполняется, если x равно 10
else
a = b; // выполняется в противном случае
131
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
if (x != 0)//если x не равен 0
a = 1;
if (x)
a = 1;
Арифметические операторы
Операции сложения (+), вычитания (-), умножения (*) и деления (/) выполняются в
общепринятой манере.
Оператор деления с остатком (%) делит первое число на второе и возвращает остаток
a = 9 % 4; // 1
b = 19 % 6.7; // 5.6
132
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
a = 1;
b = '2';
c = a + b; // 12
a += 3; // эквивалентно a = a + 3
b /= 2; // b = b / 2
c = 'Hello';
c += ' world!'; // Hello world
Есть также три одноместных оператора: смены знака (-), инкремента (++) и
декремента (--).
var a, b, c, d;
a = b = 2;
// так можно, поскольку оператор присваивания возвращает значение
c = ++a; // 3
d = b++; // 2
Логические операторы
Операторы > (больше), < (меньше), >= (больше или равно), <= (меньше или равно):
133
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
var x = 3;
result = x % 2 == 0 ? "четное" : "нечетное";
//эквивалентно
if (x % 2 == 0)
result = "четное";
else
result = "нечетное";
Управляющие структуры
if (b != 0)
c = a / b; //выполнить деление только если делитель не ноль
if (x % 2 == 0)
document.write(x + ' четное');
else
document.write(x + ' нечетное');
134
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
document.write("Понедельник");
break;
case 2:
document.write("Вторник");
break;
case 3:
document.write("Среда");
break;
case 4:
document.write("Четверг");
break;
case 5:
document.write("Пятница");
break;
case 6:
document.write("Суббота");
break;
default: // выполняется, если не выполнено
//ни одно из предыдущих условий
document.write(d.getDay());
}
В цикле while условие проверяется перед началом каждого повтора. Если условие
изначально ложно, цикл не будет выполнен.
var x = 0;
while (x != 4) {//цикл повторяется, пока условие истинно
x = window.prompt('Сколько будет 2 * 2', x);
//метод window.prompt открывает диалоговое окно с полем ввода,
//куда нужно ввести ответ.
}
if (x == 4)
window.alert("Правильно");
В цикле do…while условие проверяется в конце цикла, то есть цикл повторяется как
минимум один раз.
var x = 0;
do {
x = window.prompt('Сколько будет 2 * 2', x);
135
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
var x = 0;
while (x != 4) {
x = window.prompt("Сколько будет 2*2?", x);
if (x == null)
window.alert("Вы сдались");
else
window.alert("Вы угадали");
136
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
//классический синтаксис
function a1(x, y) {
return x + y;
}
a = a1(3, 4);
b = a2(3, 4);
c = a3(3, 4);
function ArgTest(a, b) {
var i, s = "Функция ArgTest ожидает ";
//число аргументов при объявлении функции
var expargs = ArgTest.length;
function sum() {
var s = 0;
for (var i = 0, n = arguments.length; i < n; i++)
s += arguments[i];
return s;
}
document.write(sum(1, 2, 3, 4)); //10
Как было сказано, функции могут быть аргументами других функций. Например,
метод sort объекта Array производит сортировку массива и может принимать в
качестве аргумента функцию сравнения элементов массива.
137
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
function Factorial(N) {
return N < 2 ? 1 : N * Factorial(N - 1);
}
//создание объектов
var circle1 = new Circle(1, 1, 2);
var circle2 = new Circle(3, 3, 1);
function getLength() {
//this является ссылкой на объект,
//в контексте которого осуществляется вызов
return 2 * Math.PI * this.r; //длина окружности
}
138
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
var uniqueObj = {
prop1: 10, //определяем числовое свойство
prop2: 'red', //определяем строковое свойство
method1: function() { return 'Hello'; } //определяем метод
};
Внешние объекты
Правила игры
Игра ведется колодой карт из 52 листов, от двойки до туза в каждой из четырех мастей.
Каждая карта имеет свою цену, в очках. (От двойки до десятки в соответствии со
значением, картинки – 10, туз 11 или 1, в зависимости от набранных очков)
В игре участвуют два игрока: собственно игрок и крупье. Цель игры - набрать больше
очков, чем противник, но не более 21 (за исключением двух тузов).
Игрок (человек) делает ставку в пределах своего баланса и берет карты по одной, пока
не сочтет количество очков достаточным, после чего передает ход крупье.
//конструктор карты
function Card(n) {
//вспомогательные массивы
var suits = ['треф', 'бубен', 'червей', 'пик'];
var names = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'Валет',
'Дама', 'Король', 'Туз'];
var values = [2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11];
139
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
var Deck = {
cards: [], //собственно колода - массив карт, изначально пустой
num: 0, // внутренний счетчик
nextCard: function() {
//возвращает верхнюю карту из колоды
return this.cards[this.num++];
}
};
140
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
141
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<div id="result">
</div>
<div>
Баланс: $<span id="balance"></span> Ставка: $<span id="bet"></span><br />
Очки: <span id="sum"></span>
</div>
body
{
background-color: Green;
color: White;
font-family: Comic Sans MS;
font-size: 14px;
text-align: center;
}
.Card
{
border: solid 1px #000;
margin: 6px;
}
.Hand
{
height: 120px;/* Делаем достаточно высоким, чтобы поместилась карта */
}
#result
142
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
{
height: 30px;
}
143
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Этот код можно добавить в файл blackjack.js. Сохраните все файлы в одной папке.
Откройте файл blackjack.htm в браузере.
Вопросы
1. Какое назначение имеет язык Javascript?
2. Каким образом сценарий Javascript вставляется в HTML-документ?
3. Как объявляется переменная? Какие имена недопустимы?
4. Какие типы данных имеются в Javascript?
5. Как создаётся массив? С чего начинается нумерация элементов массива?
6. Перечислите и охарактеризуйте управляющие структуры Javascript.
7. Какие существуют в Javascript варианты синтаксиса создания функций?
8. Как создать несколько однотипных пользовательских объектов?
9. Как добавить метод к типу объекта?
10. Как создаётся объект при отсутствии необходимости определения его типа?
144
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
То, как предлагается оформить калькулятор в данной работе, показано на рис. 13.1
145
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
cursor: pointer;
Здесь нуль занимает две смежных ячейки, и необходимо использовать атрибут colspan
Теперь создайте таблицу с двумя строками. Во второй строке создайте две ячейки - в
первую переместите таблицу цифр, а во вторую - таблицу знаков. В первой строке
146
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
нужна всего одна ячейка - для результата - на всю ширину строки. Воспользуйтесь еще
раз атрибутом colspan.
Ячейке результата назначьте атрибут id="result" и создайте для нее стиль (используя
селектор идентификатора), назначив подходящий цвет фона, высоту и выравнивание
текста по правому краю.
Внешней таблице добавьте тонкую границу серого цвета и заголовок (элемент caption)
Принципиально весь приведенный код делает две вещи: определяет действия, которые
нужно проделать сразу по завершению загрузки документа браузером (т.е. при
наступлении события window.onload), а также определяет действия, которые нужно
выполнять в ответ на щелчок мышью по таблицам цифр и знаков (т.е. по
событию onclick, возникающему в этих элементах). Действия представляют собой
блоки кода, помещенные в функцию. Каждый оператор в блоке кода имеет свой смысл
- в коде он пояснен комментариями, которые следует внимательно изучить.
147
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Здесь идея заключается в том, что в ячейке result должно находиться арифметическое
выражение. Чтобы вычислить его результат, нужно провести разбор выражения и
пройти по дереву вычислений, что обычно реализуется относительно громоздким
кодом. Но Javascript предоставляет один особенный метод - eval, который выполняет
любой код Javascript, в том числе и арифметическое выражение! На случай, если
выражение введено неправильно (не соответствуют скобки и т.п.), вызов
метода eval следует заключить в блок try/catch - "попытайся"/"перехвати". Если
исключительная ситуация возникнет, она будет перехвачена блоком catch, который не
делает ничего (главное в том, что исключение считается в таком случае обработанным,
и браузер не будет показывать сообщения об ошибке). Можно было бы, например, в
этом блоке очистить поле result. Еще один важный момент:
обработчик onclick назначен как ячейке calculate, так и содержащей ее
таблице signs. Если специально не предотвратить передачу события родительскому
элементу, то оно будет обработано дважды - сначала ячейкой, затем таблицей.
Посмотрите, как бы это выглядело.
4. Последний штрих:
Необходимые для этого команды приведены ниже, а обработчики, в которых они будут
запускаться, напишите самостоятельно.
elem.style.color = 'red';
elem.style.color = '';
Дополнительное задание. Добавьте к таблице кнопку sin. Если нажата эта кнопка,
выражение должно меняться на Math.sin(выражение).
148
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
149
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Объект window
Объект window является вершиной иерархии. Все остальные объекты являются
дочерними или более отдаленными потомками объекта window. Браузер создает, как
правило, единственный объект window, когда открывает документ в окне, однако если
документ содержит фреймы (элементы frame и iframe), то дочерние
объектыwindow создаются также для каждого фрейма. Доступ к дочерним окнам
возможен через коллекцию frames родительского окна. Дочерние окна зависимы от
состояния родительского окна. Например, закрытие родительского окна приводит к
закрытию всех дочерних окон. Нет необходимости указывать объект window для вызова
его свойств или методов, если вызов относится к текущему окну. Например,
инструкции window.close() и close() идентичны.
Объект navigator
Объект navigator содержит информацию о браузере. Все его свойства доступны только
по чтению и могут использоваться для программного определения свойств и методов,
доступных в том или ином браузере.
150
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Объект location
location = 'http://www.microsoft.com';
window.location.href = 'http://www.microsoft.com';
Объект history
Объект screen
151
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Коллекция frames
window.alert('Всем привет');
function MyAction() {
alert("Приступайте к действиям");
}
var iTimer = window.setTimeout(MyAction, 10000);
// обратите внимание на отсутствие скобок после MyAction
// вариант: window.setTimeout("MyAction()", 10000);
function StopAlert() {
window.clearTimeout(iTimer);
}
152
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<div id="clock">
</div>
<script type="text/javascript">
function MyClock() {
var d = new Date(); //текущие дата и время компьютера пользователя
document.getElementById('clock').innerHTML = d.toTimeString();
}
var iClock = window.setInterval(MyClock, 1000);
function StopClock() {
window.clearInterval(iClock);
}
</script>
Метод open открывает новое окно браузера и загружает в него документ из указанного
адреса.
153
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Метод close закрывает окно. Если окно не было открыто методом open, то выдается
предупреждение о том, что сценарий пытается закрыть текущее окно.
Объект document
Объект window содержит единственный объект document – HTML-документ. По
разнообразию свойств и методов объект document не уступает объекту window. Именно
через объект document осуществляется доступ к содержимому HTML-документа. Вот
некоторые свойства и методы объекта document.
Объект body
Коллекция all
Коллекция all поддерживается только Internet Explorer и содержит все элементы HTML-
документа.
Коллекция anchors
Массив images
...
<img src="myImg.jpg" onmouseover="this.src='myImg_over.jpg'">
...
<script type="text/javascript">
function ImagePreload() {
var img = new Image();
img.src = 'myImg_over.jpg';
}
window.onload = ImagePreload;
</script>
154
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
...
Коллекция forms
Свойство cookie
Cookie могут также читаться и создаваться в браузере при помощи языков сценариев.
Свойство document.cookie представляет собой строку, содержащую пары
имя=значение, разделенные точкой с запятой и пробелом ("; "). Таким образом, для
получения отдельных значений требуется разбор строки.
<script>
// Создает куки с определенными именем и значением.
// срок действия установлен до конца XXI века.
function SetCookie(sName, sValue) {
document.cookie = sName + "=" + escape(sValue)
+ "; expires=Fri, 31 Dec 2099 23:59:59 GMT;";
}
155
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Поиск элемента по id
<script type="text/javascript">
function ShowDetails() {
var elem = document.getElementById('details');
elem.style.display = 'block';
}
</script>
</head>
<body>
<p>
Нажмите кнопку для просмотра подробностей</p>
<button type="button" onclick="ShowDetails()">
Подробности
</button>
</body>
</html>
Internet Explorer предлагает более простой доступ к элементу по его id. Достаточно
просто указать id элемента.
function ShowDetails() {
details.style.display = 'block';
}
156
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
157
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
</head>
<body>
<form method="get" action="form1.htm">
Из чего же сделаны наши
<input type="radio" name="Gender" value="m" onclick="CreateList('m')"
/>мальчишки
<input type="radio" name="Gender" value="f" onclick="CreateList('f')"
/>девчонки
<div id="divList">
<!-- Здесь мы поместим ответы-->
</div>
<script type="text/javascript">
function CreateList(listType) {
var maleOptions = ["веснушки", "хлопушки", "линейки", "батарейки"];
var femaleOptions = ["цветочки", "звоночки", "тетрадки", "переглядки"];
</body>
</html>
Вопросы
1. Для чего используется динамический HTML? Какие технологии он сочетает?
158
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
2. Что такое Объектная Модель Документа и какую роль играет она в динамическом
HTML?
3. Кратко охарактеризуйте
объекты window, history, navigator, document, location, screen.
4. Перечислите и охарактеризуйте наиболее часто употребляемые методы
объекта window.
5. Что такое cookie? Как создавать и читать cookies?
6. С помощью какого метода можно найти в документе элемент по его id?
7. С помощью какого метода можно найти в документе все элементы определённого
типа?
8. Какие методы DOM используются для создания и удаления элементов?
9. Что даёт свойство innerHTML?
159
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
В теле нового документа с именем Lab5.htm создайте элемент div, в котором будет
размещена вся разметка данного примера.
160
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
161
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
2. Отладка сценария.
162
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Лучший способ проследить ход работы сценария - это выполнить его пошагово в
отладчике. IE8 предлагает встроенный отладчик в наборе средств разработчика (Меню
Сервис - Средства разработчика). Для некоторых других браузеров также существуют
отладчики, доступные как плагины - например, FireBug.
3. Функция Calculate.
function Calculate() {
/* Счётчики для количества единиц товара и общей стоимости */
var qty = 0, amount = 0;
/* Цикл по всем строкам в теле таблицы */
for (var i = 0, n = tbl.tBodies[0].rows.length; i < n; i++) {
/* Увеличиваем qty на значение в 3 столбце текущей строки */
qty += parseFloat(tbl.tBodies[0].rows[i].cells[3].innerHTML);
/* Увеличиваем amount на значение в 4 столбце текущей строки */
amount += parseFloat(tbl.tBodies[0].rows[i].cells[4].innerHTML);
}
/* Записываем qty в 3 столбец нижнего колонтитула */
...
/* Записываем amount в 4 столбец нижнего колонтитула */
...
}
4. Функция RemoveProduct(elem).
163
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
function RemoveProduct(elem) {
tbl.deleteRow(elem.parentNode.parentNode.rowIndex);
Calculate();
}
5. Функция RemoveSelected.
function RemoveSelected() {
/* находим все элементы input в теле таблицы */
var checks = tbl.tBodies[0].getElementsByTagName('input');
var i = 0;
/* начинаем перебор элементов в цикле */
while (i < checks.length) {
/* рассматриваем элемент лишь в том случае, если это checkbox и он
отмечен */
if (checks[i].type == 'checkbox' && checks[i].checked)
/* вызываем функцию, которая удалит строку с пунктом заказа - передаём
ей ссылку на checkbox */
RemoveProduct(checks[i]);
else
/* счётчик увеличиваем лишь в том случае, если удаление не было сделано
*/
i++;
}
}
Множество ссылок на все элементы ввода (input) внутри тела таблицы (tbody) легко
получить при помощи метода getElementsByTagName. Этот метод принимает в качестве
параметра имя тэга и выдаёт массив ссылок. Важно отметить, что ссылками являются
не только элементы массива, но и сам массив - ссылочный, т.е. все изменения в
документе автоматически отражаются в этом массиве. Таким образом, удалив строку из
таблицы (и тем самым удалив из неё два элемента input- checkbox и button), мы тем
самым уменьшим число элементов в массиве checks на 2. Это следует принимать во
внимание при циклической обработке массива.
164
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
6. Функция ToggleCheck.
165
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
• type – тип события без приставки "on". Например, событие onclick имеет
тип click.
• button – нажатая кнопка мыши (0 – ни одна, 1 – левая, 2 – правая, 3 – левая и
правая, 4 – средняя, 5 – левая и средняя, 6 – правая и средняя, 7 – все три).
Это свойство имеет смысл для событий мыши. В случае остальных событий имеет
значение 0 независимо от действительного состояния кнопок.
• clientX, clientY – координаты указателя мыши относительно верхнего левого
угла клиентской области окна браузера.
• screenX, screenY - координаты указателя мыши относительно верхнего левого
угла дисплея.
166
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<script type="text/javascript">
function checkCancel() {
if (window.event.shiftKey)
window.event.cancelBubble = true;
}
function showSrc() {
if (window.event.srcElement.tagName == "IMG")
alert(window.event.srcElement.src);
}
</script>
...
<body onclick="showSrc()">
<img onclick="checkCancel()" src="sample.gif">
</body>
...
В этом примере и элемент img, и его родительский элемент body имеют обработчик
события onclick. При щелчке по изображению сначала вызывается
функцияcheckCancel, которая проверяет состояние клавиши Shift. Если клавиша
нажата, передача вверх по иерархии прекращается, если нет, выполняется также
функция showSrc. К сожалению, этот пример работает только в Internet Explorer
(начиная с версии 4.0). Различия в объектной модели Internet Explorer и большинства
других браузеров максимальны именно в объекте event и доступе к нему. В случае
Internet Explorer объект event доступен в функции-обработчике как глобальный
167
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<script type="text/javascript">
function checkCancel(e) {
if (e.shiftKey)
e.cancelBubble = true;
}
function showSrc(e) {
if (e.srcElement.tagName == "IMG")
alert(e.srcElement.src);
}
</script>
...
<body onclick="showSrc(event)">
<img onclick="checkCancel(event)" src="sample.gif">
</body>
...
В этом варианте функция checkCancel работает как в Internet Explorer, так и в Mozilla
Firefox, Apple Safari и Google Chrome, однако функция showSrc по-прежнему работает
только в Internet Explorer. Дело в том, что элемент-источник события доступен в
Internet Explorer как свойство события srcElement, а в других браузерах как target.
Для учета различий можно применить один из нескольких методов:
168
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
30. }
31. }
<script type="text/javascript">
function ChangeStyleOver(elem) {
elem.style.color = 'red';
elem.style.fontSize = 'large';
}
function ChangeStyleOut(elem) {
elem.style.color = 'Black';
elem.style.fontSize = 'normal';
}
</script>
</head>
<body>
<p style='color: Black; font-size: normal;'
onmouseover="ChangeStyleOver(this)"
onmouseout="ChangeStyleOut(this)">
Наведите мышь, чтобы увидеть изменения</p>
</body>
<html>
В этом примере стиль абзаца (элемент p) задан в самом элементе. При наведении мыши
(событие onmouseover) вызывается функция ChangeStyleOver, в которую передается
ссылка на объект-элемент (в этом контексте this указывает на элемент p). Функция
изменяет цвет текста (атрибут стиля color / свойство объектаstyle color) и размер
шрифта (font-size / fontSize). Обратите внимание на общее правило: все имена
свойств начинаются со строчной буквы; если имя CSS атрибута содержит дефис (-), то
дефис удаляется и следующая буква делается заглавной (стиль "спина верблюда").
Когда пользователь отводит мышь от элемента (событие onmouseout),
функция ChangeStyleOut возвращает стиль элемента к исходному. Изменения вступают
в силу немедленно.
169
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
</style>
</head>
<body>
<p>
Наведите мышь, чтобы увидеть изменения</p>
</body>
<html>
170
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Пример: Фотогалерея
Начинающий разработчик хочет создать свою фотогалерею и размещает на странице
маленькие изображения, являющиеся гиперссылками на изображения большего
размера.
#BigImgContainer
{
border:solid 1px #ccc;
background:#fff;
width:150px;
height:150px;
position:absolute;
top:100px;
left:200px;
padding:8px;
display:none;
}
#BigImgContainer div
{
color:Red;
}
171
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
/*
Все свойства и методы объект document доступны только после загрузки страницы
поэтому помещаем код в обработчик window.onload
*/
window.onload = function() {
// находим элемент, в котором должны располагаться
// гиперссылки на изображения
var oGallery = document.getElementById('gallery');
if (!oGallery) {
// элемент не найден. сообщаем инструкции по использованию
alert("Для правильной работы в документе должен быть элемент с
id='gallery'\nПример:\n\
<div id='gallery'>\n\
<a href='MyBigPicture.jpg'><img src='SmallPic.jpg'></a>\n</div>");
return; //выход из функции. Дальнейшие инструкции не выполняются
} // if
172
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
oLoading.style.display = 'none';
oBigImg.style.display = 'block';
} //oBigImg.onload
//Пример 1
function MyFoo(x, y) {
this.x = x;
this.y = y;
}
//Корректный вызов.
var obj1 = new MyFoo(1, 2);
/*
MyFoo является конструктором объекта obj1, this является ссылкой на этот
объект,
который получает свойства x и y со значениями 1 и 2.
*/
// Некорректный вызов.
var obj2 = MyFoo(1, 2);
/*
MyFoo вызвана как обычная функция. Такой вызов осуществляется
в контексте объекта window. Объект window приобретает свойства x и y
со значениями 1 и 2, переменная obj2 значение undefined
(поскольку MyFoo не возвращает значения).
*/
//Пример 2
function SumSquares() {
return this.x * this.x + this.y * this.y;
}
173
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
//Корректный вызов.
var a = obj1.SumSquares();
// Здесь круглые скобки обязательны
//Некорректный вызов.
var b = SumSquares();
/*
Функция вызвана в контексте объекта window, у которого нет (не
предполагается) свойств x и y.
*/
//Чтобы избежать ошибок как в примере 2,
//лучше задать метод SumSquares как анонимную функцию.
MyFoo.prototype.SumSquares = function() {
return this.x * this.x + this.y * this.y;
}
Вопросы
1. Что такое событие?
2. Перечислите основные события.
3. Перечислите свойства объекта event.
4. Как получить доступ к объекту event в функции-обработчике события - в IE и
других браузерах?
5. Как получить доступ к элементу-источнику события, имея объект event?
6. Как передать обработчику события ссылку на элемент-источник?
7. Как происходит связывание элемента-источника и события с функцией-
обработчиком?
8. Какой смысл имеет ключевое слово this в функциях-обработчиках событий?
174
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
• Элементы управления
o input type="text"
o input type="password"
o input type="hidden"
o input type="checkbox"
o input type="radio"
o input type="file"
o input type="submit"
o input type="image"
o input type="reset"
o input type="button"
o Элемент button
o Элемент select
o Элемент textarea
o Вспомогательный элемент label
• Программный доступ к форме и ее элементам
• Безопасность форм
• Вопросы
Помимо общих для большинства элементов атрибутов, таких как id, class, style,
элемент form имеет ряд специфических атрибутов.
• Атрибут action задает URL (адрес), на который будут отправлены данные для
обработки. В приведенном примере данные будут отправлены на
страницу myform.aspx, находящуюся на том же сервере и в той же папке, что и
документ, содержащий форму. Если атрибут action опущен, то данные будут
отправлены на документ, содержащий форму.
• Атрибут method задает способ передачи данных на сервер. Возможны два
значения:
o get – данные будут добавлены к URL, заданному в атрибуте action.
o post – данные будут отправлены через стандартный канал.
• Атрибут enctype задает MIME (Multipurpose Internet Mail Extensions) тип
отправляемого содержимого. Значение по умолчанию этого
175
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Элементы управления
Элементы управления позволяют пользователю вводить данные с целью их дальнейшей
отправки на обработку. Для того, чтобы данные были отправлены,
<body>
<form action="http://server.ru/myform.aspx" method="get">
Ваше имя:
<input type="text" name="username">
<!-- Эти данные будут отправлены, т.к. требования выполнены -->
Ваш любимый напиток:
<select id="drink">
<option>чай</option>
<option>кофе</option>
<option>квас</option>
</select>
<!-- Эти данные не будут отправлены, т.к. отсутствует name -->
<input type="submit" value="отправить">
</form>
Ваше сообщение:
<textarea name="message"></textarea>
<!-- Эти данные не будут отправлены, т.к. находятся за пределами form -->
</body>
Всего три HTML-тэга, input, select, textarea и button, формируют все разнообразие
элементов управления. Элемент input имеет 10 различных форм, select 2.
input type="text"
Этот элемент создает в браузере однострочное поле текстового ввода. Ряд атрибутов
контролируют поведение этого элемента
• Атрибут size задает число видимых символов в поле ввода (при условии
моноширинного шрифта) и, соответственно, ширину самого объекта.
• Атрибут maxlength ограничивает число вводимых символов.
• Атрибут readonly устанавливает, может ли пользователь изменять содержимое
элемента. Атрибут не требует значения. Если атрибут присутствует, то
пользователь не может вводить текст или менять содержимое другим способом,
но может получать фокус ввода.
• Атрибут disabled делает элемент недоступным. Атрибут не требует значения.
Если атрибут присутствует, то элемент отображается с серым фоном и не может
получать фокус ввода.
• Атрибут value содержит текст, который будет отображаться в поле ввода, может
изменяться пользователем и будет отправлен на сервер.
176
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
input type="password"
input type="hidden"
input type="checkbox"
• Атрибут value – это значение, которое будет отправлено на сервер, если стоит
галочка. Если значение не задано, то по умолчанию "on".
• Атрибут checked задает, стоит ли галочка изначально. Атрибут не требует
значения (для корректности XHTML значение должно быть checked).
input type="radio"
Ваш возраст:
<input type="radio" name="age" value="1">10 – 15 лет
<input type="radio" name="age" value="2" checked>16 – 25 лет
<input type="radio" name="age" value="3">26 – 40 лет
<input type="radio" name="age" value="4">Старше 40 лет
Обратите внимание, что вся группа имеет одинаковое значение атрибута name.
Атрибут checked задает начальный выбор. На сервер будет отправлено только
значение выбранного элемента из группы.
input type="file"
Этот элемент отображается как текстовое поле с расположенной рядом кнопкой "Обзор"
(или имеющей аналогичный смысл, в зависимости от браузера), при нажатии на
которую открывается окно выбора файла для отгрузки на сервер. Для того, чтобы
отгрузка файла произошла, должны быть выполнены следующие условия:
177
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
input type="submit"
Этот элемент отображается в виде кнопки, при нажатии на которую данные формы
отправляются на сервер. Значение атрибута value используется как текст на кнопке.
Если value не задано, текст на кнопке зависит от браузера ("Отправить", "Отправить
запрос" и т.д.). Если в форме присутствует единственный элементinput type="submit",
то нет необходимости задавать его атрибут name (и, соответственно, отправлять
значение на сервер). Если элементов input type="submit"несколько,
атрибут name позволит различить на сервере, какая кнопка была нажата.
input type="image"
input type="reset"
Этот элемент отображается в виде кнопки, при нажатии на которую данные формы
возвращаются к заданным изначально без отправки на сервер. Значение
атрибута value используется как текст на кнопке. Если value не задано, текст на
кнопке зависит от браузера ("Очистить", "Reset" и т.д.).
input type="button"
Элемент button
178
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Элемент select
Этот элемент отображается как список опций или как раскрывающийся список, в
зависимости от значения атрибута size. Внутри элемента располагаются опции и/или
группы опций.
<select name="fruits">
<option selected>-Выберите любимый фрукт-</option>
<option value="1">Яблоко</option>
<option value="2">Груша</option>
<option value="3">Банан</option>
</select>
Элемент textarea
179
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Internet Explorer допускает также доступ по имени формы (атрибуту name), если
таковой присутствует. Согласно спецификации HTML 4.01,
атрибут name элементаform считается устаревшим и поддерживается только для
обратной совместимости.
<script type="text/javascript">
var oForm = document.Form1;//работает в Internet Explorer
</script>
180
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
нажал кнопку Submit) и onreset (пользователь нажал кнопку Reset). Оба эти события
могут быть перехвачены и обработаны.
<script type="text/javascript">
function Validate(oForm) {
//выполнить проверку данных формы
return true;
}
</script>
Общим для всех элементов управления является метод focus(), который передает
фокус ввода элементу (и вызывает событие onfocus). Метод select()отличается от
метода focus() тем, что не только помещает фокус ввода в элемент, но и, в случае
текстовых полей, выделяет содержимое.
181
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
182
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<td colspan="2">
<input type="checkbox" id="chkAgree" name="agree" value="yes">
<label for="chkAgree">Я согласен с условиями</label>
</td>
</tr>
<tr>
<td>
<button type="submit"><b>Зарегистрировать</b></button>
</td>
<td>
<button type="reset"><i>Очисить форму</i></button>
</td>
</tr>
</table>
</form>
</body>
</html>
input[type="text"], input[type="password"]
{
border: solid 1px #ccc;
width: 150px;
}
/* Использование псевдо-класса :focus - хорошая альтернатива
обработке события onfocus
*/
input[type="text"]:focus,
input[type="password"]:focus,
input:focus+label /* Элемент label, следующий сказу за элементом, получившим
фокус ввода */
{
background:#cff;
}
/* Первая ячейка таблицы в строке */
td:first-child {text-align: right;}
.Counter
{
position:absolute;
display:none;
font-size:small;
background:#dfd;
}
table {border:solid 1px #ccc;}
#errors {color:Red;}
/*
Объявляем переменную для формы. В этот момент мы не можем связать ее с
объектом, поскольку документ еще не до конца загружен
*/
var oForm = null;
/*
183
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
//Проверяем пароль
if (!oForm.pwd.value) {
oErrors.innerHTML += '<li>Введите пароль</li>';
oForm.pwd.style.borderColor = 'red';
if (result) {// элемент с ошибкой не был до этого найден
oForm.pwd.select();
}
result = false;
}
// Проверяем совпадение введенных паролей
// Поле подтверждения пароля не имеет атрибута name,
// поэтому мы не можем получить его через oForm.pwd1
// Используем поиск в документе по атрибуту id
var oPwd1 = document.getElementById('pwd1');
if (!oPwd1.value) {// поле пусто
oErrors.innerHTML += '<li>Подтвердите пароль</li>';
oPwd1.style.borderColor = 'red';
if (result) {
oPwd1.select();
}
result = false;
}
else // поле не пусто
if (oPwd1.value != oForm.pwd.value) {// пароли не совпадают
oErrors.innerHTML += '<li>Пароли должны совпадать</li>';
oPwd1.style.borderColor = 'red';
if (result) {
oPwd1.select();
}
result = false;
}
// Группа переключателей представляет собой массив элементов.
// Мы должны проверить каждый
var genderSelected = false;
for (var i = 0, n = oForm.gender.length; i < n; i++) {
if (oForm.gender[i].checked) {// найден выбранный элемент
genderSelected = true;
// нет необходимости продолжать
break;// выход из цикла
184
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
}
}
if (!genderSelected) {// ни один из переключателей не выбран
oErrors.innerHTML += '<li>Укажите пол</li>';
if (result) {
// элемент input type=radio не имеет метода select()
// помещаем фокус ввода в первый элемент группы
oForm.gender[0].focus();
}
result = false;
}
if (!oForm.agree.checked) {
oErrors.innerHTML += '<li>Вы должны согласиться с условиями</li>';
if (result) {
// элемент input type=checkbox не имеет метода select()
// помещаем фокус ввода в этот элемент
oForm.agree.focus();
}
result = false;
}
// Проверка закончена.
// Если result == false, отправка данных отменяется
return result;
}// function Validate
185
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Безопасность форм
Неправильное использование HTML-форм может существенно повредить безопасности
веб-приложения. Данные формы, передаваемые через HTTP протокол, не шифруются и
могут быть перехвачены и изменены при передаче. Для передачи конфиденциальных
данных, таких как имена пользователей, пароли, номера кредитных карточек и т.д.,
следует использовать HTTPS (Secure Hypertext Transfer Protocol). Это поможет
обезопасить данные ваших пользователей.
Вопросы
1. Что такое HTML-форма? Для чего она предназначена?
2. Какие специфические атрибуты имеет форма?
3. Данные каких элементов управления отправляются на сервер?
4. Перечислите и охарактеризуйте элементы управления формы.
5. Перечислите и охарактеризуйте атрибуты элемента текстового ввода.
6. Как получить программный доступ к объекту form?
7. Перечислите основные методы и события объекта form.
186
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
187
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
• Технология JAVA
• Adobe Flash и Scalable Vector Graphics
o Adobe Flash
o Scalable Vector Graphics (SVG)
• AJAX (Асинхронный Javascript с XML)
• Microsoft Silverlight
• Вопросы
Как было показано в предыдущих лекциях, динамический HTML (под которым обычно
подразумевают комплексную технологию работы с объектной моделью HTML-документа
при помощи Javascript и CSS) позволяет превратить статические веб-страницы в
интерактивные приложения. Можно "на лету" создавать и изменять любые элементы
документа, можно реагировать на любые действия пользователя с документом. Теперь
рассмотрим то, чего достичь средствами DHTML не удастся:
188
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Технология JAVA
Правильнее говорить о мире технологий Java: разработчики шутят, что, составив
любую трехбуквенную аббревиатуру на J, вы с высокой вероятностью получите
название одной из технологий, основанных на языке Java. Но здесь пойдет речь только
о тех, которые запускаются в браузере, а это, в первую очередь, Java-апплеты.
Сам язык Java появился в начале 90-х годов прошлого века внутри компании Sun
Microsystems, занимающейся, в частности, разработкой программного обеспечения.
Целью его авторов было создание альтернативы C++ - языку, бескомпромиссному по
эффективности работы программ, но и требующему чрезвычайно аккуратной работы
программиста, что не всегда оправдано. Язык Java берет за основу проверенные
временем приемы объектно-ориентированного программирования в C++, исключая те
языковые механизмы, которые дают возможность программистам допускать наиболее
разрушительные и трудноуловимые ошибки (в первую очередь это арифметика
указателей, явное управление памятью и множественное наследование). Была
добавлена языковая поддержка многопоточности и распределенных вычислений,
созданы многочисленные библиотеки. С 1996 года поддержку Java включила в свой
(тогда - самый популярный) браузер компания Netscape. В настоящее время "Java -
повсюду" - в бытовой электронике, мобильных устройствах и, конечно, в веб-
приложениях - как на серверной, так и на клиентской стороне.
Чтобы вставить апплет в веб-страницу, нужно применить еще один особый механизм
HTML. Основная точка расширения HTML -это внедрение в документобъектов. Здесь
"объект" - абстракция: он означает "все что угодно, если браузер сможет обработать
это - возможно, при помощи дополнительной программы". В частности, Java-апплеты
обрабатываются Java-плагином и виртуальной машиной Java.
189
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Кстати, байт-код может быть размещен в Java-архиве (jar), и в этом случае разметка
несколько изменится.
Приведем здесь пример простейшего апплета. Не ставя перед собой цели научить
программировать на Java или Flash, мы все же считаем, что начинающий веб-
разработчик должен быть сразу верно сориентирован в многообразном и запутанном
мире интернет-технологий - необходимо иметь представление о ключевых технологиях,
их возможностях и знать, как начать путь по их изучению и что ждет на этом пути.
1 import java.applet.*;
2 import java.awt.*;
3 import java.awt.geom.Ellipse2D;
4
5 public class AppletExample extends Applet {
6 @Override
7 public void paint(Graphics g) {
8 Graphics2D g2 = (Graphics2D) g;
9 g2.setPaint(new GradientPaint(0, 100, Color.WHITE, 300, 600,
Color.RED));
10 g2.fill(new Ellipse2D.Double(0, 100, 600, 200));
11
12 g2.setColor(Color.BLUE);
13 g2.setFont(new Font("Arial", Font.ITALIC, 60));
14 g2.drawString("Здравствуй, мир!", 140, 210);
190
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
15 }
16 }
Листинг 19.1. Файл "AppletExample.java" (html, txt)
191
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
1 package javafxapplication1;
2
3 import javafx.stage.Stage;
4 import javafx.scene.Scene;
5 import javafx.scene.text.Text;
6 import javafx.scene.text.Font;
7 import javafx.scene.shape.Ellipse;
8 import javafx.scene.paint.Color;
9 import javafx.scene.paint.Stop;
10 import javafx.scene.paint.LinearGradient;
11
12 Stage {
13 title: "Здравствуй, мир!"
14 width: 600 height: 400
15 scene: Scene {
16 content: [
17 Ellipse {
18 centerX: 120, centerY: 60
19 radiusX: 100, radiusY: 40
20 fill:
21 LinearGradient {
22 startX : 0.0 startY : 0.0
23 endX : 1.0 endY : 0.0
24 stops: [
192
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Adobe Flash
193
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
194
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Говоря о Flash, нельзя не добавить, что эта технология в настоящее время переросла
рамки веб-приложений, и позволяет создавать кроссплатформенные приложения,
выполняемые за пределами браузера - при помощи среды Adobe Integrated Runtime
(AIR). Аналогия с Java продолжается.
195
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Размещение SVG в HTML-странице</title>
</head>
<body>
<object type="image/svg+xml" data="SvgExample.svg" width="600"
height="400">
<p>
Для отображения SVG необходимо
<a href="http://www.adobe.com/svg/viewer/install/auto/">загрузить
плагин</a>.</p>
</object>
</body>
</html>
Пример 19.3. Определение графических элементов на SVG и включение SVG-объекта в HTML-документ
(результат - на рис. 19.4) (html, txt)
196
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Самая большая проблема SVG - отсутствие поддержки браузером IE. Для отображения
SVG в IE используется либо плагин (например, Adobe SVG Viewer), либо апплет (проект
Batik), либо Flash-приложение (проект SVGWeb).
• Интерактивные карты.
• Формы с подгрузкой данных в фоновом режиме.
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></scrip
t>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-
ui.min.js"></script>
<link rel="Stylesheet"
href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.0/themes/base/jquery-
ui.css" />
<script type="text/javascript">
window.onload = function() {
$("#datepicker").datepicker({
onSelect: GetData,
dateFormat: 'dd/mm/yy'
});
};
function GetData(date) {
$.get("http://www.cbr.ru/scripts/XML_daily.asp", { date_req: date },
function(data) {
var result = data.text.replace(/\w+ \w+ 1/g, '<br />1');
$('#Valutes').html(result);
});
}
</script>
197
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
</head>
<body>
<p>
Выберите дату:
<input id="datepicker" type="text" /></p>
<div id="Valutes">
</div>
</body>
</html>
Листинг 19.4. Динамическая AJAX-страница (html, txt)
Внимание. Данный пример работает только будучи запущенным с локального
компьютера (а не с веб-сервера).
Вся эта работа выполняется при помощи функции $.get библиотеки JQuery (можно
было бы проделать все и на "чистом" Javascript, без дополнительных библиотек, но код
стал бы на порядок более громоздок и менее очевиден).
Первый параметр функции $.get - URL, по которому следует сделать запрос (по
умолчанию запрос - асинхронный).
198
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Упражнения.
Microsoft Silverlight
Если история Flash уходит корнями в середину 1990-х, то технология Microsoft
Silverlight появилась совсем недавно - в 2007 году и во многом учитывает недостатки
своих предшественников в области RIA-технологий. Идея, в целом, та же: специальный
плагин выполняет приложение, интегрированное в веб-страницу при помощи
элемента object. В реализации основное отличие, пожалуй, следующее: для
разработки Silverlight-приложения используются языки достаточно широкого
назначения. Кроме того, в Silverlight решена задача отделения содержания от
поведения: для определения первого используется разметка (XAML), а для второго -
код на языке программирования из семейства .NET (в первую очередь, C# или Visual
Basic).
Семейство языков .NET интересно тем, что оно включает современные объектно-
ориентированные языки с массой усовершенствований по сравнению с классическими
C++ и Java. Также впечатляет количество библиотек, входящих в .NET Framework,
которая бесплатно поставляется Microsoft и выполняет роль каркаса, берущего на себя
компиляцию, запуск и обеспечение .NET-приложений необходимыми функциями.
199
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
200
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Вопросы
1. Каких возможностей недостает в DHTML?
2. Что такое Java-апплет? Как вставить апплет в веб-страницу?
3. Каковы возможности и недостатки апплетов?
4. В чем преимущества технологии Flash?
5. Что из себя представляет документ SVG?
201
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
202
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
1. Создание Silverlight-приложения
Запустите Microsoft Expression Blend и создайте новый проект (File - New Project).
Назовите проект Lab7 (рис. 20.1).
203
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
204
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
205
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Кроме того, имеет смысл обнулить толщину рамки фрейма (BorderThickness) на вкладке
Appearance во избежание малейших отличий размера внутренней области фрейма от
размера страницы (что может привести к странным для новичка эффектам при сжатии
ячейки таблицы на странице).
3. Градиентная заливка.
206
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
4. Добавление текста.
207
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
208
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
209
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
210
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Перед тем как перейти к более сложной части работы, следует убедиться, что на
данном этапе всё работает правильно. Вернитесь на страницу MainPage, выделите
фрейм, и среди его свойств на вкладке Common Properties задайте Source, выбрав из
выпадающего списка имя страницы AnimatePosition.xaml.
Запустите проект (меню Project - Run или F5). При этом все файлы проекта
автоматически сохранятся, произойдёт компиляция, создастся xap-архив с Silverlight-
приложением и тестовая страница TestPage.html, которая содержит HTML-элемент
object, ссылающийся на xap-архив. Страница TestPage.html будет открыта в браузере, и
вы должны увидеть главную страницу с заголовком и фреймом, в котором расположены
созданные вами в данной части работы текстовый блоки.
http://localhost:1874/TestPage.html#/AnimatePosition.xaml
Также интересен тот факт, что адрес включает имя страницы в навигационном фрейме.
Когда страниц станет несколько, можно будет делать переходы между ними,
модифицируя соответствующую адресную часть (и создавая гиперссылки извне с
указанием конкретной внутренней страницы).
211
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Нажмите кнопку "+" на панели Objects and Timeline (в которой находится дерево
объектов). В появившемся окне дайте создаваемому элементу понятное имя, например,
sbAppearance (рис. 20.12).
2. Запись анимации
В этом примере эффект пусть будет, например, таким: при загрузке страницы
текстовые блоки поочерёдно "вылетают" с разных сторон и, слегка пружиня,
останавливаются на своих местах. Для его реализации нужно всего лишь отметить на
временной шкале, в какой момент времени каждый объект должен быть в том или ином
месте и уточнить функцию интерполяции, которая по умолчанию линейная.
212
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
На самом деле, ещё ничего не записано, поскольку не ясно, что будет меняться в
анимации. Переместите курсор на начало временной шкалы и задайте начальное
состояние анимации: блоки разнесите в разные стороны за пределы страницы
(пользуясь инструментом Selection), а на вкладке Appearance панели свойств обнулите
непрозрачность (Opacity). Просмотрите анимацию в действии, нажав кнопку Play на
временной шкале.
213
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
3. Запуск анимации.
На панели свойств следует указать, какое именно событие, как, и на какой StoryBoard
будет влиять (рис. 20.16).
214
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
В данном случае событие страницы Loaded (загружена) будет вызывать действие Play
элемента StoryBoard по имени sbAppearance.
215
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
Последний стандарт HTML появился в 1998 году. После этого работа консорциума WWW
над развитием HTML была на долгое время прервана, но в 2007 году возобновлена. В
настоящее время работа над проектом HTML 5 ведётся W3C совместно с группой
разработчиков, называемой Web Hypertext Application Technology Working Group
(WHATWG). В основе этой работы лежит стремление создать спецификацию новой
версии HTML, учитывающую реальные современные потребности веб-разработчиков и
более точно (по сравнению с HTML 4) описывающую порядок интерпретации документа
браузером.
Момент, когда можно будет забыть HTML 4 и полностью перейти на HTML 5, наступит
точно не скоро. Для этого спецификация HTML 5 сначала должна быть завершена,
одобрена производителями браузеров и полностью реализована в браузерах. И ещё
должно будет пройти какое-то время, чтобы доля старых браузеров, не
поддерживающих новой спецификации, сократилась бы до пренебрежимо малой
величины.
<!DOCTYPE html>
216
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<script type="text/javascript">
217
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
<label>
Номер кредитной карты:
<input type="text" pattern="[0-9]{13,16}" name="cc" />
</label>
<style type="text/css">
input:valid {
background: lime;
}
input:invalid {
background: red;
color: white;
}
input:required {
background: yellow;
color: Red;
}
</style>
218
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Ссылки:
http://www.whatwg.org/specs/web-forms/current-work/#extensions
http://diveintohtml5.org/forms.html
219
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Canvas
Этот новый HTML-элемент предоставляет API для рисования. В отличие от SVG, Canvas
оперирует не объектами (текст, линия, кривая), а точками, т.е. выполнение, например,
команды fillRect создаст на холсте нарисованный прямоугольник, но не предоставит
нового объекта, аналогичного rect в SVG, которым можно было бы манипулировать при
помощи набора свойств и методов DOM, и который мог бы реагировать на внешние
события. Зато работа Canvas с точечной графикой более эффективна, чем в SVG.
Несколько команд рисования показано в примере 21.1.
<script type="text/javascript">
window.onload = function() {
/*получаем ссылку на холст*/
var canvas = document.getElementById('myCanvas');
/*контекст*/
var context = canvas.getContext('2d');
/*создаём градиент*/
var myGradient = context.createLinearGradient(0, 0,
600, 400);
/*добавляем цветовые позиции к градиенту*/
myGradient.addColorStop(0, "green");
myGradient.addColorStop(1, "white");
/*устанавливаем созданный градиент как стиль заливки*/
context.fillStyle = myGradient;
/*заливаем прямоугольную область*/
context.fillRect(0, 0, 600, 400);
220
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
}
</script>
<div>
<canvas id="myCanvas" width="600" height="400">
</canvas>
</div>
</body>
</html>
Листинг 21.1. Рисование при помощи Canvas (html, txt)
Хранилище DOM
Ещё один полезный механизм, заложенный в проект спецификации HTML 5 и уже
реализованный в IE8, а также в ряде других браузеров - хранилище DOM.
<!DOCTYPE html>
<html>
<head>
<title>Сохранение сеанса</title>
<script type="text/javascript">
var list;
window.onload = function() {
//сохраняем ссылку на список (она будет использоваться часто)
list = document.getElementById('list');
var StorageSupported = false;
//определяем, поддерживается ли хранилище:
//некоторые браузеры создают исключение при обращении к sessionStorage
-
221
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
if (StorageSupported) {
//поддержка есть - сообщим об этом
document.getElementById('msg').innerHTML =
'Ваш браузер ' + 'поддерживает'.fontcolor('green') + ' хранилище
сеанса';
//проходим в цикле по всем элементам, уже сохранённым в хранилище
(если есть)
for (var n = 0; n < sessionStorage.length; n++) {
var key = sessionStorage.key(n);
//помещаем их ключи и значения в список list
list.options[list.options.length] = new Option(key + ': ' +
sessionStorage[key], key);
}
}
else {
//поддержки нет - также сообщаем об этом
document.getElementById('msg').innerHTML =
'Ваш браузер ' + 'не поддерживает'.fontcolor('red') + ' хранилище
сеанса';
//получаем ссылку на массив элементов формы
var formElems = document.forms[0].elements;
//и делаем их недоступными (disabled)
for (i = 0; i < formElems.length; i++) {
formElems[i].disabled = 'disabled';
}
}
}
</head>
<body>
<h1>
Страница 1</h1>
<h2 id="msg">
</h2>
<form action="">
<p>
Здесь вы можете ввести произвольный текст, который будет сохранён в
хранилище
сеанса под ключом <code>info1</code>:</p>
<textarea cols="50" rows="5" id="info1" onkeyup="if(value)
sessionStorage.setItem('info1', value);"></textarea>
<p>
222
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Ссылки:
http://dev.w3.org/html5/webstorage
http://msdn.microsoft.com/ru-ru/library/cc197062(VS.85).aspx
223
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
http://blogs.msdn.com/giorgio/archive/2009/11/29/ie8-and-html-5.aspx
CSS 3
В данном разделе рассматриваются те из многочисленных нововведений CSS 3,
которые уже нашли поддержку в отдельных браузерах и представляют интерес для
веб-дизайнера, не создавая при этом серьёзных проблем обратной совместимости. О
поддержке конкретным браузером того или иного механизме можно узнать
на http://www.quirksmode.org/css/contents.html.
Новые селекторы
Теперь правила CSS могут назначать стили элементам по более сложным критериям,
чем в CSS 2.1.
Этот механизм можно использовать, например, когда элементы формы или таблицы
имеют осмысленные идентификаторы (idили name), состоящие из частей, которым
можно поставить в соответствие некоторое форматирование. В примере
21.3идентификатор ячейки таблицы указывает, какие цвета применять для
содержащегося в ней текста.
table {
font-family: Verdana;
font-size: 40px;
border-collapse: collapse;
}
td {
border: 1px solid black;
padding: 4px;
text-align: center;
}
td[id^=r]:first-letter, td[id$=r] {
color: Red;
}
td[id^=g]:first-letter, td[id$=g] {
color: Green;
}
td[id^=b]:first-letter, td[id$=b] {
color: Blue;
}
td[id^=v]:first-letter, td[id$=v] {
color: Fuchsia;
}
td[id^=k]:first-letter, td[id$=k] {
color: Black;
}
...
<table>
<tr>
<td id="rr">АБ</td><td id="rb">ВГ</td><td id="rg">ДЕ</td>
</tr>
<tr>
<td id="br">ЖЗ</td><td id="bb">ИК</td><td id="bg">ЛМ</td>
</tr>
<tr>
<td id="gr">НО</td><td id="gb">ПР</td><td id="gg">СТ</td>
224
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
</tr>
<tr>
<td id="vr">УФ</td><td id="vb">ХЦ</td><td id="vg">ЧШ</td>
</tr>
<tr>
<td id="kr">ЩЫ</td><td id="kb">ЬЭ</td><td id="kg">ЮЯ</td>
</tr>
</table>
Пример 21.3. Применение селекторов атрибутов CSS 3 (html, txt)
Ссылка: http://www.w3.org/TR/css3-selectors/#attribute-substrings .
Новые псевдоклассы
Псевдокласс n-го потомка
225
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
p:nth-child(odd) {
background-color: #ccc;
}
p:nth-child(even) {
background-color: #e7c;
}
Другие псевдоклассы:
226
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
h1 ~ p {
color: Red;
font-size: 1.2em;
}
h2 ~ p {
font-size: 1em;
color: blue;
}
h3 ~ p {
color: green;
}
227
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Ссылка: http://www.w3.org/TR/css3-selectors/#general-sibling-combinators
Рамки и цвета
228
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
div {
background-image: -moz-linear-gradient(top, #E63B10, #F5EF38);
background-image: -webkit-gradient(linear,center top, center
bottom,from(#E63B10),to(#F5EF38));
background-color:#f5cB10;
color: blue;
}
.border_color {
border: 8px solid #888;
-moz-border-bottom-colors: #555 #666 #777 #888 #999 #aaa #bbb #ccc;
-moz-border-top-colors: #555 #666 #777 #888 #999 #aaa #bbb #ccc;
-moz-border-left-colors: #555 #666 #777 #888 #999 #aaa #bbb #ccc;
-moz-border-right-colors: #555 #666 #777 #888 #999 #aaa #bbb #ccc;
}
Здесь толщина границы - 8 пикселов, и для каждого ряда пикселов задан свой цвет - от
более тёмного к более светло-серому. Браузеры, не воспринимающие свойств с
префиксом -moz, проигнорируют их, и рамка останется просто серой, как указывает
свойство border.
.border_rounded {
229
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}
.border_img {
border: 8px solid #3FA9F5;
-moz-border-image: url(border_img.png) 27 stretch;
-webkit-border-image: url(border_img.png) 27 stretch;
}
.border_img {
border: 8px solid #3FA9F5;
-moz-border-image: url(border_img.png) 27 round;
-webkit-border-image: url(border_img.png) 27 round;
230
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Исходное изображение:
.box_shadow {
-moz-box-shadow: 10px 10px 5px #888;
-moz-background-clip:padding;
-webkit-box-shadow: 10px 10px 5px #888;
-webkit-background-clip:padding;
}
231
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Ссылки:
http://www.w3.org/TR/2002/WD-css3-border-20021107/#the-border-image-uri
http://dev.w3.org/csswg/css3-images/
http://www.css3.info
Вопросы
1. Какие новые виды элементов формы предусмотрены в HTML 5?
2. Какие имеются в HTML 5 возможности по проверке введённых в форму данных?
3. В чём отличие технологий SVG и Canvas?
4. Перечислите и охарактеризуйте дополнительные селекторы CSS 3.
5. Какие новые методы выборки элементов документа введены в DOM?
6. Какие новые свойства CSS 3 можно применять для работы с рамками и цветами?
7. Какие дополнительные предосторожности следует принимать, пользуясь новыми
средствами HTML и CSS?
232
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Содержание
233
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
234
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
235
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
236
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Чтобы привязать запуск этой анимации к щелчку мыши по холсту, привяжите к нему
поведение ControlStoryboardAction и настройте его свойства соответствующим образом.
Проверьте анимацию в действии.
237
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
238
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
239
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
240
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
3. Редактирование HTML-страницы
Найдите в папке с вашим Silverlight-приложением страницу TestPage.html (подкаталог
Bin\Debug), создайте её копию и при помощи стилей центрируйте объект на странице.
241