Author: Хольцшлаг М.Е.
Tags: взаимодействие сетей межсетевой обмен компьютерные системы и сети программирование информатика информационные технологии интернет компьютерные технологии
ISBN: 978-5-89392-146-5
Year: 2007
УДК 004.738.5(075.4)
ББК 32.973.202-018.2я78-1
Х75
Серия: «Официальный учебный курс»
Холыпплаг, Молли Е.
Х75 Языки HTML и CSS : для создания Web-сайтов : [учеб. пособие]
/ М. Хольцшлаг; [пер. с англ. А. Климович]. — М.: ТРИУМФ, 2007. —
304 с.: ил. — (Официальный учебный курс). — Доп. тит. л. англ. —
ISBN 978-5-89392-146-5.
Агентство CIP РГБ
Вы хотите создать собственный Web-сайт? Или обновить уже
имеющийся? Может быть, вы хотите быстро и легко освоить новые технологии и
сделать свою работу максимально эффективной? Тогда эта книга для вас.
Автор является членом организационного комитета рабочей группы
по разработке Web-стандартов и членом консультативного комитета
всемирной организации Web-мастеров.
На основе множества прекрасно подобранных примеров кода HTML,
XHTML, CSS вы освоите все, что нужно для практической работы в Web.
Никакой теории или занудных нотаций, только освоение техники работы с
HTML/CSS и применение уже готовых шаблонов для своих целей. К тому
же в книге содержится приложение с описаниями всех элементов языка
XHTML и CSS, что делает ее ценным справочником для Web-дизайнера.
Authorized translation from the English language edition, entitled SPRING INTO HTML AND CSS, Iя Edition,
ISBN 0131855867, by HOLZSCHLAG, MOLLY E., published by Pearson Education, Inc, publishing as Addison Wesley Professional,.
Copyright © 2005 Pearson Education, Inc.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or
mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson
Education, Inc. Russian language edition published by Triumph Publishing (OOO «Издательство Триумф»). Copyright © 2007.
Авторизованный перевод англоязычного издания под названием SPRING INTO HTML AND CSS. 1" Edition,
ISBN 0131855867, by HOLZSCHLAG, MOLLY E., published by Pearson Education, Inc, publishing as Addison Wesley Professional,.
Copyright © 2005 Pearson Education, Inc.
Все права защищены. Никакая часть данной книги не может быть переделана или изменена в какой-либо
форме, электронной или механической, включая фотокопирование, переписи на носители информации, без разрешения
Pearson Education, Inc. Русскоязычная версия, изданная ООО «Издательство Триумф». Все права защищены
© ООО «Издательство Триумф». 2007
ISBN 978-5-89392-146-5 © Обложка, серия, оформление
ISBN 0-13-185586-7 (амер.) ООО «Издательство ТРИУМФ», 2007
Краткое содержание
От редактора серии 12
Введение 13
УРОК 1. Создание HTML-страницы 17
УРОК 2. Добавление текста и ссылок 30
УРОК 3. Добавление изображений,
мультимедиа и сценариев 48
УРОК 4. Создание таблиц 66
УРОК 5. Создание форм 85
УРОК 6. Работа с фреймами 104
УРОК 7. Использование языка CSS 121
УРОК 8. Работа с цветом и изображениями
с использованием языка CSS 133
УРОК 9. Стилизация текста 152
УРОК 10. Эффекты ссылок, списки и навигация 175
УРОК 11. Поля, границы и отступы 195
VPOK 12. Позиционирование,
плавающее размещение и Z-индекс 207
VPOK 13. CSS-макеты 229
ПРИЛОЖЕНИЕ А. Аннотированный справочник
по языку XHTML 1.0 242
ПРИЛОЖЕНИЕ В. Аннотированный справочник
по языку CSS 2.1 269
Содержание
От редактора серии 12
Введение 13
УРОК 1. Создание HTML-странииы 17
Объявление и идентификация документа 18
Добавление элемента html 20
Элементы head и title 21
Подробнее об элементе title 22
Элемент meta 23
Кодировка документа 24
Ключевые слова, описание и авторство 24
Элемент body 26
Комментарии языка HTML 27
Просмотр шаблона 28
Следующим будет текст! 28
УРОК 2. Добавление текста и ссылок 30
Правильное использование заголовков 31
Добавление абзацев 32
Использование тега разрыва строки 32
Упорядоченные списки 33
Неупорядоченные списки 34
Вложенные списки 35
Списки определений 37
Старая добрая ссылка 38
Ссылки электронной почты 40
Внутристраничное связывание 42
Добавление содержимого в шаблон 44
В заключение 46
Текст - это еще не все 47
УРОК 3. Добавление изображений,
мультимедиа и сценариев 48
Элемент img 49
Использование атрибутов width и height 50
Содержание 7
Предоставление альтернативного текста 52
Связывание изображения 53
Связывание аудио- или видеофайла 55
Вставка файлов при помощи элемента object 57
Ваша Честь, я - объект! 59
Добавление скриптов 60
Вставка скрипта 61
Связывание со скриптом 62
Скрипты и проблемы браузеров 63
Сокрытие скриптов от старых браузеров 63
Использование элемента noscript 63
Осознайте это! 65
УРОК 4. Создание таблиц 66
Элемент table 67
Ширина таблицы 67
Границы таблицы и интервалы 68
Добавление строки таблицы 69
Добавление ячеек таблицы 70
Добавление заголовков таблицы 70
Добавление заглавия 72
Описание таблицы 73
Объединение строк 74
Объединение столбцов 76
Комбинирование атрибутов colspan и rowspan 79
Группирование столбцов таблицы: элемент col 80
Группирование столбцов таблицы при помощи элемента colgroup 82
Группирование строк таблицы 83
Данные таблицы 84
УРОК 5. Создание форм 85
Элемент form 86
Добавление поля ввода 87
Добавление флажков и переключателей 89
Заранее выбранные элементы 91
Использование меню формы 92
Использование текстовых областей 94
Кнопки Reset (Сбросить) и Submit (Отправить) 96
8 Языки HTML и CSS
Использование графической кнопки Submit (Отпрапить) 97
Обеспечение доступности форм с использованием элемента label 98
Группирование полей формы 99
Группирование элементов меню 101
Настройка и улучшение форм 102
Теперь вы правильно сформированы 103
УРОК 6. Работа с фреймами 104
Сила тройки 105
Создание набора фреймов 106
Добавление столбцов 107
Работа со строками 109
Комбинирование столбцов и строк 110
Элементы управления границами,
изменением размеров и скроллингом 111
Именование и указание целевых фреймов 112
Волшебные целевые имена 113
Фреймы без границ 114
Создание доступных фреймов при помощи элемента noframes 116
Удивительные встроенные фреймы 117
Вы познакомились с фреймами! 119
УРОК 7. Использование языка CSS 121
Упрощенная теория языка CSS 122
Правила языка CSS 122
Применение языка CSS 122
Каскад 123
Наследование 123
Специфичность 124
Добавление встроенного стиля 124
Использование внедренного стиля 125
Создание связанной таблицы стилей 126
Импортирование таблиц стилей 128
Непосредственное импортирование в документ 128
Импортирование стиля в связанную таблицу стилей 129
Комментирование и форматирование кода на языке CSS 130
Комментирование кода на языке CSS 130
Форматирование кода на языке CSS 132
Настало время использовать воображение! 132
Содержание 9_
УРОК 8. Работа с цветом и изображениями
с использованием языка CSS 133
Цвет и язык CSS 134
Шестнадцатеричное значение цвета 134
Сокращенное шестнадцатеричное значение цвета 134
Значения RGB 135
Процентные значения RGB 135
Названия цветов 135
Задание цвета фона 136
Цвет и фон документа 136
Цвет и фон элемента 136
Использование цвета фона для украшения таблиц 137
Присоединение фонового изображения 139
Управление заполнением фона 142
Заполнение вдоль горизонтальной оси 142
Заполнение вдоль вертикальной оси 142
Размещение фонового изображения 144
Фиксация или прокрутка фоновых изображений 146
Создание прозрачного цвета фона 148
Сокращение языка CSS для свойств фона 149
Стало веселее? 151
УРОК 9. Стилизация текста 152
Выбор шрифтов 153
Применение семейств шрифтов к тексту 155
Одиночные названия шрифтов 155
Ключевые слова семейства шрифтов 155
Несколько названий 156
Изменение размера шрифтов 157
Ключевые слова абсолютных и относительных значений 157
Значения длины 158
Проценты 159
Жирность и стиль шрифта 159
Жирностынрифта 160
Стиль шрифта 161
Раскрашивание текста 162
Выравнивание текста 162
Оформление текста 163
Установка отступа текста : 164
10
Языки HTML и CSS
Преобразование регистра и изменение шрифта текста 166
Установка интервалов между строками 169
Установка интервала между буквами и словами 170
Модификация первой буквы и первой строки текста 171
Использование сокращений для стилей шрифта 172
Теперь используйте воображение! 173
УРОК 10. Эффекты ссылок, списки и навигация 175
Работа с состояниями ссылок 176
Модификация стилей ссылки 178
Несколько стилей ссылок с использованием селекторов класса 179
Стилизация ссылок с использованием селекторов потомков 180
Стилизация упорядоченных списков 183
Стилизация неупорядоченных списков 185
Сокращения языка CSS для стилей списка 187
Вертикальная панель навигации
на основе списка с использованием цвета 188
Вертикальная панель навигации
на основе списка с эффектами изображения 190
Горизонтальная панель навигации
на основе списка с использованием цвета 191
Горизонтальная панель навигации
на основе списка с изображениями 192
Роскошные ссылки, списки и навигация 194
УРОК 11. Поля, границы и отступы 195
Исследование блочной модели , 196
Использование полей 197
Использование отрицательных значений при указании полей 199
Свойство-сокращение margin 200
Стилизация границ 201
Толщина границы 201
Начертание границы 201
Цвет границы 202
А теперь все вместе! 202
Свойство-сокращение border 203
Сокращенная форма записи для стороны, толщины, начертания и цвета 203
Свойство border 204
Использование отступов 204
Содержание 11
Свойство-сокращение padding 205
Получение большего контроля 206
УРОК 12. Позиционирование,
плавающее размещение и Z-инлекс 207
Введение в позиционирование 208
Нормальный поток 209
Блоки-контейнеры 211
Окно просмотра браузера 213
Абсолютное позиционирование: относительно корневого элемента 214
Абсолютное позиционирование: относительно другого блока 216
Относительное позиционирование 218
Фиксированное позиционирование 221
Плавающие элементы 223
Очищенное плавающее размещение 225
Z-индекс 227
Как профессионал 228
УРОК 13. CSS-макеты 229
Три столбца с обрамляющими меню фиксированной ширины 230
Три столбца с шапкой и нижним колонтитулом 232
Вложенный плавающий блок 234
Макеты с выравниванием по центру 236
Смешанные макеты 238
Повторяйте за мной 241
ПРИЛОЖЕНИЕ А. Аннотированный справочник
по языку XHTML 1.0 242
Разъяснение типов элементов: Отображение 242
Разъяснение типов элементов: пустой и непустой 242
ПРИЛОЖЕНИЕ В. Аннотированный справочник
по языку CSS 2.1 269
Селекторы, псевдоклассы и псевдоэлементы 269
Свойства, доступные в языке CSS 2.1 274
От редактора серии
Барри Аж. Розенберг
Несколько лет назад я нашел новую
работу, где мне нужно было
получить множество новых навыков за
очень короткий промежуток
времени. Мне не нужно было быстро
становиться экспертом, однако я
должен был стать компетентным в этих
вопросах.
Я отправился в книжный магазин и
был шокирован тем, насколько
изменился издательский мир. В том
месте, где когда-то прославлялись
разум и интеллект, сейчас чтят
тупиц. Что же случилось?
Фотография Эда Радунса
Итак, я сделал несколько телефонных звонков, попросил тетю Барбару сшить
несколько костюмов и убедил дядю Эда позволить нам использовать амбар в
качестве сцены. Ой, подождите... это другая проблема. На самом деле, я сделал
несколько телефонных звонков и попросил некоторых действительно
талантливых друзей написать книги, которые умным людям было бы не стыдно
читать. Мы назвали серию «Spring into...» (Окунись в), поскольку все хорошие
названия уже были заняты.
Нам кажется, что, создав серию Spring Into..., мы создали отличную серию для
занятых профессионалов. Однако существует препятствие - мы не можем быть
уверены до тех пор, пока вы не скажете нам об этом. Может быть мы выбили мяч
из-за пределов поля и забили прямо между штангами ворот, подкрутив его, как
Бэкхем, и не получили ничего, кроме гола. С другой стороны, может быть мы
просто раскрутили клубок из шаблонных фраз. Только вы можете сказать нам.
Поэтому, все - позитивное или негативное, - что вы думаете об этих книгах,
пожалуйста, отправьте мне по электронной почте
barry.rosenberg@awl.com
Я обещаю не добавлять ваш электронный адрес в какие-либо списки рассылки,
отсылать спам или выполнять безнравственные действия с вашим адресом.
Искренне ваш,
Барри
Введение
Интернет, возможно, является самым интригующим изобретением 20-го века.
Безусловно, это технология, которая распространилась быстрее, чем лесной
пожар в Калифорнии, и, буквально за десятилетие, изменила образ жизни, работы
и обучения современного общества - не говоря уже про покупки.
Трудно представить, что все это начиналось как эксперимент в лаборатории
физики элементарных частиц. Тим Бернерс-Ли (Tim Bemers-Lee) и его коллеги-
физики из организации CERN (European Organization for Nuclear Research -
Европейская организация по ядерным исследованиям) искали эффективный
способ совместного использования документов на множестве компьютерных
платформ. Интернет, с его сложной, международной компьютерной сетью, был
настоящим естественным фундаментом для размещения технологий, которые
вместе образуют Всемирную паутину.
Начиная со скромных истоков и заканчивая абсолютно поразительным
проникновением в мировую культуру, Интернет, согласно задумке его отца, Бернерса-
Ли, предназначался как для общественной среды, так и для технической. Эта
идея, возможно, привела к быстрому распространению Интернета в
значительной степени из-за того, что Интернет позволяет социально взаимодействовать
различными способами с использованием технологии настолько сильно, что
возникло новое исследование социального взаимодействия (social networking) для
изучения последствий влияния Интернета на общество и наоборот.
Для кого предназначена эта книга?
На самом деле, вы можете быть и физиком элементарных частиц, но эта книга
также предназначается для широкого круга нетехнических профессионалов,
заинтересованных в создании Web-сайтов и работающих с Web-документами для
профессиональных приложений в определенной области, например образовании,
медицине, юриспруденции или науке. С этой целью я написала книгу с применением
меньшего количества слов из технического жаргона, чем, если бы я писала книгу
для разработчиков программного обеспечения, однако вы обнаружите, что эта
книга, являясь весьма доступной, знакомит с некоторыми жизненно-
необходимыми вещами. Хорошие новости - вам не нужно быть конструктором
ракет, чтобы понять эту книгу - но если вы являетесь им, то эта книга поможет и вам.
И, хотя эта книга предназначена для нетехнических профессионалов, она
вероятнее всего будет также полезна и для людей, работающих в сфере Web-дизайна и
разработки, и которые заинтересованы в изучении современных подходов для
работы с Web-страницами.
14
Языки HTML и CSS
Как организована эта книга?
Я разбила книгу на две части. Первая часть фокусируется на языке HTML - языке,
который используется для структурирования документа и его содержимого.
И хотя язык HTML все еще используется, он был переформулирован в язык,
известный под названием Extensible Markup Language (XHTML)
(Расширенный язык разметки). Для решения общих задач эти языки по существу оди-
.jT"v- наковы, за исключением того, что язык XHTML можно расширять при по-
I Д? мощи методов, которые не рассматриваются в данной книге. Однако,
\ f' чтобы соответствовать существующим требованиям и позволить вам
Щ работать с современным языком разметки, в этой книге используется
язык XHTML. В действительности, важным моментом является то, что я
стремлюсь использовать термины HTML и XHTML, как синонимы, хотя, на
самом деле, они немного отличаются.
О языках HTML и XHTML вы узнаете больше из первой части книги, состоящей из
следующих глав:
Табл. 1. Главы части 1
Глава
1
2
3
4
5
6
Название
Создание HTML-страницы
Добавление текста и ссылок
Добавление изображений,
мультимедиа и скриптов
Создание таблиц
Построение форм
Работа с фреймами
Обучает, как...
Создавать страницу в языке XHTML
Форматировать текст и ссылки
Добавлять динамическое содержимое
Создавать эффектные таблицы данных
Создавать HTML-формы
Работать с фреймами
Вторая часть книги фокусируется на Каскадных таблицах стилей (CSS), которые
являются языком, интегрированным с языками HTML и XHTML, для добавления
дизайнерских особенностей страницы: макета, цветов, шрифтов и любых
декораций. Вы сможете узнать о том, как применять язык CSS к создаваемым
страницам, изучив подходы, описанные в следующих главах:
Табл. 2. Главы части 2
Глава
7
8
Название
Использование CSS
Работа с цветами и
изображениями с использованием языка CSS
Обучает, как...
Интегрировать язык CSS
с языком HTML
Добавлять цвет и изображения
Введение
15
Глава
9
10
11
12
13
Название
Оформление текста
Эффекты ссылок, списки и
навигация
Края, границы и отступы
Позиционирование, плавающее
размещение и Z-индекс
CSS-макеты
Обучает, как...
Работать с оформлением текста
в Интернете
Разрабатывать с использованием
ссылок и списков
Получать управление над
пространством
Размещать и создавать плавающие
элементы
Создавать макеты страниц
с использованием языка CSS
Помимо глав, в книге содержатся два очень важных приложения. Первое
приложение, «Аннотированный справочник по языку XHTML 1.0», содержит
информацию по правильному использованию и подсказки по всем элементам, доступным
в языке XHTML 1.0. Второе приложение, «Аннотированный справочник по
языку CSS», представляет список всех доступных свойств языка CSS вместе с
информацией по правильному использованию и подсказками.
Между главами и приложениями будет установлено, когда потребуется объем
знаний, необходимый для создания потрясающих Web-страниц с использованием
современных методик.
Что особенного в этой книге?
Эта книга, как и остальные книги серии Spring Into..., использует следующий
уникальный подход для организации содержимого:
• Каждая тема объясняется в отдельных одно- или двухстраничных единицах,
называемых «порциями».
• Каждая порция строится па предыдущих порциях текущей главы.
• Большинство порций содержит врезки и «Квантовые скачки», отражающие
полезную, дополнительную информацию, которая зачастую является более
продвинутой, чем основной текст.
Порционный стиль был специально создан для занятых людей. Знаю, что у вас
нет времени для изучения сложных понятий, поэтому их представление в виде
порций небольшого размера является полезным способом начать работу
максимально быстро и правильно, с самого начала.
Где взять примеры из книги
Посетите Web-страницу книги по адресу www.awprofessional.com/springinto/.
16
Языки HTML и CSS
Благодарности
Написание книги может показаться уединенным процессом, однако в реальности
вам помогает множество людей. Барри Розенберг на раннем этапе предоставил
совершенно необходимую информацию, как лучше всего писать в порционном
стиле, используемом в книгах этой серии. На протяжении всего времени три
рецензента оставляли ценные замечания: Кимберли Блессинг (Kimberly Blessing) и
Эрис Фри (Eris Free) показывали, как можно улучшить текст, а Даниэл Смит
(Daniel Smith) одолжил свой зоркий глаз и искал ошибки и неточности, и все
время приводил очень поддерживающие подсказки. Особая благодарность Марку
Таубу (Mark Taub), который предоставил отличную возможность и все время
присматривал за мной. И, наконец, Дэвиду Фугэйту (David Fugate),
экстраординарному литературному агенту, который всегда блистал остроумием, мудростью,
и, к тому же, потрясающими художественными советами.
Об авторе
Завоевавшая репутацию «одной из лучших компьютерных экспертов» и
считающаяся одной из «25 самых влиятельных женщин в Интернете», можно почти не
сомневаться, что в мире Web-дизайна и разработки Молли Е. Хольцшлаг является
энергичным и влиятельным мыслителем, преподавателем и автором. Написав
более 30 книг по Web-разработке, Молли является членом организационного
комитета рабочей группы по разработке Web-стандартов (Web Standards Project - WaSP)
и членом консультативного комитета всемирной организации Web-мастеров. Она
также преподавала курсы по подготовке Web-мастеров в университете Аризоны,
Финикса, Новом университете и колледже Pima Community. Многие узнают Молли
по ее книгам, очеркам и популярному Web-сайту, molly.com.
О редакторе серии
Барри Розенберг написал культовую классику, KornSfiell Programming Tutorial
(Руководство по программированию на KornShell) (Addison-Wesley, 1991), которая стала
родоначальницей множества порционно-ориентированных методик,
используемых в серии Spring Into... Он является автором более шестидесяти корпоративных
технических руководств, в основном, по программированию. Опытный
преподаватель, Барри преподавал все, начиная с физики высшей школы и заканчивая
недельными корпоративными семинарами по структурам данных.
Совсем недавно Барри провел четыре семестра в Массачусетском
технологическом институте, где он преподавал написание профессиональной технической
документации. Барри также является профессиональным фокусником. Он провел
более 1.200 выступлений, включая трехнедельную программу в Японии. Фокусы
стали основой для его романа Cascade (Каскад) (еще не опубликован). В настоящий
момент Барри работает в компании 170 Systems заведующим делопроизводством.
УРОК 1.
Создание HTML-страницы
Б силу своей специфики Web-документы должны создаваться на основе
некоторых правил. Чтобы обеспечить согласованность Web-документов с этими
правилами, а также сделать возможной проверку их корректности, в Web-документах
должны присутствовать определенные элементы. Согласованность означает, что
Web-документ на самом деле соответствует языку и версии языка, на котором он
был написан. Проверка корректности - это технический процесс, с помощью
которого проверяется согласованность Web-документов и благодаря которому мы
получаем возможность находить и исправлять в них ошибки.
Чтобы обеспечить согласованность Web-документов, их создание следует
начинать с указания всех обязательных структурных элементов, которые должны
присутствовать в документе перед добавлением текста и другого содержимого.
Как ни странно, большинство людей, работающих над Web-сайтами, улучшали
способы использования разметки только в прошлом. Интернет
эволюционировал настолько быстро, что в браузеры - и язык HTML - постоянно добавлялись
новые элементы и возможности. Большая часть этих возможностей была внесена
в существующие спецификации, другая же часть осталась неформализованной.
Более того, некоторые обязательные элементы HTML-страниц зачастую
игнорировались даже профессионалами.
Как такое возможно, вероятно, спросите вы? Дело в том, что основным
программным обеспечением, используемым для интерпретации языка HTML,
является настольный Web-браузер. У этих браузеров давняя история простительных
ошибок. Безусловно, у них есть и давняя история технических ошибок! Браузеры
одновременно являлись благословением и проклятием Интернета: они были
открыты для нововведений, но при этом большая часть времени тратилась на
добавление забавных возможностей, а не на реализацию основных средств для
поддержки языков, на использование которых они были рассчитаны. В результате,
Интернет превратился в мешанину вариантов языка HTML - большинство из
которых не соответствует спецификации и не является корректным. В свете
обсуждения темы этой главы, очень часто в создаваемых документах не используются
обязательные основные структурные компоненты.
Процесс, направленный на реализацию стандартов в браузерах и инструментах,
применяемых людьми для разработки Web-сайтов, а также на использование этих
стандартов теми из нас, кто заинтересован в создании страниц - не просто
работающих, а работающих безупречно - независимо от того, являются ли цели
личными или профессиональными, уже приведен в действие.
В этой главе мы рассмотрим, как создать шаблон, который будет служить
основой для всех примеров, приведенных в этой книге. Шаблон будет включать все
необходимые и полезные технические и структурные элементы, формирующие
основу согласованного и корректного документа
18
Языки HTML и CSS
Объявление и идентификация документа
Первым делом в документ необходимо добавить небольшой фрагмент кода, с
помощью которого будет объявлен тип используемого документа и
идентифицирована версия языка. Это осуществляется при помощи Стандартного Обобщенного
Языка Разметки (Standardized General Markup Language - SGML), который
является предком языка HTML и используется в этом важном объявлении, известном
как объявление DOCTYPE. Объявление DOCTYPE является уникальным фрагментом
кода, и поэтому во всех создаваемых документах должно использоваться
подходящее объявление.
В примере 1.1 демонстрируется объявление DOCTYPE, которое будет
использоваться во всех примерах данной книги.
Пример 1.1. Объявление DOCTYPE для языка XHTML 1.0 Transitional
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd">
Немного непонятно? Не беспокойтесь. Сейчас будет рассмотрено все
объявление, что позволит получить полное представление о каждой его составляющей.
Во-первых, здесь используется открывающая последовательность <!, которая
вызовет интерес у большинства читателей, которые уже встречали HTML-код.
Угловая скобка - это знакомый компонент языка HTML, однако в языке HTML
восклицательный знак употребляется только в одной ситуации - в комментариях,
которые также будут рассмотрены в этой главе. Этот символ применяется редко,
поскольку это использование синтаксиса языка SGML в контексте языка HTML.
В данном случае приведенная последовательность просто обозначает начало
объявления. За открывающей последовательностью символов следует элемент
DOCTYPE, обозначающий тот факт, что данный код объявляет тип документа.
Следующим элементом является html, что говорит о том, что этот документ
написан на языке HTML. Обратите внимание, что элемент записывается строчными
буквами. Это существенно, поскольку мы используем язык XHTML, - регистр
символов в языке XHTML имеет значение, и поэтому именно эта часть объявления
должна быть записана с использованием строчных букв. Если это не сделать,
документ не пройдет проверку на корректность. Слово PUBLIC является важной
частью информации. Это означает, что класс документа, в котором используется
данное объявление, является открытым. Множество компаний создают
уникальные версии языка XHTML с собственными элементами и атрибутами. Для наших
целей будет достаточно открытой версии языка HTML, которую мы и собираемся
использовать.
Урок 1 ■ Создание HTML-страницы
19
Следующий синтаксис "-//W3C//DTD XHTML 1.0 Transitional//EN" определяет узел,
на котором хранится тип и версия языка документа (Консорциум World Wide
Web, W3C), и отражает тот факт, что документ написан в соответствии с
определением типа документа (Document Type Definition, DTD) языка XHTML 1.0
Transitional. Определение DTD - это просто длинный список разрешенных
элементов и атрибутов для данного языка и его версии. И, наконец, указывается
полный адрес URL, определяющий местоположение определения DTD,
"http://www.w3.org^FVxhtml1/DTD/xhtml1-transitional.dtd". Если в браузер загрузить
документ, находящийся по этому адресу, мы увидим определение DTD для языка
XHTML 1.0 Transitional, как показано на рисунке 1.1.
<! — There
Slack
Silver
Gray
№ice
Hexoon
Red
Purple
are also 16
.
-
-
-
-
-
-
Fuchsia-
—>
'1
№00000
ЯСОС0С0
№Oeoeo
#FFFFFF
«600000
«ГГООС0
явоооео
HTYOOYT
»r
vldely
Green
Line
Olive
Те 1 low
Navy
Blue
Teal
Aqua
known color names
- №08000
- 0OOFFOO
- №06000
- WFFF00
- Я00С0БС
- №000FF
- flOOBOBO
- №0FFFF
with
their
-J
SRGB
values:
'
aj
■JLl
w
J?
Рис. 1.1. Часть определения DTD для языка XHTML Transitional
Разместив это объявление в самом начале документа, можно создавать документ
и выполнять проверку на согласованность при помощи средства проверки
корректности. Средство проверки корректности использует информацию в
объявлении и сравнивает документ с определением DTD, указанным в объявлении.
Если при создании документа использовались допустимые в указанном
определении DTD правила, то при проверке никаких ошибок найдено быть не должно,
что, конечно же, и является нашей целью.
Квантовый скачок
Из-за различий в способах обработки разнообразных аспектов языков HTML и
CSS множеством браузеров, возникла необходимость в создании средств
получения лучшей производительности для документов, написанных в
соответствии со спецификацией. Тантек Целик (Tantek Celik), работавший в
корпорации Microsoft, создал механизм переключения в браузере IE, решающий
многочисленные проблемы. Принцип работы этого переключателя основан
на корректно оформленных объявлениях DOCTYPE, используемых для
переключения браузера из режима «обратной совместимости» (прощающий
режим, о котором было упомянуто во введении главы) в режим
«согласованности», который позволяет сайтам, написанным на согласованном языке
разметки и языке CSS, функционировать гораздо эффективнее. Один важный
момент: никогда ничего не размещайте в Web-документе перед объявлением
DOCTYPE, иначе у браузера могут возникнуть проблемы с его отображением.
20
Языки HTML и CSS
Чтобы побольше узнать о механизме переключения, основанном
на объявлениях DOCTYPE, посетите страницу в Интернете
http://gutfeldt.ch/matthias/articles/doctypeswitch.html. На этом сайте также
приведена замечательная таблица, содержащая разнообразные
объявления, с указанием тех из них, для которых действительно используется
механизм переключения. Корректное объявление DOCTYPE для языка XHTML 1.0
Transitional, приведенное в этом разделе, было выбрано не случайно,
поскольку для него также используется механизм переключения.
И хотя объявления DOCTYPE никогда не отображаются в окне браузера,
необходимость их использования не вызывает сомнений. Если правильно использовать
эти объявления, в результате будут получены корректные страницы,
интерпретацию которых браузер выполняет наиболее оптимально для каждой конкретной
ситуации.
Добавление элемента html
После объявления DOCTYPE создание документа начинается с корневого
элемента. Термин корневой, использован специально, поскольку у каждого документа есть
дерево документа, с которым мы познакомимся более детально. Понятие дерева,
создаваемого HTML-документами, играет важную роль в их эффективной
стилизации с использованием языка CSS.
Элемент html считается корневым элементом любого HTML-документа.
Запомните, объявление DOCTYPE не является элементом языка HTML - это элемент
языка SGML. Поэтому первый указанный элемент получает важный статус
корневого элемента.
В примере 1.2 демонстрируется элемент html с открывающим и закрывающим
тегами.
Пример 1.2. Корневой элемент языка HTML
<html>
</html>
Достаточно просто, не правда ли? Но в языке XHTML к открывающему тегу
необходимо добавить еще один компонент: пространство имен XML для языка XHTML.
Это всего лишь еще один способ идентификации языка, используемого в
документе. Я не хочу углубляться в идеологические причины того, для чего это
нужно. Достаточно сказать, что присутствие этого компонента необходимо для
поддержания корректности документа, как показано в примере 1.3.
Урок 1. Создание HTML-страницы
21
Пример 1.3. Корневой элемент языка HTML с атрибутом
и значением пространства имен XML
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
</html>
В примере используется атрибут xmlns, название которого представляет собой
сокращение от словосочетания «XML namespace», и его значение,
представляющее собой адрес URL. Этот адрес не ведет ни к чему выдающемуся, поверьте!
Просто будет загружена страница с сообщением, что мы добрались до
пространства имен XML для языка XHTML. Повторюсь, это просто еще один способ
идентификации документа.
О
Обратите внимание на другие элементы синтаксиса, включая атрибут
xml zlang, определяющий язык документа при помощи синтаксиса языка
XML (запомните, что язык XHTML - это комбинация языков HTML и XML).
В данном случае значение en соответствует английскому языку. Атрибут
lang языка HTML предоставляет ту же информацию. Эти атрибуты
являются необязательными, однако мы будем использовать оба атрибута
для получения полной совместимости.
Элементы head и title
У нас уже есть основа документа с объявлением DOCTYPE и корневым элементом.
Сейчас мы приступим к добавлению других важных частей документа и начнем с
элемента head. Данный элемент содержит все элементы, необходимые для
отображения и выполнения документа, но которые не отображаются в окне
браузера. Чтобы создать раздел head, необходимо просто добавить теги head в
верхнюю часть шаблона, непосредственно за открывающим тегом <html>, как
показано в примере 1.4.
Пример 1.4. Создание шаблона: добавление раздела head
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
</head>
</html>
22
Языки HTML и CSS
Обратите внимание, что у элемента head нет обязательных атрибутов, а есть
только открывающие и закрывающие теги. Так обозначается раздел head.
В таблице 1.1 перечислено несколько различных элементов, которые можно
размещать внутри раздела документа head.
Табл. 1.1. Элементы в разделе документа head
Элемент
title
meta
script
style
link
Назначение
Этот элемент позволяет задать заголовок документа. Указанный
заголовок будет отображаться в строке заголовка браузера.
Элемент title является обязательным.
Элемент meta используется для множества целей, включая
указание ключевых слов и описаний, кодировки символов и автора
документа. Элемент meta не является обязательным и его
использование может варьироваться в зависимости от
поставленных задач.
Этот элемент позволяет вставлять скрипты непосредственно в
документ, или, что более предпочтительно, с его помощью
указывается ссылка на необходимый для использования скрипт.
Элемент используется при необходимости.
Элемент style позволяет размещать информацию о стиле прямо
на странице. Стиль, информация о котором размещена таким
образом, называется встроенным. Дополнительные сведения об
этом стиле можно получить в главе 7 «Использование CSS».
Элемент используется при необходимости.
Элемент link наиболее часто используется для выполнения
связывания с внешней таблицей стилей, хотя он может применяться
и для других целей, например для связывания с альтернативной
страницей, реализующей специальные возможности, или для
связывания со значком сайта - это те популярные значки,
которые отображаются в строке адреса некоторых Web-сайтов.
Подробнее об элементе title
Элемент title является единственным обязательным элементом раздела head.
В строке заголовка браузера отображается любой текст, содержащийся в этом
элементе, вместе с названием браузера, которое добавляется в конец текста, как
показано на рисунке 1.2.
Урок 1. Создание HTML-страницы 23
Рис. 1.2. Текст элемента ti tie отображается в строке заголовка браузера
Помимо того, что элемент title всегда должен присутствовать в документе,
создание хороших заголовков является первоочередной задачей, преследующей
три цели:
• указание заголовка страницы;
• предоставление ориентировки пользователям - то есть предоставление
пользователям информации о том, где они находятся в Интернете и на самом сайте;
• предоставление дополнительной информации о странице сайта.
Создание эффективных заголовков подразумевает выполнение этих трех
положений. Эффективный заголовок представлен в примере 1.5.
Пример 1.5. Пример эффективного заголовка, включающего название сайта
и размещение страницы для ориентировки пользователя
<title> molly.com - Книги - HTML & CSS </title>
Обратите внимание, что заголовок страницы включает имя сайта, раздел и
подраздел сайта, предоставляя посетителю полезную информацию.
Неэффективный заголовок приведен в примере 1.6.
Пример 1.6. Пример эффективного заголовка, включающего название сайта
и размещение страницы для ориентировки пользователя
<title> Читайте мои книги!</title>
В данном случае в заголовке не содержится никакой полезной для нас
информации. Получается, что техническое требование об обязательном наличии
заголовка выполняется, однако от такого заголовка нет никакой практической пользы.
Хотя в тексте заголовка нельзя применять язык HTML, в нем можно
использовать символьные объекты, что было продемонстрировано в
примере 1.5, где был использован символьный объект &атр; для
воспроизведения символа &. За дополнительной информацией по доступным
символьным объектам обратитесь к Приложению А «Аннотированный
справочник по языку XHTML 1.0».
Элемент meta
Хотя его наличие в документе не обязательно, элемент meta выполняет множество
различных функций, поэтому будет нелишним познакомиться с ним прямо сейчас.
24 Языки HTML и CSS
Колировка документа
Кодировка документа означает установку набора символов для страницы, что
особенно важно при создании документов на других языках. Многие годы те из
нас, кто создавал документы с использованием латинского языка (включая
английский язык), применяли набор символов ISO 8859-1. Наборы и подмножества
ISO поддерживают большое количество языков. Однако в наши дни существует
кодировка UTF-8, представляющая собой более универсальный формат и
использующая стандарт, отличный от стандарта ISO. Кодировка UTF-8 может оказаться
полезной во множестве браузеров, однако существует несколько ограничений.
Если создание документа происходит на другом языке, например русском или
японском, в качестве кодировки документа желательно использовать наборы
символов ISO, а не наборы Unicode.
В идеале, кодировка символов должна устанавливаться на сервере,
а не с помощью элемента meta. Однако установить кодировку можно и
при помощи элемента meta. Посетите страницу по адресу
http://www.webstandards.org/learn/askw3c/dec2002.html.
В примере 1.7 показан элемент meta, который задает кодировку документа в
формате UTF-8. Данный формат подходит для документов, созданных с использованием как
английского, так и других языков, поддерживаемых браузером.
Пример 1.7. Использование элемента meta
для объявления кодировки документа Unicode
<meta http-eguiv="Content-Type" content="text/html; charset=
UTF-8" />
В примере 1.8 показан элемент meta для документа на русском языке с
использованием кодировки ISO.
Пример 1.8. Использование элемента meta для объявления кириллической
кодировки документа с применением кодировки ISO
<meta http-equiv="Content-Type" content="text/html; charset=
iso-8859-5" />
Ключевые слова, описание и авторство
Элемент meta можно использовать для определения ключевых слов, описания
сайта, а также для указания автора. Это крайне полезно как для открытых
поисковых систем, так и любых поисковых систем, которые, возможно, будут
осуществлять поиск по вашему сайту.
Ключевые слова - это отдельные слова и комбинации слов, используемые при
поиске. Это помогает людям, осуществляющим поиск определенных вопросов,
найти предоставляемую вами информацию, как показано в примере 1.9.
Урок 1. Создание HTML-страницы 25
Пример 1.9. Использование элемента meta
для определения ключевых слов и комбинаций ключевых слов
<meta паше="keywords" content="Молли, molly.com, html, xhtml,
ess, проект, веб-проект, разработка, веб-разработка, perl,
цвет, веб-цвет, журнал регистрации, журнал регистрации
интернета, книги, компьютерная литература, статьи, учебные пособия,
изучать, автор, инструктор, инструкция, инструктировать,
обучение, образование, консультироваться, консультация, консультант,
страница известных людей, список известных людей, стандарты,
веб-стандарты, технический журнал веб-стандартов, веб-обзор,
webreview.com, ух ты, мировая организация веб-мастеров,
конференция, конференции, пользовательский интерфейс, простота
использования, доступность, интернационализация, веб-культура" />
Обратите внимание, что хотя я много раз использовала слово web, оно
употреблялось в сочетании с другими ключевыми словами. Большинство поисковых
систем заблокируют поиск по сайту, если одиночное ключевое слово используется
несколько раз. Это способ получения более высоких рангов, но не более того.
Используйте ключевые слова, которые имеют смысл, или, если хотите
употребить одно слово несколько раз, используйте его в реальных словосочетаниях.
Описания - это обычно 25 слов или меньше, описывающих назначение
документа, как показано в примере 1.10.
Пример 1.10. Использование элемента meta. для описания сайта или страницы
<meta name="description" content="H Молли Е. Хольцшлаг, и этот
веб-сайт часть моих трудов в Интернет-разработках и мои
собственные мысли." />
Коротко и точно в цель! Элемент meta также применяется и для определения
автора документа, как показано в примере 1.11.
Пример 1.11. Использование элемента meta для определения авторства страницы
<meta name="Author" content=" Молли Е. Хольцшлаг" />
Конечно, эта информация никогда не будет отображаться на самой
Web-странице. Как и все остальные элементы и атрибуты, размещаемые в разделе
документа head, элементы meta используются браузером и другими ресурсами,
например поисковыми системами.
Элемент meta также можно использовать для автоматического
обновления документов в окне браузера и для запрещения индексирования
определенных страниц поисковыми системами. Более подробную информацию
можно получить по адресу http://www.learnthat.com/eourses
/computer/metatags/meta.html.
Я
26
Языки HTML и CSS
Элемент body
Элемент body - это то место, где происходят все действия. Это тот элемент, где
будет размещено содержимое и произведена разметка страницы с
использованием языка XHTML для структурирования содержимого соответствующим образом.
Элемент body размещен в элементе html, непосредственно за элементом head,
как показано в примере 1.12,- что имеет смысл, не правда ли?
Пример 1.12. Размещение элемента body
<html>
<head>
<title>3flecb размещается подходящий текст заголовка</Ь1ь1е>
</head>
<body>
</body>
</html>
При просмотре страницы в браузере информация, размещенная внутри элемента
body, отображается в окне браузера, называемом также окном просмотра
(viewport). Это область предназначена только для содержимого - без всяких при-
украс браузера (сюда относятся компоненты интерфейса браузера, например,
полосы прокрутки и строки состояния). На рисунке 1.3 показана основная
страница поисковой системы Google, открытая в Web-браузере.
Google - Mozilla
Ele Edit ¥tew £o Bookmarks Iools Window Help
-lOlxl
Web Images Groups News Frocgle mole»
Щ Google Search | I'm Feeling Lucky |
; Advanced Seatoh
~~~l Preferences
Lannuan» Tools
Advertising Programs - Business Solutions - About Google
O2004 Google- Searching3.285.109.774web pages
&, a -£■ ra es
"Re-Id"
/
Рис. 1.З. Отображение текста эмментаЪобу в окне просмотра браузера
Урок 1. Создание HTML-страницы
27
Комментарии языка HTML
Еще одной важной составляющей разметки языка HTML, которую можно
использовать прямо сейчас, являются комментарии. Комментарии позволяют временно
скрыть содержимое или разметку, оформить содержимое элементов особым
образом для обратной совместимости, обозначить части внутри документов и создать
пояснения для других людей, которые, возможно, будут работать над страницей.
Синтаксис комментария языка HTML выглядит следующим образом:
<!— —>
Все, что необходимо скрыть, обозначить или представить в виде руководства,
размещается между открывающей и закрывающей частью комментария. В
примере 1.13 текстовое содержимое внутри элемента body скрывается при помощи
комментариев.
Пример 1.13. Скрытие текстового содержимого и разметки
<body>
<р>Содержимое этого параграфа не будет отображаться внутри
элемента body, поскольку оно заключено в комментарий.</р>
—>
<р>Содержимое этого параграфа будет отображаться, поскольку оно
находится за пределами поля комментария.</р>
</body>
Можно отмечать разделы документа, как показано в примере 1.14.
Пример 1.14. Скрытие текстового содерэюшого и разметки
<body>
<!-- начало основного содержимого -->
<!-- начало содержимого нижнего колонтитула -->
</body>
И наконец, комментарии удобно использовать для указания инструкций, как
показано в примере 1.15.
Пример 1.15. Размещение указания внутри комментария
<body>
<!-- Angie: пожалуйста, в этой части обязательно вместо таблиц
используй списки -->
</body>
28
Языки HTML и CSS
Просмотр шаблона
Настало время завершить изучение шаблона и собрать все компоненты вместе,
как показано в примере 1.16.
Пример 1.16. Просмотр структуры документа на языке XHTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd">
<head>
<title>caUT : расположение на сайте : заголовок TeMbi</title>
<meta http-equiv="Content-Type" content="text/html; charset=
iso-8859-5">
<meta name="keywords" content="здесь, размещаются, ключевые,
слова">
<meta name="description" content="здесь размещается описание">
<meta name="author" content="здecь размещается ваше имя">
</head>
<body>
<!-- область основного содержимого -->
</body>
</html>
Скопируйте эту разметку и сохраните ее в рабочей папке на компьютере, назвав
файл именем index.html. Мы будем открывать этот файл и добавлять содержимое
и дополнительную разметку по мере рассмотрения материала.
Следующим будет текст!
Конечно, если открыть только что созданный документ в Web-браузере, область
окна просмотра - где обычно отображается содержимое - будет абсолютной
пустой! Это происходит потому, что внутри элемента body нет ничего, кроме
комментария, который скрывает текст, размещенный в нем. Единственное, на что
можно обратить внимание, - это заголовок сайта, отображаемый в строке
заголовка браузера.
Начать работу с формирования структуры документа - это отличный способ
узнать, как создавать изначально превосходные страницы. Если вы разочарованы,
что после выполнения этих сложных задач нет видимых результатов, я обещаю,
что цель оправдает средства. В конце концов, вы овладеете профессиональными
Урок 1. Создание HTML-страницы
29
приемами управления содержимым и научитесь гораздо лучше понимать все
моменты, касающиеся работы с разметкой и языком CSS.
Поэтому после сохранения документа проверьте его корректность. Откройте
страницу http://validate.w3.org/, найдите раздел выгрузки файла и выгрузите
сохраненный файл. Запустите процесс проверки корректности на
выгруженном документе. Есть ошибки? Исправьте их и попробуйте снова. Нет ошибок?
Отлично.
И я обещаю, что по окончании изучения следующей главы, «Добавление текста и
ссылок», у вас будет, что просмотреть в, браузере!
УРОК 2.
Добавление текста и ссылок
Если считать содержимое королем, текст - это то, что помогает ему добраться до
королевского трона! Без правильно отформатированного, организованного
текста и осмысленных связей любая попытка создать королевское содержимое будет
крайне сложной.
Если чуть-чуть углубиться в историю, мы обнаружим, что сначала Интернет
состоял только из текста и ссылок. На самом деле, когда Интернет стал живой,
красочной, визуальной средой, для большинства его тогдашних пользователей это
стало трагедией. Основная идея изобретателя Интернета, Тима Бернерса-Ли,
заключалась в создании мультиплатформенных средств, позволяющих его
коллегам-ученым совместно использовать информацию, публиковать данные и
помещать в рефераты ссылки непосредственно на реферируемый текст. Но этот
человек был физиком, а не дизайнером, и он работал в среде, которая даже не
имела графического интерфейса. Я говорю об устаревшем Интернете, в котором
документы отображались в виде зеленого или желтого текста на черном фоне.
Имея такое скромное происхождение, Интернет прошел долгий путь. Теперь
Интернет предлагает своим пользователям среду, насыщенную визуальными
образами, и до того, как язык CSS стал доступным для широкого применения, для
создания такой среды Web-сайты создавали с помощью средств HTML,
предназначенных для оформления текста. Например, чтобы получить дополнительные
пустые строки на странице, вставляли несколько тегов разрыва строки.
Однако теперь для оформления визуального содержимого Web-сайтов гораздо
эффективнее использовать язык CSS. Поэтому использование средств
оформления текста ныне снова сфокусировалось на том, для чего они были задуманы: на
форматировании текста. Все дело в том, что, несмотря на появление Интернета,
перенасыщенного визуальным содержимым и средствами интерактивного
общения, текст и ссылки остаются самой важной составляющей любого стоящего Web-
сайта. Отсюда следует, что каждому, кто работает с текстом, следует особое
внимание уделять осмысленному использованию текст и ссылок.
В этой главе мы научимся эффективным и корректным способам работы с
текстом и ссылками. Начнем мы с описания методов создания заголовков и списков,
а закончим обсуждением множества вариантов связывания текста ссылками. Все
это позволит вам понять, что это значит - создать приятный для чтения текст, да
к тому же имеющий благородный внешний вид, который можно назвать просто
королевским!
урок 2. Добавление текста и ссылок
31
Правильное использование заголовков
Заголовки в языках HTML и XHTML представляют собой теги, которые
используются для определения заголовков на странице. Существуют теги для шести
уровней заголовков, начиная с <hl> . . . </hl> и заканчивая <h6> . . . </h6>.
Заголовок, оформленный с использованием тега <hl> . . . </hl>, считается
самым важным, приравниваемым по значимости к заголовку страницы;
заголовок, оформленный с использованием тега <h2> . . . </h2>, исполняет роль
подзаголовка, и так далее. Заголовки пятого и шестого уровней используются
редко, хотя иногда они бывают полезны в очень сложных документах. В
примере 2.1 демонстрируется список заголовков, которые могут использоваться в
документе. Стоит отметить, что между заголовками будет размещаться текст.
Пример 2.1. Заголовки с логическим содержимым
<Ы>Добро пожаловать на домашнюю страничку Молли!</hl>
<Ь2>Книги</Ь2>
<ЬЗ>Как автор</ЬЗ>
<Ь4>Заглавие книги</Ь4>
Обычно в одном разделе используется больше одного подзаголовока - это
позволяет сделать содержимое более понятным для читателей. Как видно на
рисунке 2.1, каждый уровень заголовка выделяется визуально при помощи размера
шрифта. Самый большой размер шрифта соответствует тегу <hl>, для остальных
тегов размер постепенно уменьшается.
Добро пожаловать на домашнюю
страничку
Книги
Как автор
Заглавие книги
Молли!
»
Рис. 2.1. Представление заголовков в Web-браузере
Заголовки - это структурные единицы, а не визуальные
Способ отображения заголовков реализуется по усмотрению разработчиков
браузера. В дальнейшем мы будем использовать язык CSS для определения
стилей заголовков. Заголовки должны быть использованы в виде иерархии,
поскольку теги описывают форматируемый текст.
32
Языки HTML и CSS
Добавление абзацев
Управление абзацами выполняется при помощи элемента абзаца, который
обозначается открывающим и закрывающим тегами <р> . . . </р>. Между тегами
элемента абзаца размещается текстовое содержимое, как показано в примере 2.2.
Пример 2.2. Разметка абзацев с использованием открывающего
и закрывающего тегов
<р>Мыслимо ли? На самом деле? Они едва не погибли. У них был
бессмысленный взгляд, устремленный в море. Они смотрели с
неослабевающим вниманием, как загипнотизированные.</р>
<р>Это был Франк Меррил, тот, кто в конце концов прервал
тишину, Меррил казался мраморным и его голос звучал неестесственно,
монотонно, с нотками металла.</р>
На рисунке 2.2 приведен пример отображения абзацев в браузере. Обратите
внимание, что все необходимые разрывы строк вставляются в тех местах
страницы, где размещены теги абзаца.
Мыслимо ли? На самом деле? Они едва не погибли. У них был бессмысленный
взгляд, устремленный в море. Они смотрели с неослабевающим вниманием, как
загипнотизированные.
Это был Франк Меррил, тот, кто в конце концов прервал тишину, Меррил казался
мраморным и его голос звучал неестесственно, монотонно, с нотками металла.
Рис. 2.2. Форматирование абзацев в Web-браузере
Встречаются случаи, когда у абзацев нет закрывающего тега. Это
разрешается в языке HTML, но даже если вместо языка XHTML вы
используете язык HTML, хорошим тоном программирования все же является
использование закрывающих тегов абзаца. Тем не менее, отображение абзацев
не зависит от выбранного подхода.
Длина строк текста абзаца соответствует размерам окна браузера и подбирается
таким образом, чтобы заполнить все свободное пространство окна браузера до
конца абзаца. В том месте страницы, где размещен конец абзаца, перед
последующим содержимым вставляется разрыв строки и пустая строка.
Использование тега разрыва строки
Тег разрыва строки применяется для разрыва строк абзаца. Он крайне полезен,
когда для оформления текста, например стихотворения, необходимо
использовать заданные разрывы строк, как показано в примере 2.3.
Урок 2. Добавление текста и ссылок
33
Пример 2.3. Использование разрывов строк
<р> Мой дядя самых честных правижЬг />
Когда не в шутку занемог,<br />
Он уважать себя заставил<Ьг />
И лучше выдумать не мог</р>
Обратите внимание, что строки стихотворения оформлены при помощи
элемента абзаца, поскольку мы хотим получить некий вид структуры. Выбор элемента
абзаца является логичным, поскольку стихотворение на самом деле состоит из
нескольких абзацев, разделенных строками. На рисунке 2.3 показано, как браузер
отображает разрывы строк.
Мой дядя самых честных правил
Когда ие в шутку занемог,
Он уважать себя заставил
И лучше выдумать не мог
Рис. 2.3. Абзац с заданными разрывами строк
} Встречаются разрывы строк, обозначаемые следующим образом: <Ъг>.
\ f Так записываются разрывы строк на языке HTML
Ш
Избегайте использования абзацев и разрывов строк
для доводки отображения
Как уже отмечалось ранее, множество людей создают Web-страницы с
использованием тегов, которые не предназначены для доводки отображения.
Например, некоторые люди размещают несколько тегов разрыва строки друг
за другом для получения в документе пустых строк.
Этот подход является сомнительным, так как в данном случае разметка
документа используется неосмысленно. Поскольку теперь можно уверенно
использовать язык CSS для решения подобных задач отображения, всегда
используйте абзацы и разрывы строк по их прямому назначению: для
форматирования абзацев и установки разрывов строк.
Упорядоченные списки
Упорядоченный список - это список, элементы которого обязаны располагаться
в определенном порядке. Примерами такого списка могут служить рецепт или
указания, как добраться до дома какого-нибудь человека. Упорядоченные списки
также называют нумерованными списками.
2-1356
34
Языки HTML и CSS
Для создания упорядоченного списка необходимо два элемента. Первым
элементом является элемент <ol> ... </ol> (ordered list - упорядоченный список),
а вторым - элемент <li> ... </li> (list item - элемент списка), как показано
в примере 2.4.
Пример 2.4. Создание упорядоченного списка
<ol>
<li> Возьмите 1-10 к выезду с трассы</И>
<li> После выезда поверните налево на трассу Булевард</И>
<li> Проедьте по трассе несколько миль, пока не попадете на Парк
авеню.</li>
</ol>
Элемент упорядоченного списка предупреждает браузер, что за
последовательную нумерацию всех элементов списка отвечает сам браузер, как показано на
рисунке 2.4.
1. Возьмите 1-10 к выезду с трассы
2. После выезда поверните налево на трассу Булевард
3. Проедьте по трассе несколько миль, пока не попадете на Парк авеню.
Рис. 2.4. Так интерпретируется упорядоченный список браузером
Браузер автоматически генерирует порядковый номер для каждого элемента списка.
Изменив с помощью языка CSS поведение браузера, для отображения диапазона
чисел можно использовать различные стили, например римские цифры.
% Как и а случае с элементом абзаца, в языке HTML не требуется, чтобы
,/' теги элементов списка были закрыты (хотя хорошим тоном программи-
I рования все же является использование закрывающих тегов).
Неупорядоченные списки
Неупорядоченный список - это список, в котором порядок размещения элементов
не существенен. Эти списки больше известны как маркированные списки.
Маркированные списки можно использовать для отображения такой информации, как
перечень продукции, список доступных возможностей или тезисов.
Структура неупорядоченного списка почти такая же, как у упорядоченного списка,
просто вместо элемента <ol> . . . </ol> используется элемент <ul> . . . </ul>
(unordered list - неупорядоченный список), как показано в примере 2.5. Этот тег
информирует браузер, что элементы списка должны отображаться с маркерами,
а не с порядковыми номерами.
Урок 2. Добавление текста и ссылок
35
Пример 2.5. Неупорядоченный список
<р>Раэделы сайта включают:</р>
<ul>
<И>Книги</И>
<li>CD и DVD</li>
<И>Электроника</И>
<И>Фотографическое оборудование»:/li>
<И>Программное обеспечение</И>
</ul>
Здесь был использован закрывающий тег элемента списка </li>,
необязательный в языке HTML (где он не требуется, но его можно использовать) и
обязательный в языке XHTML.
Разделы сайта включают:
♦ Книги
♦ CD и DVD
♦ Электроника
♦ Фотографическое оборудование
♦ Программное обеспечение
Рис. 2.5. Неупорядоченный список
Браузер корректно интерпретирует элемент <ul> . . . </ul>, отображая для
каждого элемента списка маркер, а не его порядковый номер. В языке CSS
существуют свойства для изменения стиля маркеров, например для использования
квадратных маркеров вместо круглых.
Вложенные списки
Иногда, весьма полезно использовать вложенные списки, объединяющие
неупорядоченные и упорядоченные списки. Вложенный список - это список,
размещенный внутри другого списка. Чтобы корректно создать вложенный список в
языке XHTML, необходимо обязательно разместить вложенный список между
открывающим и закрывающим тегом элемента списка, как показано в примере 2.6.
Пример 2.6. Упорядоченный список вложен внутрь другого упорядоченного списка
<ol>
<И>Взбивайте яйца, муку, масло и сахар до консистенции густой
сметаны</Ц>
<И>Вылейте в форму для выпечки пирога</И>
<И>Медленно добавьте и помешивайте перечисленные ингредиенты в
следующем порядке:
36
Языки HTML и CSS
<ol>
<И>Шоколадную массу, </li>
<И>Измельченную корицу, </li>
<li>l ложку мускатного opexa</li>
</ol>
</li>
<И>Поставьте печься в духовку на 40 минут</И>
</ol>
На рисунке 2.6 продемонстрированы результаты.
1. Взбивайте яйца, муку, масло и сахар до консистенции густой сметаны
2. Вылейте в форму для выпечки пирога
3. Медленно добавьте и помешивайте перечисленные ингредиенты в
следующем порядке:
1. Шоколадную массу,
2. Измельченную корицу,
3. 1 ложку мускатного ореха
А. Поставьте печься в духовку на 40 минут
Рис. 2.6. Вложенность упорядоченных списков
Для реализации вложенности можно использовать различные комбинации типов
списков, например:
• упорядоченные списки внутри упорядоченных списков;
• упорядоченные списки внутри нумерованных списков;
• нумерованные списки внутри нумерованных списков;
• нумерованные списки внутри упорядоченных списков.
Предположим, что у нас есть упорядоченный список, представляющий собой
рецепт, однако порядок добавления ингредиентов - произвольный, а не
последовательный, как показано в примере 2.7.
Пример 2.7. Комбинация типов списков для создания вложенного списка
<ol>
<И>Вэбивайте яйца, муку, масло и сахар до консистенции густой
сметаны</И>
<И>Вылейте в форму для выпечки пирога</И>
<И>Медленно добавьте и помешивайте одну из комбинаций
следующих ингредиентов:
<ul>
<И>1Иок о ладную массу, </li>
<И>Измельченную корицу,</li>
<li>l ложку мускатного opexa</li>
</ul>
Урок 2. Добавление текста и ссылок
37
</li>
<И>Поставьте печься в духовку на 40 минут</И>
</ol>
1. Взбивайте яйца, муку, масло и сахар до консистенции густой сметаны
2. Вылейте в форму для выпечки пирога
3. Медленно добавьте и помешивайте одну из комбинаций следующих
ингредиентов:
о Шоколадную массу,
о Измельченную корицу,
о 1 ложку мускатного ореха
4. Поставьте печься в духовку на 40 минут
Рис. 2.7. Комбинация упорядоченных и неупорядоченных списков
при отображении в браузере
Обратите внимание, что маркеры любого вложенного неупорядоченного списка
обычно не закрашены. Это обычное стандартное поведение браузера. При
помощи языка CSS можно изменять стили порядковых номеров и маркеров для
вложенных списков.
Берегитесь: использование чрезмерной вложенности
Вложенные списки - это превосходный способ быстрого и простого
представления информации читателям, однако существует проблема чрезмерной
вложенности списков. Если глубина вложенности списка составляет более
трех уровней, а его структура сама по себе не является сложной, возможно,
стоит пересмотреть подход, использованный для организации информации.
Списки определений
Список определений - это древняя конструкция языка HTML. Но к большому
сожалению, эти списки использовались крайне редко, хотя они являются
отличным способом определения терминов и понятий.
Списки определений состоят из трех элементов: элемента списка определений,
<dl> . . . </dl>; элемента определения термина, <dt> . . . </dt>, и элемента
определения описания, <dd> ... </dd>.
Список определений может включать несколько терминов, как показано
в примере 2.8.
Пример 2.8. Список содержит несколько терминов
<dl>
<dt> Furkid (n)</dt>
38
Языки HTML и CSS
<dd> Любимец, обласканный лишь за то, что он ребенок.</dd>
<dt> Nearshoring (v)</dt>
<dd> Реструктуризация рабочих сил компании путем
перемещения работ в близко расположенные страны.</dd>
<dt> Neurodiversity (n)</dt>
<dd> Набор не отклоняющихся от нормы невралгических манер
поведения и способностей, представленных человеческой
расой.</dd>
</dl>
Браузер отображает термин обычным образом, а само определение
отображается с отступом, как показано на рисунке 2.8.
Furkid (n)
Любимец, обласканный лишь зато, что он ребенок.
Nearshoring (v)
Реструктуризация рабочих сил компании
расположенные страны.
Neurodiversity (n)
путем перемещения работ в
Набор не отклоняющихся от нормы невралгических манер поведения
представленных человеческой расой.
близко
и спосс
бностей,
Рис. 2.8. Отображение списка определений в браузере
Чтобы сделать список немного более стильным, можно воспользоваться языком
CSS для применения стилей, например шрифтов или цвета.
Старая добрая ссылка
Без ссылок существование Интернета просто немыслимо. Ссылки - это сердце
и душа Интернета, поэтому к ним следует относиться с добротой!
Выполнить связывание не составляет труда, однако, когда дело доходит до
создания ссылок, возникает несколько важных моментов. Перед тем, как перейти к
коду, мне хотелось бы познакомить вас с двумя основными типами связывания:
абсолютным и относительным.
При абсолютном связывании используется точный адрес файла, на который
будет указывать ссылка. Этот тип связывания подразумевает указание домена, всех
подкаталогов и имени файла, как показано в примере 2.9.
Пример 2.9. Пример абсолютного адреса ^^^^
http://www.molly.com/books/springboard.html
Урок 2. Добавление текста и ссылок
39
Относительное связывание подразумевает создание ссылок на файлы,
находящиеся на одном и том же сервере, - другими словами, файлы, находящиеся
поблизости. Можно связать один документ с другим документом, если оба
хранятся в одном каталоге, просто используя имя файла: springboard.html.
Или, если документ находится в подкаталоге, указывается подкаталог:
books/springboard.html.
Можно переместиться из каталога в другой каталог, находящийся уровнем выше:
../books/springboard.html.
А на некоторых серверах можно использовать глобальный идентификатор,
чтобы указать «в каком месте сервера находится этот документ»:
/includes/springboard.html.
Берегитесь: ссылки в сетевых журналах
и системах управления содержимым
Хотя большинство людей пропагандирует повсеместное использование
относительных ссылок при работе с документами, которые находятся на одном
сервере, такой вид связывания не всегда является наилучшим выбором.
Сервисы сетевых журналов и систем управления содержимым (Content
Management Systems, CMS) создают архивы. Это значит, что относительные
ссылки в архивном файле, хранящемся в другом месте, чем исходный файл,
могут стать недействительными.
По этой причине, я предлагаю использовать абсолютное связывание в
подобных случаях.
В следующих примерах будет использовано как абсолютное, так и относительное
связывание.
Обычные ссылки создаются с использованием якорного элемента <а>
</а>. Атрибут гипертекстовой ссылки (href) используется для указания адреса
ссылки, а текст, размещенный между открывающим и закрывающим тегами,
становится связанным, как показано в примере 2.10.
Пример 2.10. Связывание с использованием абсолютного адреса
<а href="http://www.molly.com/books/aw.пып1">Читайте о HTML
и CSS</a>
На рисунке 2.9 показаны результаты.
Читайте о HTML и CSS
Рис. 2.9. Потрясающая гиперссылка
40
Языки HTML и CSS
Важным моментом является доступность ссылок. Чтобы сделать ссылки более
доступными для людей с ограниченными возможностями, можно использовать
атрибуты, представляющие дополнительные подсказки для таких людей. Очень
полезно использовать атрибут title. В примере 2.11 применяется данный
атрибут с более подробным описанием ссылки.
Пример 2.11. Добавление атрибута title и его значения
<а href="http://www.molly.com/books/springboard.html" title=
"Читайте о планируемой книге от Эддисон-Весли называющейся HTML
и С5Б">Читайте о HTML и CSS</a>
Когда указатель мыши проходит над ссылкой, появляется всплывающая
подсказка с дополнительной информацией, как показано на рисунке 2.10.
Читайте
oHTMkffCSS
[читайте
о планируемой книге от Эддисон-Весли называющейся HTML и CSS
Рис. 2.10. Использование атрибута title
и соответствующего описания делает ссылки более доступными
Еще одним важным атрибутом, отвечающим за доступность ссылок, является
атрибут tabindex, который позволяет задавать порядок выбора ссылок при нажатии на
клавишу EJ3. Это удобно для тех людей, кто для переходов между элементами
страницы использует клавишу IS11*!, а не щелкает на элементах мышью.
Поэтому, если вы хотите, чтобы ссылка была второй по значимости ссылкой
на странице, следует указать значение атрибута ссылки tabindex:
<а href="springboard.html" tabindex="2"> . . . </a>.
Ссылки электронной почты
Ссылка электронной почты - это обыкновенная ссылка, которая вместо
выполнения перехода на другую страницу открывает окно приложения для работы с
электронной почтой, благодаря чему можно отправлять электронные письма
человеку, электронный адрес которого указан в ссылке. Ссылки электронной
почты полезно использовать для контактных адресов электронной почты человека,
членов команды на сайте компании, для службы работы с покупателями и
обратной связи со службой поддержки.
Значение атрибута href ссылки электронной почты начинается с префикса
mailto:, за которым указывается адрес электронной почты получателя, как
показано в примере 2.12.
Урок 2. Добавление текста и ссылок
41
Пример 2.12. Использование префикса mail to: для создания ссылки электронной почты
<а Ьге£="та1^о:то11у@то11у.сот">электронный адрес Молли</а>
На рисунке 2.11 показаны результаты.
Ьлектронтый адрес Молли
В* Создать сообщение (_ )
: Файл Правка Вид Вставка Формат Сервис Сообщение Справка
! &
| Отправить
ЕЁ) Кому: ■Ч"!""
Щ) Копия:
Тема:
X 11 ©- ■■ К>
Вырезать: Копировать - Вставить Отменить- ■
Проверить
п]|х
»
[mollvgimollv.comi
1
.! ........
! ■'■■--'-"; v. .v j [j>Ai:v;j 1=; j ж ..а- ;н.:Д.| i= :=- Ш
iW | С 111
■ --.i ■.■ *■>..*!
Рис. 2.11. Щелчок на ссылке mailto: приводит к открытию программы
для работы с электронной почтой и вставке
адреса электронной почты в поле ввода То (Кому)
Если вы хотите сделать ссылку более дружественной, можно добавить
предметную строку, разместив за адресом электронной почты вопросительный знак (?),
атрибут subj ect и его значение, как показано в примере 2.13.
Пример 2.13. Добавление темы к адресу электронной почты
<а Ьге£="та11Ьо:то11у@то11у.сот?Би^есЬ=£еебЬаск">электронный
адрес Молли </а>
На рисунке 2.12 показаны результаты.
42
Языки HTML и CSS
Jgff^n^^WJiMP6.? Молли
a feedback
: Файл Правка Вид Вставка Формат Сервис Сообщение Справка ед
« X £ С ^ *
Отправить Вырезать Копировать Вставить Отменить Проверить
Ш Кому: |rnollvg>molly,com
Igg Копия: |
Тема: feedback
|г„ Ж К Ч А, !Е
SE tS Ш
Рис. 2.12. Ссылка mail to: с добавленной предметной строкой
Для ссылок электронной почты можно реализовать и специальные возможности,
воспользовавшись атрибутом title и его значением, а также атрибутом
tabindex, если порядок следования ссылок на странице чрезвычайно важен для
посетителей сайта, как показано на примере 2.14.
Пример 2.14. Реализация специальных возможностей для ссылокmailto :
<а href="mailto:molly@molly.com?subject=feedback" title=
"электронный адрес Молли для связи относительно книги"
tabindex^'3'^злектронный адрес Молли</а>
Текст атрибута title теперь отображается в виде всплывающей подсказки,
когда указатель мыши проходит над ссылкой. Значение атрибута tabindex
установлено в 3, поэтому посетитель сайта может трижды нажать клавишу Р>ТаЬ1.
чтобы добраться до этой ссылки, что очень полезно для людей с нарушениями
двигательной функции.
Внутристраничное связывание
Внутристраничное связывание позволяет создавать в документе ссылки, которые
автоматически переносят посетителя в другое место этого же документа. Такое
связывание осуществляется путем создания ссылки на местоположение с
использованием знака решетки (#), за которым указывается соответствующее имя, после
Урок 2. Добавление текста и ссылок
43
чего определяется местоположение с использованием якорного элемента и
атрибута name, значение которого соответствует имени, указанному в ссылке.
При необходимости, в документе можно использовать любое количество
подобных ссылок. Этот метод особенно полезен для навигации по очень большим
документам, как показано в примере 2.15.
Пример 2.15. Настройка внутристраничных ссылок
<рха href ="#пе\л7Б">Перейдите к новостям</ах/р>
<п1>Добро пожаловать</п1>
<р>Этот параграф приглашает вас.</р>
<h2>Ha тему</Ь2>
<р>Этот параграф расскажет о нас.</р>
<h2xa name="news">HoBocTM</a></h2>
<р>Эта секция ваша связь с переходом.</р>
На рисунках 2.13 и 2.14 показано, как работает внутристраничное связывание.
Перейдите к новостям
Добро пожаловать
Этот параграф приглашает вас.
Рис. 2.13. Щелчок на внутристраиичной ссылке
Этот параграф расскажет о нас.
Новости
Эта секция ваша связь с переходом.
Рис. 2.14. Браузер прокручивает документ
до указанного местоположения
Используя метод внутристраничного связывания, можно выполнять связывание
одного документа с определенным местоположением другого документа. Этот
метод полезно использовать для создания ссылки на текст, который может
находиться на другой странице. В этом случае просто используется абсолютный адрес
URL, за которым следует знак решетки и имя местоположения в первом
документе, как показано в примере 2.16.
44
Языки HTML и CSS
Пример 2.16. Использование ссылок для перехода на определенное местоположение
в другом документе
<рха href="http: //www.molly.com/headers.гЛт1#Ь2">Перейдите по
этой ссылке для чтения о заголовках второго уровня</ах/р>
Раздел определяется в том документе, на который создается ссылка, как показано
в примере 2.17.
Пример 2.17. Желаемое местоположение
<hl><a name="h2">Bce о заголовках второго уровня</ах/Ы>
Первый документ содержит ссылку на определенное местоположение другого
документа.
Берегитесь: атрибуты Name и ID
В языке XHTML 1.1 атрибут name был полностью заменен атрибутом id.
Поэтому, если вы используете язык XHTML 1.1, во всех якорных элементах
необходимо заменить атрибут name на атрибут id.
Некоторые браузеры не понимают такую замену, поэтому, чтобы избежать
проблем, для подобных страниц используйте документы, написанные на
языках XHTML 1.0 или HTML.
Добавление содержимого в шаблон
В примере 2.18 используется шаблон, созданный в главе 1 «Создание HTML-
страницы», к которому добавлены некоторые элементы, рассмотренные в
данной главе. На примере рабочего документа можно получить представление о том,
когда применяются эти элементы.
Пример 2.18. Добавление содержимого в шаблон
<!D0CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<title>your site : Location within site : topic title</title>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" />
<meta name="keywords" content="здесь ваши ключевые слова" />
Урок 2. Добавление текста и ссылок
45
<meta name="description" content=3flecb ваше описание" />
<meta name="author" content="здесь ваше имя" />
</head>
<body>
<Ы>Добро пожаловать !</hl>
<р>Некоторые вещи вам здесь понравятся/</р>
<Ь2>Стихотворение...</h2>
<р> What earthly tongue, and, oh! What human pen<br />
Can tell that scene of suffering, too severe.<br />
'Tis ever present to my sight, oh! When<br />
Will the sound cease its torture on mine ear?</p>
<Ь2>Рецепт</Ь2>
<p> Мне так нравится этот рецепт, я рассказываю всем моим
друзьям о нем!</р>
<ЬЗ>Кофейный пирог</ЬЗ>
<ol>
<И>Взбивайте яйца, муку, масло и сахар, пока они не преврятят-
ся в крем</И>
<И>Вылейте в форму для пирога</И>
<li> Медленно вылейте и помешивайте одну из комбинаций следующих
ингредиентов:
<ul>
<И>шоколадную массу</И>
<И>измельченную корицу, </li>
<li>l ложку мускатного opexa</li>
</ul>
<И>Поставьте печься в духовку на 40 минут</И>
</ol>
<Ь2>Необыкновенные времена</Ь2>
<dl>
<dt> Furkid (n)</dt>
<dd> A pet treated as though it were one's child.</dd>
<dt> Nearshoring (v)</dt>
46
Языки HTML и CSS
<dd> Restructuring a company's workforce by moving jobs to
a nearby foreign country.</dd>
<dt> Neurodiversity (n)</dt>
<dd> The variety of non-debilitating neurological behaviors
and abilities exhibited by the human race.</dd>
</dl>
<Ь2>Когда друзья входят в контакт...</h2>
<рха href="mailto:molly.com?subfect=feedback">Элeктpoнный
адрес Молли</а> </р>
</body>
</html>
Загрузите эту страницу в браузер и взгляните на результаты!
Квантовый скачок: значение структуры
В этой части мы получили представление о двух самых важных аспектах Web-
страницы: тексте и ссылках. Но кроме всего прочего, мы немного узнали о
важности семантики, или значении, элементов и их тегов.
Это важно понимать, поскольку неправильное применение элементов для
получения визуальных результатов, вместо передачи значения, накладывает
очень большие ограничения на документ. Значения этих элементов
составляют часть логической структуры документа, а логическая структура документа,
в свою очередь, формирует так называемое дерево документа.
Дерево документа - это просто иерархическая логика структуры документа,
основанная на семантике тегов, которые используются для разметки
содержимого. Само по себе это дерево не представляет большого значения, однако,
когда мы начнем использовать языки CSS, JavaScript или серверные скрипты
для генерации динамического содержимого, дерево документа будет иметь
огромное значение.
Аккуратный документ формирует логическое дерево документа, упрощая
применение языка CSS и написание скриптов, поскольку в этом случае можно
воспользоваться передовыми идеями, в основе которых лежит наследование.
Без четкого дерева документа, попытка отладить документ вызовет массу
затруднений.
В заключение
Возможность правильно форматировать текст и управлять содержимым имеет
большое значение при создании Web-страницы, представляющей интерес
урок 2. Добавление текста и ссылок
47
не только для вас и других людей, которые, возможно, обновляют ваши
документы, но и для тех хороших ребят, которые посещают ваш сайт.
Преимущества хорошо отформатированного содержимого:
• посетители сайта будут иметь четкое представление о его назначении;
• можно помогать посетителям перемещаться по сайту нужным путем;
• содержимое будет хорошо организовано;
• ссылки будут осмысленными и, следовательно, более удобными для публики;
• при помощи текстового содержимого и ссылок можно убедить посетителей
посетить другие части сайта, особенно наиболее интересные из них.
По существу, способ представления текста и ссылок гарантирует не только то,
что содержимое - это король, но и то, что при его просмотре посетители сайта
будут ощущать себя членами королевской семьи.
Текст - это еше не все
Конечно же, текст - это не единственный способ, с помощью которого можно
убедить или развлечь наших посетителей или же предоставить им нужную
информацию. Изображения, мультимедиа и интерактивные возможности могут
иметь очень большое значение для обогащения впечатлений от Web-сайта.
Итак, в следующей главе мы узнаем, как добавлять изображения, мультимедиа и
скрипты в документы. Если у вас возникло ощущение, что еще немного рановато
переходить к изучению темы, которая, возможно, кажется вам более сложной, не
стоит беспокоиться! Идея заключается в том, чтобы вы смогли применить свои
знания уже сейчас, решая забавные и доставляющие удовольствие задачи,
которые помогут сохранить ваш интерес к дальнейшему обучению.
УРОК 3.
Добавление изображений,
мультимедиа и сценариев
Изображения, мультимедиа и сценарии позволяют сделать сайт «динамичным и
насыщенным». Такой сайт будет динамичным, поскольку многие из
перечисленных возможностей позволяют посетителям активно взаимодействовать с сайтом.
Сайт будет содержательным благодаря его насыщенности визуальными образами,
дополняющими содержимое. В этой главе термин изображения относится как
к рисункам, используемым для улучшения дизайна страницы, так и к рисункам,
дополняющим содержимое сайта, например к фотографиям. Изображения для
Интернета должны быть подготовлены особым образом в хорошем графическом
редакторе; при желании, этому можно быстро научиться.
Изображения для Интернета можно создавать с помощью ряда программ,
но обычно хочется воспользоваться неплохим графическим редактором,
например программой Photoshop (если ваш бумажник не позволяет купить
эту программу, можете попробовать программу Paint Shop Pro компании
Jasc). Существует множество других программ для создания Web-
графики; найти эти программы можно с помощью любимой поисковой
системы, введя в поле строки поиска фразу «web graphics software».
Для Web-графики применяется два основных формата: GIF и JPEG. Формат файла
GIF лучше всего подходит для изображений с небольшим количеством цветов,
простыми фигурами и областями, заполненными сплошным цветом; формат
файла JPEG лучше всего подходит для изображений с большим количеством
цветов и цветовых градиентов, например фотографий. Третьим форматом для Web-
графики является формат PNG, однако отсутствие поддержки этого формата
в некоторых браузерах, делает его использование менее привлекательным.
Понятие мультимедиа в Интернете можно отнести к ряду вещей, включая
анимационные GIF-файлы, Flash-анимацию, аудио, видео, а также Java-апплеты. В этой
главе понятие скрипты относится к эффектам, созданным с использованием
языка JavaScript или DHTML. Эти эффекты можно вставлять в документы для
придания страницам неповторимых особенностей.
Не смотря на то, что изображения, мультимедиа и скрипты могут
придать сайту дополнительные особенности, они также могут внести
ненужный беспорядок и увеличить время загрузки страницы. Я считаю,
что большая часть подобного содержимого является декорацией.
Вы ведь не хотите украсить свой дом огромным количеством
декораций, поэтому подумайте о том, во что превратит вашу страницу
такой объем декораций.
Урок 3. Добавление изображений, мультимедиа и сценариев 49
Элемент img
При работе с изображениями мы будем использовать элемент img. Этот элемент
является пустым - иначе говоря, элемент не содержит никакого текстового
содержимого. Поэтому для него не нужно использовать закрывающий тег. На языке
XHTML это выглядит следующим образом:
<img />
Если вставить этот элемент в таком виде в тело документа, ничего не произойдет.
Поэтому, помимо самого элемента img, необходимо еще указать путь к
изображению. Для этого используется атрибут src, название которого является
сокращением от слова «source» (источник).
В значении атрибута src указывается месторасположение и имя с расширением
существующего файла с Web-графикой. В примере 3.1 демонстрируется готовый
документ с указанным источником изображения.
Пример 3.1. Добавление изображения в тело документа
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>r\naBa 3</title>
</head>
<body>
<img src="images/4>oTo.jpg" />
</body>
</html>
Обратите внимание, что для хранения Web-графики был использован
подкаталог images. Изображения удобно размещать в подкаталоге того
каталога, в котором хранятся документы, использующие их, или, если
сайт невелик, в одном подкаталоге корневого каталога.
В окне браузера появится изображение, как показано на рисунке 3.1.
О
50 Языки HTML и CSS
Ole Edit yew go £ okmarks Tools Window Help
■igt "ей- Done и^оЛ1
Pwc. 3.1. В окне браузера отображается изображение
Если в документе нет другого содержимого, изображение автоматически
размещается в левом верхнем углу. Конечно, чтобы сделать это изображение более
полезным, мы выполним ряд вещей:
• окажем содействие браузерам для лучшего отображения изображения;
• предоставим полезную информацию для тех, кто, возможно, не сможет
увидеть изображение;
• свяжем изображение.
Сначала мы рассмотрим, как решать эти задачи с использованием языка
XHTML, но в главе 8 «Работа с цветом и изображениями с использованием
языка CSS» мы познакомимся с современными методами управления
представлением изображения с использованием языка CSS.
Использование атрибутов width и height
Следующее, что мы хотим сделать с изображением, - использовать атрибуты
width и height. На самом деле, это поможет браузерам отображать изображения
более эффективно, поэтому эти атрибуты стоит использовать всегда.
Узнать ширину и высоту изображения можно несколькими способами. Первый
способ заключается в использовании графического редактора, который
позволяет получить необходимую информацию, как показано на рисунке 3.2.
Урок 3. Добавление изображений, мультимедиа и сценариев
51
Другим способом узнать ширину и высоту является открытие изображения
непосредственно в браузере.
На рисунке 3.3 показано само изображение (не HTML-файл), а в строке заголовка
отображаются его ширина и высота.
Размер изображения , .
I— Ызмрения в точка* ЦМ
Ширина- |7К] II точки
Высот* JS37 II точки
Ширина: 113.94 ||он
Высота. 114.21 11 с„
Разрешение: 196 II пикееп^дюин
1 | Сжатие размере»
[^Повторное изображение: Бикубическая
- »•■» -
ч
.4
3
ч
ч
V
..—т
1 ок J
[ Отмена 1
| Авто... ]
1
Рис. 3.2. Хотите узнать ширину и высоту изображения в пикселах - в данном случае,
программа Photoshop отображает ширину и высоту
в верхней части диалога Image Size (Размеры изображения)
(S W1 .|ре (JPIC Imtff, Н6x53/ pixels] - MoztlU
Be E* V«w fio Bookmarks look Jtfrdow
**" « ^^fV^Kf --^Z '
Л~4 -- » ■r'rHWIVT ■»- -''4Ю&Ф*
^ » - ' ^ ^ . '_*-.
-St 4* Done
**
I w1 HSj;^;.4 'x* "дач
■ 'It Tii» ii мши iiM|ш*
—^P -M.V j^Sr'"^ -fa*
t-b^tbbVBJBj^—^b*V «* T——>
-; -r~?- .-**- -*•- -*~-—
-s^ ■ v >■
iiBBl
^bbb!
i
T
**;
- -'
-41
BBS
-i>-ta"
Pwc. 3.3. Изображение, открытое в браузере,
в строке заголовка браузера появились ширина и высота изображения
52 Языки HTML и CSS
Такая возможность существует не во всех браузерах, а только в самых
распространенных.
¥)
Получив размеры изображения - в данном случае ширина составляет 250 пикселов,
а высота -188 пикселов, - их можно указать в разметке изображения:
<img Бгс="фото.jpg" width="250" height="188" />
Следует всегда указывать правильную ширину и высоту. Если значения
width и height будут больше размеров реального изображения, браузер
растянет изображение, чтобы подогнать его размеры под указанные
значения. Если указать меньшие значения, браузер выполнит сжатие
изображение до указанных значений, уменьшив его.
Предоставление альтернативного текста
Некоторые люди перемещаются по Интернету, отключив в браузере функцию
отображения изображений. Хотя в современном мире с высокими пропускными
способностями это звучит странно, однако некоторые люди не имеют
высокоскоростного выхода в Интернет, а поскольку изображения могут существенно
замедлять доступ к содержимому страницы, люди отключают функцию
отображения изображений. Другим важным моментом является то, что у многих людей,
посещающих Интернет, плохое зрение, или они вообще слепы. В таких случаях
посетителям полезно предоставлять какие-нибудь сведения о том, что из себя
представляет изображение.
Для этих целей используется альтернативный текст, который является
значением атрибута alt, как показано в примере 3.2.
Пример 3.2. Добавление текстового описания при помощи атрибута alt
<img Бгс="фото.jpg" width="250" height="188" а1Ь="фотография
красивого замка на фоне гор" />
Альтернативный текст отображается на сайте в двух случаях. В первом случае,
он отображается в месте расположения изображения до его полной загрузки,
а также когда функция отображения изображений отключена, как показано на
рисунке 3.4.
Во втором случае, альтернативный текст отображается в тот момент, когда
указатель мыши проходит над изображением. Это полезно для всех, поскольку
альтернативный текст предоставляет контекстно-зависимую информацию о
назначении изображения, как показано на рисунке 3.5.
О
о
Урок 3. Добавление изображений, мультимедиа и сценариев
53
. £ie Edit £iew fio bookmarks I°ols ^vindow Це1р
фотография красивого замка на фоне гор
•St ч£ Done | | HtnoS1
Рис. 3.4. Альтернативный, текст в браузере
с выключенной функцией отображения изображений
Рис. 3.5. Альтернативный текст в виде всплывающей подсказки,
появляющейся при перемещении указателя мыши над изображением
Связывание изображения
Нам много раз придется связывать изображение с другим HTML-документом или
полной версией изображения. В любом случае, связывание изображения
выполняется точно так же, как и связывание текста. Код изображения помещается в
якорный элемент и указывается адрес связываемого документа, как если бы на
месте изображения находился текст, что показано в примере 3.3.
Пример 3.3. Связывание изображения
<а href«"Подробно.html">
<img src="images/фото.jpg" width="250" height="188" alt=
"фотография красивого замка на фоне гор" />
</а>
Теперь изображение связано, и если посетитель щелкнет на нем, он будет
перемещен на страницу detail.html. К ссылке можно добавить атрибут title, чтобы
предоставить посетителям дополнительную информацию о ссылке. По
умолчанию, вокруг изображения отображается граница, подчеркивающая тот факт, что
изображение является связанным, а указатель мыши, когда находится над
изображением, принимает вид руки, как показано на рисунке 3.6.
54
Языки HTML и CSS
Qle Edit View go Bookmarks Tools Window Help
■SS. Ч>£- Ме:(№'./Подробно html '[ |4&~gS*
Рис. 3.6. Связанное изображение
Если изображение-ссылка была активирована, граница вокруг изображения
примет стандартный цвет посещенной ссылки. Конечно, многие люди считают
границу ссылки уродливой. Если вы хотите избавиться от нее, это можно сделать
прямо в языке HTML, как показано в примере 3.4.
Пример 3.4. Использование атрибута border
<а href="подробно.html">
<img src="images/ct)OTo.jpg" width="250" height="188" alt=
"фотография красивого замка на фоне скал" border="0" />
</а>
Граница вокруг изображения, которое все еще остается связанным, больше не
отображается, как показано на рисунке 3.7.
Берегитесь: Границы отвечают за представление
Атрибут border считается презентационным, поскольку его можно
использовать для представления документа. Значение атрибута, большее 0,
изменяет толщину границы, независимо от того, является изображение связанным
или нет. В идеале, для изменения границ вместо атрибута border будут
использованы свойства языка CSS. Язык CSS также будет применен для
позиционирования или плавающего размещения изображения относительно
содержимого страницы. Более подробно об этом можно узнать в главе 11
«Поля, границы и отступы» и в главе 12 «Позиционирование, плавающее
размещение и Z-индекс».
Урок Э. Добавление изображений, мультимедиа и сценариев
55
Щ Глава 3 - Mozill*
^шшт
Рис. 3.7. Вокруг изображения, которое все еще остается связанным,,
больше нет видимой границы
Связывание аудио- или видеофайла
Если вы хотите разместить на сайте ссылки на файлы мультимедиа, сделать это
так же просто, как и создать ссылку на изображение. Для аудио и видео
существует большое количество форматов файлов, но самыми популярными на
сегодняшний день являются форматы МРЗ, QuickTime, Real и Windows Media.
Сначала файл мультимедиа размещается в подкаталоге. Как и в случае с
изображениями, структура подкаталогов позволяет поддерживать организацию
различных файлов. В данном случае, в подкаталоге с именем media находятся два
файла, первый из которых является аудиофайлом в формате МРЗ, а второй -
видеофайлом с расширением .avl. В примере 3.5 демонстрируется весь документ и то,
как было выполнено связывание с файлами мультимедиа.
Пример 3.5. Связывание аудио и видео
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<title>r\naBa 3</title>
</head>
<body>
56
Языки HTML и CSS
<а href="media/audio-sample.mp3">CcbLnKa на образец звука</а><Ьг
/>
<а href="media/video-sample.avi">CcbmKa на образец видео</а>
</body>
</html> ^^^^^^^
Я добавила текст для ссылок и для ясности вставила разрыв строки между двумя
ссылками, чтобы они располагались на разных строках, а не друг за другом.
В результате, ссылки отображаются так, как показано на рисунке 3.8.
ЦТ ГлаваЭ -Mozilla
' gle Edit View go Bookmarks
Ссылка на образец звука
Ссылка иа образец видео
\ 1
•«&• 4j£- I
швш
Tools Window
| Щ>»|вр
Рис. 3.8. Ссылки на аудио- и видеофайл
Пока все довольно просто, не так ли? Хорошо, нам осталось сделать несколько
вещей со ссылками, чтобы упростить посетителям работу с аудио и видео.
Берегитесь: поведения браузеров различаются
Различные браузеры по-разному отображают аудио- и видеофайлы.
Существенное влияние на способ отображения оказывают и настройки браузеров.
При щелчке на ссылке, некоторые браузеры автоматически загружают файл
во внешний проигрыватель мультимедиа и воспроизводят аудио- или
видеоклип. Другие браузеры отображают диалог, в котором предлагается открыть
файл с помощью подходящего приложения или загрузить его и сохранить на
жестком диске. Из-за указанных различий в поведении браузеров,
посетителям полезно предоставлять максимально возможное количество информации
о ссылке, на которой они собираются щелкнуть.
Поскольку размеры большинства аудио- и видеоклипов достаточно велики, на
странице полезно указывать размеры этих файлов для предупреждения
посетителей. Просто добавьте информацию в текст ссылки или разместите ее
непосредственно за ссылкой.
s\ Некоторые люди идут еще дальше, предоставляя файлы с разными
размене рами для посетителей с низкой, средней и высокой пропускной способно-
I стью канала передачи данных.
урок 3. Добавление изображений, мультимедиа и сценариев
57
Другим способом содействия посетителям является размещение описания файла
в атрибуте ссылки title, как показано на рисунке 3.9.
Этот способ помогает предоставить всем дополнительную информацию, а также
объяснить людям, не способным видеть или слышать, назначение данной
ссылки, как показано в примере 3.6.
Пример 3.6. Добавление дополнительной информации для посетителей
<а href="media/audio-sample.mp3" title="3By4aHMe пения Мол-
ли">Ссылка на образец эвука</а>.Размер: l,300KB<br />
<а href="media/video-sample.avi" title="BMfleo из класса танцев
Сары">Ссылка на образец видео</а>. Размер: 29,000KB
:| File Edit liew Go Bookmarks Tools Window Help
Ссылка на образец звукаРазмер: 1,300КБ
Ссылка на образец видео. Размер: 29,000КБ
Видео из класса танцев Сары]
Рис. 3.9. Предоставление полезной дополнительной информации
для ссылок на аудио и видео
Вставка файлов при помоши элемента object
Другим способом представления аудио, видео и других файлов мультимедиа,
например Flash-анимации и Java-апплетов, является их вставка непосредственно на
страницу. Это означает, что вместе со страницей автоматически загружается
программный модуль.
Все внешние файлы считаются объектами. К ним относятся как изображения, так
и файлы мультимедиа. В современных спецификациях языков HTML и XHTML
корректным способом включения всех файлов мультимедиа на страницу
является использование элемента ob j ect для непосредственной вставки файла:
<object data="media/video-sample.avi" type="video/avi" />
В результате на странице появится приложение-плейер, после чего можно
воспроизводить видео, как показано на рисунке 3.10.
Конечно, при помощи дополнительных параметров можно решать гораздо
большее количество задач. Подробнее узнать о многих доступных
параметрах для файлов мультимедиа можно в отличном учебном пособии по
адресу http://www. w3schools.com/media/tlefault.asp.
58
Языки HTML и CSS
/f| piaeaJL--t№jy«o(t Ijjtemet^..., BuSt
Адрес:
*©<>© »
<з| Мой компьютер
Рис. 3.10. Вставленный на страницу плейер загружен в браузере Internet Explorer
В случае с файлами в формате Flash, для размещения файла среди содержимого
страницы используется элемент ob j ect, как показано в примере 3.7.
Пример 3.7. Вставка файла Flash-ролика (SWF)
на страницу с использованием элемента <object>
<object classid="clsid:d27cdb6e-ae6d-llcf-96b8-444553540000"
width="100" height="100"
codebase="http://active.macromedia, com/ flash6/ cabs/ swf lash. cab#version= 6, 0,0,0">
<param name="movie" value="media/intro.swf" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="guality" value="hight" />
</object>
В большинстве браузеров, соответствующих стандартам и у которых включена
функция воспроизведения Flash-анимации, сразу после загрузки страницы
должно начаться воспроизведение файла, как показано на рисунке 3.11.
Обратите внимание, что вместе с объектами указывается
дополнительная информация. К ней относится значение атрибута codebase
и элемента parameter, используемого для определения не только
местоположения файла, но и других аспектов его воспроизведения.
Все эти параметры генерируются программой Macromedia Flash
при создании Flash-файпа. За дополнительной информацией по
технологии Flash обратитесь к документу по адресу
http://www.macromedia.com/software/flash/.
Урок 3. Добавление изображений, мультимедиа и сценариев
59
Файл Правка Вид Избранное Сервис Справка
СЭ Назад - щ,
DU
Готово Мой компьютер
Рис. 3.11. Flash-анимация логотипа AVA воспроизводится
в браузере Internet Explorer
Элемент object можно также использовать для аудио и Java-апплетов.
Необходимо просто указать правильное значение для атрибута codebase и желаемые
параметры, и все будет готово.
Ваша Честь, я - объект!
Хорошо, вся предыдущая часть была враньем. Но я не пытаюсь сбить вас с
толку - как раз наоборот, я пытаюсь вести вас правильным путем. Если вы хотите
использовать разметку, существующую в достоверном мире языков HTML и
XHTML, адресация ко всем внешним файлам мультимедиа должна выполняться
при помощи элемента ob j ect.
Однако существует огромный камень преткновения по использованию элемента
object, то есть поддержка этого элемента в различных браузерах и платформах
несовместима. Этот факт весьма беспокоит сторонников пуризма, поскольку
в спецификациях другой альтернативы не существует.
60
Языки HTML и CSS
Квантовый скачок: Обработка элемента object в языке XHTML 2.0
В языке XHTML 2.0 элемент object используется повсеместно. Другими
словами, все остальные элементы, предназначенные для работы с внешними
объектами, включая элемент img, выведены из употребления. Понятно, что пока
рано использовать язык XHTML 2.0, поскольку результаты будут ограничены
очень немногими браузерами, поддерживающими элемент object вместо
элемента img. Однако это дает хорошее представление о направлении
развития языка XHTML.
Простыми словами, вот к чему все это сводится: если файл мультимедиа
должен быть максимально совместимым в различных браузерах, необходимо
воспользоваться специальным элементом - элементом embed. Этот элемент
никогда не существовал в формальных спецификациях, однако почти все
браузеры его поддерживают; и хотя страницы, в которых используется элемент
embed, при выполнении проверки корректности вызывают ошибки, они все
равно будут работать.
Абсолютно логичным подходом считается одновременное использование
элементов object и embed. Итак, если применить этот подход к только что
использованному Flash-файлу, окончательная разметка будет выглядеть так, как
показано в примере 3.8.
Пример 3.8. Вставка файла Flash-ролика (SWF)
на страницу с использованием элементов <object> и <embed>
<object classid="clsid:d27cdb6e-ae6d-llcf-96b8-444553540000"
width="100" height="100"
codebase="http://active.macromedia, com/flash6/cabs/swflash.cab#version=6,0,0,0">
<param name="movie" value="media/intro.swf" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="quality" value="high" />
<exnbed src="media/intro.swf" width="100" height="100"
play="true" loop=true" quality="high"</embed>
</object>
Теперь Flash-ролик будет воспроизводиться на странице практически во всех
браузерах.
Добавление скриптов
Сделать страницы интерактивными и интересными можно еще одним способом,
который заключается в добавлении скриптов. Обычно этот способ имеет
отношение к языку JavaScript или к языку, известному под названием Динамический
HTML (Dynamic HTML) или DHTML, который представляет собой комбинацию
Урок 3. Добавление изображений, мультимедиа и сценариев
61
технологий, включая языки HTML, CSS, JavaScript и модель Document Object Model
(Объектная модель документа). Объединение этих технологий позволяет
использовать богатые возможности, например ниспадающие меню и
интерактивные игры.
Квантовый скачок: модель Document Object Model
Модель Document Object Model, также известная как модель DOM, представляет
собой интерфейс в браузерах, который позволяет присоединять скрипты к
отдельным элементам. Одной из причин, по которым язык DHTML стал
спорным и сомнительным, явилось то, что в браузерах были реализованы
нестандартные модели DOM, что привело к плохой совместимости. При
использовании скриптов на языке DHTML, убедитесь, что в них максимально реализована
кросс-браузерная поддержка. Модель DOM является стандартизованной, и
разработчики всех современных браузеров, построенных на стандартах,
эффективно работают над реализацией стандартов модели DOM.
Добавить скрипты в документ можно двумя основными способами. Первый
способ заключается в размещении скрипта в разделе документа head. Другим
способом является размещение скрипта вне документа; такой скрипт называется
связанным.
Вставка скрипта
Для вставки кода на языке JavaScript в раздел документа head, используется
элемент script, содержащий код скрипта, как показано в примере 3.9.
Пример 3.9. Вставка скрипта в раздел документа head
<head>
<script type="text/javascript">
function newWindowO {foodWindow=window.open
("images/фото.ppg", "foodWin", "windth=250,height=188")}
</script>
</head>
Задача этого скрипта - открыть изображение photo.jpg в новом окне, когда
пользователь щелкнет на определенной ссылке. В саму ссылку, расположенную в
разделе документа body, необходимо добавить инструкцию на языке JavaScript, как
показано ниже:
■?а href=" javascript: newWindowO ">Фотография красивого замка на
фоне гор</а>
62
Языки HTML и CSS
На рисунке 3.12 демонстрируется, как щелчок на ссылке приводит к открытию
нового окна с загруженным изображением.
Рис. 3.12. Результаты работы вставленного скрипта
Связывание со скриптом
Принимая во внимание передовые практики, чем большее количество кода,
относящегося к скриптам и стилям, удастся вынести за пределы документа во
внешние файлы, тем лучше. К одному скрипту может обращаться большое
количество страниц, и если потребуется внести изменения в скрипт, их гораздо
проще выполнить в одном файле скрипта, чем во множестве документов со
вставленными скриптами.
Чтобы выполнить связывание со скриптом, сначала разместите код скрипта (без
каких-либо тегов языка HTML) в отдельном файле и назовите этот файл именем с
расширением .js, например, popup.js. Данный файл можно разместить в
подкаталоге scripts (по аналогии с размещением изображений и мультимедиа), а затем
использовать элемент script для связывания этого файла с документом, как
показано в примере 3.10.
Пример 3.10. Связывание со скриптом
<head>
<script src="scripts/popup.js" type="text/javascript"></script>
</head>
He изменяйте код ссылки в разделе документа body, и результаты будут точно
такими же, как на рисунке 3.12.
Урок 3. Добавление изображений, мультимедиа и сценариев 63
Скрипты и проблемы браузеров
В некоторых случаях люди используют старые браузеры, не имеющие
поддержки языка JavaScript или имеющие недостаточную поддержку самого элемента
script, или же просто отключают функцию поддержки языка JavaScript. Чтобы
обойти данные проблемы, необходимо прибегнуть к помощи дополнительной
разметки.
Большинство современных Web-дизайнеров не используют обходные пути
для решения данных проблем до тех пор, пока не будут знать наверняка,
что необходимо реализовать поддержку старых браузеров. Однако,
возможно, вы захотите использовать эти пути. В любом случае, важно
посмотреть на данные методики в действии, чтобы в последствии
узнавать их при изучении HTML-кода, полученного из других источников.
Сокрытие скриптов от старых браузеров
Если используются вставленные скрипты на языке JavaScript, некоторые старые
браузеры пытаются отображать все, что находится внутри элемента script, как
текст раздела body.
Чтобы избежать такой ситуации, многие люди выполняют «комментирование»
скриптов - другими словами, используют синтаксис комментариев, как показано
в примере 3.11, для предотвращения отображения скрипта.
Пример 3.11. Сокрытие скрипта при помощи комментариев
<head>
<script type="text/javascript">
<»—Это скрывает скрипт от старых браузеров
function newWindow() {foodWindow=window.open
(»images/фото.jpg", "foodWin", "windth=250,height=188")}
// Окончание скрытия скрипта от старых браузеров -->
</script>
</head>
Обратите внимание на / / . Это синтаксис языка JavaScript, позволяющий
записывать за этими символами комментарий, который также не будет отображаться.
Способ комментирования, используемый в данном случае, не будет мешать
нормальной работе скрипта в любом браузере, поддерживающем скрипты.
Использование элемента noscript
Если есть желание добавить какой-либо текст, чтобы браузеры отображали
сообщение, касающееся поддержки скриптов, можно воспользоваться элементом
noscript, как показано в примере 3.12.
64 Языки HTML и CSS
Пример 3.12. Использование элемента noscript
<head>
<script type="text/javascript">
<!— Это скрывает скрипт от старых браузеров
function newWindowf) {foodWindow=window.open
("images/фото.jpg", "foodWin", "windth=250,height=188")}
// Окончание скрытия скрипта от старых браузеров —>
</script>
<noscript>BHMMaHMe: Ваш браузер не поддерживает
JavaScript или же Вы выключили JavaScript.
</noscript>
</head>
В тех браузерах, в которых существует поддержка скриптов и у которых не
отключена соответствующая функция, содержимое элемента noscript
отображаться и£ будет.
Однако в браузерах, которые не имеют поддержки языка JavaScript, или в браузерах,
которых функция поддержки языка JavaScript отключена преднамеренно, будет
отображаться текст элемента noscript, как показано на рисунке 3.13.
:, Eile Edit View _> Bookmarks I00'5 Window fcfclp
Внимание-. Ваш браузер не поддерживает JavaScript или же Вы выключили JavaScript.
Фотография красивого замка на фоне гор
Рис. 3.13. Отображение текста элемента tig script в браузере,
в котором отключена функция поддержки языка JavaScript
Обратите внимание, что ссылка не изменилась, однако скрипт, отвечающий за
открытие нового окна, работать не будет, если у браузера отсутствует поддержка
языка JavaScript или отключена соответствующая функция.
Поиск скриптов в Интернете
Одним из приятнейших моментов использования языков JavaScript и DHTML
является доступность множества бесплатных скриптов. Конечно, такое
обилие бесплатных скриптов означает, что многие из представленных
скриптов нестандартны или что с момента опубликования появились более
новые, лучшие скрипты. Именно поэтому будьте внимательны и читайте
то, что написано мелким шрифтом. Лично мне нравится несколько
сайтов: http://javascriptkit.com/, http://simpiythebest.net/scripts/DHTML_scripts/,
http://www.javascripts.com/ и http://www.dynamic-drive.com/.
Урок 3. Добавление изображений, мультимедиа и сценариев
65
Осознайте это!
От структуры до хорошо отформатированного текста, отличных изображений и
интерактивных возможностей - несомненно, за три коротких главы вы прошли
длинный путь.
Конечно, если вы разочарованы, вас можно понять, поскольку все это очень
напоминает строительство дома в то время, как вы представляете себе его
предстоящую отделку. Важно помнить, что в современном мире для построения
хороших Web-страниц необходимо потратить дополнительное время для
организации материалов, иметь четкие цели и получать удовольствие от создания своих
документов.
Как и в случае с домом, чем лучше фундамент, чем более хорошо построена и
продумана структура, тем будет проще осуществлять эстетические изменения.
Это как раз то, что мы хотели получить, потратив время на правильное
построение страниц. Такая простая вещь, как размещение всех изображений в каталоге
image, скриптов - в каталоге script и других файлов мультимедиа в
соответствующих каталогах, означает наличие внутренней структуры сайта, которая будет
расти, а не обрушиваться по мере роста сайта и внесении изменений для
соответствия новым требованиям.
Представьте, что вы заранее не потратили время на построение правильной
структуры. Воспользуйтесь советом профессиональных Web-разработчиков,
которые учились на собственных ошибках: плохо построенная инфраструктура
может все время приводить к разнообразным дорогостоящим, трудоемким и
разочаровывающим проблемам.
Теперь, когда вы стали немного более организованными в плане использования
документов, текста, изображений и мультимедиа, настало время заняться
украшением. В следующей главе мы познакомимся с созданием полезных таблиц.
Когда чаша Грааля была переполнена внешним видом сайтов, были пересмотрены
возможности использования таблиц из-за их структурной целостности.
Известно, что язык CSS гораздо более эффективен и гибок для
репрезентативных аспектов сайта, однако таблицы могут быть чрезвычайно полезны для
эффективного отображения ряда информации. В зависимости от поставленных
задач таблицы могут быть отличным способом представления данных, помогая
посетителям сайта легко получать и осмысливать информацию, публикуемую для
совместного использования.
3 -1356
УРОК 4.
Создание таблиц
Использование таблиц чрезвычайно эффективно для представления данных на
Web-сайте. У таблиц интересная история развития в Интернете - поэтому, перед
тем, как взяться за дело и начать создавать таблицы, стоит познакомиться с этой
историей поближе.
Многие читатели наверняка знают, что Интернет создал физик. Тим Бернерс-Ли
(Tim Berners-Lee) представлял, что эту технологию можно применять для
высокоэффективного распределения и совместного использования
исследовательских документов. Таким образом, таблицы являются дополнением
первоначальной идеи: они были добавлены в развивающийся язык HTML, как средство
представления данных для их совместного использования другими
исследователями и учеными.
В то время языка CSS еще не было, а значит, и не было технологии, отвечающей
именно за способы представления страниц. Поскольку таблицы формируют
сетку, разработчики быстро пришли к соглашению использовать таблицы скорее
для отображения содержимого, чем данных - фактически, таблицы стали
инструментом для создания макетов страниц, ибо ничего лучшего в тот момент не
существовало.
На сегодняшний день таблицы остаются основным способом формирования
макетов Web-документов. Однако у такого подхода существует ряд недостатков.
Макеты, созданные на основе таблиц, медленно загружаются и зачастую
являются сильно детализированными, что затрудняет эффективную работу с ними.
Таблицы, используемые для макета, не соответствуют предположениям
поисковых систем о структуре страниц, что является весьма важным моментом при
формировании рейтингов, поэтому применение таких таблиц может привести к
невозможности улучшения рейтинга. И, наконец, вероятно, самое важное -
табличные макеты создают множество препятствий для доступности.
Использование таблиц для макетов стало крупнейшим обходным решением в
истории языка HTML, поскольку элементы и атрибуты, предназначенные для одной
конкретной задачи - отображения табличных данных, - были использованы для
чего-то совершенно другого. Несомненно, табличные макеты изменили лицо
Интернета, однако теперь существует язык CSS, и для большинства макетов больше
нет причин использовать таблицы. Вместо этого, таблицы снова рассматривают
в истинном свете: как способ отображения данных.
Подход, известный под названием переходный дизайн (transitional design),
объединяет использование без труда разработанных таблиц и языка CSS для создания
макетов, совместимых со старыми браузерами. Если необходимо поддерживать
не только современные браузеры, то этот подход - отличный выбор. Однако
в идеале следует совершенно отказаться от использования таблиц, кроме тех
случаев, для которых они предназначались изначально.
Урок 4. Создание таблиц
67
Элемент table
Создание таблиц начинается с элемента table. Этот элемент предупреждает
браузер, что последующие данные относятся к таблице, которая сейчас будет
отображена. Элемент table считается непустым, поскольку в нем находится
текстовое содержимое. Поэтому он записывается с использованием открывающего
и закрывающего тега, как показано ниже:
<table>
</table>
Если загрузить этот код в браузер, вы ничего не увидите - для этого необходимо
добавить другие элементы. Однако у элемента table существует несколько
атрибутов, с которыми следует познакомиться.
Ширина таблицы
Если необходимо задать ширину таблицы, это можно сделать с помощью
атрибута открывающего тега table. Значения ширины могут выражаться двумя
способами: в пикселах и в процентах. Значение, выраженное в пикселах, считается
фиксированным, значением, поскольку ширина таблицы всегда будет
соответствовать этому значению, как показано в примере 4.1.
Пример 4.1. Таблица с шириной, выраженной в пикселах, или фиксированной шириной
<table width="250">
</table>
Таблица с фиксированной шириной, равной 250 пикселам, будет занимать именно
250 пикселов доступного пространства в окне браузера, как показано на рисунке 4.1.
Eile Edit ^ew Qp Bpokmarlcs Tools ^jndow tielp
I
•Sfc- -Ф ' Done HD-a^
Puc. 4.1. Независимо от ширины окна браузера, ширина таблицы с фиксированной
шириной всегда остается постоянной - в данном случае, ее ширина составляет 250 пикселов
Значение, выраженное в процентах, считается плавающим значением (известное
так же, как динамическое, или текучее), поскольку таблица будет занимать
пространство, выраженное в процентах относительно свободного пространства
окна браузера, как показано в примере 4.2.
В данном случае таблица будет занимать 90% доступной ширины окна браузера,
как показано на рисунке 4.2.
66
Языки HTML и CSS
Пример 4.2. Таблица с шириной, выраженной в процентах, или плавающей шириной
<table width="90%">
</table>
Wf.na.aa 4 ^Mozilla *Л '^.. ^r+st - ^^У^Й^-,' Л
■ | @e Edit View Qp gpckmarks Ipols Vj/indow belp
1
-3ftr sZ- ' Done ||
"PW'v'lL^i.JiiLii
|-ф-1ЙР
Рис. 4.2. Ширина таблицы, выраженная в процентах, приводит к тому, что таблица
заполняет окно браузера в соответствии с указанным, значением - в данном случае 90%
Ширина таблиц будет варьироваться из-за различных разрешений
компьютерных мониторов, а также из-за изменения людьми размеров окна
браузера на рабочем столе. Размеры плавающей таблицы будут
изменяться всякий раз при изменении размеров окна браузера, чтобы
заполнять доступное пространство.
Границы таблицы и интервалы
Язык HTML позволяет включить отображение границ таблицы, как показано ниже:
<table width="250" border="l">
В результате выполнения этой строки кода вокруг таблицы, а также вокруг всех
ее строк и ячеек, будет отображена граница шириной в 1 пиксел.
Для добавления интервала между ячейками используется атрибут cellspacing.
Для добавления интервала между содержимым ячейки и самой ячейкой
используется атрибут cellpadding:
<table width="90%" border="l" cellspacing="5" cellpadding="5">
Как и в случае со всеми атрибутами, отвечающими за представление документа,
управление атрибутами width, border, cellspacing и cellpadding в
конечном счете будет осуществляться при помощи языка CSS, который предлагает
намного больше вариантов представления информации. Однако с этими
атрибутами необходимо познакомиться и использовать в данной главе для создания
таблицы данных. Позднее, мы модифицируем указанные свойства таблицы с
использованием языка CSS.
За дополнительной информацией по созданию таблиц данных,
выглядящих просто фантастически, обратитесь к главе 8 «Работа с цветом и
изображениями с использованием языка CSS».
урок 4. Создание таблиц
69
Добавление строки таблицы
Еще одна важная составляющая HTML-таблицы - это строка таблицы,
представляемая элементом tr, как показано в примере 4.3.
Пример 4.3. Таблица со строкой
<table width="90%" border="l" cellspacing="5" cellpadding="5">
<tr>
Данные
</tr>
</table>
В каждой таблице должна быть хотя бы одна строка. Строки - это вид таблицы по
горизонтали. И хотя сама по себе приведенная разметка в браузере отображаться
не будет, я добавила необходимые компоненты, чтобы можно было четко увидеть
строку, как показано на рисунке 4.3.
@е Edit View Qp Bookmarks Iools Window Help
Данные
■Mfc-eg. ! D°ne 'I ЦШ>*аУ _
Puc. 4.3. Таблица с одной строкой ~ интервалы между
контуром строки и контуром таблицы установлены
при помощи атрибутов eel 1 spacing и eel Ipadding
Таблица может содержать любое необходимое количество строк.
В следующем примере были добавлены две дополнительные строки, чтобы
привести пример таблицы, состоящей из трех строк. Также была использована
разметка, необходимая для отображения трех строк таблицы, как показано на рисунке 4.4.
. File Edit View S° Bookmarks Iools Window Help
Данные
Данные
Данные
i!5fc \Z- , Done ' | ' ' ) HB-gSP
Puc. 4.4. Таблица, состоящая из трех строк
70
Языки HTML и CSS
Добавление ячеек таблицы
Ячейки формируют вертикальные столбцы таблицы, используя теги табличных
данных:
<td>
</td>
Элемент табличных данных, вместе с элементами table и tr являются тремя
неотъемлемыми составляющими любой таблицы, как показано в примере 4.4.
Пример 4.4. Таблица с одной строкой и тремя столбцами
<table width="90%" border="l" cellspacing="5" cellpadding="5">
<tr>
<td>flaHHbie</td>
<td>flaHHbie</td>
<td>flaHHbie</td>
</tr>
</table>
Ячейка таблицы
Интервал между ячейками
F*- Edit View Go Bookmarks I00'5 Window Help
..-СИЯ
Данные
Данные
Данные
Щ. ч2- Done
] -0-ri*
Строка
Ширина таблицы (90%)
Рис. 4.5. Анатомия простой таблицы: три ячейки,
одна строка, ширина равна 90%, интервал равен 5
Эта таблица отображается в Web-браузере без дополнительной разметки, как
показано на рисунке 4.5, поскольку в ней присутствуют все необходимые
составляющие.
Конечно, таблица может содержать любое число ячеек, соответствующее
необходимому количеству столбцов. Более того, можно улучшать внешний вид ячеек таблицы
при помощи заголовков, что позволяет отличать заголовки столбцов от данных.
Добавление заголовков таблицы
Заголовок таблицы обозначает заголовок столбца или строки таблицы.
<th>
</th>
урок 4. Создание таблиц
71
Чтобы заголовки описывали столбцы, находящиеся под ними, разместите все
заголовки в одной строке, а затем добавьте столбцы, которые будут находиться
под заголовками в последующих строках, как показано в примере 4.5.
Пример 4.5. Заголовки для ячеек таблицы
<table width="90%" border="l" cellspacing="5" cellpadding="5">
<tr>
<1:Ь>Местоположение</1:г1>
<th>norofla</th>
<th>4acoBOM noHc</th>
</tr>
<tr>
<td>TMKcOH, Apn30Ha</td>
<td>)KapKaH</td>
<td>fleHb flojirMii</td>
</tr>
</table>
По умолчанию браузер отображает заголовки шрифтом с полужирным
начертанием. На рисунке 4.6 видно, что текст заголовка отцентрирован. При помощи языка
CSS можно, конечно, изменить начертание шрифта, цвет и другие стили заголовка.
@е Edit View Qp gookmarks Iools Window tielp
Местоположение
Тиксон, Аризона
Погода
Жаркая
Часовой пояс
День долгий
-ЗД >£ ! Done ~* | | -Ф-'ой4
Рис. 4.6. Добавление заголовков в таблицу
Заголовки также можно использовать и для описания заголовков строк, как
показано в примере 4.6. Заголовок будет размещаться в строке, как показано на рисунке 4.7.
Пример 4.6. Заголовки для ячеек таблицы ___^_
<table width="90%" border="l" cellspacing="5" cellpadding="5">
<tr>
<th>Mecтoпoлoжeниe</th>
<td>TMKcoH, ApMSOHa</td>
</tr>
<tr>
^th>norOfla</th>
<td»KapKaH</td>
</tr>
<tr>
72
Языки HTML и CSS
<th>4acoBOM noflc</th>
<td>fleHb долгий</Ьс!>
</tr>
</table>
Efte Edit View Qp Bookmarks Iools ytfndow Help
Местоположение
Погодя
Часовой пояс
Тиксон, Аризона
Жаркая
День долгий
да, \& оопе [ 1 «"О-сй"
Рис. 4.7. Использование заголовков строк в таблице
Для многих таблиц данных требуется одновременное использование как
заголовков столбцов, так и заголовков строк, поэтому при необходимости данный метод
можно комбинировать, как показано на рисунке 4.8.
@е Edit View Qp gookmarks Tools yitndow Це1р
Местоположение
Погодя
Часовой пояс
Тиксон, Артона
Жаркая
День долгий
Лас Вегас, Невада
Жаркая
Стандартное горное время
Рис. 4.8. Заголовки строк и столбцов в таблице
Добавление заглавия
Заглавие таблицы можно задать при помощи элемента caption.
<caption> . . . </caption>
Содержимое заглавия размещается между открывающим и закрывающим тегом
элемента caption. Этот элемент располагается непосредственно за
открывающим тегом table, и большинство браузеров отображает его содержимое над
таблицей по центру, как показано в примере 4.7.
Пример 4.7. Добавление заглавия таблицы
<table width="90%" border="l" cellspacing="5" cellpadding="5">
<caption>CpaBHGHMe погоды и часового noHca</caption>
Урок 4. Создание таблиц
73
<tr>
<th>MecTonc^03KeHMe</th>
<th>TMKCOH, ApM30Ha</th>
<th>Hac Berac, HeBafla</th>
</tr>
<tr>
<th>Ilorofla</th>
<td>>KapKafl</td>
<td>Жapкaя</td>
</tr>
<tr>
<th>4acoBOM noflc</th>
<td>fleHb дoлгий</td>
<td>CTaHflapTHOe горное BpeMfl</td>
</tr>
</table>
На рисунке 4.9 показаны результаты выполнения кода.
Ete Edit View Qp Bookmarks Ipols Window h[elp
Сравнение погоды и часового пояса
Местоположение
Погодя
Часовой пояс
Тпксон, Аризона
Жаркая
День долгий
Лас Вегас, Невада
Жаркая
Стандартное горное время
Ч& •&■ Done | 1 ЧЬ-ВЙР
Рис. 4.9. Добавление заглавия
Описание таблицы
Кратко описать содержимое таблицы можно при помощи атрибута summary
элемента table:
<table summary="текстовое описание">
Если вы думаете: «Эй, держу пари, что это как-то связано с доступностью», то вы
попали в самую точку. Фактически, описание помогает людям с ограниченными
возможностями, которым требуется больше контекстной информации о таблице.
Описание не отображается на экране в виде всплывающей подсказки, когда
указатель мыши перемещается над таблицей, в отличие от альтернативного текста
или атрибута title, используемого в ссылках. Описания могут быть прочитаны
только вспомогательным устройством, например читателем экрана для слепого
пользователя.
74
Языки HTML и CSS
В примере 4.8 демонстрируется таблица из предыдущего примера, в которую
было добавлено описание.
Пример 4.8. Добавление описания таблицы
<table width="90%" border="l" cellspacing="5" cellpadding="5"
summary="3Ta таблица отображает местности и информацию о связи
в них погоды и часового пояса>
<сарЫоп>Соответствие погоды и временного noHca</caption>
<tr>
<ЬЬ>Местность</ЬЬ>
<Ьп>Тиксон, Аризона</Ьп>
<th>Jlac Вегас, Невада</Ьп>
</tr>
<tr>
<th>norofla</th>
< td>5KapKaH< / td>
< td>Жapкaя</td>
</tr>
<tr>
<Ьп>Часовой пояс</ЬЬ>
<td>fleHb дoлгий</td>
<td>CTaHflapTHoe горное epeMH</td>
</tr>
</table>
Квантовый скачок
Использование заглавий и описаний имеет большое значение в процессе
улучшения доступности таблиц данных для людей с ограниченными
возможностями - и делает таблицы более понятными для всех. Чтобы побольше
узнать о методах улучшения доступности таблиц, ознакомьтесь с документом
Creating Accessible Tables (Создание доступных таблиц) на сайте компании
WebAIM (http://webaim.org/techniques/tables/), являющимся, в целом, отличным
источником информации по доступности.
Объединение строк
В процессе создания таблицы может понадобиться растянуть один столбец на
несколько строк. Для этого используется атрибут rowspan, значение которого
определяет количество строк, охватываемых заголовком . или определенной
ячейкой таблицы, как показано в примере 4.9.
урок 4. Создание таблиц
75
/Гример 4.9. Использование атрибута rowspan для объединения двух строк
<table width="90%" border="l" cellspacing="5" cellpadding="5'
диштагу="Эта таблица демонстрирует объединение строк">
<сарЫоп>Демонстрация объединение строк</сарЫоп>
<tr>
<th го^7Брап="2">Заголовок (объединены 2 строки)</th>
< td> да нные </1d>
< td>данные</td>
</tr>
<tr>
< td>данные</td>
<td>данные </td>
</tr>
<tr>
<th>Зaгoлoвoк (слияния нет)</ЬЬ>
<td>flaHHbie</td>
<td>flaHbme</td>
</tr>
</table>
На рисунке 4.10 демонстрируются строки с объединенным заголовком.
IS? Глава 4 - Mozilla
File Edit View £o Bookmarks Tools Window ЬЫр
Демонстрация объединение строк
Заголовок (объединены 2 строки)
Заголовок (слияния нет)
1
данные
1
данные
данные
данные
данные
дакыке
-$&, \g. Done
С
Ь»ф-в5Р
Рис. 4.10. Объединение строк с заголовками
Можно объединять строки и внутри ячеек. Если необходимо растянуть второй
столбец на все три строки, это можно сделать при помощи атрибута rowspan
соответствующей ячейки таблицы, как показано в примере 4.10.
Пример 4.10. Объединение трех строк в ячейке таблицы
<table width="90%" border="l" cellspacing="5" cellpadding="5"
summary=" Эта таблица демонстрирует объединение строк">
<caption> Демонстрация объединение строк </caption>
<tr>
<th rowspan="2">3aronoBOK (объединены 2 строки)</th>
<td rowspan="3">flaHHbie (объединены З строки) </td>
76
Языки HTML и CSS
< Ь<3>данные< / td>
</tr>
<tr>
< td>данные</td>
</tr>
<tr>
<Ьп>Заголовок (объединения нет)</Ьп>
< td>flaHHbie< / td>
</tr>
</table>
Обратите внимание, что все ненужные ячейки таблицы были удалены, как
показано на рисунке 4.11.
Fie Edit View Go Bookmarks Tools Window Help
Демонстрация объединение строк
Заголовок (объединены 2
строки)
Заголовок (объединения нет)
1
даииые (объединены 3
строки)
данные
данные
данные
~Ж \Z Done | ] -ф-аР
Рис. 4.11. Использование атрибута rowspan для ячейки таблицы
Берегитесь перекрывающихся ячеек
Если не удалить ячейки, перекрывающиеся с объединением, получится
большой беспорядок! Поэтому, необходимо просто выполнить несложные
математические вычисления и отнять соответствующее число ячеек,
относительно таблицы и объединения строк. Если работа выполнена правильно,
в таблице не будет дополнительных свободных пространств или видимых
пустых промежутков. Если видны странные пробелы, вернитесь и заново
пересмотрите структуру таблицы - вы быстро найдете перекрытие и исправите
возникшие проблемы.
Объединение столбцов
Точно так же, как объединяются строки, можно объединять столбцы. Для этого
используется атрибут colspan в заголовке или ячейке таблицы, как показано в
примере 4.11.
Урок 4. Создание таблиц
77
Пример 4.11. Объединение столбцов в заголовке таблицы
<table width="90%" border="l" cellspacing="5" cellpadding="5"
summary="3Ta таблица демонстрирует объединение столбцов">
<сарЫоп>Демонстрация объединения столбцов</сарЫоп>
<tr>
<th со1Брап="2">Заголовок (объединены 2 столбца)</th>
<ЬЬ>Заголовок (объединения HeT)</th>
</tr>
<tr>
< td>flaHHbie< / td>
< td>flaHHbie< / td>
< td>flaHHbie< / td>
</tr>
<tr>
< td>flaHHbie< / td>
< td>данные</td>
<td>flaHHbie</td>
</tr>
</table>
На рисунке 4.12 показаны результаты.
I File Edit View Go gookmarks Tools yrtndow Help
Демонстрация объединения столбцов
Заголовок (объединены 2 столбца)
данные
1
данные |
j
данные
данные
Заготовок (объединения нет)
данные
данные
■Ж- s£- ' Done | Г-ф-af
Рис. 4.12. Объединение двух столбцов в заголовке таблицы
Подобным образом можно объединять ячейки таблицы. В примере 4.12 нижняя
ячейка таблицы растягивается на всю строку. Будьте внимательны - различия
между атрибутами rowspan и colspan могут вас немного запутать. Просто
помните, что объединение строк означает вертикальное объединение, а
объединение столбцов - горизонтальное объединение.
Пример 4.12. Объединение трех столбцов
<table width="90%" border="l" cellspacing="5" cellpadding="5"
Еиггипагу="Эта таблица демонстрирует объединение столбцов">
<сарЫоп>Демонстрация объединения CTon6uOB</caption>
78
Языки HTML и CSS
<tr>
<th со1Брап="2">Заголовок (объединены 2 столбца)</th>
<th> Заголовок (объединения HeT)</th>
</tr>
<tr>
<td>flaHHbie</td>
< td>данные</td>
< td>flaHHbie< / td>
</tr>
<tr>
<td со1Брап="3">данные (объединены З столбца)</td>
</tr>
</table>
Результаты приведены на рисунке 4.13.
I File £dit J/iew go Bookmarks Tools Window Help
Демонстрация объединения столбцов
Заголовок (объединены 2 столбца)
данные
1
данные
данные (объединены 3 столбца)
Заголовок (объединения нет)
данные
1
■S, •«£- Done | 14J>*af
Рис. 4.13. Объединение столбцов ячейки таблицы
Квантовый скачок
Когда вы приобретете опыт в структурировании таблиц, поймете, почему
использование таблиц для макетов было очевидным решением для создания
сеточной системы, которая легла в основу дизайна сайтов в начале
существования Интернета. Посмотрите, как в результате добавления графики и
текста в ячейки таблицы и удаления всех границ может получиться
эффектный дизайн. Web-дизайнеры, которые сначала изучили данный подход,
столкнулись со значительными трудностями при переходе на CSS-макеты,
функционирующие совершенно по-другому. Необходимо понимать, что хотя
таблицы использовались для макетов, совершивших революцию в Web-
дизайне, проблемы, возникающие при применении таблиц, о чем было
упомянуто во вступлении к данной главе, не могут сравниться с современными
возможностями языка CSS для создания изумительных макетов,
чрезвычайно доступных и удобных.
Урок 4. Создание таблиц
79
Комбинирование атрибутов colspan и rowspan
Конечно, атрибуты colspan и rowspan можно комбинировать для получения
ряда различных таблиц. В примере 4.13 демонстрируется совместное
использование объединения столбцов и строк.
Пример 4.13. Комбинирование атрибутов colspan и rowspan
<table width="90%" border="l" cellspacing="5" cellpadding="5"
summary=""3Ta таблица комбинирует объединение столбцов и строк">
<сарЬ1оп>Комбинирования объединения столбцов и cTpoK</caption>
<tr>
<th colspan="2" rowspan="2">Заголовок (Объединены 2 столбца и 2
строки)</th>
<td>flaHHbie< / td>
</tr>
<tr>
<td>flaHHbie< / td>
</tr>
<tr>
< td>flaHHbie< / td>
<td>flaHHbie</td>
< td>flaHHbie< / td>
</tr>
</table>
На рисунке 4.14 приведены результаты.
1лава4 - Moziilt. 4. v.
■ i Eile &Л View Qq Bpo!<marks Tools V^mdow Help
K-M
Комбинирования объединения столбцов н строк
'Заголовок (Объединены 2 столбца п 2 строки)
данные
данные
данные
данные i
данные
■Ш -1/g, Done
)4D-o8°
Рис. 4.14. Комбинирование атрибутов colspan и rowspan
Можно смешивать и сопоставлять атрибуты colspan и rowspan в любых
воображаемых комбинациях. Два предупреждения: обязательно избавьтесь от
всех ячеек и заголовков, перекрываемых объединением, и помните, что чем
сложнее становится таблица, тем менее доступной она будет для
большинства программ, предназначенных для чтения экрана, которые используются
слепыми пользователями или пользователями с нарушением зрения.
80
Языки HTML и CSS
Группирование столбцов таблицы: элемент col
Если вы весьма обеспокоены доступностью или если у вас есть широкие таблицы
данных, полезно сгруппировать столбцы, чтобы сохранить их организацию и
логику. Осуществить группирование столбцов для лучшего управления и
доступности можно с помощью двух элементов.
Первым элементом является элемент col. Элемент col - это способ
группирования столбцов для задания значений атрибутов или применения стиля.
Элемент col должен располагаться сразу за элементом caption, если таковой
присутствует, и поддерживает ряд атрибутов. Особое значение имеет атрибут
span, который определяет число столбцов, объединяемых элементом col.
В примере 4.14 демонстрируется использование элемента col с атрибутом span,
значение которого равно 2. Обратите также внимание, что был добавлен элемент
width, определяющий ширину, и что для элемента col необходимо
использование замыкающего слеша: <col />.
Пример 4.14. Использование элемента col
для применения значений атрибутов к нескольким столбцам
<table width="90%" border="l" cellspacing="5" cellpadding="5"
Бшптагу="Эта таблица рассматривает группирование столбцов">
<сар^оп>Группирование столбцов</сар^оп>
<col span="2" width="100" />
<tr>
<^п>Заголовок таблицы</^п>
<^п>Заголовок таблицы</^п>
<^п>Заголовок таблицы</^п>
</tr>
<tr>
<td>flaHHbie< / td>
<td>данные</td>
<td>flaHHbie</td>
</tr>
<tr>
<td>flaHHbie</td>
<td>flaHHbie</td>
<td>flaHHbie</td>
</tr>
</table>
На рисунке 4.15 показано, как сгруппированы первые два столбца. Ширина,
определенная в элементе col и равная 100 пикселам, применена к обоим
столбцам в объединенной группе.
Урок 4. Создание таблиц
81
.Глава 4 - Mozilla
pie £dit View go gookmarks Tools Window Help
Группирование столбцов
Заголовок
таблицы
даииые
данные
Заголовок
таблицы
даииые '
данные
Заголовок таблицы
данные
данные
Чя£- I Done
L
|H>aJP
Рис. 4.15. Группирование столбцов с использованием элемента col
Можно также добавлять и другие атрибуты, отвечающие за представление
документа, включая атрибуты align и valign:
<col span="2" width="100" align="right" valign="bottom" />
Результаты использования приведенной разметки показаны на рисунке 4.16.
•3 Глава 4 - Microsoft Internet Explorer ^ , "Wi" * .„ •• .Lll> ГОЦ'Х]
Файл Правка Вид
^3 Назад -
Адрес ]^Q D:\l.html
Заголовок
таблицы
данные
даииые
ЗУ Готово
Избранное Сервис Справка Hfjj
[ж] |g?] Поиск Избранное ^ - Щ - Ы
v Щ Переход ыпги п
Группир
Заголовок
таблицы
оваине столбцов
Заголовок таблицы
данные данные
данные данные
Jjj Мой компьютер
Рис. 4.16. Использование элемента col для применения атрибутов,
отвечающих за представление документа, к нескольким столбцам
В данном случае, обратите внимание, что заголовки, принадлежащие группе, как
и текст в ячейках таблицы, выровнены по правому краю. Если присмотреться
внимательно, можно заметить, что текст в ячейках группы расположен немного
ниже текста в правом столбце, который не является частью группы.
82
Языки HTML и CSS
Группирование столбцов таблицы
при помоши элемента colgroup
Другим способом группирования столбцов является использование элемента
colgroup, по существу выполняющего ту же функцию, что и элемент col. В примере
4.15 используется основная таблица из примера 4.14, состоящая из трех столбцов и
трех строк, к двум столбцам которой применяются различные значения атрибутов.
Пример 4.15. Использование элемента colgroup
для применения значений атрибутов к нескольким столбцам
<table width="90%" border="l" cellspacing="5" cellpadding="5"
Бшптагу="Эта таблица рассматривает группирование столбцов">
<сарь1оп>Группирование столбцов</сарЬ1оп>
<colgroup align="right" valign="bottom" />
<colgroup align="right" valign="bottom" />
<tr>
<Ьп>Заголовок таблицы</ьЬ>
<Ьп>Заголовок таблицы</ьЬ>
<Ьп>Заголовок таблицы</ьЬ>
</tr>
<tr>
<td>flaHHbie</td>
< td>flaHHbie< / td>
< td>flaHHbie< / td>
</tr>
<tr>
< td>flaHHbie< / td>
<td>flaHHbie</td>
<td>данные</td>
</tr>
</table>
Значение атрибута align применяется ко всей группе ячеек таблицы, что
позволяет избежать необходимости добавления атрибута к каждой ячейке.
Отображаемые результаты точно такие, как и представленные на рисунке 4.16.
Берегитесь поддержки браузерами элементов col и colgroup
Обратите внимание, что на рисунке 4.16 вместо моего любимого браузера Mozilla я
использовала браузер Internet Explorer. И хотя вообще считается, что браузер Mozilla
является лучшим браузером, реализующим стандарты, чем браузер IE, в данном
случае поддержка элементов col и colgroup, и их атрибутов у браузера
отсутствует. Это справедливо и для многих других браузеров. В связи с этим,
использование элементов col и colgroup должно быть ограничено ситуациями, в которых
точно известно, что посетители увидят желаемые результаты. Многие дизайнеры
предпочитают вовсе не использовать элементы col и colgroup.
урок 4. Создание таблиц
83
Группирование строк таблицы
Можно также группировать строки таблицы, используя три элемента, которые
определяют группы строк в зависимости от их назначения. К этим элементам
относятся элементы thead, tf oot, tbody, соответственно, для заголовка,
нижней части и тела таблицы, как показано в примере 4.16.
Пример 4.16. Группирование строк таблицы
<thead>
<tr>
<^11>Заголовок таблицы</^Ь>
<^Ь>Заголовок таблицы</^Ь>
<^]1>Заголовок таблицы</^Ь>
</tr>
</thead>
<tfoot>
<tr>
<td>0cHOBaHMe таблицы</^3>
<td>0cHOBaHMe тaблицы</td>
<td>0cHOBaHMe тaблицы</td>
</tfoot>
<tbody>
<tr>
<td>Teлo тaблицы</td>
<td>Teлo тaблицы</td>
<td>Teлo тaблицы</td>
</tr>
</tbody>
</tr>
</table>
Поддержка браузером этих элементов является более совместимой. На
рисунке 4.17 приведены результаты.
Р.Глава4-Mozilla.
File £dit View go gookmarks
L
'Заголовок таблицы
Тело таблицы |
Основание таблицы !
\& ■ Done
» - . г, •.
Tools Window Help
Группирование столб!
(ОЕ
Заголовок тайшщы
Тело таблицы '
Основание таблицы
Заголовок табчпцы
Тело таблицы
Основани таблицы
-Ф-'aT
Рис. 4.17. Группирование по строкам - обратите внимание, что элемент tfoot
в документе был определен в середине таблицы, однако строка, определенная
как низ таблицы, все равно отобразилась в нижней части таблицы
84
Языки HTML и CSS
Данные таблицы...
Будь вы доктор, ученый, помощник специалиста, преподаватель, студент или
сотрудник юридической службы, в определенный момент времени у вас появляется
необходимость разместить информацию в таблицах. Ознакомьтесь с вариантами
возможного применения таблиц на открытых или закрытых Web-сайтах:
• Медицинские карты.
• Результаты научных исследований.
• Календарь событий.
• Контроль оценок и посещений.
• Управление задачами.
• Информация о судебном деле.
И этот список можно продолжать бесконечно. Теперь понятно, почему таблицы
так важны для соответствующего размещения содержимого.
Конечно, таблицы используются для отображения информации, хранящейся в
базах данных. Один из способов сбора этой информации - через Web-сайт.
Предположим, что вы - агент по торговле недвижимостью и желаете разработать базу
данных людей, заинтересованных в покупке или продаже земельной
собственности в вашем районе.
Можно создать интерактивную форму для получения информации от
заинтересованных участников. Данные формы будут обработаны на сервере с помощью
технологии для работы с базой данных и возвращены на Web-сайт в виде
таблицы. Конечно, для этого потребуются интерактивные формы и технология на
стороне сервера. Хотя, рассмотрение баз данных и серверных приложений
выходит за рамки данной книги, разметка включает необходимые элементы для
разработки интерактивных форм.
В следующей главе мы узнаем все о формах, а также узнаем, как создавать
прекрасные интерактивные формы, которые улучшат впечатление посетителя сайта
от страниц - что, в свою очередь, обеспечит максимальную обратную связь.
УРОК 5.
Создание форм
формы являются неотъемлемой частью процесса, благодаря которому Интернет
стал интерактивным и полезным. Формы интерактивны, поскольку вам,
пользователю, для выполнения какой-либо задачи необходимо взаимодействовать с
ними. Примерами важных задач являются:
• Ввод информации в онлайновую банковскую систему для управления
средствами через Интернет.
• Отправка имени и информации, чтобы стать членом онлайновой службы
знакомств.
• Покупка билета на самолет и путешествий.
• Покупка других товаров и сервисов через Интернет.
Без форм мы не смогли бы воплотить в жизнь никакие из перечисленных
возможностей - и, фактически, сам Интернет, с точки зрения предоставления
интерактивных сервисов, никогда бы не стал таким эффективным, каким он
является сейчас. В наши дни для выполнения задач, для которых
предназначены формы языка HTML, часто используются другие технологии.
Технология Flash, например, поддерживает формы с расширенными
возможностями, которые, помимо всего прочего, очень быстро загружаются и их
обновление происходит на той же странице без перезагрузки. Однако это не означает,
что пользователи потеряли интерес к формам языка HTML: хотя Flash-формы и
могут быть очень полезными для некоторых людей, их невозможно сделать
такими же доступными для поиска и для людей с ограниченными возможностями,
как формы на языке HTML. Поэтому даже сайты, использующие Flash-формы,
часто предоставляют альтернативные формы, реализованные на языке HTML.
Другие технологии начинают насыщать формы более богатыми возможностями,
однако эти технологии пока являются предварительными, поэтому формы на языке
HTML остаются традиционным способом добавления интерактивности и
функциональности на Web-сайты.
Работать с формами относительно просто, по крайней мере, с точки зрения
языка HTML. Чтобы форма функционировала определенным образом, ее необходимо
запрограммировать - рассмотрение программирования форм на стороне сервера
выходит за рамки данной книги.
В этой главе мы рассмотрим, как создавать формы на языке HTML и делать их
логичными и доступными. На протяжении всей главы я буду ссылаться на ресурсы,
которые помогут лучше познакомиться с возможностями для проверки и
обработки построенных форм, предоставляемыми на стороне сервера.
86
Языки HTML и CSS
Элемент form
Создание всех форм начинается с элемента form:
<form>
</form>
У элемента form существует два обязательных атрибута, необходимых для
функционирования формы:
• method - атрибут определяет способ, с помощью которого будет
осуществляться связь между формой и Web-сервером. Атрибут может принимать
значения get и post;
• action - значением атрибута action является корректный адрес скрипта,
обрабатывающего данные, введенные на форме, как показано в примере 5.1.
Пример 5.1. Добавление атрибутов method и action,
а также соответствующих значений в элемент form
<form method="get" action="http://www.myserver.com/cgi-bin/
mailscript">
</form>
Квантовый скачок
Необходимо проконсультироваться с вашим Интернет-провайдером, чтобы
определить предпочтительный метод передачи данных формы в скрипты,
предоставляемые для обработки данных. Более того, многие Интернет-
провайдеры предлагают несколько скриптов для обработки данных формы,
однако не все скрипты будут соответствовать вашим требованиям.
Если необходимо создать простую форму для связи, трудностей не возникнет.
Однако, если это скрипт, реализующий, например, функциональность
корзины Интернет-магазина, потребуется дополнительное программирование и
настройка. Важно понимать, что не все поставщики услуг позволяют улучшать
скрипты, поэтому придется подготовиться заранее, чтобы получить
требуемый сервис.
Если загрузить приведенную разметку в браузер, ничего не произойдет. Формы
основаны на понятии элементов управления. Элементы управления - это
стандартные поля и кнопки, отображаемые в результате разметки HTML-формы.
Урок 5. Создание форм
87
Добавление поля ввода
Поля ввода предназначены для выполнения ряда задач, включая ввод имени,
адреса и так далее. Для создания поля ввода используется элемент input с атрибутом
type, значение которого устанавливается в text, как показано в примере 5.2.
Пример 5.2. Добавление полей ввода
<form method="get" action="http://www.myserver.com/cgi-bin/
mailscript">
Имя: <input type="text" /><br />
Фамилия:<input type="text" /><br />
Телефон:<input type="text" />
</form>
Как показано на рисунке 5.1, использование элемента input с атрибутом type
для ввода текста создает знакомый вид формы.
Имя:
Фамилия:
Телефон:
Рис. 5.1. Поля ввода формы с текстом
Конечно, эта форма неаккуратная и непривлекательная. Мы это исправим с
помощью языка CSS далее в этой книге, однако до того момента необходимо
обсудить несколько технических вопросов. Самый важный из них - как отличить
одно поле от другого. Элемент input создает поле ввода, но нам хотелось бы
идентифицировать каждое поле формы, а также модифицировать поля формы
относительно их внешнего вида и поведения. Для идентификации полей ввода
используется комбинация атрибутов name и id и ассоциированных значений. Это
гарантирует, что форма будет являться обратно совместимой и позволит
идентифицировать конкретные области ввода для применения стилей, скриптов и
улучшения доступности. В примере 53 показано, как это работает для
предыдущего примера.
Пример 5.3. Идентификация поля ввода при помощи атрибутов name и id
<form method="get" action="http://www.myserver.com/cgi-bin/
mailscript">
Имя: <input type="text" name="firstname" id="firstname" /><br />
Фамилия:<input type="text" name="lastname" id="lastname" /><br />
Телефон:<input type="text" name="phone" id="phone" />
</form>
88
Языки HTML и CSS
Следующий шаг заключается в установке размера поля ввода. Используя
атрибут size, можно указать ширину каждого поля. Можно также указать
максимальное число вводимых символов при помощи атрибута maxlength, как
показано в примере 5.4.
Пример 5.4. Модификация поля ввода атрибутами size и maxlength
<form method="get" action="http://www.myserver.com/cgi-bin/
mailscript">
Имя: <input type="text" name="firstname" id="firstname"
size="30" maxlength="40" /><br />
Фамилия:<input type="text" name="lastname" id="lastname"
size="25" maxlength="40" /><br />
Телефон:<input type="text" name="phone" id="phone" size="15"
maxlength="0" />
</form>
Если значение атрибута maxlength равняется 0, число вводимых символов не
ограничено; если указано конкретное целое число, количество вводимых
символов будет ограничено данным значением. На рисунке 5.2 показаны поля
ввода с измененными размерами, которые шире, чем поля ввода на рисунке 5.1.
Имя:! 1
Фамилия
Телефон:
|
Рис. 5.2. Изменение размеров полей ввода
и ограничение длины вводимых символов
Другим полем, функционирующим подобно полю ввода, является поле
password. Оно работает абсолютно так же во всех аспектах, за исключением
того, что введенные символы отображаются в поле с использованием звездочек,
как показано на рисунке 5.3.
Пароль:<input type="password" name="password" id="password"
size="15" />
Пароль: '"
Рис. 5.3. Поле eeodapassword отображает
введенные символы в виде звездочек
Урок 5. Создание форм
89
Добавление флажков и переключателей
Флажки являются прекрасным способом получения информации от посетителя
сайта, позволяя делать выбор из предопределенного набора вариантов.
Преимущество флажков заключается в том, что посетители могут выбирать больше
одного варианта, и их лучше всего использовать, когда существует возможность
выбора нескольких ответов. Для создания флажков используется элемент input
с атрибутом type, значение которого устанавливается в checkbox, как показано
в примере 5.5.
Пример 5.5. Добавление флажков на форму
<р>Пожалуйста, выберите Ваш
<input type="checkbox" name=
/>
<input type="checkbox" name=
<input type="checkbox" name=
игрькЬг />
<input type="checkbox" name=
<input type="checkbox" name=
/>Кинофильмы<Ьг />
<input type="checkbox" name=
лодным пивом<Ьг />
<input type="checkbox" name=
собаками<Ьг />
<input type="checkbox" name=
музыки<Ьг />
<input type="checkbox" name=
друзьями и отдых с ними
любимый вид отдыха:</р>
"reading" id="reading" />Чтение<Ьг
"sports" id="sports" />Спорт<Ьг />
"games id="games" /^Компьютерные
"tv" id="tv" />Телевидение<Ьг />
"movies" id="movies"
"beer" id="beer" />Наслаждение xo-
"dogs" id="dogs" />Игры с
"music" id="music" />Прослушивание
"friends" id="friends" />Встречи с
После этого пользователи могут выбирать подходящие варианты, как показано
на рисунке 5.4.
Пожалуйста, выберите Ваш любимый вид отдыха:
Е Чтение
□ Спорт
□ Компьютерные игры
□ Телевидение
□ Кинофильмы
ЕНаслаждение холодным пивом
□ Игры с собаками
□Прослушивание музыки
□Встречи с друзьями и отдых с ними
Рис. 5.4. Пользователи могут выбирать несколько вариантов из списка флажков
90
Языки HTML и CSS
Обратите внимание, что значения атрибутов name и id логически соответствуют
ассоциированному варианту, и каждый вариант также содержит атрибут value.
Это необходимо для функционирования флажков.
Переключатели похожи на флажки с точки зрения возможностей,
предоставляемых ими для выбора вариантов из предопределенного набора. Однако в случае с
переключателями, посетитель может выбрать только один вариант, а не один или
более. Это достигается указанием одного и того же значения для атрибута name
(в данном случае, gender) и использованием атрибута value для
идентификации вариантов, как показано в примере 5.6. В переключателях необходимо
использовать атрибут value, иначе возможность уникального выбора варианта не
будет функционировать.
Пример 5.6. Добавление переключателей на форму
<form method="get" action="http://www.myserver.com/cgi-bin/
mailscript">
<п2>Пол:</п2>
<input type="radio" value="female" name="gender" id="female"
/>Женский<Ъг />
<input type="radio" value="male" name="gender" id="male"
/>Мужской<Ьг />
<input type="radio" value="undisclosed" name="gender"
id="Неуказанный" />Предпочли скрыть
</form>
На рисунке 5.5 показан ряд переключателей, определенных в примере 5.6.
Пол:
О Женский
О Мужской
©Предпочли
скрыть
Рис. 5.5. Выбор варианта с помощью переключателей
Флажки и переключатели можно использовать в любой комбинации,
соответствующей назначению формы. Важно помнить, что флажки можно использовать
для выбора нескольких вариантов, а переключатели ограничены выбором только
одного варианта.
Урок 5. Создание форм
91
Заранее выбранные элементы
В некоторых случаях, при использовании переключателей или флажков
желательно заранее выбрать определенные элементы. Если форма в основном
предназначена, например, для спортсменок, можно отобразить флажки или
переключатели с заранее выбранными вариантами, используя атрибут checked, как
показано в примере 5.7. Заранее выбранный элемент будет отмечен «галочкой»
или точкой.
I
Пример 5.7. Добавление переключателей на форму
<form method="get" action="http://www.myserver.com/cgi-bin/
mailscript">
<р>Пожалуйста, выберите Ваш любимый вид отдыха:</р>
<input type="checkbox" name="reading" id="reading" />Чтение<Ьг
/>
<input type="checkbox" name="sports" id="sports"
checked="checked" />Спорт<Ьг />
<input type="checkbox" name="games id="games" />Компьютерные
игрькЬг />
<р>Пожалуйста, укажите Ваш пол:</р>
<input type="radio" value="female" name="gender" id="female"
checked="checked" />Женский<Ьг />
<input type="radio" value="male" name="gender" id="male"
/>Мужской<Ьг />
<input type="radio" value="undisclosed" name="gender"
id="Неуказанный" />Предпочитаю не указывать
</form>
На рисунке 5.6 показаны заранее выбранные варианты.
Пожалуйста, выберите Баш любимый вид отдыха:
□ Чтение
0 Спорт
□ Компьютерные игры
Пожалуйста, укажите Баш пол:
® Женский
О Мужской
О Предпочитаю не указывать
Рис. 5.6. Заранее выбранные флажки и переключатель
92
Языки HTML и CSS
Использование меню формы
Существует два типа меню: открывающееся меню и список. Оба меню
чрезвычайно полезны и могут быть видоизменены различными способами для решения
многих задач.
Одним из наиболее популярных способов представления вариантов на формах
является всем известное открывающееся меню. Меню такого рода особенно
полезны, когда существует множество вариантов, и они обычно отображаются в
стандартных меню для штатов, стран, ценообразования и так далее.
Открывающиеся меню создаются комбинированием вариантов при помощи
элементов select и option, как показано в примере 5.8.
Пример 5.8. Открывающееся меню формы
<form method="get" action="http://www.myserver.com/cgi-bin/
mailscript">
<р>Штат (Соединенные штаты. Западный регион):</р>
<select>
<option value="Arizona">Аризона</option>
<option value="California">Kaлифopния</option>
<option value= "Colorado">KojiopaflO</option>
<option value="Nevada">Невада</option>
<option value="Texas">Texac</option>
<option value="Utah">Юта</option>
</select>
</form>
На рисунке 5.7 показано открывающееся меню.
В открывающееся меню можно добавлять другие возможности, включая
заранее выбранные варианты. Как и в случае с атрибутом checked для флажков,
предварительный выбор вариантов может способствовать удобному
использованию формы, предоставляя более индивидуальный подход. Чтобы заранее
выбрать определенный вариант в меню формы, используется атрибут
selected:
<option value="Nevada" selected="selected">HeBafla</option>
В данном случае, вариант Nevada будет выбран по умолчанию в открывающемся
меню формы, как показано на рисунке 5.8.
урок 5. Создание форм
93
W Глава 5 Mozilla
0е Edit View fio Bookmarks Tools Window H.elp
Штат (Соединенные штаты. Западный регион)
1*Р.И.3.9.Й°_ Jv
'Аризона
| Калифорния
|Невада ^
Техас
Юта
Ш \£- Done
1
ЕЕ®
]H&-afl°!
Рис. 5.7. Выбор варианта из открывающегося меню формы
Рис. 5.8. Использование атрибута select
для определения элемента по умолчанию в открывающемся списке
Можно также создавать список. Список формируется таким же образом, как и
открывающееся меню, однако к открывающему тегу select добавляется атрибут
size с целочисленным значением, соответствующим количеству вариантов:
<select size="6">
Атрибут selected можно добавить к любому варианту, который должен быть
выбран по умолчанию. Дополнительная возможность списка - выбор нескольких
вариантов.
Для этого необходимо просто добавить атрибут multiple к открывающему тегу
select:
<select size="6" multiple="multiple">
Теперь меню превратилось в список, позволяя посетителю выбирать несколько
вариантов, как показано на рисунке 5.9.
94
Языки HTML и CSS
Калифорния '
Колорадо
Рис. 5.9. Список с несколькими выбранными вариантами
Использование текстовых областей
В некоторых случаях, предпочтительнее использовать область для обратной
связи или поле, являющееся более гибким, чем обычное поле ввода, которое
позволяет вводить всего лишь одну строку текста. В таких случаях текстовые области
являются отличным решением.
Текстовые области создаются с использованием элемента textarea и атрибутов
rows и cols, определяющих видимое поле. В отличие от таблиц, строки и
столбцы текстовой области определяют ее размеры. Строки определяют
количество строк текста, отображаемых в текстовой области, а столбцы определяют
ширину области, как показано в примере 5.9.
Пример 5.9. Создание текстовой области
<form method="get" action="http://www.myserver.com/cgi-bin/
mailscript">
<р>Пожалуйста, позвольте узнать, есть ли у Вас какие-либо
особенные пожелания:</р>
<textarea rows="10" cols="25">
</textarea>
</form>
Высота результирующей текстовой области будет составлять 10 строк, а
ширина - 25 символов, как показано на рисунке 5.10. Я вставила текст в эту область,
чтобы вы могли посмотреть, как выглядит текстовая область, когда посетитель
вводит в нее текст.
Можно также немного настроить текстовые области при помощи языка HTML.
Во-первых, можно добавить атрибут name, который будет предоставлять
информацию скрипту, отвечающему за отправку формы, и уточнять назначение
текстовой области.
урок 5. Создание форм
95
Eile Edit View So Bookmarks lools Bndow Help
Пожалуйста, позвольте узнать, есть лн у Вас какие-либо особенные
пожелания:
Да, пожалуйста, убедитесь в
том, что в комнате не
накурено. Также нам
хотелось бы, чтобы нас
поселили в наиболее тихой
части отеля.
Большое спасибо, Нолли.
3& \&' | Done | П'-Ф-й'
Рис. 5.10. Текстовые области позволяют посетителям
легко вводить дополнительные комментарии без ограничений,
присущих полям ввода, флажкам, переключателям или меню
Кроме того, можно добавить атрибут id, если хотите получить возможность
присоединения скриптов к текстовой области, как показано в примере 5.10.
Пример 5.10. Текстовая область с атрибутами name и id
<form method="get" action="http://www.myserver.com/cgi-bin/
mailscript">
<р>Пожалуйста, позвольте узнать, есть ли у вас какие-либо
особенные пожелания:</р>
<textarea rows="10" cols="25" name="requests" id="requestbox">
</textarea>
</form>
Кроме этого, в качестве небольшой дополнительной настройки текстовой
области можно ввести текст в ее разметку:
<textarea rows="10" cols="25" name="requests" id="requestbox">
Введите здесь свои комментарии.
</textarea>
Теперь в текстовой области посетители будут видеть введенный текст. Щелкнув
на текстовой области, они смогут удалить текущий текст и ввести собственный,
как показано на рисунке 5.11.
96
Языки HTML и CSS
Глава 5 - Mozilla
Eile Edit View £o Bookmarks loo's Window (Help
BEi
Пожалуйста, позвольте узнать, есть лн у вас какие-либо особенные
пожелания
Введите здесь свои
комментарии.
Х& Done
С
Рис. 5.11. Текстовая область со вспомогательной
информацией для посетителей сайта
Кнопки Reset (Сбросить) и Submit (Отправить)
Элементы управления, выполняющие функции reset и submit, встроены
непосредственно в язык HTML, поэтому вам не придется выполнять огромную работу
по реализации данных функций. До определенной степени даже можно
настроить кнопки, не прибегая к помощи изображений или стиля.
При щелчке на кнопке reset (Сбросить) происходит очистка формы. Кнопка
submit (Отправить) отправляет данные формы на сервер для последующей
обработки, используя значения атрибутов method и action элемента form.
В примере 5.11 показано, как добавлять на форму кнопки reset (Сбросить) и
submit (Отправить).
Пример 5.11. Создание кнопок reset (Сбросить) и submit (Отправить)
<form method="get" action="http://www.myserver.com/cgi-bin/
mailscript">
<input type="reset" value="reset" />
<input type="submit" value="submit" />
</form>
На рисунке 5.12 показано, как значение атрибута value отображается на кнопках.
I reset I [ submit |
Рис. 5.12. Кнопки reset (Сбросить)
и submit (Отправить) создаются автоматически
Поскольку значения, отображаемые на кнопках формы, можно модифицировать,
можно немного настроить внешний вид кнопок, чтобы их названия говорили
сами за себя, как показано на рисунке 5.13.
[ Сбросить ] | Отправить |
Рис. 5.13. Настройка кнопок reset (Сбросить) и submit (Отправить)
Использование графической кнопки Submit (Отправить)
Если вы хотите, чтобы внешний вид кнопки сочетался с визуальным дизайном
страницы, можно создать изображение и использовать его для процесса
отправки данных. Небольшая проблема заключается в том, что этот метод нельзя
применить для кнопки reset (Сбросить), поскольку для ее функционирования
придется использовать язык JavaScript. Но в языке HTML уже заложена возможность
использования нестандартной кнопки для отправки данных формы.
В примере 5.12 была создана графическая кнопка submit (Отправить) для формы
и вставлена на форму при помощи элемента input с дополнительными
атрибутами для изображения.
Пример 5.12. Использование графической кнопки submit (Отправить)
<form method="get" action="http://www.myserver.com/cgi-bin/
mailscript">
<input type="image" src="submit-button.gif" width="75"
height="25" а]^="Отправить!" value="submit" />
</form>
Обратите внимание, что значением атрибута type является image. Также для
кнопки указывается путь к изображению, ее ширина и высота (атрибуты width и
height), значение (атрибут value) и альтернативный текст. Помните, что это -
изображение, поэтому для него необходимо указать альтернативный текст.
На рисунке 5.14 показана стилизованная графическая кнопка, на которую
наведен указатель мыши. Обратите внимание, что указатель мыши принимает вид
Руки, как это происходит с любой другой ссылкой, и отображается
альтернативный текст.
98
Языки HTML и CSS
^*3
Рис. 5.14. Реализация графической кнопки submit (Отправить)
Квантовый скачок
В большинстве современных дизайнов Web-страниц изображения
используются для кнопок submit (Отправить) в связке с языком CSS. Как вы уже
заметили, хотя элементы управления форм, описанные ранее в этой главе,
являются эффективными и простыми с точки зрения реализации, их вид
оставляет желать лучшего. Мы исправим эту ситуацию, как только займемся
применением стилей к элементам формы далее в этой книге.
Обеспечение доступности форм
с использованием элемента label
Из-за своей чрезвычайно интерактивной природы, от форм требуется немного
больше доступности, чем от других HTML-элементов. По большей части это
происходит потому, что все элементы, рассмотренные в этой главе,
взаимодействуют с элементами управления формы, которые являются компонентами,
встроенными в браузеры и вызываемыми соответствующим кодом на языке HTML.
Человек с нормальным зрением не испытывает никаких трудностей при работе с
формами. Но для тех, кто вынужден читать форму, а не смотреть на нее, контекст
может быть быстро утерян.
Элемент label позволяет присоединять информацию к конкретному элементу
управления. Этот элемент и его атрибут for позволяют описывать используемый
элемент управления формы более подробно, как показано в примере 5.13.
Пример 5.13. Добавление контекста при помощи элемента label
<form method="get" action="http://www.myserver.com/cgi-bin/
mailscript">
<label for="firstname">MMH:</labelxinput type="text"
name="firstname" id="firstname" /><br />
<label for="reading"><input type="checkbox" name="reading"
id="reading" />Чтение<Ьг />
<label for="requaestbox">Kaкие-либо особенные пожелания?</1аЬе1>
<br> <textarea name="comments" id="requestsbox" cols="25" rows="5">
</form>
. Создание
Как уже упоминалось ранее, использование атрибута id для элемента input
является важной составляющей обеспечения доступности, и теперь понятно почему.
Обратите внимание, что элемент label всегда располагается перед
описываемым элементом управления. В каждом случае, когда описывается
элемент управления формы, значение атрибута for должно точно соот-
ьр ветствовать значению атрибута id описываемого элемента управления.
Ж< Это позволит читателям жрана предоставлять более подробную инфор-
W мацию об элементе управления.
Другим важным моментом является то, что использование меток бля
кнопок submit (Отправить) и reset (Сбросить) не обязательно. Все
благодаря тому, что читатели экрана считывают текст, отображаемый на
кнопках, автоматически предоставляя необходимый контекст.
Группирование полей формы
Другим способом улучшения доступности формы является группирование ее
информации. В главе 4 «Создание таблиц» демонстрировалось несколько
способов группирования элементов таблицы для обеспечения лучшего
понимания. В данном случае применяются те же понятия, хотя используются другие
элементы.
В случае с формами, области формы можно разбить на определенные наборы
полей при помощи элемента f ieldset. Если форма состоит из трех
контекстуальных частей, например контактной информации, увлечений, а также
кнопок Reset (Сбросить) или Submit (Отправить), в каждой части можно
создавать поля. После этого можно использовать элемент legend для добавления
заглавия к каждой части, предоставляя дополнительный контекст, как
показано в примере 5.14.
Пример 5.14. Разделение формы на логические поля
с использованием элемента f ieldset
<form method="get" action="http://www.myserver.com/cgi-bin/
mailscript">
<fieldset>
<legend>KoHTaKTHaH MH<|>opMauHH</legend>
Имя: <input type="text" name="firstname" id="firstname"
size="31" maxlength="40" /xbr />
Фамилия: <input type="text" name="lastname" id="lastname"
size="25" maxlength="40" /xbr />
Телефон: <input type="text" name="phone" id="phone" size="15"
maxlength="0" /xbr />
</fieldset>
<fieldset>
100
Языки HTML и CSS
<1едепЗ>Любимая деятельность^/legend>
<input type="checkbox" name="reading" id="reading" />Чтение<Ьг />
<input type="checkbox" name="sports" id="sports"
checked="checked" />Спорт<Ьг />
<input type="checkbox" name="games id="games" ^Компьютерные
игры<Ьг />
</fieldset>
<fieldset>
<legend>Oткaжитecь или согласитесь с вашими oTBeTaMH</legend>
<input type="reset" value="сбросить" />
<input type="submit" value="отправить" />
</fieldset>
</form>
Если загрузить приведенный пример в браузере, вы увидите, что каждый элемент
f ieldset окружен линией, а текст элемента legend отображается в верхней
части этой линии.
Несложно заметить, что подобное группирование элементов управления
внутри формы может быть полезно для логического размещения элементов
и представления содержимого, что крайне существенно для иеобучаемых
и слепых людей.
При помощи элементов f ieldset и legend можно оказать гораздо большую
помощь людям, которые иначе не смогли бы ясно представить форму, как
показано на рисунке 5.15.
—Ко нтактн аяинформация
Имя: j
Фамилия: \ !
Телефон: [
— Любимая деятельность
□ Чтение
0 Спорт
□ Компьютерные игры
—Откажитесь или согласитесь с вашими ответами
| сбросить ] | отправить ]
Рис. 5.15. Использование элементов £ieldset
и 1 egend для группирования и идентификации полей формы
Урок 5. Создание форм
Квантовый скачок
Помните, что стандартное представление языка HTML в браузере таким и
является - стандартным. Можно изменить любое стандартное представление
языка HTML, воспользовавшись языком CSS. Таким образом, в предыдущем
примере к элементам f ieldset можно было применить стили, чтобы
получить различные цвета, использовать различные стили границ и увеличить
пространство между частями.
Применить стиль можно и к тексту элемента legend, чтобы его шрифт, цвет,
размер и все остальное соответствовали общему дизайну страницы. Однако,
для сохранения целостности элементов f ieldset и legend разумно не
отклоняться слишком далеко от стандартных настроек (например, совсем
удалить границы вокруг элемента fieldset), чтобы удостовериться, что
специальные возможности остаются доступными.
Группирование элементов меню
Еще один способ внесения ясности в формы заключается в группировании
элементов меню. Это можно сделать с помощью элемента optgroup. Вместе с
элементом optgroup используется атрибут label, как в открывающем теге
элемента, так и для всех отдельных элементов данной группы, как показано в
примере 5.15.
Пример 5.15. Использование элемента optgroup
для вариантов группы в меню формы
<select name="regions" size="14">
<optgroup label="Западный регион">
<option value="Arizona" label="Arizona">ApM30Ha</option>
<option value="California" label="California">Ka.ra^opHMH</op-tion>
<option value="Colorado" label = "Colorado">F^opaflo</option>
<option value="Nevada" label="Nevada">HeBafla</option>
<option value="Texas" label="Texas">Texac</option>
<option value="Utah" label="Utah">K)Ta</option>
</optgroup>
<optgroup label="Восточный регион">
<option value="Connecticut" label="Connecticut">KoHHeKTMKyT
</option>
<option value="Maine" label="Maine">M3ftH</option>
<option value="New_Hampshire" label=" New_Hampshire">Ныо-
Гемпшир </option>
<option value="New_Jersey" label="New_Jersey">Hbra-№epcM</op-tion>
<option value="New_York" label="New_York">Hbro-flopK</option>
<option value="Vermont" label="Vermont">BepMOHT</option>
</optgroup>
</select>
102
Языки HTML и CSS
На рисунке 5.16 показаны результаты.
Западный регион Л|
Аризона
Калифорния
Колорадо
Невада
Техас
Юта
Восточный регион |
Коннектикут
Мзйн
Нью-Гемпшир
Нью-Джерси ; ;J
Нью-Йорк
Вермонт v:=
Рис. 5.16. Группирование элементов меню форм
в логические разделы
Настройка и улучшение форм
В этой главе мы познакомились со всем, что необходимо знать для создания
эффективных, полезных и доступных форм. Повторюсь, что пока эти формы не
слишком привлекательны, однако мы принарядим их, когда начнем изучение
вопросов использования языка CSS.
Пока же хочется выполнить два важных шага. Первый шаг заключается в
построении готовой формы от начала до конца с использованием необходимого
количества полей ввода, текстовых областей, флажков, переключателей и
списков меню.
После этого, конечно, возникает вопрос, как эта форма будет обрабатываться.
Обработка форм может быть как простой, так и достаточно сложной, в
зависимости от поставленной задачи. Обработка форм может выполняться на
различных типах серверов, поэтому технологии будут отличаться - будут отличаться и
возможности (и насколько сильно их можно использовать) технологий по
обработке форм. К счастью, существует множество бесплатных ресурсов,
помогающих понять и реализовать формы более эффективно.
Квантовый скачок
Чтобы подробнее узнать о различных аспектах процесса обработки форм,
обратитесь к документу «Web Authoring FAQ» компании Web Design Group по
адресу: http://www.htmlhelp.com/faq/html/forms.html.
Список множества удаленных узлов, подходящих для ряда задач по обработке
форм, можно получить в разделе «The CGI Resource», который находится по
адресу: http://cgi.resourceindex.com/Remotely_Hosted/Form_Processing/.
Примеры скриптов, написанных на языке РНР и используемых для обработки
форм, можно найти по адресу: http://php.resourceindex.com/Complete_Scripts/
Form_Processing/.
Полезная статья по реализации обработки форм на платформе Microsoft .NET
находится по адресу: http7/www.ondotnet.com/pub/a/dotnet/2003/01/06/formsauthp1.html.
Теперь вы правильно сформированы...
Мне никогда не нравилось оставлять читателей без полной информации,
необходимой для использования всех возможностей форм. Однако сделать это
практически невозможно, поскольку формы можно использовать для эффективного
решения множества различных задач - и, как вы уже заметили, с помощью
широкого диапазона технологий.
На самом деле, в мире профессиональных Web-разработок, существуют целые
подразделения, в которых отдельные разработчики тратят большую часть своего
времени на разработку приложений и баз данных, необходимых для
функционирования страниц с формами и динамических Web-страниц. Результаты таких
сложных разработок можно увидеть на многих знакомых сайтах. Для всего, что
связано с электронной коммерцией, например сайт Amazon.com, требуется
сложная разработка для обеспечения правильной обработки заявок, информации о
кредитной карте и направлениях отправки.
Хорошим примером повсеместного использования форм являются порталы.
Компании Yahoo!, Excite и даже America online - все они широко используют формы
для управления членством, параметрами персонализации и так далее.
Еще одним отличным примером использования сложных форм и управления
данными является предоставление банком онлайновых услуг. Не знаю, как вы, но в
наши дни я без сомнения окажусь в затруднительном положении без доступа к
моим счетам из любой точки земного шара. Это действительно помогает слегка
ненормальным людям, например мне, оставаться на вершине практической
стороны жизни.
Никогда не пользовались онлайновыми банковскими услугами? Проверьте и
посмотрите, предоставляет ли ваш банк такие возможности. Мой банк,
Wells Fargo, обслуживающий западную часть Соединенных Штатов,
владеет отличным Web-сайтом по адресу http://wellsfargo.com/, и его
разработчики даже работают над его соответствием стандартам и
обеспечением доступности.
Итак, получили достаточно информации о формах? Отлично! Настало время
перейти к фреймам и узнать об их значимости в современном дизайне. Я также
укажу на их многие недостатки и расскажу, почему большинство людей совсем не
используют фреймы для дизайна сайтов.
УРОК 6.
Работа с фреймами
В наши дни, использование фреймов для создания страниц - это большая
редкость. Этому есть множество объяснений, включая следующие забавные факты:
• Фреймы модифицируют интерфейс браузера, что приводит к противоречию
при отображении результатов операционными системами и отдельными
браузерами.
• Для слепых пользователей и пользователей с нарушениями двигательной
функции фреймы тяжелы в использовании. Для программного обеспечения,
предназначенного для чтения экранов, возникают определенные трудности
при обработке измененного интерфейса. Пользователи с нарушениями
двигательной функции также испытывают трудности при перемещении между
фреймами.
• В старых браузерах было сложно создавать закладки на страницы,
использующие фреймы. В самых современных браузерах возможность создания
закладок была улучшена, однако пользователь вынужден знать, где найти эту
возможность в интерфейсе браузера.
• Для фреймов требуется больше серверных и клиентских ресурсов по двум
причинам: во-первых, одна страница дизайнов, в основе которых лежат
фреймы, состоит из нескольких документов, поэтому сервер вынужден
передавать все эти страницы всякий раз, когда отображается страница с
фреймами. Во-вторых, браузерам и операционной системе пользователя приходится
выполнять больше функций, чтобы управлять ими.
• Поскольку для каждой страницы с фреймами необходимо создавать несколько
документов, управление фреймами становится тяжелой, неприятной задачей
при попытке организовать, обновить или модифицировать сайт,
построенный на фреймах.
Итак, если фреймы являются совсем ненужной вещью, зачем же их изучать на
Земле? У меня есть два весьма специфических аргумента, которые вы должны
узнать:
1 Фреймы - это уникальная часть языка HTML. Я хочу, чтобы, увидев фреймы,
вы знали, что это такое, и чтобы они были частью вашего инструментария,
если когда-нибудь в них возникнет необходимость.
2 Подчас фреймы могут быть абсолютно правильным выбором для решения
определенной задачи. Скажем, необходимо разработать приложение, в котором
данные непосредственно загружаются в другое место текущего интерфейса.
Фреймы позволяют реализовать такой тип функциональности; если вам это
понадобится, вы будете знать, как это сделать.
Урок 6. Работа с фреймами
105
В заключение, хотя встроенные фреймы и отличаются от обычных фреймов, тем
не менее, они используются. В определенный момент времени вы, вероятно,
захотите воспользоваться их уникальными возможностями.
Сила тройки
Я часто вспоминаю способ построения страницы с фреймами, думая «тройками».
Чтобы создать одну страницу с фреймами, потребуется, как минимум, три
документа. Более того, при этом используется три уникальных элемента языка HTML,
которые больше нигде не используются.
Фреймы контролируются основным документом, называемым набором фреймов.
Документ с набором фреймов не отображается в браузере, однако с его помощью
происходит настройка всех элементов управления результирующей страницы.
Помимо документа с набором фреймов, необходимо, по крайней мере, два HTML-
документа с содержимым. Эти документы будут отображаться в областях
фреймов, созданных с использованием набора фреймов, как показано на рисунке 6.1.
Щ Fiame Example - Mozilla
А File £dil View Go Eookmarks Jools Window Help
Lsaaa
About the Compare
Company Clients
Contact Company
Welcome to The Company! We specialize in a
variety of high quality services Our clients
encompass just about everyone who is anyone
IB левом фрейме
отображается один
HTML-документ
Сам документ с набором
фреймов не отображается,
однако он определяет,
как должен выглядеть
интерфейс фреймов
Рис. 6.1. Пример страницы с фреймами
В правом фрейме
отображается один
HTML-документ
Конечно, с помощью набора фреймов можно создать любое количество
фреймов. Однако для каждого фрейма необходимо иметь соответствующую HTML-
страницу с содержимым.
Как видите, число документов, необходимых для сложного сайта, использующего
фреймы, может начать увеличиваться - что, как отмечалось ранее, повлечет за
собой потребность в дополнительных ресурсах сервера и операционной системы
пользователя, не говоря уже о дополнительных проблемах, связанных с
управлением документами.
106
Языки HTML и CSS
Создание набора фреймов
Для начала, хотелось бы сфокусироваться на изучении метода создания
документов с наборами фреймов. Эти документы явно отличаются от HTML-страниц,
которые уже были рассмотрены в этой книге. Для новичков, в документах с набором
фреймов используется другое объявление DOCTYPE, как показано в примере 6.1.
Это самая первая часть уникальной разметки страницы с фреймами.
Пример 6.1. Объявление DOCTYPE для набора фреймов в языке XHTML 1.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-frameset.dtd">
Теперь начинается самое интересное! Элементы head и body из обычной, уже
известной вам, HTML-структуры, добавляться не будут; вместо этого будут
добавлены элементы head и frameset.
Раздел head можно использовать точно так же, как и в любом другом документе -
для элементов title, script или style - однако элемент body будет
отсутствовать, поскольку его место во всех документах с фреймами занимает элемент
frameset. Элемент frameset (и его соответствующие атрибуты, с которыми мы
познакомимся далее) - это вторая часть уникальной разметки страницы с
фреймами, как показано в примере 6.2.
Пример 6.2. Структура документа с набором фреймов
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Frameset Document</title>
</head>
<frameset>
</frameset>
</html>
Третьим уникальным элементом является элемент frame, определяющий, какие
HTML-страницы будут размещаться в соответствующих фреймах на создаваемой
странице, как показано в примере 6.3. Число элементов frame зависит
непосредственно от числа фреймов на странице.
Пример 6.3. Набор фреймов с двумя минимально необходимыми элементами frame
<frameset>
<frame />
<frame />
</frameset>
Урок 6. Работа с фреймами
107
Добавление столбцов
Наборы фреймов поддерживают столбцы и строки. В этой части мы добавим
столбцы в набор фреймов. Начнем с создания страницы, состоящей из двух
фреймов, расположенных вертикально.
Атрибут cols элемента frameset может принимать значения трех типов:
• Числовое значение в пикселах, например, cols="200". В результате получим
столбец, шириной 200 пикселов.
• Значение, выраженное в процентах, например cols="75%". В результате
получим столбец, ширина которого будет составлять 75% от доступного
пространства окна браузера.
• Динамическое значение, представляемое звездочкой, например, cols="*".
Это означает, что ширина столбца будет изменяться автоматически, чтобы
заполнять все доступное пространство окна браузера.
В примере 6.4 показан документ с набором фреймов, используемый для создания
страницы, состоящей из двух столбцов, вид которой мы и хотим получить.
Обратите внимание, что также были добавлены элементы frame.
Для создания страницы с фреймами необходимо, чтобы каждый столбец (или
строка, с чем мы познакомимся в следующей части) был заполнен
соответствующей обычной HTML-страницей. В демонстрационных целях для этих примеров я
создала две очень простые страницы, доступные для вашего использования.
В эти страницы, конечно, следует добавить реальное содержимое.
Пример 6.4. Создание страницы с фреймами, состоящей из двух столбцов
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Frameset Document</title>
</head>
<frameset cols="200, *">
<frame src="lightgray.html" />
<frame src="darkgray.html" />
</frameset>
</html>
108
Языки HTML и CSS
В результате ширина левого светло-серого столбца всегда будет равна 200
пикселам, а ширина правого, темно-серого столбца будет изменяться динамически, как
показано на рисунке 6.2.
Frameset Document - Mozilla
ж File Edit View Go fiookmaiks look Window ЦФ
.BJj
Рис. 6.2. Ширина левого столбца будет постоянно равна 200 пикселам,
тогда как ширина правого столбца будет изменяться динамически
при изменении ширины окна браузера
Конечно, столбцов может быть много - любое количество, которое пожелаете.
В этом случае нужно просто добавить больше значений, разделенных запятой
(и больше элементов frame для соответствия). Более того, никто не запрещает
комбинировать значения столбцов. Рассмотрим пример 6.5, всего в котором
создаются четыре столбца, как показано на рисунке 6.3.
Пример 6.5. Страница с фреймами, состоящая из четырех столбцов
<frameset cols="25%, *, 100, 25%">
<frame src="lightgray.html" />
<frame src="darkgray.html" />
<frame src="lightgray.html" />
<frame src="darkgray.html" />
</frameset>
Frameset Document - Mozilla
File £dit View Go Bookmatks Jools Window .Help
иШ
Рис. 6.3. Страница с фреймами, состоящая из четырех столбцов;
левый и правый столбцы занимают по 25 % от пространства окна браузера,
ширина левого центрального столбца является динамической, а ширина правого
центрального столбца является фиксированной и составляет 100 пикселов
Урок 6. Работа с фреймами
109
Работа со строками
Используя атрибут rows, можно создавать строки точно таким же образом, как
создаются столбцы. В примере 6.6 определяется страница с фреймами,
состоящая из двух строк: верхняя строка занимает 25% доступного пространства окна
браузера, а высота нижней строки изменяется динамически в соответствии с
доступным пространством окна браузера.
Пример 6.6. Страница с фреймами, состоящая га двух строк
<frameset rows="25%,*">
<frame src="lightgray.html" />
<frame src="darkgray.html" />
</frameset>
На рисунке 6.4 показаны результирующие строки.
Рб Frameset Document - Mozilla
^ File Edit View Go Bookma.ks look
» '• - .t ,,*,,,, .*
i -_
1 -
•-: . -
Dont
Window
Help
.
. • Jr %,■%
•
■■£!£_'d
- ./.и
■ *':
=3£±& J
Рис. 6.4. Строки на странице с фреймами
Теперь вы понимаете, что порядок следования элементов frame на
странице должен соответствовать порядку описания столбцов и строк.
Фрейм, расположенный первым в стеке, сопоставляется с первой
составляющей значения атрибута col s или rows.
Как и в случае со столбцами, количество строк может быть любым и допускается
комбинирование типов значений.
О
Хотите немного позабавиться с фреймами? Созданная в 1996 году
(это говорит о том, как давно были распространены сайты, построенные
на фреймах, - а также о том, как давно почти полностью прекратилось
использование фреймов для наиболее профессиональных сайтов),
страница Crazy Netscape Navigator Frame Tricks Page представляет
собой прекрасное развлечение. Страница находится по адресу
http://www.geocities.com/Athens/3024/neatframes.httn.
110
Языки HTML и CSS
Комбинирование столбцов и строк
Более сложный подход к дизайну страниц с использованием фреймов
подразумевает комбинирование столбцов и строк для получения желаемого эффекта.
Это достигается при помощи вложенных элементов frameset, как показано в
примере 6.7.
Пример 6.7. Комбинирование столбцов и строк
<frameset rows="100,*">
<frame src="top.html" />
<frameset cols="200, *">
<frame src="nav.html" />
<frame src="main.html" />
</frameset>
</frameset>
В результате, над двумя столбцами будет располагаться строка, как показано на
рисунке 6.5.
Frameset: Howe and Colt - Mozil a
^ File £dtt ^iew £o £ookmaiks lools Window Help
l-aB^Bpi
Рис. 6.5. Комбинирование строк и столбцов
Теперь можете попробовать множество других комбинаций. Повторюсь, что мы
здесь использовали просто макеты страниц, однако понятно, что в верхней
строке этого дизайна можно разместить заголовок сайта, в левом столбце -
навигацию, а в правом - содержимое.
Урок 6. Работа с фреймами
111
Элементы управления границами,
изменением размеров и скроллингом
Управлять поведением страниц с фреймами можно при помощи ряда атрибутов.
К ним относятся атрибуты для управления границами, изменением размеров
фреймов и скроллингом внутри фреймов:
• Атрибуты marginheight и marginwidth позволяют указывать значение в
пикселах для управления высотой и шириной границ фрейма.
• Атрибут noresize фиксирует положение фрейма таким образом, что
пользователь не сможет передвинуть границы фрейма.
• Атрибут scrolling позволяет управлять отображением полос прокрутки
внутри фрейма. Это важно в том случае, когда размер фрейма зафиксирован,
а содержимое фрейма выходит за пределы его области. Для атрибута
scrolling существуют три допустимых значения: yes (полосы прокрутки
отображаются все время), по (полосы прокрутки не отображаются никогда)
и auto (полосы прокрутки отображаются только при необходимости).
В примере 6.8 демонстрируется документ с набором фреймов, в котором
применяются элементы управления границами, изменением размеров и скроллингом.
Пример 6.8. Управление границами, изменением размеров и прокруткой во фреймах
<frameset cols="200,*">
<frame src="menu.html" marginheight="5" marginwidth="5" nore-
size="noresize" scrolling="yes" />
<frame src="main.html" marginheight="9" marginwidth="9" nore-
size="noresize" scrolling="yes" />
</frameset>
На рисунке 6.6 показаны результаты.
Fiame With Numeious Controls - Microsoft Internet Explorer >r<i^pinI3l
| File Edit' View Favorites;* Tools Help <■- {j '^^Я
About the Company —
Company Clients —
J d
Welcome to The Company!
We specialize in a variety of
high quality services. Our clients
encompass iust about everyone Zj
£) III |@) My Computer ^
Рис. 6.6. Обратите внимание на отображаемые
полосы прокрутки в каждом фрейме
112
Языки HTML и CSS
Именование и указание целевых фреймов
Перед тем, как реализовать навигацию внутри фреймов, фреймам сначала
следует присвоить названия. Затем в ссылках нужно указать целевые фреймы,
используя атрибут target. Существует также и другой метод позиционирования,
который мы рассмотрим, известный, как волшебные целевые имена (magic target name).
Именное позиционирование осуществляется при помощи атрибута name и
значения, описывающего фрейм. Обычно это значение описывает функцию
фрейма. Следовательно, фрейм для навигации может быть назван именем nav, фрейм
с содержимым - content, и так далее.
В примере 6.9 представлен документ с набором фреймов, всем фреймам которого
присвоены корректные названия.
Пример 6.9. Именование фреймов
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Frames with Names</title>
</head>
<frameset cols="200, *">
<frame src="menu.html" marginheight="5" marginwidth="5"
size="noresize" scrolling="auto" name="menu" />
<frame src="main.html" marginheight="9" marginwidth="9"
size="noresize" scrolling="auto" name="content" />
</frameset>
</html>
Документ описывает страницу с фреймами, имеющую область меню и область
содержимого. Теперь, когда отдельным фреймам присвоены названия, можно
позиционировать любые ссылки, используя язык HTML для корректного
поведения ссылок.
Если вы хотите щелкнуть на ссылке во фрейме меню, чтобы соответствующая
связанная страница загрузилась во фрейм с именем content, используйте в
ссылке атрибут target, значение которого должно соответствовать названию
целевого фрейма, как показано в примере 6.10.
Пример 6.10. Указание целевых фреймов при помощи атрибутов target и name
<ul>
<li> <a href="about.html" target="content">About the Company
</ax/li>
nore-
nore-
Урок 6. Работа с фреймами
113
<li> <a href="clients.html" target="content">Company Clients
</a></li>
<li> <a href="contact.html" target="content">Contact Company
</a></li>
</ul>
Теперь каждый раз при щелчке на любой из ссылок - about.html, clients.html или
contact.html - соответствующие документы будут загружаться во фрейм с
именем content.
Волшебные целевые имена
Волшебные целевые имена - это четыре предопределенных имени языка HTML,
определяющие особое поведение браузера при активации ссылки:
• target="_blank" - целевое имя _blank приводит к открытию связанного
документа в совершенно новом окне браузера;
• target = "_self" - связанный документ будет загружен в том же окне, где
находится исходная ссылка;
• target="_parent" - загружает связанный документ в родительский набор
фреймов ссылки;
• target="_top" - этот атрибут используется для загрузки ссылки в полном
окне, перекрывая все существующие фреймы.
Если вы хотите избавиться от фреймов и чтобы в окне браузера отобразился
полный документ без фреймов, не используйте значение атрибута name в
качестве цели; вместо этого используйте волшебное целевое имя _top:
<lixa href="contact .html" target="_top">Contact
Company< / ax /1 i >
В результате страница contact.html полностью перекроет не только документ с
набором фреймов, но и все соответствующие фреймы, как показано на рисунке 6.7.
ж ftle £dit View £о Bookmarks look Window ИФ
Contact
This page will be set up with a contact form.
Рис. 6.7. При использовании волшебного целевого имени связывание
со страницей contact.html выполнено таким образом, что,
загружаемая в исходное окно страница, полностью перекрывает набор фреймов
114
Языки HTML и CSS
Не пытайтесь загрузить сайт другого человека во фреймы. Эта задача
считается сомнительной и, вероятно, незаконной. Также будьте
осторожны при выборе имен для объектов, избегайте чередований букв в
разных регистрах и никогда не используйте символы, например символ
подчеркивания, который уже зарезервирован для волшебного целевого имени.
Наконец, использование волшебного целевого имени _Ыапк приводит к
открытию нового браузера, что для многих людей кажется ненадежным.
Фреймы без границ
Если вы хотите, чтобы на сайте не отображались границы фреймов, от них
можно избавиться. Выполняя правила, создать фреймы, не имеющие границ,
не составит труда. В тег frame нужно просто добавить атрибут и значение
frameborder="0", как показано в примере 6.11.
Пример 6.11. Использование фреймов, не имеющих границ
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Borderless Frames</title>
</head>
<frameset cols="200,*">
<frame frameborder="0" sre="menu.html" marginheight="5" margin-
width="5" noresize="noresize" scrolling="auto" />
<frame frameborder="0" src="main.html" marginheight="9" margin-
width="9" noresize="noresize" name="content" scrolling="auto" />
</frameset>
</html>
Внешний вид фреймов, не имеющих границ, можно увидеть на рисунке 6.8.
Bordeiless Fiames - Mozilla
File Edit View £o Bookmarks Tools Window Help
About the Company
Company Clients
Contact Company
Welcome to The
Company! We
specialize in a variety of
high quality services
Our clients encompass
just about everyone
who is anyone
-ЗЕНвГ1^
Рис. 6.8. Посмотрите-ка, а границ-то нет!
Урок 6. Работа с фреймами
115
Конечно, этот метод работает только в современных браузерах, поскольку
изначально у браузеров Netscape и Internet Explorer существовали собственные способы,
позволяющие избавляться от границ фреймов.
В браузерах Netscape до версии 6 избавиться от границ фреймов можно в
следующих случаях:
• атрибуту border присваивается числовое значение, в пикселах, равное О;
• атрибуту f ramespacing не присваивается значение.
Ранние версии браузера Internet Explorer позволяли избавиться от границ фреймов
в следующих случаях:
• атрибуту f rameborder присваивается числовое значение, в пикселах, равное О;
• атрибуту f ramespacing присваивается числовое значение ширины, в
пикселах, равное О.
В каждом браузере либо отличаются атрибуты, управляющие толщиной границы,
либо для управления промежутками используются различные значения. Все это
может сбить с толку, но если собрать перечисленные атрибуты вместе, можно
будет легко создавать фреймы, не имеющие границ, при этом оба браузера будут
без труда понимать такую разметку. Для применения данного подхода можно
использовать любой из двух вариантов синтаксиса:
<frameset frameborder="0" framespacing="0" border="0">
или
<frameset frameborder="no" framespacing="0" border="0">
В примере 6.12 показано, как может выглядеть приведенный ранее пример с
использованием неверного синтаксиса.
Пример 6.12. Поддержка фреймов, не имеющих границ, в старых браузерах
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Borderless Frames</title>
</head>
<frameset frameborder="0" framespacing="0" border="0"
cols="200,*">
<frame src="menu.html" marginheight="5" marginwidth="5" nore-
size="noresize" scrolling="auto" />
<frame src="main.html" marginheight="9" marginwidth="9" nore-
size="noresize" scrolling="auto" />
</frameset>
</html>
116 Языки HTML и CSS
Вообще-то я не рекомендую нарушать корректность документа, но в
данном случае необходимо взвесить все «за» и «против»: если фактически
необходима обратная совместимость с определенными аспектами языка
HTML, иногда приходится нарушать правила. К счастью, старые браузеры
становятся менее популярными, поэтому их поддержка нужна все меньше
и меньше.
Создание доступных фреймов
при помоши элемента noframes
Одним из наиважнейших вопросов при разработке дизайнов с использованием
фреймов, как упоминалось ранее, является гарантия того, что люди, не имеющие
возможности использовать фреймы, например слепые или с нарушениями
двигательной функции, могли получить доступ к важной информации Web-сайта.
Один из способов добиться доступности на сайте с фреймами - воспользоваться
элементом noframes. Этот элемент размещается внутри элемента frameset.
Важная информация может находиться под тем же адресом URL, что и страница
с набором фреймов, а полностью доступный сайт может быть сформирован из
тех же страниц, которые используются для сайта с фреймами, как показано в
примере 6.13 и на рисунке 6.9.
Пример 6.13. Создание доступных фреймов при помощи элемента noframes
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Frames with NOFRAMES Element</title>
</head>
<frameset cols="200, *">
<frame src="menu.html" marginheight="5" marginwidth="5" nore-
size="noresize" scrolling="auto" />
<frame src="main.html" name="right" marginheight="9" margin-
width="9" noresize="noresize" scrolling="auto" />
<noframes>
<body>
<p>Welcome, We're happy to provide this non-frames access to
our Web site. If you prefer to view our site using frames,
please upgrade your browser to a recent one that fully supports
frames. Otherwise, please visit out <a
href="index_noframes.html"> non-framed</a> version of this
site.</p>
</body>
</noframes>
Урок 6. Работа с фреймами
117
</frameset>
</html>
Готовы к отрицательным эмоциям?
Отлично!
На рисунке приведен результат отображения страницы в браузере Mosaic 1.0,
очень старом графическом браузере. В нем, конечно же, нет никакой поддержки
фреймов, однако простое использование элемента nof rames гарантирует, что я
могу получить информацию, равно как и слепые люди или люди с нарушениями
двигательной функции.
v, NCSA Mosaic foi MS Window:
File Edit Options Navigate Annotate
ШБ)РТ»11Ш]|»1а11ШШ1|1]
jlLzJ
Help
Welcome. We're happy to provide this'hon-fremes
access to our Web site. If you prefer to view our
site using frames, please upgrade your browser to
a recent one that fully supports frames.
Otherwise, please visit our non-framed version of
this site.
|NUMf
Рис. 6.9. Старые браузеры и программное обеспечение,
предназначенное для людей с ограниченными возможностями,
могут интерпретировать информацию, которая содержится
в элементе по frames, не имея встроенной поддержки фреймов
Поскольку в элементе noframes можно отформатировать весь документ,
страницу index.html можно использовать в качестве домашней страницы сайта.
На этой странице можно создать ссылки на внутренние страницы, которые
используются в дизайне с фреймами.
щ
Важно запомнить, что документы с набором фреймов не поддерживают
элемент body, правда, с одним исключением: если используется элемент
noframes, элемент body используется для создания информации раздела
body для версии страницы, не использующей фреймов. В остальных
случаях, никогда не используйте элемент body в наборе фреймов; вместо
этого используйте элемент frameset.
Удивительные встроенные фреймы
Впервые представленные в браузере Internet Explorer 3.0, встроенные или плавающие
фреймы (iframes) были официально приняты в языке HTML 4.O. Это хорошая
новость, поскольку при надлежащем применении они очень эффективны. Плохие
новости заключаются в том, что встроенные фреймы не поддерживаются
118 Языки HTML и CSS
браузером Netscape 4.61 и многими другими браузерами. В браузере Netscape
версии 6.0 и выше такая поддержка реализована.
Встроенные фреймы работают немного иначе, чем стандартные фреймы. Во-
первых, для фрейма не создается отдельный набор фреймов. Информация,
касающаяся встроенного фрейма, размещается непосредственно на любой
обычной странице.
Встроенные фреймы чрезвычайно удобны с точки зрения возможности
обновления определенных окон, размещенных в основном окне браузера. Они часто
используются для управления Web-рекламой, которая обычно поставляется с другого
сервера и регулярно обновляется. Это означает, что основная HTML-страница
никогда не изменяется - изменяется только страница на удаленном сервере.
Встроенные фреймы не ограничены отображением только HTML-страниц.
Из встроенного фрейма можно ссылаться на любой тип источника
информации, включая изображения и объекты мультимедиа.
Встроенные фреймы могут быть размещены в любом месте страницы. В
отличие от стандартных фреймов, для них не нужно создавать набор фреймов.
Аналогично стандартным фреймам, встроенным фреймам для функционирования
необходима дополнительная страница - в данном случае, text.html, - как
показано в примере 6.14.
Пример 6.14. Встроенные фреймы
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Inline Frames</title>
</head>
<body>
<iframe width="350 height="200 src="text.html" scrolling="auto"
frameborder="1">
</iframe>
</body>
</html
Браузер отобразит встроенный фрейм в соответствии с указанными значениями
атрибутов. В данном примере, ширина фрейма составляет 350 пикселов, высота -
200 пикселов, с автоматическим отображением полос прокрутки и толщиной
границы, равной 1, чтобы лучше представить результаты.
Урок 6. Работа с фреймами
119
Мне нравится сравнивать встроенные фреймы с изображениями или
объектами. Они все функционируют очень похожим образом: браузер
рисует область, а затем вставляет объект — в данном случае, другой
HTML-файл - в нарисованную область.
На рисунке 6.10 показаны результаты.
. Inline Frames - Mozilla
шш
^ File Edit View Gio Eookmarks Jools Window (Help
vulputate porta From euismod nulla non mauns
Integer et massa non nulla tnsbque porta. Nullarn
scelerisque Aliquarn dolor purus, imperdiet quis,
auctor et, nonummy eleifend, ante Suspendisse
lectus. Integer eu ligula. Etiarn ut wisi
Nullarn laoreet Pellentesque dm nulla, eleifend a,
consectetuer et, convallis vel, turpis Nulla facilisi
Suspendisse non mi Nam pharetra diam
Pellentesque at mauns Sed sit amet est vel nulla
j
Done
Рис. 6.10. Встроенный фрейм в браузере Mozilla
У фреймов существуют проблемы с обратной совместимостью. Все
современные браузеры реализуют поддержку фреймов, однако старые
браузеры могут не поддерживать их. Обычно в таких случаях, элемент
i frame полностью игнорируется. Для встроенных фреймов, однако, не
существует метода, подобного методу с использованием элемента
no frames. Таким образом, хотя зачастую использование встроенных
фреймов является удобным, их применение необходимо ограничить
случаями, когда не требуется поддержка старых Web-браузеров.
Вы познакомились с фреймами!
Даже если сайты с фреймами не популярны в наши дни, что можно сказать после
прочтения этой главы, их важно понимать, поскольку фреймы функционируют
совершенно по-другому, нежели обычные HTML-страницы.
Можно не выбирать фреймы для применения на сайте, но было бы неплохо
попрактиковаться в использовании и прочувствовать, как и где их можно применить.
Никогда не знаешь наперед - может однажды вам понадобится именно это решение.
120
Языки HTML и CSS
И, конечно же, встроенные фреймы применяются для множества различных
целей и широко используются в современном дизайне. Важно понимать разницу
между фреймами и встроенными фреймами и свободно владеть обоими подходами.
В заключение, язык CSS может использоваться не только для стилизации
информации, находящейся на сайтах с фреймами или во встроенных фреймах, но
также и для создания подобных эффектов. Подробнее об этом мы узнаем в
следующих главах.
К данному моменту времени мы узнали многое о разметке, и, говоря о языке
CSS, настало время перейти к его изучению и узнать, каким образом с помощью
языка CSS можно добавить привлекательные, полезные эффекты к
структурным элементам, с которыми мы работали на протяжении предыдущих глав.
УРОК 7.
Использование языка CSS
Таблицы каскадных стилей приобрели популярность в конце 1996 года. Не
смотря на относительно долгое существование этой технологии, ее практическое
применение для Web-дизайна ограничивалось управлением шрифтами и цветом,
по крайней мере, до недавнего времени. Данное ограничение возникло из-за
отсутствия совместимой поддержки таблиц стилей браузерами. Поскольку не все
браузеры одинаково обрабатывали инструкции языка CSS (если вообще
обрабатывали), дизайнеры не могли в полной мере воспользоваться реальными
преимуществами таблиц стилей. Вместо этого, ответственность за отображение
информации возлагалась на язык HTML.
Теперь, когда поддержка языка CSS реализована гораздо лучше, и, благодаря
этому, можно воспользоваться множеством ценных возможностей языка, Web-
дизайнеры переходят от использования языка HTML, как средства стилизации и
создания макетов страниц, к настоящему дизайну с применением языка CSS.
Почему это так важно? Причин тому - множество:
• Раздельное хранение представления и документа позволяет стилизовать этот
документ для различных устройств, включая, монитор принтер, проектор и
даже портативные устройства.
• Раздельное хранение представления и документа означает уменьшение
размера документа, что, в свою очередь, ускоряет загрузку и отображение
страницы, доставляя удовольствие посетителям.
• Язык CSS позволяет управлять как одним документом, так и миллионами
документов. Для внесения изменения потребуется модифицировать
необходимый стиль в одном CSS-файле, и это изменение автоматически отразится на
всех связанных документах. В языке HTML это сделать невозможно.
• CSS-документы кэшируются. Это означает, что они загружаются в память
браузера только один раз. При перемещении по сайту браузеру никогда не
приходится заново интерпретировать стили. В результате мы получаем более
плавные переходы от страницы к странице и более быструю загрузку страниц,
что всегда является конечной целью.
• Отделив представление от структуры и содержимого, легко добиться
доступности документа. Документы, в которых не используются сложные таблицы и
большое количество элементов языка HTML, отвечающих за представление, по
сути являются более доступными, чем те документы, у которых
перечисленные свойства присутствуют.
Очевидно, что язык CSS предоставляет множество возможностей. В этой главе
мы узнаем, как эффективно и гибко использовать язык CSS для дизайнов.
122
Языки HTML и CSS
Упрошенная теория языка CSS
Перед началом использования языка CSS необходимо узнать некоторые важные
моменты, касающиеся самого языка и его эффективного применения. Я
постараюсь сделать это быстро и безболезненно, поскольку знаю, что вам не терпится
испытать его в действии.
Правила языка CSS
Правила языка CSS состоят из селектора и, по крайней мере, одного объявления.
Селектор - это код элемента языка HTML, к которому будет применено правило
стиля. В этой книге мы сконцентрируемся на наиболее распространенных
селекторах, но, став более квалифицированным специалистом в области применения
языка CSS, вы сможете использовать более дюжины типов селекторов.
Объявление состоит, по крайней мере, из одного CSS-свойства и соответствующего
значения. При помощи CSS-свойств определяются стили:
hi {color: red;}
Селектор hi отвечает за заголовки hi языка HTML, а объявление состоит из
свойства color и значения red. Проще говоря, это правило изменяет цвет
текста элементов hi на красный цвет. Обратите внимание, что синтаксис правила
стиля отличается от синтаксиса языка HTML. Объявления заключаются в
фигурные скобки, за каждым названием свойства следует двоеточие, а после
каждого свойства со значением ставится точка с запятой. В правиле можно
использовать любое количество свойств.
Применение языка CSS
Существует шесть типов таблиц стилей:
• Стиль браузера - это стандартная таблица стилей, используемая браузером.
Если никакие правила стиля не объявлены, применяются эти стандартные стили.
• Стиль пользователя - пользователь может написать свою таблицу стилей и
переопределить любые стили, созданные вами, изменив настройки браузера.
Такой подход используется редко, но может оказаться полезным для людей с
ограниченными возможностями, например с плохим зрением. В данном
случае пользователь создаст стили с высококонтрастными шрифтами больших
размеров, которые переопределят ваши стили.
• Встроенный стиль - стиль, который определяется непосредственно в
элементе и применяется с использованием атрибута style. Такой подход полезен
для стилей, единовременно применяемых к одному элементу, однако он не
считается идеальным.
• Внедренный стиль - этот стиль управляет представлением одного документа и
размещается внутри элемента style HTML-документа.
урок 7. Использование языка CSS
123
• Связанный стиль - это таблица стилей, которая связана с HTML-документом
при помощи элемента link, размещенного в разделе документа head. Любой
документ, связанный с данным типом таблицы стилей, получает все стили,
определенные в ней, в чем и заключается преимущество управления языка CSS.
• Импортированный стиль - этот тип похож на связанные стили, однако
позволяет импортировать стили в связанную таблицу стилей или непосредственно
в документ. Он полезен для реализации обходных путей и для управления
множеством документов.
Мы познакомимся с примерами использования перечисленных таблиц стилей по
мере изучения материала главы.
Каскад
Люди часто интересуются, почему стили называются каскадными. Каскад - это
иерархия применения - красивое название для системы применения правил.
Если внимательно посмотреть на пять перечисленных типов таблиц стилей,
станут очевидными различные способы применения стиля к одному и тому же
документу.
Что же получится в результате, если у нас будет встроенный стиль, внедренная
таблица стилей и связанная таблица стилей? Каскад определяет способ
применения правил. В случае с типами таблиц стилей, пользовательский стиль
переопределяет все остальные стили; встроенный стиль превосходит внедренный,
связанный и импортированный стили; внедренный стиль имеет преимущественное
значение перед встроенным стилем; связанные и импортированные стили
рассматриваются, как равные по значимости, и применяются везде, где не были
применены другие типы таблиц стилей. Стиль браузера используется только в
том случае, когда для данного элемента не было предоставлено ни одного стиля.
Каскад также относится к порядку применения нескольких таблиц стилей. Если
существуют три связанные таблицы стилей, применена будет та из них, которая
интерпретируется браузером при наличии конфликтов между ними.
Наследование
Наследование означает, что стили наследуются от родительских элементов.
Рассмотрим следующий пример:
<body>
<hl>My header</hl>
<p>Subsequent Text</p>
</body>
Оба элемента hi и р считаются потомками элемента body. Стили, заданные для
элемента body, будут унаследованы потомками, если не будет применено другое
правило, переопределяющее унаследованный стиль. В языке CSS наследуются
почти все свойства, кроме свойств, относящихся к границам и к отступам.
124
Языки HTML и CSS
Специфичность
Наконец, если между таблицами стилей существуют конфликты, которые
невозможно решить при помощи каскада, у языка CSS есть алгоритм, разрешающий
такие конфликты. Алгоритм основан на специфичности правила. Алгоритм
немного сложный для обсуждения в этой книге, но о нем следует упомянуть.
Понятно, что две страницы текста не могут полностью раскрыть ни одну из этих
тем, поэтому, если вы хотите узнать больше, обязательно обратитесь к части
«Дополнительные источники».
Добавление встроенного стиля
Ладно, довольно теории - приступаем к работе! В этой части мы узнаем, как
применять встроенный стиль. Встроенные стили используются редко, поскольку они
задают стили только для одного конкретного элемента. Такой подход
препятствует использованию преимуществ управления языка CSS.
Более того, встроенный стиль можно сравнить с элементами языка HTML,
отвечающими за представление, поскольку стиль записывается непосредственно в
документе, а не отделяется от него, что лишает нас возможности использовать
важнейшие преимущества языка CSS. Я использую встроенные стили в основном
для ситуаций, когда необходимо быстро исправить проблему для одного
требуемого элемента, или в редких случаях, когда на всем сайте существует только этот
стиль для одного уникального элемента.
Рассмотрим следующий элемент:
<hl>welcome!</hl>
Если бы этот заголовок был частью готового HTML-документа и мы просмотрели
его в браузере, результаты были бы такими же, как на рисунке 7.1.
Welcome!
Рис. 7.1. Стандартный размер элемента hi,
определяемый стилем браузера
Допустим, что нам не нравится стандартный цвет и размер шрифта. Можно
добавить CSS-правила непосредственно к этому элементу, воспользовавшись
атрибутом style:
<hl style="color: gray; font-size: 24px;">Welcome!</hl>
Теперь у нас будет заголовок серого цвета с размером шрифта, равным 24
пикселам, как показано на рисунке 7.2.
Урок 7. Использование языка CSS
125
Welcome!
Рис. 7.2. Переопределение цвета и размера
с использованием встроенного стиля
Использование внедренного стиля
Внедренный стиль управляет только тем документом, в который он был
внедрен. Как и встроенные стили, этот подход не позволяет реализовать
возможность применения стилей сразу ко всему сайту. Однако существуют
ситуации, в которых удобно использовать именно внедренный стиль. Первая
ситуация, когда данный документ является единственным документом на сайте,
использующим специфические стили. Другая ситуация относится к процессу
разработки. Мне нравится использовать внедренный стиль при работе над
дизайном, поскольку в этом случае все находится в одном документе. Мне не
приходится переключаться между приложениями или окнами, чтобы
выполнить задачу. Так как правила стилей останутся прежними, я могу просто
вырезать готовые стили из внедренной таблицы и связать их с документом, с чем
мы сейчас и познакомимся.
Внедренный стиль добавляется в раздел документа head с использованием
элемента style и обязательного атрибута type, как показано в примере 7.1.
Пример 7.1. Фрагмент HTML-документа с описанием внедренного стиля
<head>
<title>Working with style</title>
<style type="text/css">
body {background-color: black; color:white;}
hi {font-size: 24px;}
p {font-size: 12px;}
</style>
</head>
<body>
<hl>Welcome!</hl>
<p>Paragraph one.</p>
<p>Paragraph two.</p>
</body>
На рисунке 7.3 показаны результаты.
126
Языки HTML и CSS
Welcome!
Paragraph one.
Paragraph t wo.
Рис. 7.3. Обратите внимание, что цвет элемента body
наследуется всеми его потомками
Создание связанной таблицы стилей
Чтобы воспользоваться преимуществами языка CSS, большую часть времени мы
будем использовать связанные таблицы стилей. Связанная таблица стилей - это
отдельный файл с расширением .CSS, в котором размещаются все CSS-правила
(но без тегов языка HTML). Любой HTML-файл, к которому нужно применить
стили, описанные в этой таблице, можно связать с ней, используя элемент link в
разделе документа head.
В примере 7.2 показана таблица стилей, готовая для связывания. Я указала ряд
правил стилей и сохранила файл под именем styles.ess в моей локальной папке.
Пример 7.2. Таблица стилей, готовая для связывания
body {
background-color: #999;
color: black;
}
hi {
P I
font-family: Verdana;
font-size: 24px,-
color: #ccc;
}
font-family: Georgia;
font-size: 12px;
color: white;
}
В примере 7.3 приведен готовый HTML-документ, связанный с необходимой
таблицей стилей, которая размещается в том же каталоге, что и документ.
Пример 7.3. HTML-страница для таблицы стилей
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtml-transitional.dtd">
урок 7. Использование языка CSS
127
^html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang=
"en">
^head>
^title>Working with style</title>
<link rel="stylesheet" type="text/css" href="styles.ess"
nvedia="all" />
^/head>
<:body>
^hl>Welcome!</hl>
<p>Paragraph one.</p>
<p>Paragraph two.</p>
<:/body>
</html>
Результаты приведены на рисунке 7.4.
Рис. 7.4. Результаты применения связанной таблицы стилей
Конечно, с данной таблицей стилей можно связать любое количество
документов, используя элемент link.
Для элемента link используется несколько атрибутов, перечисленных ниже:
• rel - атрибут связи, который описывает связь ссылки. В данном случае, связь
осуществляется с основной таблицей стилей, поэтому используется значение
stylesheet.
• type - как и для элемента style внедренного стиля, необходимо определить
тип языка и используемый формат - в данном случае, text/ess.
• href - знакомый атрибут ссылки. В данном случае, было указано только имя
файла, поскольку оба документа находятся в одном каталоге. Таблицы стилей
можно размещать в другом каталоге; просто проверяйте корректность
значения атрибута href. Можно также использовать абсолютное связывание для
непосредственной связи с таблицей стилей.
128
Языки HTML и CSS
• media - атрибут media позволяет определять различные стили для
различных устройств вывода. Если создать отдельную таблицу стилей для данного
документа, предназначенную для вывода информации на портативных
устройствах, в элементе link использовалась бы следующая информация:
media="handheld". Подобным образом, атрибут media= "print"
предполагает использование таблицы стилей только для печати. В данном случае,
атрибуту media присвоено значение screen. По умолчанию, значением
атрибута media является all, поэтому, если необходимо применить одни и те
же стили ко всем устройствам вывода, используйте это значение или просто
не указывайте атрибут media.
Как уже отмечалось, с документом можно связать любое количество таблиц стилей.
Импортирование таблиц стилей
Импортированные таблицы стилей очень похожи на связанные таблицы стилей,
так как для импортируемых стилей создается отдельный документ. После этого,
эти таблицы можно либо импортировать в основную таблицу стилей, либо
импортировать непосредственно в документ.
Непосредственное импортирование в документ
При импортировании в документ на самом деле используются два типа таблиц
стилей: отдельная импортируемая таблица стилей (я назвала файл именем
import.css) и встроенная таблица стилей в документе. Выполнить
импортирование при помощи элемента link невозможно; поэтому вместо элемента link
используется директива ©import языка CSS, как показано в примере 7.4.
Пример 7.4. Импортирование стиля из внедренной таблицы
<head>
<head>
<title>working with style</title>
<style type="text/css">
©import ur1(import.ess);
</style>
</head>
Таблица стилей import.css будет импортирована непосредственно в документ.
Представьте себе, что элемент style содержит все правила стилей из файла
import.css - это как раз то, что происходит. Поэтому теперь стиль фактически
внедрен в этот файл.
Этот способ можно использовать для любого количества документов, но
обычно этот метод используется в основном для обходных решений. Ряд браузеров,
Урок 7. Использование языка CSS
129
в частности, браузер Netscape версии 4, не поддерживают директиву ©import,
но при этом они поддерживают элемент link. Поскольку в браузере Netscape 4.x
реализована ограниченная поддержка языка CSS, применять стили необходимо
с особой осторожностью. Выделение стилей, не поддерживаемых браузером, в
связанные таблицы стилей, а поддерживаемых - в импортированные таблицы
стилей, позволит пользователям браузера Netscape увидеть некоторые стили, но
не все. Данный метод очень эффективен для обходного решения, когда
необходимо поддерживать браузеры Netscape версии 4.
Другое обходное решение с использованием директивы ©import заключается в
размещении всех стилей в импортированной таблице. Любой браузер, не
поддерживающий директиву ©import, просто не сможет прочитать стили, и браузер
отобразит документ без стилей.
Квантовый скачок: кратковременное отображение нестилизованного
содержимого (Flash of Unstyled Content - FUOC)
Если используется метод с директивой ©import, а раздел документа head не
содержит элементов link или script, браузер Internet Explorer будет часто
сначала отображать нестилизованное содержимое, а затем перерисовывать
страницу уже с применением стиля. Это раздражающая ошибка, но ее легко
избежать, добавив элементы link или script в раздел документа head.
Дополнительную информацию по проблеме FUOC можно получить по адресу
http://www.bluerobot.com/web/css/fouc.asp.
В большинстве случаев вы не будете использовать директиву ©import во
внедренной таблице, пока для этого не появится особая причина.
Импортирование стиля в связанную таблицу стилей
Другое применение директивы ©import и истинная причина, по которой эта
Директива существует, заключаются в возможности разбивать стили на модули и
в их последующем импортировании в основную таблицу стилей. Рассмотрим
пример на рисунке 7.5.
modi .ess
mod2.css
mod3.css
styles.css
—>-
—>-
->-
index.html
—>
Рис. 7.5. Импортирование стилей в основную таблицу
5-1356
130
Языки HTML и CSS
Представьте, что каждый модульный файл (modl.css, mod2.css и mod3.css)
содержит специфические стили для какой-либо возможности или функции сайта.
Например, могут существовать стили для управления рекламой, стили для таблиц
и стили для форм. Все эти стили можно оформить в виде отдельных модульных
файлов, а затем импортировать в файл styles.ess, который связан со страницей
index.html. Основная причина использования данного метода заключается в том,
что изменения в модули можно вносить независимо от других модулей, а также
можно легко избавляться от стилей, когда они больше не нужны. Этот метод
наиболее эффективен для очень больших сайтов с множеством стилей.
Квантовый скачок: обходные пути в языке CSS
Хотя язык CSS теперь используется повсеместно, иногда приходится
применять обходные пути для обеспечения кросс-браузерной совместимости. Для
обходных путей можно использовать описанный метод модулярного импорта.
В этом случае, как только обходной путь становится ненужным, можно просто
удалить импортируемый файл и соответствующую директиву ©import,
полностью избавившись от обходного пути и очистив таблицу стилей. Более
подробную информацию по обходным путям в языке CSS можно прочитать в
моей статье «Strategies for Long-Term CSS Hack Management» на сайте InformIT no
адресу http://www.informit.com/articles/article.asp?p=170511.
Комментирование и форматирование кода на языке CSS
Возможность добавлять комментарии в HTML-файлы для описания разделов,
сокрытия разметки и содержимого от браузера или добавления указаний для
коллег, работающих над документом, существует и в языке CSS. И точно так же, как
код на языке HTML можно записывать с отступами или применять другое
индивидуальное форматирование, это можно делать и в коде на языке CSS.
Комментирование кода на языке CSS
Комментарии языка CSS отличаются от комментариев языка HTML.
Комментарии языка CSS начинаются с прямого слэша и звездочки, а закрываются
звездочкой, за которой следует прямой слэш. Любое содержимое, расположенное в этой
области, не интерпретируется браузером, как показано в примере 7.5.
Пример 7.5. Комментирование кода на языке CSS _
/* global styles */
body {
background-color: orange;
font-family: Arial, Helvetica, sans-serif;
color: white;
}
Урок 7. Использование языка CSS
131
/* layout styles */
#nav {
position: absolute;
top: 0;
left: 0;
width: 150px;
}
/* hide this style and comment temporarily
.warning {
color: red;
}
John: please ungide the warning style when you're ready to
launch */
Все, что выделено наклонным шрифтом, браузером не интерпретируется, а
стили, находящиеся за пределами комментариев, интерпретируются.
Комментирование может помочь разбить таблицы стилей на логические группы, чтобы
ускорить поиск необходимых стилей. Кроме того, можно временно скрыть стили,
которые в данный момент не нужны, а также оставить пояснения для других
людей, работающих над текущей таблицей стилей.
Иногда, код языка CSS, используемый для определения внедренной таблицы,
заключается в комментарии языка HTML, как показано в примере 7.6.
Пример 7.6. Комментарии языка HTML для скрытия CSS-кода
<head>
<title>working with style</title>
<style type="text/ess">
<! —
Body {
background-color: #999;
color: black;
}
hi {
font-family: Verdana;
font-size: 24px;
color: #ccc;
}
P (
font-family: Georgia;
font-size: 12px;
color: white;
}
132
Языки HTML и CSS
— >
</style>
</head>
В данном случае комментарии языка HTML используются для сокрытия CSS-кода
от старых браузеров, не поддерживающих язык CSS. Многие из этих браузеров
попытаются отобразить CSS-правила в своем окне. Подобное использование
комментариев языка CSS широко распространено в наши дни, хотя для
современных браузеров этот метод является ненужным.
Форматирование кода на языке CSS
Возможно, вы обратили внимание, что в этой главе были использованы два
подхода по форматированию кода (с моей стороны это подло, не так ли?). В первом
подходе за селектором на одной строке размещается объявление:
body {background-color: #999; color: black;}
Во втором подходе правило разбивается на строки:
body {
background-color: #999;
color: black;
}
Оба подхода абсолютно корректны; выбор зависит от индивидуальных
предпочтений. Многие CSS-дизайнеры, считающие каждый бит и байт документа,
предпочитают первый подход. Другие приводят аргументы, что разбиение правил на
строки облегчает поиск необходимых стилей. В любом случае, поскольку
требуемый синтаксис не нарушен, используемый вид форматирования таблицы стилей
является персональным выбором.
Настало время использовать воображение!
Если после знакомства с материалом данной главы вы считаете, что работать с
разметкой и языком CSS скучно, ваше разочарование вполне обосновано.
Крайне необходимо уделять внимание сложным моментам, и я уверяю вас, что вы уже
прошли это, уловив смысл сложных понятий.
Но, несомненно, вы хотите применить приобретенные знания и получить
представление, как использовать язык CSS для улучшения внешнего вида объектов.
Как никак, это то, что я обещала, не так ли?
К счастью, следующая глава позволит немного позабавиться: вы будете
использовать свое воображение.
Мы будем использовать изображения и цвет, чтобы нарядить документы, а также
исследовать возможности языка CSS для работы с изображениями и цветом в
дизайнах.
УРОК 8.
Работа с цветом и изображениями
с использованием языка CSS
Управление цветом - это та область, в которой язык CSS долгое время остается
нашим хорошим другом. Поскольку цвет определяется комбинацией аппаратных
возможностей компьютера, операционной системы и браузера, мы смогли
воспользоваться языком CSS в самом начале жизни таблиц стилей. В этой главе мы
узнаем, как применять цвет к фону страниц и элементов и даже как оживлять
таблицы при помощи цвета.
Доступных вариантов цвета в языке CSS гораздо больше, чем в языке HTML.
В языке CSS определять цвет можно несколькими способами: шестнадцатерич-
ное значение, сокращенное шестнадцатеричное значение, значение RGB,
процентное значение, а также выбирать из 17 названий цветов, поддерживаемых
языком CSS 2.1.
Язык CSS также предоставляет необычайные возможности управления
изображениями. Фактически, возможность использовать изображения в качестве фона
любого элемента, позволяет современным Web-дизайнерам создавать красивые
дизайны без ограничений, накладываемых таблицами. В этой главе мы узнаем,
как применять изображения к фону и элементам, а также познакомимся с
методами использования изображений для ряда визуальных методик.
В языке CSS для изображений существует огромный выбор параметров. Можно
управлять способом заполнения изображением (или вообще не использовать
заполнение) определенной области, фиксировать положение изображения на
фоне элемента, прокручивать изображение или зафиксировать изображение,
чтобы текст прокручивался над ним, - множество вариантов. Мы попробуем все
эти методики в действии и получим реальное представление не только о том,
какие способы использования изображений в языке CSS недоступны в языке
HTML, но и какие существуют возможности по управлению, которые вы оцените
по достоинству.
Совсем недавно, мы уделяли внимание структурированию содержимого с
использованием языка HTML, добавлению изображения и мультимедиа и работе с
таблицами, фреймами и формами. Все, что мы делали до этого момента, формировало
холст. Теперь у нас появился шанс разбрызгать краски и вдохнуть жизнь в этот
холст, оживив внешне неприметные документы.
Цветные рисунки-примеры в этой книге преобразованы к полутоновым
цветам. Однако, старайтесь применять описанные правила к разным
диапазонам цветов, чтобы получить подходящие результаты.
134
Языки HTML и CSS
Цвет и язык CSS
Для корректного использования цвета в языке CSS следует знать о различных
способах определения цветов. Хотя цвета можно применять при помощи ряда
свойств, существуют специфические варианты значений, на которых хочется
остановиться поподробнее.
Шестнадцатеричное значение цвета
Шестнадцатеричная (hex) система счисления с основанием 16 широко
используется в компьютерной технике, поскольку 8 бит (1 байт памяти) могут
представлять отдельное число или букву. В этой системе счисления используются цифры
от 0 до 9 и буквы от а до f в любой комбинации, состоящей из шести разрядов
(и начинающейся с символа решетки), для представления смешения красного,
зеленого и синего цветов (#RRGGBB).
#FFFFFF = 255, 255, 255 = white
Любая шестнадцатеричная комбинация в языках HTML и CSS может представлять
цвет, как показано в примере 8.1.
Пример 8.1. Использование шестнадцатеричного значения цвета в стиле
body {color: #FFCC99; background-color: #808080;}
a {color: #66CC33;}
Если применить указанные стили к документу, цвет фона станет серым, цвет
текста - желто-оранжевым, а цвет ссылки - ярко-зеленым.
Сокращенное шестнадцатеричное значение цвета
Сокращенное шестнадцатеричное значение позволяет сократить любое
шестнадцатеричное значение цвета, имеющее парные составляющие. Это означает, что
цифры в каждой составляющей - RR, GG и ВВ - должны совпадать, например,
#00ССЗЗ или #888888. В сокращенном шестнадцатеричном значении мы из
каждой пары берем одну цифру и в результате получаем #0СЗ и #888. В случае со
значением #808080, цифры составляющих не являются парными, поэтому значение
нельзя записать сокращенно, как показано в примере 8.2.
Пример 8.2. Сокращенное шестнадцатеричное значение цвета
body {color: #FC9; background-color: #808080;}
a {color: #6C3;}
Сокращенные шестнадцатеричные значения можно использовать в любом
CSS-документе, но не в элементах языка HTML, отвечающих за
представление документа.
Урок 8. Работа с цветом и изображениями с использованием языка CSS 135
Значения RGB
Едце одним способом представления цвета в языке CSS является использование
фактических RGB-значений. Определить нужные значения можно в программе для
редактирования изображений, например Photoshop, как показано на рисунке 8.1.
Рис. 8.1. Поиск RGB-значений для серого цвета в программе Photoshop
В данном случае цвет будет представлен с использованием следующего
синтаксиса:
color: rgb(128, 128, 128);
Процентные значения RGB
Можно также использовать процентное соотношение красного, зеленого и
синего цветов. Значение 0% - это черный цвет, а 100% - это белый цвет. Поэтому,
если задать цвет следующим образом:
color: rgb(50%, 100%, 30%);
будет применен ярко-зеленый цвет.
Названия цветов
Для описания цвета можно использовать 17 названий цветов. Вот эти названия:
aqua (зеленовато-голубой), black (черный), fuchsia (розовый), gray (серый), green
(зеленый), lime (светло-зеленый), maroon (темно-красный), navy (темно-синий),
olive (оливковый), purple (фиолетовый), red (красный), silver (серебристый), teal
(бирюзовый), white (белый), yellow (желтый) и orange (оранжевый) (название
цвета orange появилось только в языке CSS 2.1):
color: orange;
136
Языки HTML и CSS
Возможно, вы спросите, какой тип значений цветов следует использовать.
Честно? Все! Вероятно, чаще всего вы будете использовать комбинации ключевых
слов, сокращенных шестнадцатеричных и просто шестнадцатеричных значений.
В новую версию языка CSS 3.0 было добавлено множество дополнительных
цветов, но на момент написания книги они были недоступны для широкого,
5, корректного использования.
Задание цвета фона
Задавать цвет фона чрезвычайно просто и весьма полезно. Цвет можно
использовать для фона страницы и фона любого элемента.
1Лвет и фон документа
Задание цвета фона документа осуществляется путем выбора элемента body и
использования свойства background-color и соответствующего значения цвета:
body {background-color: #999;}
Для всего раздела документа body мы выбрали темно-серый цвет фона. При
просмотре в браузере цвет фона будет полностью серым, как показано на рисунке 8.2.
Welcome!
Paragraph one, with a link
v
Paragraph twor-
Puc. 8.2. Применение цвета к фону документа
Необходимо всегда определять цвет фона, даже если вы планируете
использовать для дизайна изображения или другие фоны элементов. Дело в
том, что цвета интерпретируются браузерами очень быстро и
отображаются раньше всех изображений, тем самым создавая более изящное
визуальное впечатление для посетителей.
Цвет и фон элемента
При помощи языка CSS можно задавать цвет фона для отдельного элемента. Для
этого необходимо просто выбрать элемент и создать правило. Мы проделаем это
для элемента hi, что аналогично таблице стилей для простого документа:
Урок 8. Работа с цветом и изображениями с использованием языка CSS 137
body {background-color: #999;}
hi {background-color: #ccc;}
На рисунке 8.3 показан элемент hi с установленным цветом фона.
Welcome!
Paragraph one, withalmk. .■
Paragraph two.
Рис. 8.3. Установка цвета для фона элемента hi
Давайте продолжим и добавим также правила для цвета фона элемента абзаца и
якорного элемента, как показано в примере 8.3.
Пример 8.3. Установленные цвета фона документа и элементов
body (background-color: #999;)
hi (background-color: #ccc;)
p (background-color: #fff;
a (background-color: #ccc;)
На рисунке 8.4 показаны результаты применения цвета фона.
Welcome!
и ar .ra- h one, with a I'm!--.
aragraph two.
Рис. 8.4. Цвета фона применены к фонам документа
и элементов; обратите внимание, что цвета фона элементов
растягиваются на всю ширину элементов
Использование цвета фона для украшения таблиц
В этой части мы узнаем, как немного украсить таблицы при помощи цветов фона.
До сих пор мы использовали селекторы элементов, которые относятся
непосредственно к определенному элементу языка HTML, например, hi, p и а. В этой части
мы добавим так называемый селектор класса (class selector).
138
Языки HTML и CSS
Селекторы класса - это пользовательские селекторы, название для которых мы
выбираем сами; перед этим названием ставится точка, например .classname.
Классы применяются к элементу языка HTML с использованием атрибута class,
значение которого соответствует названию класса:
<tr class="classname"> ... </tr>
Обычно название класса описывает его назначение, а не представление.
Поэтому, если вы собираетесь применять цвет фона к каждой второй строке таблицы,
в качестве названия класса лучше выбрать .alternaterow, а не .gray. В этом
случае, если вы захотите изменить цвет, вам не придется изменять название
класса во всех документах, что оказалось бы препятствием для использования
преимуществ управления языка CSS.
В примере 8.4 демонстрируется модифицированная таблица, с которой мы
работали в главе 4 «Создание таблиц». Обратите внимание, что в разметку
таблицы было внесено единственное изменение: удалены все атрибуты элемента
table, кроме атрибута cellspacing. Этот атрибут пришлось оставить,
поскольку в языке CSS не существует эффективных способов управления
атрибутом cellspacing.
Также была добавлена внедренная таблица стилей, содержащая стили для
атрибутов width, border, padding элемента table, а также селекторы элементов и
селектор класса для стилизации таблицы при помощи цветов фона элементов.
Пример 8.4. Стилизация таблицы при помощи селекторов элементов
и селектора класса
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/ xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>working with style</title>
<style type="text/ess">
body {color:white;}
caption {background-color: #999; border: lpx solid black;}
table background-color: #ccc; border: lpx solid black; padding:
5px; width: 90%;}
th {background-color: #333; border:}
tr {background-color: #999;}
td {background-color: #ccc; border: lpx solid black}
.highlight {background-color: #fff; color: orange;}
</style>
<head>
<body>
Урок 8. Работа с цветом и изображениями с использованием языка CSS 139
<table cellspacing="5">
<caption>Comparing weather and time zone</caption>
<tr>
<th>Location</th>
<th>Tucson, Arizona</th>
<th>Las Vegas, Nevada</th>
</tr>
<tr>
<th>Weather</th>
<td>Warm to Hot</td>
<td>Warm to Hot</td>
</tr>
<tr>
<th>Time Zone</th>
<td>No Daylight Savings</td>
<td class="highlight">Mountain Standard Time</td>
</tr>
</table>
</body>
</html>
На рисунке 8.5 приведены результаты.
^^^^^^^н
нм^и
Location
Weather
^^HIIH ■■!■■
Time Zone
■■Й
^^^^^^^^^^^H
I^^H^H
Tucson, Arizona
■■■■■I
^^^^^^^ш
■■■■■
■^В^^^П
Las Vegas, Nevada Щ
■■■■■■■■
^^И^^И^^щ
■■■■
Рис. 8.5. Стилизация таблицы при помощи
селекторов элементов и селектора класса
Обратите внимание, что были добавлены границы, чтобы еще больше
улучшить внешний вид таблицы. Подробнее узнать о стилизации границ
можно в главе 11 «Поля, границы и отступы».
Узнав побольше, вы сможете делать множество вещей для улучшения документов
с помощью языка CSS. Только что мы превратили простую неприметную таблицу
в нечто более стилизованное.
Присоединение фонового изображения
К документу или любому элементу можно присоединить фоновое изображение
точно так же, как мы делали это с цветом фона. Впрочем, в языке CSS существует
140
Языки HTML и CSS
множество способов управления фоном, что позволяет использовать богатый
выбор вариантов при применении визуального дизайна к сайту. Можно создавать
слои изображений и многочисленные спецэффекты, комбинируя фон страницы
и фоны элементов.
Обычно, фоновые изображения - это либо маленькие элементы мозаики, при
повторении создающие узор обоев, либо горизонтальные или вертикальные
изображения с участками цветовых, образных и даже типографских
особенностей. В Интернете доступно большое количество уже разработанных фоновых
изображений, одно из которых показано на рисунке 8.6, или же создайте свое
собственное.
Рис. 8.6. Фоновая текстура, используемая
для создания эффекта обоев, которую я нашла
по адресу http://www.grsites.com/textures/
Сначала, давайте присоединим фоновое изображение к документу. Это
выполняется при помощи селектора body, для которого создается правило с
использованием свойства background-image. Значение этого свойства содержит путь и
имя файла изображения:
body {background-image: url(gray.jpg);}
На рисунке 8.7 показаны результаты заполнения страницы фоновым
изображением при просмотре в Web-браузере. Обратите внимание, что
изображение заполнило всю видимую область, тем самым создав захватывающий
внешний вид.
Заполнение фона изображением - это нормальное поведение браузера.
Язык HTML не позволяет управлять заполнением. Скоро вы увидите, что
язык CSS предоставляет гораздо больше возможностей по управлению
сроновыми изображениями.
Урок 8. Работа с цветом и изображениями с использованием языка CSS 141
Щ working with style - Mozilla
_L_L
.^ы
Done
НЩйч/
Рис. 8.7. Заполнение фона раздела документа body
Изображения также можно добавлять к элементам. Если вы хотите, чтобы
предыдущее изображение отображалось на фоне заголовков, можно создать
следующее правило:
hi, h2, h3, h4, h5, h6 {background-image: url(gray.jpg);}
В данном случае, в качестве фона для всех заголовков будет использоваться
элемент мозаики.
Квантовый скачок: группирование селекторов
Правило, которое я только что написала, перечислив все селекторы заголовков
через запятую, представляет собой способ группирования селекторов с одним и
тем же правилом. В этом случае, я могу сгруппировать любые селекторы с
одинаковыми правилами, перечислив названия селекторов через запятую:
hi, p, .footertext {color: teal;}
К содержимому элементов hi, p и классу f ootertext будет применен
бирюзовый цвет. Можно продолжить создание дополнительных правил для
несовпадающих стилей.
hi {font-size: 24px,-}
Если оба этих правила разместить в одной таблице стилей, будут применены
оба стиля. В результате, шрифт элемента hi станет бирюзового цвета с
размером, равным 24 пикселям.
142
Языки HTML и CSS
Управление заполнением фона
Язык CSS позволяет управлять способом заполнения фона. Это осуществляется
при помощи свойства background-repeat и подходящего значения.
Заполнение вдоль горизонтальной оси
Горизонтальная ось, или ось х, позволяет заполнить фон только по
горизонтальной оси элемента:
body {background-image: url(gray.jpg); background-repeat:
repeat-x;}
На рисунке 8.8 показаны результаты.
working with style - Mozilla
хИ
Done
Рис. 8.8. Управление горизонтальным заполнением
при помощи свойства background-repeat
Заполнение вдоль вертикальной оси
Подобным образом, можно выполнить заполнение только вдоль
вертикальной оси. Для этого используется свойство background-repeat со значением
repeat-y:
body {background-image: url(gray.jpg); background-repeat:
repeat-y;}
На рисунке 8.9 показано, что фон был заполнен только вдоль вертикальной оси.
Урок 8. Работа с цветом и изображениями с использованием языка CSS 143
Hoiking with style - Mozilla
■ю&;
Done
Рис. 8.9. Заполнение фона вдоль вертикальной оси
Можно отключить заполнение фона изображением, воспользовавшись
значением no-repeat:
body {background-image: url(gray.jpg); background-repeat:
no-repeat;}
В результате, в левом верхнем углу окна браузера будет отображен элемент
мозаики без заполнения фона.
Квантовый скачок: другие доступные свойства
У свойства background-repeat доступны еще два значения. Первое
значение - repeat. Использование этого значение приводит к заполнению фона,
как по горизонтали, так и по вертикали, что является стандартным
поведением для фона; возможно, вы не будете использовать это значение кроме
случаев, когда предыдущее правило специально переписывается. Многие свойства
языка CSS предоставляют значение по умолчанию, используемое именно для
этой цели.
Второе доступное значение - inherit. Это значение доступно почти для всех
свойств, и поскольку большая часть свойств наследуется, оно просто
усиливает тот факт, что свойство будет унаследовано его потомками. Скорее всего, вы
не будете слишком часто использовать значение inherit, а только в случаях,
когда необходимо специально отменить другое правило или когда значение
применяется к свойству, которое обычно не наследуется, но поддерживает это
значение, например background-position.
144
Языки HTML и CSS
Размещение фонового изображения
Помимо заполнения, фоновое изображение можно разместить в документе или
любом желаемом элементе. Чтобы разместить фоновое изображение, сначала
необходимо установить свойство background-repeat в значение no-repeat.
Затем, для размещения изображения можно использовать любое из значений,
представленных в таблице 8.1.
Табл. 8.1. Значения свойства background-position
Тип значения
Процент
Длина
Ключевые
слова
Пример
background-position: 0% 0%;
background-position: 100% 100%;
background-position: 14% 80%;
background-position: 20px 20px;
background-position: top left;
background-position: left top;
background-position: top center;
background-position: center top;
background-position: right top;
background-position: top right;
background-position: left;
background-position: left center;
background-position: center left;
background-position: center;
background-position: center center;
background-position: right;
Размещение
Левый верхний угол
Правый нижний угол
14% от края, 80% вниз
20 пикселов слева, 20 вниз
0% 0%
50% 0%
100% 0%
0% 50%
50% 50%
Урок 8. Работа с цветом и изображениями с использованием языка CSS 145
Тип значения
Пример
background-position: right center;
background-position: center right;
background-position: bottom left;
background-position: left bottom;
background-position: bottom;
background-position: bottom center;
background-position: center bottom;
background-position: right bottom;
background-position: bottom right;
Размещение
100% 50%
0% 100%
50% 100%
100% 100%
Следует запомнить, что для значений, выраженных в процентах и длине, первое
значение - это значение по горизонтали, а второе - значение по вертикали.
В случае с ключевыми словами, поведение объекта описывается в таблице.
Атрибут background-position позволяет комбинировать значения,
выраженные в процентах и длине, но не ключевые слова. Таким образом,
можно использовать значение 100% 20рх, но не 100% left.
Если указано только одно значение, выраженное в процентах или длине, то
оно применяется к положению по горизонтали, а положение по вертикали
по умолчанию устанавливается в 50%.
В примере 8.5 показана таблица стилей с примерами для каждого типа значения.
Пример 8.5. Размещение фонового изображения
с использованием процентов, длины и ключевых слов
hi {background-image: url(tile.gif); background- repeat:
no-repeat; background-position: 0% 0%;}
h2 {background-image: url(tile.gif); background- repeat:
no-repeat; background-position: lOOpx 4px;}
h3 {background-image: url(tile.gif); background- repeat:
no-repeat; background-position: bottom right;}
146
Языки HTML и CSS
Чтобы обеспечить корректное функционирование значений атрибута
background-position, я определила не только изображение, но и установила
значение атрибута background-repeat в no-repeat. На рисунке 8.10 показано
окончательное размещение фоновых изображений.
woiking with style - Mozilla '
...»1
l sing percentages
Using a pisll value.
Using Keywords
Dene '
1--jM*I
=3BHsf|^
Рис. 8.10. Маленькое изображение с серой окантовкой
размещено на фоне элементов заголовка
Фиксация или прокрутка фоновых изображений
Фоновое изображение можно зафиксировать в области просмотра браузера, или
разрешить его прокрутку вместе с документом. Для этого воспользуемся
свойством background-attachment и значениями fixed или scroll.
Обычно это свойство используется для всего раздела документа body или для
областей с содержимым внутри документа. Однако, как вы заметили, свойство
background-attachment можно использовать в любом элементе, где это
имеет смысл.
Рассмотрим следующее правило:
body {background-image: url(arrows.gif); background-position:
right; background-repeat: no-repeat; background-attachment:
scroll;}
В данном правиле присоединено фоновое изображение, оно размещено в правом
углу, отключая при этом заполнение и делая возможной прокрутку фона. На
самом деле это правило воспроизводит стандартное поведение браузера,
разрешающее прокрутку фона вместе с содержимым, как показано на рисунке 8.11.
Теперь, если записать то же правило со значением fixed для атрибута
background-attachment, результаты будут совершенно другими, как показано на
рисунке 8.12.
Урок 8. Работа с цветом и изображениями с использованием языка CSS 147
Щ working with style - Mozilla
Чг
Ш-ГаГх!
XTTlVIIlg WilliHACU ill III—
scrolling backgrounds +
Lorem ipsum dolor sit amet, consectetuer adipiscing elit
Nam scelerisque iaculis risus. Donee a sem sed sem
hendrerit accumsan. Cum sociis natoque penatibus et
magms dis parturient montes, nascetur ridiculus mus.
Maecenas id neque sit amet nunc euismod facilisis
Phasellus gravida arcu sed augue Mauris velit
Suspendisse quam velit, tincidunt ut, dapibus ut, laoreet id,
erat. Suspendisse potenti. Quisque ut ipsum et turpis *-
vehicula placerat. Vivamus ut sem eu dolor venenatis
dapibus. Vivamus blandit condimentum magna
Pellentesque suscipit pellentesque dolor Curabitur nunc.
Aenean placerat, lacus sit amet dapibus convallis, quam
|=Ж=!вй*|/
Рис. 8.11. Если прокрутка фонового изображения разрешена, изображение прокручивается
вместе с элементом, к которому оно присоединено - в данном случае, элементом body
working with style - Mozilla
Ml
Phasellus gravida arcu sed augue. Mauris velit
Suspendisse quam velit, tincidunt ut, dapibus ut, laoreet id,
erat. Suspendisse potenti. Quisque ut ipsum et turpis
vehicula placerat. Vivamus ut sem eu dolor venenatis
dapibus. Vivamus blandit condimentum magna.
Pellentesque suscipit pellentesque dolor. Curabitur nunc.
Aenean placerat, lacus sit amet dapibus convallis, quam
tortor porttitor dui, id ultrices orci leo vel purus. j*-
Suspendisse nonleo sed lorem hendrerit imperdiet. Nullam
sit amet wisi a sem accumsan eleifend In dignissim. Proin
purus. In vestibulum. Quisque pharetra porta augue
Suspendisse nisi neque, cursus et, laoreet eget, vulputate
at, mi. Nam sed felis Sed ut tellus Aliquam ac justo
Integer adipiscing. Morbi at mass a sit amet dui dignissim
tincidunt.
Hb^iJ*
/
Рис. 8.12. He важно, в какую сторону прокручивается документ - в данном случае,
фоновое изображение остается зафиксированным
148 Языки HTML и CSS
Используя прокрутку фоновых изображений, можно получить интересные
эффекты. Конечно, вы должны попробовать это сами, чтобы увидеть, как на самом
деле работает прокрутка в браузере. Поэкспериментируйте с различными
вариантами: например, установите значение атрибута background-repeat в repeat
или разместите изображение в другом месте и попробуйте использовать оба
значения fixed и scroll, чтобы сравнить, как работает каждый из них.
Некоторые консультанты по доступности утверждают, что текст,
прокручивающийся над фоном, гораздо сложнее различать. Мне это хорошо
известно: я довопьно легко ощущаю движение, и если я попытаюсь
прокрутить текст над текстурированным сроном, то почувствую легкое
головокружение. Поэтому, используйте этот метод с осторожностью!
Создание прозрачного цвета фона
При обсуждении цветов фона не был затронут один момент - значение
transparent свойства background-col or. Конечно, в моем безумии есть своя
логика: я сначала хотела рассмотреть фоновые изображения, чтобы вы смогли
ощутить всю значимость этого очень важного свойства языка CSS.
В примере 8.6 описывается использованная ранее таблица, но на этот раз
фоновое изображение присоединено к элементу body. Обратите внимание, что я
также изменила класс .highlight, чтобы присвоить значение transparent
свойству background-color.
Пример 8.6. Установка прозрачного цвета фона
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/ xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>working with style</title>
<style type="text/css">
body {background-image: url(gray.jpg); color:white;}
caption {color: black; border: lpx solid black;}
table background-color: #ccc; border: lpx solid black; padding:
5px; width: 90%;}
th {background-color: #333;}
tr {background-color: #999;}
td {background-color: #ccc; border: lpx solid black}
.highlight {background-color: transparent; color: orange;}
</style>
<head>
<body>
Урок 8. Работа с цветом и изображениями с использованием языка CSS 149
<table cellspacing="5">
<caption>Comparing weather and time zones</caption>
<tr>
<th>Location</th>
<th>Tucson, Arizona</th>
<th>Las Vegas, Nevada</th>
</tr>
<tr>
< th>Wea ther</th>
<td>Warm to Hot</td>
<td>Warm to Hot</td>
</tr>
<tr>
<th>Time Zone</th>
<td>No Daylight Savings</td>
<td class="highlight">Mountain Standard Time</td>
</tr>
</table>
</body>
</html>
Несложно заметить, что это позволяет фоновому изображению, находящемуся
позади элемента, отображаться сквозь его фон, как показано на рисунке 8.13.
woiking with style - Mozilla
Гг^ xj
, Comparing weather and time zones
■ Location 1 Tucson, Arizona 1 Las Vegas, Nevada 1
Щ Weather
■Time Zone
,', -■:.-
'
Done
HnHrfH.
Рис. 8.13. Значение transparent позволяет фоновому изображению
отображаться сквозь фон элемента - в данном случае, фоновое изображение
отображается сквозь ячейку таблицы, к которой применен класс . highlight
Сокращение языка CSS для свойств фона
Другая интересная особенность языка CSS заключается в том, что определенные
свойства имеют сокращенный эквивалент. Это справедливо только для
небольшого количества свойств; свойство background - одно из них.
150
Языки HTML и CSS
Сокращенные свойства объединяют значения всех связанных с ними свойств.
Для свойства background это означает, что свойства color, image, repeat и
attachment можно объединить в одно правило, воспользовавшись свойством
background.
Для сравнения, в примере 8.7 описаны стили для всех свойств background.
Пример 8.7. Стили фона без сокращений
body {
background-color: white;
background-image: url(images/lemon-slice.gif);
background-repeat: no-repeat;
background-attachment: scroll;
background-position: right bottom;
}
Сокращенная версия выглядит так:
body {background: white url(images/lemon-siice.gif) no-repeat
scroll right bottom;}
Я создала HTML-страницу с текстом на шуточном языке и применила стили фона,
воспользовавшись сокращенной версией, как показано на рисунке 8.14.
working with style - Mozilla
* I
M*I
I Lorem ipsum dolor sit amet, consectetuer adipiscing elit Nam ac orci vel dui mollis
sagitos. Mauris scelerisque arcu ut turpis. Phasellus etpurus nee ligula adipiscing
bibendum. Phasellus accumsan elit sed massa. Aliquam mi nulla, mollis nee,
ullamcorper non, tristique quis, leo. Donee ligula nibh, vehicula id, tempor nee, semper
j non, nibh. Aliquam iaculis. Phasellus at nunc. Aenean vitae justo at sem convallis
I faucibus. Nullam malesuada teHus sed massa. Curabiturpellentesque. Mauris sodales
eleifendpede.
:=жН^!|Ы
Рис. 8.14. Применение свойств фона при помощи сокращений языка CSS
Урок 8. Работа с цветом и изображениями с использованием языка CSS 151
Конечно же, использование как несокращенной, так и сокращенной версии
приводит к одному и тому же результату.
Квантовый скачок: когда использовать сокращения
Сокращения языка CSS чрезвычайно полезны, когда необходимо сохранить
размер файла. Сокращения также упрощают общее управление кодом на
языке CSS. Я стараюсь использовать их везде, где это возможно, за исключением
нескольких случаев.
Однако я слышала, что люди (особенно те, кто работает в профессиональных
командах Web-разработчиков) указывают на сложность работы новичков с
сокращениями. Некоторые руководители групп создают свои CSS-файлы, всегда
используя полный формат, поскольку этот формат позволяет сократить
количество ошибок и избежать путаницы, когда в команде разработчиков
существуют различные уровни квалификации.
Стало веселее?
Будем надеяться, что теперь вам стало немного веселее, поскольку появилась
возможность использовать цвет и изображения для украшения страниц.
Как вы заметили, язык CSS предоставляет множество вариантов управления
цветом, что достаточно серьезно. Еще более гибким является способ управления
изображениями для создания дизайнов при помощи языка CSS, полностью
отделив их от внутристрочных изображений.
Сайт CSS Zen Garden (http://www.csszengarden.com/) - это фантастическое место,
в котором нигде не используются внутристрочные изображения. На этом сайте все
потрясающие изображения размещаются на фоне элементов, а управление
изображениями осуществляется при помощи методики, описанной в данной главе.
Далее, мы узнаем, как эффективно стилизовать текст.
УРОК 9.
Стилизация текста
Теперь, когда мы получили представление о возможностях языка CSS, настало
время заняться стилизацией текста. Исторически сложилось, что язык CSS
больше использовался для стилизации текста, чем для всего остального, в
основном благодаря хорошей поддержке большинства стилей, относящихся к тексту,
существовавших в языке CSS 1.0. С тех пор появились дополнительные свойства,
которые предоставляют еще большие возможности для управления текстом в
Web-документах. Основные принципы стилизации текста в языке CSS возникли
из традиционного типографского дела, хотя ограничения, связанные как с
языком CSS, так и с поддержкой браузеров, предотвратили определенный рост в
области шрифтов для Интернета.
Предупреждаю с самого начала: работа со шрифтами может оказаться сложным
занятием. Во-первых, необходимо понять, что с точки зрения доступности
шрифтов для отображения текста в Интернете, все зависит от операционной
системы и установленных шрифтов. Рхли определенный шрифт не установлен на
машине, человек не сможет увидеть этот шрифт. Такое же ограничение
существовало и для элементов языка HTML, отвечающих за представление документа, и с
тех пор изменилось не многое. Кроме этого, у браузеров проявляется
существенный изъян при изменении размера шрифта, из-за чего изменение размера
шрифта становится настоящей головной болью. Мы практически бессильны в
решении данных проблем, однако можно узнать, как управлять ими. Поэтому
отнеситесь терпеливо к рассмотрению подробностей, хорошо?
Хорошая новость заключается в том, что у нас есть возможность выбирать
некоторые шрифты, а язык CSS расширяет возможности использования шрифтов,
позволяя добавлять цвет, изменять начертание, высоту, интервал - все свойства,
придающие визуальную привлекательность выбранным шрифтам. Когда вы
станете более опытным в использовании языка CSS, вы узнаете, как комбинировать
графику и текст для получения все более и более сложных текстовых дизайнов.
В спецификации языка CSS свойства для управления аспектами типографского
дела собраны в двух основных категориях. Первая категория включает свойства,
относящиеся к шрифту, которые отвечают за выбор шрифта и его дальнейшее
отображение. Во вторую категорию включены свойства, относящиеся к тексту,
позволяющие управлять текстом, обычно, без необходимости изменения самого
шрифта. Некоторые свойства шрифта произошли из более общей визуальной
категории стилей, и могут быть использованы (но не ограничены им) для текста.
В этой главе мы узнаем о шрифте и стилях текста, а также о дополнительных
свойствах стиля, влияющих на текст, но не обязательно используемых только для
текста. Также мы познакомимся с дополнительными типами селекторов,
которые еще не были представлены в предыдущих главах.
Урок 9. Стилизация текста
153
Выбор шрифтов
Выбор шрифтов для дизайна документа может привести в замешательство
людей, плохо знакомых с дизайном или типографским делом. К счастью, можно
воспользоваться несколькими практическими способами.
Традиционно, шрифты разбиты на группы, называемые категориями шрифтов
или, как в языке CSS, семействами шрифтов. Шрифты сгруппированы по сходным
характеристикам. В языке CSS существует пять общих категорий:
• Serif - Буквы шрифта с засечками украшены завитушками, называемыми, как
можно догадаться, засечками. Считается, что шрифты этой категории
отлично подходят для текста элемента body, особенно при печати, а также для
заголовков и другого текста, например заглавий. Шрифты с засечками, с
которыми вы, вероятно, знакомы, включают в себя шрифты Times и Georgia - оба
этих шрифта широко используются в Интернете.
• Sans-serif - Термин sans-serif означает «без засечек» и описывает, буквально,
шрифт без завитушек. Вместо этого, у шрифтов без засечек закругленные,
более широкие буквы. В основном считается, что эти шрифты отлично подходят
для заголовков при печати, но многие думают, что они являются лучшим
выбором для текста элемента body, отображаемого на экране. Однако это
утверждение не всегда верно, особенно когда дело касается текста очень
маленького размера или курсива. К известным шрифтам этой категории
относятся Arial, Helvetica, Verdana.
• Monospace - Моноширинные шрифты - это шрифты, все буквы которых
имеют одинаковую ширину. Они обычно используются для описания примеров
программного кода. Совсем недавно эти шрифты были популярны в дизайне,
придавая страницам очень «грязный» вид. Однако в основном использование
моноширинных шрифтов ограничивается примерами кода. В
вычислительной технике наиболее распространенным моноширинным шрифтом является
шрифт Courier.
• Fantasy - Фантастические шрифты, также известные как декоративные
шрифты, - это шрифты с необычным внешним видом. Вид шрифтов
замысловатый, поэтому их полезно использовать для заголовков или небольших
областей текста, но они не совсем подходят для текста элемента body,
поскольку украшения затрудняют чтение текста. В языке CSS фантастические
шрифты будут использоваться редко, если вообще будут, поскольку их очень
много и они не устанавливаются на большинстве компьютеров. Примером
является шрифт Western.
• Cursive - Курсивные шрифты известны также под названием рукописные
шрифты. Они имитируют курсивную рукопись и насыщены завитушками.
Как и в случае с фантастическими шрифтами, в языке CSS рукописные
шрифты применяются редко. Многие дизайнеры используют фантастические
154
Языки HTML и CSS
и рукописные шрифты в изображениях, которые затем становятся
декоративными типографическими элементами дизайна. Известным рукописным
шрифтом является шрифт Lucida Handwriting, как показано на рисунке 9.1.
±_!_ : : г
This is the Times font (seiif)
This is the Arial font (san-serif) j
This is the Courier font (monospace)
j This is the CMler JW (fantasyj
i Thl>yifrtfoe/Li&oul<&H(M%dM,4riX'ti№
1 [ __J
8 Dona • j |=3K=j Л Jj
Pmc. 9. i. Использован встроенный язык CSS для стилизации
каждой строки текста указанным шрифтом
Шрифты, установленные почти в каждой операционной системе, включают:
Arial, Helvetica, Verdana, Time, Georgia и Courier. Шрифты Tahoma, Trebuchet и Lucida
широко распространены, поскольку они поставляются со всеми версиями
операционной системы Windows, а изначально они включались в пакет Web Font Pack
корпорации Microsoft - бесплатный набор шрифтов, распространявшийся
корпорацией Microsoft в начале развития Интернета.
Если вы - новичок, то со шрифтами лучше всего придерживаться очень простой
схемы. Можно воспользоваться одной из перечисленных схем:
• Выбрать один шрифт, распространенный шрифт с засечками или без засечек,
и использовать его для всего. Изменяйте размер, начертание, цвет и другие
стили для привлечения внимания.
• Выберите два шрифта, распространенный без засечек и распространенный с
засечками. Используйте шрифт с засечками для всех заголовков, заглавий и
другого текста; шрифт без засечек используйте для элемента body. (Такая
схема очень распространена в Интернете.)
• Выберите два шрифта, распространенный с засечками и распространенный
без засечек. Используйте шрифт без засечек для всех заголовков, заглавий и
другого текста; шрифт с засечками используйте для элемента body. (Данная
схема также очень распространена в Интернете, и использовалась в печатном
мире; посмотрите на любую газету или книгу и вы, вероятно, обратите
внимание на использование данной схемы.)
Урок 9. Стилизация текста
155
Набравшись опыта в использовании шрифтов, вы, вероятно, захотите
применять более творческие подходы, но, что характерно, если придерживаться одной
из описанных схем, это позволит придать документу более профессиональный и
согласующийся вид.
Применение семейств шрифтов к тексту
Получив представление о доступных вариантах выбора, настало время
продолжить движение и применить семейства шрифтов к тексту. Для этого выбирается
желаемый текст, к которому применяется свойство font-family с
определенным значением.
Значением для свойства font-family может являться одиночное название
шрифта, ключевое слово семейства шрифтов или ряд названий шрифтов, за
которыми следует ключевое слово семейства шрифтов.
Одиночные названия шрифтов
Выбирайте этот подход только в том случае, если вы абсолютно уверены, что у
посетителей установлен указанный шрифт.
body {font-family: Arial;}
Эта инструкция назначает шрифт Arial шрифтом по умолчанию для всех
документов. Проблема заключается в том, что если на машине пользователя не
установлен шрифт Arial, браузер использует шрифт по умолчанию - обычно это
шрифт Times, и в результате страница будет выглядеть совершенно иначе, чем
предполагалось.
Ключевые слова семейства шрифтов
Ключевые слова семейств шрифтов в языке CSS соответствуют названиям
семейств, описанных в предыдущей части: serif, sans-serif, monospace, fantasy
и cursive.
hi {font-family: fantasy;}
Ко всем заголовкам hi будет применен фантастический шрифт по умолчанию,
установленный на машине пользователя. При использовании ключевых слов
проблема заключается в том, что нельзя управлять тем, какой шрифт будет
использоваться для отображения. В результате ключевые слова обычно
используются в качестве запасного варианта. Поэтому, если вы выбрали одиночное
название шрифта, за выбранным шрифтом можно добавить соответствующее
ключевое слово:
hi {font-family: Arial, sans-serif;}
156
Языки HTML и CSS
В невероятном случае, когда шрифт Arial не установлен на машине пользователя,
будет использован шрифт без засечек, используемый по умолчанию на машине
пользователя.
Несколько названий
Подход, предоставляющий больше возможностей управления, заключается в
использовании нескольких названий из семейства. Это означает выбор названий
шрифтов из одного семейства и их перечисление в определенном порядке:
body {font-family: Arial, Helvetica, Verdana, sans-serif;}
Браузер попытается найти первый шрифт в списке; если этот шрифт на машине
пользователя не существует, будет применен второй или третий шрифт. Помимо
этого, обратите внимание, что добавлено ключевое имя семейства.
В примере 9.1 создана таблица стилей для демонстрации использования свойства
font-family.
Пример 9.1. Применение шрифтов к элементам страницы
body {font-family: Georgia, Times, serif;}
hi, h2 {font-family: Arial, Helvetica, sans-serif;}
Обратите внимание, что описан шрифт для элемента body, но не для абзацев.
Этот шрифт будет использован по умолчанию для любого текста, размещенного в
разделе документа body.
В этом примере абзацы просто наследуют семейство шрифтов от элемента
body. Обратите также внимание, что сгруппированы селекторы hi и h2,
поскольку для них будет использован один и тот же шрифт. На рисунке 9.2
показаны результаты.
Конечно, пока еще не определены другие размеры или стили. В результате,
применяются стили браузера, поэтому стандартный размер для элементов hi и h2, и
абзацев будет определяться браузером, пока не будут созданы дополнительные
правила для управления этими стилями.
Урок 9. Стилизация текста
157
working with style - Mozrila
The Black Cat
By Edgar Allen Рое
I married early, and was happy to find in my wife a disposition not uncongenial
with my own. Observing my partiality for domestic pets, she lost no opportunity
of procuring those of the most agreeable kind. We had birds, gold fish, a fine dog,
rabbits, a small monkey, and a cat.
This latter was a remarkably large and beautiful animal, entirely black, and
sagacious to an astonishing degree. In speaking of his intelligence, my wife, who at
heart was not a little tinctured with superstition, made frequent allusion to the
ancient popular notion, which regarded all black cats as witches in disguise. Not
that she was ever serious upon this point - and I mention the matter at all for no
better reason than that it happens, just now, to be remembered.
Pluto - this was the cat's name - was my favorite pet and playmate. I alone fed
him, and he attended me wherever I went about the house. It was even with
difficulty that I could prevent him from following me through the streets.
Done | HHgfl
Рис. 9.2. Шрифт без засечек используется для заголовков,
а шрифт с засечками используется для раздела документа body
Изменение размера шрифтов
В этой части мы узнаем, как изменять размер шрифтов при помощи свойства
font-size и абсолютного или относительного значения, значения длины или
значения, выраженного в процентах.
Ключевые слова абсолютных и относительных значений
Ключевые слова абсолютных значений задают размеры шрифта, основываясь на
способе расчета размера браузером. Доступны следующие ключевые слова:
xx-small, x-small, small, medium, large, x-large, xx-large. В следующем примере
я применила ключевое слово абсолютного значения к тексту абзаца:
Р {font-size: medium,-}
Размер medium обычно соответствует размеру по умолчанию, используемому
браузером для этого элемента. На рисунке 9.3 показано применение всех
ключевых слов к стандартному тексту браузера.
158
Языки HTML и CSS
зк-ямл х пши small medium lai ge X-lai'ge ХХ~13Г&Q ■,
Рис. 9.3. Изменение размера шрифта в браузере
при помощи ключевого слова абсолютного значенья
Если ключевые слова абсолютных значений зависят от расчетов браузером
размеров шрифтов, ключевые слова относительных значений - larger и smaller -
связаны с размером родительского элемента. Таким образом, если размеру шрифта
для элемента body присвоить значение medium, можно использовать ключевое
слово относительного значения larger для изменения значения размера на large,
или ключевое слово smaller - для изменения значения размера на small. Просто
запомните, что ключевые слова относительных значений связаны с
предопределенными размерами, заданными ключевым словом, значениями длины или
значениями, выраженными в процентах.
Значения длины
Значения длины используются для многих свойств. Они включают три
относительных и пять абсолютных значений. К относительным значениям относятся
em, ex и рх; к абсолютным значениям относятся pt, pc, in, mm и cm. Абсолютные
значения не следует использовать для отображения на экране, хотя они полезны
при создании таблиц стилей для печати документа.
Наиболее распространенными значениями длины для текста в Интернете
являются пикселы и единицы размера шрифта (em), поскольку, с технической точки
зрения, оба эти значения масштабируемы, что подходит для экрана. Однако есть одна
существенная проблема: браузер Internet Explorer для операционной системы
Windows корпорации Microsoft не масштабирует пикселы. Это ужасное упущение,
которое привело к огромным проблемам в основном из-за того, что пользователям
с плохим зрением нужно предоставить масштабируемые размеры шрифтов.
Сравните значения слева со значениями справа, показанные на рисунке 9.4, где
увеличен размер текста браузера (выбрав в браузере IE команду меню Вид ♦ Размер
текста (View ♦ Text Size)) со стандартного значения medium до значения larger.
^«л em 1.5 em
i2pxi6px22px
i2Pt22 pt
0.5 em i em 1.5 em
i2Pxi6px22px
i2Pt22pt
Рис. 9.4. Сравнениеразмеров шрифтов в браузере Internet Explorer 6.0
Урок 9. Стилизация текста
159
Обратите внимание, что текст, размеры которого заданы в единицах размера
шрифта, масштабируется, а в пикселах и пунктах - нет. Пикселы должны
масштабироваться - что и происходит в браузерах с корректной поддержкой
изменений размеров шрифтов. Текст, размер которого выражен в пунктах (которые я
не рекомендую использовать для экрана), остается неизменным, поскольку
пункты являются абсолютными значениями, - это значит, что они никогда не будут
масштабироваться. В результате, многие Web-дизайнеры выступают за
использование единиц размера шрифта, а не пикселов. Однако обратите внимание на
крошечный текст слева. Это также может привести к серьезным проблемам, если
браузер пользователя настроен на использование шрифта, размер которого
меньше значения medium.
Проценты
Процентные значения, используемые для изменения размера шрифтов, всегда
выражаются относительно другого значения, например ключевого слова или
значения длины. Поэтому, если задать размер шрифта элемента body равным
значению 1ет, а размер шрифта элемента hi - 150%, получим, что размер
шрифта элемента hi будет больше размера шрифта элемента body,
относительно стандартных значений браузера:
body{font-size: lem;}
hi {font-size: 150%;}
Процентные значения крайне полезны для преодоления ограничений браузера
при изменении размеров шрифтов. Причина в том, что процентные значения
также масштабируемы. В результате, многие обходные решения пиксельной
проблемы в браузере IE реализованы при помощи совместного использования
единиц размера шрифта и процентов. Но до сих пор многие дизайнеры
предпочитают работать с пикселами из-за их совместимого отображения, жертвуя при
этом доступностью.
Чтобы набить руку, в этой книге вы будете использовать множество ва-
%;. риантов изменения размера шрифтов. За дополнительной информацией о
Ж проблемах, связанных с изменением размеров шрифтов, обратитесь к
J статье Оувена Бригза (Owen Briggs) «Text Sizing» no адресу
http://www.thenoodleincident.com/tutorials/box_lesson/font/index.html.
Жирность и стиль шрифта
Фьюить! Слишком много деталей для простой книги. Но я была вынуждена
сделать это, чтобы быть с вами справедливой и убедиться, что вы получили прочные
знания. Теперь давайте перейдем к самому представлению!
Помимо семейства и размера, шрифты могут иметь жирность и стиль. Жирность
шрифта относится к тому, насколько жирным (или нежирным) является шрифт.
160
Языки HTML и CSS
Стиль шрифта относится к различным начертаниям, которые могут
существовать в определенном семействе.
Жирность шрифта
Определение жирности шрифта осуществляется при помощи свойства font-
weight и ассоциированного с ним значения. Значения для выражения жирности
шрифта включают в себя: число (100-900, где 100 - самый тонкий шрифт,
900 - самый жирный и 400 - обычный), ключевое слово normal (соответствующее
значению жирности, равному 400), ключевое слово bold (эквивалентно значению
жирности, равному 700), ключевое слово bolder (определяет следующее большее
значение жирности) и ключевое слово lighter (определяет следующее меньшее
значение жирности).
В примере 9.2 демонстрируется таблица стилей, в которой применяется
несколько значений жирности.
Пример 9.2. Стили, описывающие семейство шрифта, размер и жирность
body {font-family: Georgia, Times, serif; font-size: lem;
font-weight: normal;}
hl,h2 {font-family: Arial, Helvetica, sans-serif;}
hi {font-size: 150%; font-weight: bold;}
h2 {font-size: 130%; font-weight: lighter;}
.accent {font-weight: 700;}
На рисунке 9.5 показан текст с примененными стилями, который использовался
ранее в этой главе.
working with style - Mozilla
ШЕ
The Black Cat
By Edgar Allen Рое
I married early, and was happy to find in my wife a disposition not uncongenial with
my own. Observing my partiality for domestic pets, she lost no opportunity of
procuring those of the most agreeable kind. We had birds, gold fish, a fine dog,
rabbits, a small monkey, and a cat.
1=тЖ7\
Рис. 9.5. Использование жирности для элемента body,
заголовков и класса accen t
Поддержка числовых значений от 100 до 900 для свойства font-weight
реализована недостаточно хорошо. Лучше всего использовать только те
значения, которые соответствуют известной жирности шрифта -
например, 400 для обычного шрифта, 700 — для жирного шрифта.
Урок 9. Стилизация текста
161
Стиль шрифта
Стили шрифта позволяют изменить начертание. Для определения начертания
шрифта, используется свойство font-style со значением normal, italic или oblique.
Значение normal используется только в том случае, когда текст определенно
должен отображаться с нормальной жирностью. В остальных случаях, это значение
является значением по умолчанию и его незачем использовать.
Наклонное начертание - это скошенное начертание, подходящее для
электронного текста. Значение oblique действительно полезно, только когда шрифт с
наклонным начертанием установлен на компьютере пользователя, что не
применимо к большинству шрифтов, с которыми вы будете работать. Если для шрифта
не существует наклонного начертания, для отображения текста будет
использован курсив.
Значение italic используется для выделения текста курсивом. Практическое
значение? Почти во всех случаях наилучшим значением для свойства font-style будет
italic, как показано в примере 9.3.
Пример 9.3. Стили, описывающие семейство шрифта, размер, жирность и стиль
body {font-family: Georgia, Times, serif; font-size: lem,-
font-weight: normal;}
hl,h2 {font-family: Arial, Helvetica, sans-serif;}
hi {font-size: 150%; font-weight: bold,-}
h2 {font-size: 130%; font-weight: lighter; font-style: italic;}
.accent {font-weight: 700;}
На рисунке 9.6 показано использование курсива для заголовка элемента h2.
The Black Cat
By Edgar Allen Рое
I married early, and was happy to find in my wife a disposition not uncongenial with
my own. Observing my partiality for domestic pets, she lost no opportunity of
procuring those of the most agreeable kind. We had birds, gold fish, a fine dog,
rabbits, a small monkey, and a cat.
Done ~ ' -| !=3£Цв1Т7
Рис. 9.6. Применение стиля шрифта к элементу h2
6-1356
162
Языки HTML и CSS
Раскрашивание текста
Это простая часть! Цвет текста определяется свойством color, в названии
которого нет префикса font или text.
Для раскрашивания текста просто используется свойство color с подходящим
значением цвета. Можно обратиться к главе 8 «Работа с цветом и изображениями
с использованием языка CSS», в которой я много раз применяла свойство color и
рассматривала значения цветов.
Для того чтобы немного раскрасить текст необходимо добавить свойство color к
существующим стилям, как показано в примере 9.4.
Пример 9.4. Раскрашивание текста
body {font-family: Georgia, Times, serif; font-size: lem;
font-weight: normal; color: black;}
hl,h2 {font-family: Arial, Helvetica, sans-serif;}
hi {font-size: 150%; font-weight: bold; color: #999;}
h2 {font-size: 130%; font-weight: lighter; font-style: italic-
color: #333;}
.accent {font-weight: 700; color: red;}
На рисунке 9.7 показано, как изменился цвет заголовков.
walking with style - Mazilla
•i_L
ШШ
The Black Cat
I married early, and was happy to find in my wife a disposition not
uncongenial with my own. Observing my partiality for domestic pets, she lost
no opportunity of procuring those of the most agreeable kind. We had birds,
gold fish, a fine dog, rabbits, a small monkey, and a cat.
1=зМуП^
Рис. 9.7. Применение цвета к селекторам body, hi, h2 и class
Конечно, невозможно увидеть контрастный красный цвет, примененный к
классу accent, из-за характера данной книги, однако вы можете написать свои стили
и воспользоваться браузером, чтобы проверить их в действии.
Выравнивание текста
Во времена, когда язык HTML использовался для представления документа,
выравнивание текста осуществлялось при помощи атрибута align и соответствующего
Урок 9. Стилизация текста
163
значения. В языке CSS применяется такой же подход, конечно, без участия языка
HTML, с использованием свойства text-align. Значения остались прежними и они
наверняка знакомы всем, кто когда-либо использовал текстовый процессор.
• left - левое выравнивание, известное как «рваный» правый край, выравнивает
текст по левому краю, при этом разрывы строк располагаются справа. Это
стандартное поведение для всех браузеров и является предпочтением для
текста элемента body, text-align: text ;
■ center - центрирует текст. Отцентрированный текст полезен для стилизации
заголовков, заглавий и другого особого текста. Очень тяжело читать большие
объемы отцентрированного текста, поэтому для текста элемента body такое
выравнивание является не самым лучшим выбором, text-align: center ;
■ right — весь текст выравнивается по правому краю, оставляя «рваный» левый
край, text-align: right;
• justify - выравнивание по ширине означает одновременное выравнивание
текста как по левому, так и по правому краю. Осуществляется путем подсчета
слов и промежутков, доступных в строке. Такое выравнивание широко
распространено в печатных газетах и журналах. Позволяет создавать весьма
унифицированный, привлекательный вид, однако большинство людей избегают
его использования, поскольку промежутки между словами могут быть очень
большими, что затрудняет чтение, text-align: justify;
На рисунке 9.8 приведено сравнение различных вариантов выравнивания
для абзаца.
This latter was а
remarkably large an
beautiful animal.
entirely black, and
sagacious to an
astonishing degree.
This latter was a
remarkably large and
beautiful animal,
entirely black, and
sagacious to an
astonishing degree.
This latter was a
remarkably large and
beautiful animal,
entirely black, and
sagacious to an
astonishing degree.
This latter was a
remarkably large and
beautiful animal,
entirely black, and
sagacious to an
astonishing degree.
Рис. 9.8. Текст выровнен no правому краю, по центру, полевому краю и по ширине
Оформление текста
^ помощью языка CSS можно «оформить» текст - то есть, добавить или удалить
°пределенное декоративное значение. Это осуществляется при помощи свойства
text-decoration и следующих значений:
• попе - в основном используется для удаления стандартного подчеркивания у
ссылок. За более подробной информацией обратитесь к главе 10 «Эффекты
ссылок, списки и навигация».
6*
164
Языки HTML и CSS
• underline - подчеркивает выбранный текст. Специалисты по вопросам
удобства использования стараются избегать текста с подчеркиванием,
поскольку его можно перепутать со ссылками.
• over 1 ine - размещает линию над выбранным текстом.
• 1 ine - through — перечеркивает выбранный текст.
• blink - да, вы правильно прочитали. Это значение заставляет текст мигать.
Эта возможность с самого начала была представлена (и использовалась до
потери пульса) в браузере Netscape. Поддерживается всеми современными
браузерами, кроме браузера Internet Explorer.
В примере 9.5 для оформления текста используются встроенные CSS-стили.
Пример 9.5. Оформление текста при помощи языка CSS
<р style="text-decoration: underline;">This text is
underlined</p>
<p style="text-decoration: overline;">This text is an
overline</p>
<p style="text-decoration: line-through;">This text is
1ine-through</p>
<p style="text-decoration: blink;">This text is blinks</p>
На рисунке 9.9 показаны результаты, за исключением мигания.
woiking with style - Mozilla
This text is underlined
This text has an overline
W-10 trjtt hat? л ktt--'lr'*4b4i
This text blinks
Done
Л
Рис. 9.9. Оформление текста с использованием языка CSS - чтобы
увидеть мигание, выполните приведенный пример в браузере
Установка отступа текста
Еще одно полезное текстовое свойство - свойство text-indent. Это свойство
позволяет установить отступ первой строки текста при помощи языка CSS,
Урок 9. Стилизация текста
165
вместо использования пустых изображений или нескольких символов
неразрывного пробела в языке HTML.
Можно использовать любое фиксированное значение длины (что было описано
ранее в этой главе).
р {text-indent: 45px;}
Б результате, отступ первой строки каждого абзаца составит 45 пикселов, как
показано на рисунке 9.10.
Щ woiking with style - Mozilla . ' < г„ у ,у_. «i ^
■*xi
The Black Cat
В d rAll P
I married early, and was happy to find in my wife a disposition not
uncongenial with my own. Observing my partiality for domestic pets, she lost
no opportunity of procuring those of the most agreeable kind. We had birds,
gold fish, a fine dog, rabbits, a small monkey, and a cat.
This latter was a remarkably large and beautiful animal, entirely black,
and sagacious to an astonishing degree. In speaking of his intelligence, my wife,
who at heart was not a little tinctured with superstition, made frequent allusion
to the ancient popular notion, which regarded all black cats as witches in
disguise.
Pluto - this was the cat's name - was my favorite pet and playmate. I
alone fed him, and he attended me wherever I went about the house. It was
even with difficulty that I could prevent him from following me through the
streets.
l-aHrf4'/
Рис. 9.10. Отступ первых строк абзацев составляет 45 пикселов
Можно также использовать процентные значения, относительно элемента-
контейнера (за более подробной информацией обратитесь к главе 12
«Позиционирование, плавающее размещение и Z-индекс»).
Р {text-indent: 40%;}
В результате будут получены огромные отступы для первых строк абзацев. Такой
эффект время от времени можно использовать для получения необычного
внешнего вида страницы, как показано на рисунке 9.11.
166
Языки HTML и CSS
working with style - Mozilla
jj File Edit View Go Eiookmaiks Tools V/indow Help
\^m
The Black Cat
E rAH P
I married early, and was happy to find in my
wife a disposition not uncongenial with my own. Observing my partiality for
domestic pets, she lost no opportunity of procuring those of the most agreeable
kind. We had birds, gold fish, a fine dog, rabbits, a small monkey, and a cat.
I This latter was a remarkably large and
beautiful animal, entirely black, and sagacious to an astonishing degree. In
speaking of his intelligence, my wife, who at heart was not a little tinctured with
superstition, made frequent allusion to the ancient popular notion, which
| regarded all black cats as witches in disguise.
j Pluto - this was the cat's name - was my
favorite pet and playmate. I alone fed him, and he attended me wherever I
went about the house. It was even with difficulty that I could prevent him from
following me through the streets.
Л
Рис. 9.11. Установка отступов с использованием процентных значений
Можно использовать отрицательные значения длины для втяжки текста, как
показано на рисунке 9.12.
working with style - Mozilla
I married early, and was happy to find in my wife a disposition
not uncongenial with my own. Observing my partiality for
domestic pets, she lost no opportunity of procuring those of
the most agreeable kind. We had birds, gold fish, a fine dog,
rabbits, a small monkey, and a cat.
W*^
Рис. 9.12. Втяжка текста путем установки краев
и применениясвойства text-indent: -20рх
Преобразование регистра и изменение шрифта текста
Можно стилизовать регистр текста и изменить его шрифт с использованием двух
свойств.
Урок 9. Стилизация текста
167
Для преобразования регистра используется свойство text-transform и одно
из значений: capitalize, uppercase, lowercase, none. Для изменения
шрифта текста используется свойство font-variant и значение small-caps
или normal (значение по умолчанию).
Б примере 9.6 показан документ, в котором используются преобразование
регистра и изменения шрифта.
Пример 9.6. Преобразование регистра и изменение шрифта текста
при помощи языка CSS
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>working with style</title>
<style type="text/ess">
body {font-family: Georgia, Times, serif; color: black;}
hi {font-family: Arial, Helvetica, sans-serif; font-size: 24px;
font-variant: small-caps;}
h2 {font-family: Georgia, Times, serif; color: #999; font-size:
18px; font-style: italic; text-transform: lowercase;}
.accent {font-weight: 700; color: red; text-transform:
uppercase;}
p {font-size: 16px; text-transform: capitalize;}
</style>
</head>
<body>
<hl>The Black Cat</hl>
<h2>By Edgar Allen Poe</h2>
<p> I married early, and was happy to find in my wife a
disposition not uncongenial with my own. Observing my
partiality for domestic pets, she lost no opportunity of
procuring those of the <span class="accent">most</span>
agreeable kind. We had birds, gold fish, a fine dog, rabbits, a
small monkey, and a cat.</p>
<p>This latter was a <span class="accent"> remarkably</span>
large and beautiful animal, entirely black, and sagacious to an
astonishing degree. In speaking of his intelligence, my wife,
who at heart was not a little tinctured with superstition, made
frequent allusion to the ancient popular notion, which regarded
all black cats as witches in disguise.</p>
<p>Pluto - this was the cat's name - was my <span
class="accent">favorite</span> pet and playmate. I alone fed
him, and he attended me wherever I went about the house. It was
even with difficulty that I could prevent him from following me
through the streets.</p>
168
Языки HTML и CSS
</body>
</html>
Результаты применения свойств text-transform и font-variant можно
увидеть на рисунке 9.13.
font-variant: small-caps;
text-decoration: uppercase;
text-decoration: lowercase; text-decoration: capitalize:
working with style - Mozilla
\
The Black Cat
by erfgar alien рое
I Married Early,A«crWas Happy To Find M My Wife A Disposition
Not UnconeeHiaT With My Own. Observing My Partiality Fo/
DomesJtkrPets, She Lost No Opportunity Of Procuring Thosfe Of The
MOST Agreeable Kind. We Had Bjj?ds, Gold Fish, A Fine фв, Rabbits,
A Small Monkey, And A Cat.
This Latter Was A REMARKABLY Large And Beautiful Animal,
Entirely Black, And Sagacious To An Astonishing Degree. In Speaking
Of His Intelligence, My Wife, Who At Heart Was Not A Little
Tinctured With Superstition, Made Frequent AllusioiyTo The Ancient
Popular Notion, Which Regarded All Black Cats As w/tches In
Disguise.
Pluto - This Was The Cat's Name - Was My FAVO'RITE Pet And
Playmate. I Alone Fed Him, And He Attended Me Wherever I Went
About The House. It Was Even With Difficulty That I Could Prevent
Him From Following Me Through The Streets.
Done
Л
Рис. 9.13. Преобразование регистра и изменение шрифта текста
Браузеры, в которых реализована полная поддержка преобразований регистра и
изменений шрифта текста, будут применять стили независимо от того, какой
регистр использовался при создании текста. Конечно, нам хочется, чтобы
текстовое содержимое нормально воспринималось в документе. В данном случае, всегда
можно изменить стили, что не приведет к повторному созданию документа.
Урок 9. Стилизация текста 169
Поддержка свойств text-transform и font-variant у браузеров в
целом реализована неплохо, но у современных браузеров существует
одна известная проблема: свойство font-variant: small-caps;
не работает в определенных старых версиях популярного браузера
Safari от компании Apple. Стиль просто не будет применен, а будут
выбраны только те стили, поддержка которых реализована в
браузере Safari.
Установка интервалов между строками
Интервал между строками, известный в типографском деле как междустрочный
пробел, - это расстояние между строками в разделе текста. Язык CSS
позволяет управлять этим значением при помощи свойства line-height и
значением длины, а также числового или процентного значения, как показано
в примере 9.7.
Пример 9.7. Добавление междустрочного интервала в абзацы с использованием
значенья длины, а также числового и процентного значения
<р style="line-height: 20px;"> I married early, and was happy
to find in my wife a disposition not uncongenial with my
own.</p>
<p style="line-height: 2;"> Observing my partiality for
domestic pets, she lost no opportunity of procuring those of
the <span class="accent">most</span> agreeable kind. We had
birds, gold fish, a fine dog, rabbits, a small monkey, and a
cat.</p>
<p style="line-height: 65%;"> This latter was a <span
class="accent"> remarkably</span> large and beautiful animal,
entirely black, and sagacious to an astonishing degree. </p>
В готовом документе установлен размер шрифта элемента body равный 14
пикселам, а затем применено свойство line-height в виде встроенного стиля к
каждому абзацу, который необходимо модифицировать, как показано на
рисунке 9.14.
Обычно, чтобы добиться наилучшей читабельности текста, следует
придерживаться стандартного значения свойства line-height для шрифта.
170
Языки HTML и CSS
woiking with style - Mozilla
Опш
I married early, and was happy to find in my wife a disposition
not uncongenial with my own.
Observing my partiality for domestic pets, she lost no
opportunity of procuring those of the most agreeable kind. We
had birds, gold fish, a fine dog, rabbits, a small monkey, and a
cat.
This latter was aremarkably large.and beautiful animal, entirely
black, ana sagacious to an astonishing aegree.
Done
Ш A
Рис. 9.14. Различные междустрочные интервалы
могут создавать интересные эффекты
Установка интервала между буквами и словами
Еще одним аспектом типографского дела, который поддерживается языком CSS,
является установка интервала между буквами и словами, что осуществляется при
помощи свойств letter-spacing и word-spacing соответственно. Значение
каждого из свойств выражается длиной, как показано в примере 9.8.
Пример 9.8. Установка интервалов между буквами и словами
<р style="letter-spacing: Юрх;"> I married early, and was
happy to find in my wife a disposition not uncongenial with my
own.</p>
<p style="word-spacing: 0.5em;"> Observing my partiality for
domestic pets, she lost no opportunity of procuring those of
the <span class="accent">most</span> agreeable kind. We had
birds, gold fish, a fine dog, rabbits, a small monkey, and a
cat.</p>
В первом абзаце интервал между буквами будет равен 10 пикселам, а во втором
абзаце интервал между словами будет равен 0,5 единицы размера шрифта, как
показано на рисунке 9.15.
Согласитесь, результаты выглядят необычно. Хотя такие стили обычно не
используются в консервативных документах, мы можем получить представление о
реализации сложных элементов дизайна с применением подобных стилей.
Урок 9. Стилизация текста 171
I married early, and
was happy to find in
my wife a disposition
not uncongenial with
my own.
Observing my partiality for domestic pets, she
lost no opportunity of procuring those of the
most agreeable kind. We had birds, gold fish, a
fine dog, rabbits, a small monkey, and a cat.
Done af Л
Рис. 9.15. Интервалы между буквами и словами
Модификация первой буквы и первой строки текста
Можно стилизовать первую букву (буквицу) и первую строку текста,
воспользовавшись селекторами псевдоэлементов. Вы не видели этого раньше, поэтому
посмотрите:
:first-line
:first-letter
Эти селекторы присоединяются к элементу, который вы желаете стилизовать,
как показано в примере 9.9.
Пример 9.9. Использование селекторов псевдоэлементов для стилизации текста
р:first-line {font-weight: bold; color: #333}
p:first-letter {font-style: italic; color: #999}
На рисунке 9.16 продемонстрированы результаты применения этих стилей
к тексту.
woiking with style - Mozilla
172
Языки HTML и CSS
woiking with style - Mozilla
L2CI
The Black Cat
By Edgar Allen Рое
married early, and was happy to find in my wife a disposition not uncongenial with
my own. Observing my partiality for domestic pets, she lost no opportunity of procuring those of the
most agreeable kind. We had birds, gold fish, a fine dog, rabbits, a small monkey, and a cat.
his latter was a remarkably large and beautiful animal, entirely black, and
sagacious to an astonishing degree. In speaking of his intelligence, my wife, who at heart was not a
little tinctured with superstition, made frequent allusion to the ancient popular notion, which
regarded all black cats as witches in disguise. Mot that she was ever serious upon this point - and I
mention the matter at all for no better reason than that it happens, just now, to be remembered.
luto - this was the cat's name - was my favorite pet and playmate. I alone fed him,
and he attended me wherever I went about the house. It was even with difficulty that I could prevent
him from following me through the streets.
Done
Рис. 9.16. Использование селекторов псевдоэлементов
для стилизации первой строки и первой буквы текста
Использование сокращений для стилей шрифта
Для стилей шрифта, как и для фона, существует сокращенное свойство. В него
включены некоторые свойства шрифта и свойство line-height, но не
включены никакие из текстовых свойств. Более того, при использовании сокращений
для шрифта необходимо внимательно следить за очередностью значений.
Сокращенным свойством является свойство font, а порядок следования его
значений следующий: font-style, font-variant, font-weight,
font-size/line-height, font-family.
p {font: italic small-caps bold 14px/15px Arial, Helvetica,
sans-serif;}
В результате, для абзацев будет использоваться курсив, с малыми прописными
буквами, жирный, с размером шрифта 14 пикселов и междустрочным
интервалом 15 пикселов (обратите внимание на использование слэша между этими
значениями - это единственный случай, когда этот символ применяется в языке
CSS), а шрифтом будет являться шрифт Arial, Helvetica или шрифт семейства
sans-serif, используемый по умолчанию.
Урок 9. Стилизация текста
173
Если вы хотите выбросить какие-то значения, просто сохраните очередность
оставшихся значений:
р {font: bold 14px Arial, sans-serif;}
В результате для отображения текста будет использован шрифт Arial,
размером 14 пикселов и полужирным начертанием. Использовать сокращение можно в
любой момент; просто имейте в виду, что в случае со шрифтами необходимо
соблюдать очередность значений, иначе существует вероятность, что таблицы
стилей не будут функционировать.
Квантовый скачок: неподдерживаемые или плохо поддерживаемые
свойства шрифтов и текста
В текущей спецификации для шрифтов и текста существует несколько стилей,
поддержка которых реализована плохо или вообще не реализована. Мне бы
хотелось обратить на них ваше внимание, поскольку эти свойства
действительно крутые. В конечном счете поддержка данных свойств будет более
распространена.
Свойство font-size-adjust позволяет задать корректировочное
значение, чтобы все шрифты выглядели относительно одинаково с точки зрения
размеров. Это было бы очень удобно, поскольку у различных шрифтов
различные собственные размеры: безусловно, вы замечали, что шрифт Times с
размером 12 пикселов выглядит меньше, чем шрифт Arial с таким же
размером. Как только вы начнете работать с несколькими шрифтами, вероятно, у
вас появится желание сделать их визуально более одинаковыми. Установив
значение свойства font-size-adjust, размеры шрифтов будут
нормализованы, благодаря чему все шрифты стиля будут выглядеть согласованно. Вы
поймете, почему это было бы полезно.
Свойство font-stretch позволяет сжимать или растягивать текст. Свойство
полезно в том случае, когда хочется получить интересные эффекты.
Наконец, свойство text-shadow позволяет создавать для текста эффект
отбрасывания тени. Разве не круто использовать такую возможность?
Свойство позволяет указывать значения цвета и смещения, что избавит от
необходимости использования изображений в тех случаях, когда нужно
просто добавить эффект отбрасывания тени к тексту.
Теперь используйте воображение!
Я просто уверена, что теперь вы довольны! У вас есть достаточный объем знаний
для работы с изображениями, цветом и текстом, чтобы создавать действительно
прекрасные страницы или сайты.
174
Языки HTML и CSS
Конечно, мы рассмотрели далеко не все возможности языка CSS. В следующей
главе мы познакомимся со способами использования ссылок в современном Web-
дизайне. Когда-то мы были ограничены в возможностях для стилизации ссылок,
но теперь мы можем использовать множество стилей, включая разные цвета для
всех состояний, даже для состояния, когда указатель мыши наведен на ссылку.
Мы также познакомимся со списками и узнаем, как совместное использование
списков и ссылок стало основой для создания современной навигации -
вертикальной и горизонтальной, позволяя создавать удивительные интерактивные
интерфейсы с минимальным использованием или даже вообще без
использования изображений.
УРОК 10.
Эффекты ссылок, списки и навигация
Как известно из главы 2 «Добавление текста и ссылок», ссылка - это именно то
что превращает Интернет в среду. Способность перемещаться от страницы к
странице и от сайта к сайту по своему усмотрению, создала возможность
привлекать внимание к Web-сайтам, что, в свою очередь, позволило Интернету
развиваться такими быстрыми темпами.
Язык CSS использовался для стилизации ссылок со времени своего появления.
Фактически, стилизация ссылок, как и стилизация текста, до настоящего
времени является наиболее распространенным применением языка CSS. Конечно,
когда мы узнаем больше о возможностях языка CSS и как использовать эти
возможности для управления большей частью (если не полностью) визуального
представления, этот факт станет чем-то обыденным. Хотя, на данный момент,
стилизация ссылок с использованием языка CSS остается одним из наиболее широко
распространенных применений этой технологии.
С использованием языка CSS можно создавать красивые эффекты для ссылок,
включая эффекты для состояния, когда указатель мыши наведен на ссылку, что
до момента появления языка CSS приходилось реализовывать при помощи языка
JavaScript и различных изображений или при помощи Java-апплетов. При помощи
цвета и изображений можно гораздо более эффективно воспроизвести эффекты,
для создания которых требовались колоссальные усилия, и получить больше
возможностей по их управлению, не думая ни о чем, кроме чистой разметки и
использования необходимых стилей. Это позволяет создавать красивые дизайны,
которые хорошо отображаются в старых браузерах, хотя и без некоторых
возможностей, и которые полностью доступны для людей с ограниченными
возможностями.
Списки помогают организовать содержимое, а с помощью языка CSS над
списками можно выполнять множество действий. Кроме стилизации текста
списка, язык CSS можно использовать для изменения стиля отображаемых чисел
или маркеров, а также для их замены на изображение или же полностью
отказаться от них.
Весьма захватывающая возможность появляется при объединении списков и
ссылок. В результате мы получаем средства для навигации.
В этой главе мы узнаем о шрифте и стилях текста, а также о дополнительных
свойствах стиля, влияющих на текст, но не обязательно используемых только для
текста. Также мы познакомимся с дополнительными типами селекторов,
которые еще не были представлены. Какая, все-таки, разница между панелью
навигации и списком ссылок? Расположив списки и ссылки вертикально в боковом
столбце или горизонтально вдоль верха страницы, при помощи языка CSS
можно манипулировать для создания панелей навигации с богатыми возможностями
без лишних проблем.
176 Языки HTML и CSS
В этой главе мы начнем работу с создания простых стилей для ссылок, а затем
рассмотрим многочисленные стили ссылок. После этого мы узнаем, как
управлять списками при помощи языка CSS. Наконец, мы используем ссылки и списки
для создания вертикальной и горизонтальной панелей навигации. Кроме этого,
мы познакомимся как с новыми свойствами языка CSS, так и с рядом типов
селекторов, с которыми еще не работали.
Работа с состояниями ссылок
Начнем с самого важного! Несколько состояний ссылок считаются
стандартными для всех браузеров:
• 1 ink - это состояние ссылки до ее активации.
• visited - состояние, в которое переходит ссылка после ее активации.
• hover - состояние, когда указатель мыши наведен на ссылку.
• active - состояние, возникающее при щелчке на ссылке для ее активации.
Существует еще одно состояние - focus. Оно становится активным в
тот момент, когда элемент способен получать вводимые с клавиатуры
символы, например, как в случае с формой. Обычно это состояние не
используется для ссылок, но о нем все равно стоит знать.
В языке CSS состояния link и visited относятся к категории псевдоклассов,
а состояния hover и active - к категории динамических псевдоклассов. Не сложно
понять, почему состояния hover и active считаются динамическими: для их
активации пользователь должен выполнить какие-то действия. Состояния 1 ink и
visited активны до и после взаимодействия со ссылкой.
Вспомните из материала главы 9 «Стилизация текста», селекторы псевдо
элементов : first-letter и : first-line. Перед всеми псевдоселекторами ставится
двоеточие. Поэтому, для стилей ссылок доступны следующие селекторы: : 1 ink,
:visited, :hover и :active.
В примере 10.1 описываются некоторые общие стили для документа, а также
стили для всех состояний ссылки.
Пример 10.1. Стилизация ссылок с использованием селекторов псевдоклассов
и динамических псевдоклассов
body {font: 14px Georgia, Times, serif; color: white;
background-color: black;}
hi {font: 22px Arial, Helvetica, sans-serif; color: #ccc;
background-color: black; text-trans form: lowercase,-}
h2 {font: italic 20px Georgia, Times, serif; color: #ccc,-
background-color: black; text-transform: lowercase;}
Урок 10. Эффекты ссылок, списки и навигация
177
a {color: orange;}
a:link {color: orange;}
a:visited {color: yellow;}
a:hover {color: fuchsia;}
a:active {color: red;}
Обратите внимание, что описан стиль и для якорного элемента. Поскольку а - это
селектор элемента, его можно использовать для установки первоначальных
настроек, которые будут унаследованы. Псевдоклассы не наследуются по логическим
соображениям: самое главное - иметь возможность внесения изменений в стили
для каждого состояния. Однако для разных состояний могут использоваться общие
стили. В таком случае общие стили описываются для якорного элемента, а
независимые стили описываются в селекторах для каждого состояния.
На рисунке 10.1 показан документ с примененными стилями. Обратите
внимание, что указатель мыши наведен на ссылку для демонстрации изменений.
woiking with style - Mozilla
33
The Black Cat
by edgar alien рое
I married early, and was happy to find in my wife a disposition not uncongenial
with my own. Observing my partiality for domestic pets, she lost no opportunity
of procuring those of the most agreeable kind. We had birds, gold fish, a fine
http7Mt).prinh3ll com/
I
Рис. 10.1. Просмотр состояний 1 ink и hover в контексте документа
Чтобы эффекты ссылок функционировали правильно, описание их стилей
необходимо располагать в следующем порядке: link, visited, hover,
active. Другой порядок может привести к несоответствующему
поведению. Просто запомните этот порядок, как слово LVHA, или, как
популярную символику, используемую в промышленности, LoVe/HAte.
На рисунке 10.2 увеличен размер текста ссылок, чтобы более четко
продемонстрировать внешний вид каждого из состояний.
Рис. 10.2. Состояния link, visited, hover и active
178
Языки HTML и CSS
Скорее всего, вы не поймете, для какого состояния используется какой цвет, пока
не загрузите пример в браузере, но в любом случае на рисунке отчетливо видны
изменения - особенно обратите внимание на рамку вокруг активированной ссылки.
Модификация стилей ссылки
Все просто, не правда ли? Теперь мы немного углубимся и внесем изменения во
внешний вид ссылок. Обычно большинство изменений касается состояния
hover, но стилизовать можно и все остальные состояния.
Популярным подходом является использование цвета фона для состояния
hover, как показано в примере 10.2.
Пример 10.2. Добавление цвета фона к состоянию hover
a {color: orange;}
a:link {color: orange,-}
a:visited {color: yellow;}
a-.hover {color: fuchsia; background-color: white;}
a.-active {color: red;}
Когда указатель мыши проходит над ссылкой, цвет фона ссылки становится
белым, как показано на рисунке 10.3.
Рис. 10.3. Изменение цвета фона в состоянии hover
Можно также изменить жирность текста, сделав его полужирным, или изменить
его начертание и сделать курсивом, как показано в примере 10.3.
Пример 10.3. Добавление цвета фона к состоянию hover
a {color: orange;}
a:link {color: orange;}
a:visited {color: yellow;}
a:hover {color: fuchsia; font-style: italic;}
a-.active {color: red;}
Многие специалисты по удобству использования советуют избегать
кардинальных изменений в стилях состояний ссылки, поскольку это сбивает с
толку. Некоторые крайне строгие эксперты даже пропагандируют отказ
от стилизации ссылок и предлагают использовать стандартные цвета
ссылок и подчеркивание. Тем не менее, большинство дизайнеров не
согласны с более строгим подходом и предпочитают использовать стили ссылки
для улучшения дизайна. Основная проблема - найти способ сообщить
посетителю, что ссылка на самом деле является ссылкой.
Урок 10. Эффекты ссылок, списки и навигация
179
Когда указатель мыши проходит над ссылкой, текст ссылки отображается
курсивом, как показано на рисунке 10.4.
Рис. 10.4. Изменение начертания текста
на курсив в состоянии hover
Вероятно, самой распространенной модификацией является удаление
подчеркивания ссылки. Это можно выполнить для всех состояний, воспользовавшись
объявлением text-decoration: none;.
a {color: orange; text-decoration: none;}
Как отмечалось ранее, общие стили для всех состояний должны размещаться в
якорном элементе, чтобы можно было воспользоваться наследованием. Нет
необходимости добавлять это объявление ко всем псевдоселекторам, поскольку
они унаследуют правило автоматически, как показано на рисунке 10-5.
Рис. 10.5. Посмотрите-ка - подчеркивание исчезло!
Правила также можно комбинировать. Некоторым дизайнерам нравится
использовать подчеркивание только для состояния hover. Для этого в селектор : hover
добавляется объявление text-decoration: underline;, перекрывающее
унаследованное значение якорного элемента благодаря свойству специфичности
селекторов (за дополнительной информацией по специфичности обратитесь к
главе 7 «Использование языка CSS»).
happy happy happy
nappy
■ А-..JhX"'
Рис. 10.6. Состояния link, visited, hover и active
с подчеркиванием в состоянии hover
Несколько стилей ссылок
с использованием селекторов класса
Еще одна фантастическая особенность языка CSS - это возможность определять
в документе несколько стилей ссылок. Эта особенность крайне полезна, когда на
странице существуют области с совершенно другими свойствами, чем у
остальных областей. Отличный пример: область навигации с голубым фоном и область
180
Языки HTML и CSS
содержимого с белым фоном. Если использовать ссылки белого цвета на голубом
фоне, совершенно очевидно, что они не подойдут для области с белым фоном,
поскольку такие ссылки не будут видны.
Создать несколько стилей ссылок можно разными путями, включая создание
отдельных классов. Можно использовать основные стили ссылок для стандартной
области и области содержимого, а для области навигации можно создать
отдельный класс, как показано в примере 10.4.
Пример 10.4. Использование классов для создания нескольких стилей ссылок
/* default link styles, appropriate for content area -
стандартные стили ссылок, подходящие для области содержимого */
a {color: orange; text-decoration: none;}
a:link {color: orange;}
a:visited {color: yellow;}
a:hover {color: fuchsia;}
a:active {color: red;}
/* classed link styles, appropriate for navigation area - стили
ссылок в виде класса, подходящие для области навигации */
a.nav {color: white; text-decoration: none;}
a.nav:link {color: white;}
a.nav:visited {color: yellow;}
a.nav:hover {color: orange;}
a.nav:active {color: fuschia;}
Чтобы применить класс к ссылкам, к элементу ссылки необходимо добавить
атрибут class="nav":
<а class="nav" href="http://www.molly.com/">Molly.Com</a>
Был создан HTML-файл с двумя разделами, представляющими область
содержимого и область навигации, и применен класс к ссылке в области навигации, как
показано на рисунке 10.7.
Рис. 10.7. Применение нескольких стилей ссылок при помощи классов
Стилизация ссылок с использованием селекторов потомков
Конечно, использование множества классов означает не только написание
большого количества CSS-правил, но и добавление множества атрибутов class в
HTML-документ. Если необходимо стилизовать большой объем содержимого и вы
Урок 10. Эффекты ссылок, списки и навигация 181
полагаетесь на классы, в результате получится то, что промышленные
специалисты называют «везде классы» (class-it is) - чрезмерное использование классов.
Подобной ситуации можно избежать, если воспользоваться другими видами
селекторов.
Элементы можно уникально идентифицировать при помощи ID-селектора. Эти
селекторы начинаются со знака решетки, за которым следует уникальное имя -
очень похоже на то, что мы делали при создании класса:
#id-name
Существует важное отличие между селекторами класса и ID-
селекторами. Селекторы класса можно использовать в документе любое
количество раз, а ID-селекторы - только один раз. Поэтому, ID-селекторы
особенно полезны при идентификации уникальных разделов документа,
например области навигации, содержимого, верхнего и нижнего
колонтитулов. Эта технология будет широко применяться в следующих главах,
особенно в той главе, где рассматриваются CSS-макеты.
После того, как раздел документа идентифицирован, можно воспользоваться
селекторами потомков. Эти селекторы выбирают элементы, основываясь на
определенном родительском элементе. Сначала указывается имя родителя, затем
пробел и селектор элемента, для которого вы хотите определить стили: #nav a.
Данное объявление выбирает все якорные элементы, являющиеся потомками
родительского элемента с идентификатором nav. В примере 10.5
демонстрируется использование этого метода в контексте нескольких ссылок.
Пример 10.5. Несколько ссылок с ID-селекторами и селекторами потомков
<!D0CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/ xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>working with style</title>
<style type="text/ess">
body {font: 14px Georgia, Times, serif; color: white;
background-color: black,-}
hi {font: 22px Arial, Helvetica, sans-serif; color: orange;
text-decoration: underline;}
h2 {font: italic 20px Georgia, Times, serif; color: #ccc,-
background-color: black; text-transform: lowercase,-}
/*link defaults*/
a {color: orange; text-decoration: none,-}
a-, link {color-, orange;}
a:visited {color: yellow,-}
a:hover {color: fuchsia; text-decoration: underline,-}
a:active {color: red;}
w
182
Языки HTML и CSS
/*link styles for all descendant links of the example2
division*/
#example2 {background-color: white; color.-black;}
#example2 a {color: lime;}
#example2 a:link {color: lime,-}
#example2 a:visited (color: red;}
#example2 a:hover {color: aqua; text-decoration: underline;}
#example2 a:active {color: fuchsia;}
</style>
</head>
<body>
<div id="examplel">
<p> I married early, and was happy to find in my wife a
disposition not uncongenial with my own. Observing my partiality for
domestic pets, she lost no opportunity of procuring those of
the <a href="http://www.prengall.com/">most</a> agreeable kind.
We had birds, gold fish, a fine dog, rabbits, a small monkey,
and a cat.</p>
</div>
<div id="example2">
<p>This latter was a <a href="http://www.prengall.com/"> re-
markably</a> large and beautiful animal, entirely black, and
sagacious to an astonishing degree. In speaking of his
intelligence, my wife, who at heart was not a little tinctured with
superstition, made frequent allusion to the ancient popular
notion, which regarded all black cats as witches in disguise. Not
that she was ever serious upon this point - and I mention the
matter at all for no better reason than that it happens, just
now, to be remembered.</p>
</div>
</body>
</html>
В данном случае, в документе существует два раздела с уникальными
идентификаторами. Поскольку для раздела examplel не определено никаких стилей ссылок,
для отображения этих ссылок будут использованы стандартные стили. Но
определены стили ссылок специально для раздела example2, поэтому эти стили будут
применены ко всем ссылкам, являющимся потомками данного раздела, как
показано на рисунке 10.8.
Урок 10. Эффекты ссылок, списки и навигация
1ВЗ
I married early, and was happy to find in my wife a disposition not uncongenial with
my own. Observing my partiality for domestic pets, she lost no opportunity of
procuring those of the most agreeable kind. We had birds, gold fish, a fine dog, rabbits
a small monkey, and a cat.
This latter was a large and beautiful animal, entirely black, and sagacious
to an astonishing degre^jfo speaking of his intelligence, my wife, who at heart was not
i little tinctured with superstition, made frequent allusion to the ancient popular
notion, which regarded all black cats as witches in disguise. Not that she was ever
serious upon this point - and I mention the matter at all for no better reason than that
it happens, just now, to be remembered.
Рис. 10.8. Применение нескольких ссылок с использованием селекторов потомков,
упрощающих как таблицы стилей на языке CSS, так и разметку,
позволяя избегать чрезмерного использования классов
Стилизация упорядоченных списков
Перейдя к спискам, мы начнем работу со стилизации упорядоченного списка. Мы
модифицируем тип маркера, а затем вообще заменим маркер изображением.
У нас есть некоторый текст, нестилизованный упорядоченный список и
определены стили фона, как показано на рисунке 10.9.
Directions To The Party!
i. From the corner of Broadway and 5th Avenue, take a right onto 5th.
2. Follow 5th North about three miles until you come to the Oak Road intersection
3. Take a right on Oak Road. Stay on Oak about five miles.
4. You'll see an intersection at Oak and Vine. Stay on Oak two more blocks.
5. Take a left onto Broome Street. We're three houses in on the right.
Рис. 10.9. Стилизованная страница с упорядоченным списком
Если вы хотите использовать альтернативный маркер, можно воспользоваться
свойством list-style-type и соответствующим значением. Существует
множество значений (большинство из которых отвечают за отображение чисел в
других языках), но в упорядоченных списках наиболее часто используются
значения leading-zero (в этом случае нумерация начинается с нуля) и lower-
roman или upper-roman (в данном случае для отображения используются
римские цифры в нижнем или верхнем регистре, соответственно). Просто добавьте
желаемое значение в существующую таблицу стилей:
ol {list-style-type: lower-roman;}
В результате, порядковые номера элементов списка будут отображены с
использованием строчных римских цифр, как показано на рисунке 10.10.
1В4
Языки HTML и CSS
Directions To The Party! i /
i. From the corner of Broadway and 5th Avenue, take a right onto 5th. V,
ii. Follow 5th North about three miles until you come to the Oak Road intersection,
iii. Take a right on Oak Road. Stay on Oak about five miles. /.
iv. You'll see an intersection at Oakand Vine. Stay on Oak two more blocks. n
v. Take a left onto Broome Street. We're three houses in on the right.
Рис. 10.10. Стилизация упорядоченного списка при помощи строчных римских цифр
Если вы хотите заменить числа изображениями, создайте изображения для всех
нужных чисел и примените классы к каждому элементу списка, чтобы получить
результаты, как показано в примере 10.6.
Пример 10.6. Использование классов для применения изображений
к упорядоченному списку
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/ xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>working with style</title>
<style type="text/css">
body {font: 14px Georgia, Times, serif; color: black;
background-image: url(balloons.gif); background-position:
right top; background-repeat: no-repeat;}
hi {font: 22px Arial, Helvetica, sans-serif; color: orange;
text-decoration: underline; text-transform: capitalize;}
h2 {font: italic 20px Georgia, Times, serif; color: red;
text-transform: lowercase;}
.listl {list-style-image: url(l.gif);}
.Iist2 {list-style-image: url(2.gif);}
.list3 {list-style-image: url(3.gif);}
</style>
</head>
<body>
<hl>Directions to the Party!</hl>
<ol>
<li class=nlistln>From the corner of Broadway and 5th Avenue,
take a right onto 5th.</li>
<li class=nlist2n>Follow 5th North about three miles until you
come to the Oak Road intersection.</li>
<li class="list3n>Take a right on Oak Road. Stay on Oak about
five miles.</li>
</ol>
</body>
</html>
Урок 10. Эффекты ссылок, списки и навигация
1В5
В этом примере показан не только существенный CSS-код, но и все правила,
которые я создала для остальных стилей страницы, как показано на рисунке 10.11.
Directions To The Party!
'■ From the corner of Broadway and 5th Avenue, take a right onto 5th
*• Follow 5th North about three miles until you come to the Oak Road intersection
J- Take a right on Oak Road. Stay on Oak about five miles, t. ,
■w
Рис. 10.11. Добавление графических изображений с числами
к элементам списка с использованием классов
Можно также изменить положение упорядоченных и неупорядоченных
списков. Мы займемся этим в следующем разделе.
Стилизация неупорядоченных списков
Как и в случае с упорядоченными списками, можно изменить вид маркера,
заменить его изображением, а также модифицировать позицию маркера
относительно текста.
Маркеры неупорядоченного списка можно стилизовать с использованием трех
ключевых слов: disc, circle или square, как показано в примере 10.7.
Пример 10.7. Встроенные стили демонстрируют использование
трех ключевых слов для стилизации маркеров неупорядоченных списков
<h2>What to Bring:</h2>
<ul>
<li style="list-style-type: disc;">A beverage of choice.</li>
<li style="list-style-type: circle;">Munchies.</li>
<li style="list-style-type:Bguare;">Music and movies.</li>
</ul>
На рисунке 10.12 показаны красивые результаты.
1В6
Языки HTML и CSS
what to bring:
• A beverage of choice.
о Munchies.
■ Music and movies.
Рис. 10.12. Демонстрация результатов использования ключевых слов disc, circle
и square - обратите внимание, что в некоторых браузерах вид маркеров может быть
немного другим, однако общие возможности сохраняются
Если вы хотите заменить маркер собственным изображением, создайте
изображение и добавьте его при помощи свойства list-style-image, как показано в
примере 10.8.
Пример 10.8. Просмотр исходного кода завершенного документа,
в котором используются маркеры-изображения
<!D0CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/ xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>working with style</title>
<style type="text/ess">
body {font: 14px Georgia, Times, serif; color: black;
background-image: url(balloons.gif); background-position: right
top; background-repeat: no-repeat;}
hi {font: italic 20px Georgia, Times, serif; color: red;
text-transform: lowercase;}
ul {list-style-image: url(bullet.gif);}
</style>
</head>
<body>
<hl>What to Bring:</hl>
<ul>
<li>A beverage of choice.</li>
<li>Munchies.</li>
<li>Music and movies.</li>
</ul>
</body>
</html>
Здесь не нужны классы; требуется всего одно изображение. Это изображение
заменит маркер, как показано на рисунке 10.13.
Урок 10. Эффекты ссылок, списки и навигация
1В7
what to bring:
ki A beverage of choice.
О Munchies.
v Music and movies.
II 4
Рис. 10.13. Использование изображений вместо текстовых маркеров
для изменения внешнего вида буллитов
Можно использовать еще одно свойство списка list-style-position, которое
может принимать значение outside или inside. Значение outside размещает
маркер за пределами блока, поэтому при переносе строки к новой строке
добавляется отступ - обычное поведение списка. При использовании значения
inside, отступ к новой строке не добавляется, как показано на рисунке 10.14.
♦ A beverage
of choice.
♦ A beverage
of choice.
Рис. 10.14. В верхнем варианте для свойства list-style-position
используется значение outside, а в нижнем - значение inside
Сокращения языка CSS для стилей списка
Еще одним свойством-сокращением является свойство list-style. Оно
объединяет в себе свойства списка и позволяет создавать их с использованием
сокращенной формы записи, как показано в примере 10.9.
Пример 10.9. Использование свойства-сокращения list-style
<!D0CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/ xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>working with style</title>
<style type="text/css">
1ВВ
Языки HTML и CSS
body {font: 14px Georgia, Times, serif; color: black;
background-image: url(balloons.gif); background-position:
right top,- background-repeat: no-repeat;}
hi {font: italic 20px Georgia, Times, serif; color: red;
text-transform: lowercase;}
ul {list-style: url(arrow.gif) inside;}
</style>
</head>
<body>
<hl>What to Bring:</hl>
<ul>
<li>A beverage <br /> of choice.</li>
<li>Munchies.</li>
<li>Music <br /> and movies.</li>
</ul>
</body>
</html>
В данном случае был стилизован элемент ul с использованием изображения и
изменения положения. Если вы не хотите использовать изображение, его можно
заменить на ключевое слово. Обратите внимание, что специально вставлены
разрывы строк, чтобы продемонстрировать влияние значения inside, как
показано на рисунке 10.15.
what to bring:
**- A beverage
of choice.
**- Munchies.
*- Music
and movies.
Г7^\
^/}j
s/1
' //
* b
Рис. 10.15. Стилизация списка с использованием
свойства-сокращения list-s tyl e
Вертикальная панель навигации
на основе списка с использованием цвета
При объединении ссылок и списков для создания панели навигации, ситуация
становится действительно захватывающей. Мы начнем со стилизации простого
списка и избавимся от маркеров, воспользовавшись свойством list-style-
type и значением попе. Это объявление удалит все маркеры, оставив список
ссылок, как показано в примере 10.10.
Урок 10. Эффекты ссылок, списки и навигация
189
Пример 10.10. Стилизация списка ссылок
<!D0CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/ xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>working with style</title>
<style type="text/ess">
body {font: 14px Georgia, Times, serif; color: black;}
ul {list-style-type: none;}
a {color: orange; text-decoration: none;}
a:link {color: orange;}
a:visited {color: yellow;}
a:hover {color: fuchsia; text-decoration: underline;}
/*font-style: italic; font-weight: bold; background-color: aqua,-*/
a:active {color: red;}
</style>
</head>
<body>
<ul>
<li><a href="home.html">Home</ax/li>
<lixa href ="products.html">Products</ax/li>
<li><a href="services.html">Services</a></li>
<lixa href="about.html">About Us</ax/li>
<lixa href ="contact.html">Contact</ax/li>
</ul>
</body>
</html>
На рисунке 10.16 показан список стилизованных ссылок без маркеров.
Ноте
Products
Services
About Us
Contact
Рис. 10.16. Простая вертикальная навигация
на основе списка со стилизованными ссылками
Да, это не слишком красиво. Подождите! Все станет на свои места.
Воспользовавшись набором стилей, включающим эффекты границ и отступы (за
дополнительной информацией обратитесь к главе 11 «Поля, границы и отступы»), в
простую панель навигации можно добавить множество вещей. Можно также
использовать цвета фона и изображения, чтобы сделать список визуально более
интересным, как показано в примере 10.11.
190
Языки HTML и CSS
Пример 10.11. Добавление стилей к списку
body {font: 14px Georgia, Times, serif; color: black;}
ul {list-style-type: none; padding: 0; width: lOOpx;
background-image: url(swirls.gif); border: 2px solid orange;}
li {padding-left: 5px; padding-bottom: 5px; border-bottom:
lpx solid orange;}
a {color: orange; text-decoration: none;}
a:link {color: orange;}
a:visited {color: yellow;}
a:hover {color: fuchsia;}
a:active {color: red;}
Да, определенно, этот список стал выглядеть более интересно, как показано на
рисунке 10.17.
Ноте
Products
Services
About I
Conta.
cfr
Рис. 10.17. Теперь выглядит, как панель навигации
По мере использования различных стилей для навигации, вы обнаружите
■* отличия в способах обработки браузерами стилизованных списков.
Например, браузеры Mozilla и Mozilla Firefox тщательно интерпретируют
отступы и ширину, а браузер IE стремится быть более прощающим.
Вертикальная панель навигации
на основе списка с эффектами изображения
Воспользовавшись фоновым изображением и селектором :hover, можно создать
список навигации, в котором у каждого элемента будет привлекательный фон.
Для впечатляющих результатов нужно добавить контрастное фоновое
изображение для состояния hover, как показано в примере 10.12.
Пример 10.12. Использование фоновых изображений
для создания сложных эффектов навигации
body {font: bold 15px Georgia, Times, serif; color: black;}
a {color: white; text-decoration: none; display: block;}
a:link {color: white;}
a:visited {color: yellow;}
a:hover {color: white; background-image: url(linkgover.gif);}
a:active {color: red;}
Урок 10. Эффекты ссылок, списки и навигация 191
#nav, #nav a, #nav li {width: lOOpx; margin: 0; padding: 0;
list-style-type: none;}
li {background-image: url (linkback.gif) ,- border-bottom: 3px
solid white;}
Обратите внимание, что установлено фоновое изображение как для элемента
списка, так и для состояния hover. В результате будет получена панель
навигации с роскошным дизайном и профессиональными визуальными эффектами, как
показано на рисунке 10.18.
1^ working with style - Mozila
у.::'
Т^ГТДЯД
^«•^i.iaixf
> i
Рис. 10.18. Добавление фоновых изображений к элементам списка
и состоянию hover для создания насыщенных графикой эффектов,
которые раньше было невозможно создать без использования языка JavaScript
Значение свойства display якорного элемента с inline (в тексте)
изменено на block (за элементом добавляется разрыв строки). Это
необходимо, чтобы ширина якорного элемента соответствовала ширине
элемента списка. Благодаря этому, фоновое изображение состояния
hover будет отображаться корректно во всех браузерах.
Горизонтальная панель навигации
на основе списка с использованием цвета
В последнем разделе мы использовали объявление display: block;, чтобы
превратить якорный элемент из встроенного элемента в блочный. Воспользовавшись
объявлением display: inline;, можно сделать так, чтобы списки являлись
встроенными, то есть отображались горизонтально, как показано в примере 10.13.
Пример 10.13. Разметка и CSS-cmwiu для горизонтальной панели навигации
на основе списка с использованием цветовых эффектов
<!D0CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/ xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>working with style</title>
192
Языки HTML и CSS
<style type="text/ess">
body {font: 14px Georgia, Times, serif; color: black;}
ulttnavlist {margin-left: 0; padding-left: 0,- white-space:
nowrap,-}
ttnavlist li (display: inline; list-style-type: none;}
ttnavlist a {padding: 3px lOpx;}
ttnavlist a:link, ttnavlist a:visited {color: white;
background-color: orange; text-decoration: none;}
ttnavlist a:hover {color: orange; background-color: yellow;
text-decoration: none,-}
</style>
</head>
<body>
<div id="navcontainer">
<ul id="navlist">
<lixa href ="home.html">Home</a></li>
<lixa href ="products.html">Products</a></li>
<li><a href ="services.html">Services</ax/li>
<lixa href= "about.html">About Us</ax/li>
<lixa href="contact.html">Contact</ax/li>
</ul>
</div>
</body>
</html>
В результате будет получена очень красивая горизонтальная панель навигации,
как показано на рисунке 10.19.
Рис. 10.19. Использование списка и цветовых эффектов
для получения горизонтальной панели навигации на основе списка
Горизонтальная панель навигации
на основе списка с изображениями
Точно такое же переключение фоновых изображений, которое использовалось
в вертикальных списках, можно применить и для горизонтальных списков. Я
немного изменила предыдущую таблицу стилей, добавив фоновые изображения
к состояниям link и hover. Затем я использовала полужирный шрифт белого
цвета для состояний link и hover, чтобы добиться хорошего контраста при
переключении изображений, когда указатель мыши наведен на ссылку, как
показано в примере 10.14.
Урок 10. Эффекты ссылок, списки и навигация
193
Пример 10.14. Панель навигации на основе списка
с использованием фоновых изображений
body {font: 14px Georgia, Times, serif; color: black;}
ulttnavlist {margin-left: 0,- padding-left: 0; white-space:
nowrap;}
ttnavlist li {display: inline; list-style-type: none,-}
#navlist a {padding: 3px lOpx;}
#navlist a: link, ttnavlist a:visited {color: white,-
background-image: url (linkback.gif) ,- text-decoration: none;}
#navlist a-.hover {color: white; background-image:
url (linkhover.gif) ,- text-decoration: none,-}
На рисунке 10.20 представлена элегантная схема навигации.
Ь "
Рис. 10.20. Горизонтальная панель навигации на основе списка
с использованием переключения изображений
Квантовый скачок: состояние hover и браузер Internet Explorer
Используя списки для создания панелей навигации, особенно горизонтальные
списки, вы обнаружите, что существуют поразительные отличия в способе
обработки стилей браузером Internet Explorer в сравнении с браузерами Mozilla,
Firefox, Opera и Safari. К сожалению, браузер Internet Explorer не обновлялся
годами, и в версии 6.0 для операционной системы Windows отсутствует
существенная поддержка языка CSS. В результате, приходится создавать обходные
стили, чтобы гарантировать, что ваша работа будет отлично выглядеть в
максимально возможном диапазоне браузеров (которые описанные здесь).
Существенная проблема браузера IE заключается в том, что селектор :hover
поддерживается только для якорного элемента, хотя остальные браузеры
поддерживают этот селектор для любого элемента. Если бы эта поддержка была
реализована в браузере IE, было бы меньше путаницы и неразберихи при
работе с навигацией на основе списков - не говоря уже о большом количестве
дополнительных возможностей для динамической стилизации списков без
необходимости использования языка JavaScript. Чтобы больше узнать о
динамической навигации на основе списков, например ниспадающей или
плавающей навигации, не работающей в браузере IE, обратитесь к статье «CSS Edge»
Эрика Мейера (Eric Meyer) по адресу http://www.meyerweb.com/eric/css/edge/.
7-1Э56
194 Языки HTML и CSS
Роскошные ссылки, списки и навигация
Необходимо обратить внимание, что методы, используемые в этой главе,
особенно метод применения списков для навигации, являются относительно новой
концепцией в Web-дизайне. Абсолютный факт, что язык CSS позволяет изменять
представление элемента, сводит к минимуму использование изображений для
эффектов.
Узнайте все о CSS-списках на сайте Listamatic - учебное пособие и галерея
лучших навигаций с использованием языка CSS - по адресу
http://css.maxdesign.com.au/listamatic/.
Если вы заинтересуетесь программой, позволяющей создавать некоторые из
этих списков онлайн, посетите страницу List-O-Matic, расположенную по
адресу http://www.accessify.conVtools-and-wizards/Iist-o-matic/list-o-matic.asp.
В следующей главе мы подробнее остановимся на управлении краями и
отступами, что важно для получения контроля над визуальными элементами страницы.
Это поможет нам продолжить изучение более сложных аспектов языка CSS:
разработка макетов страниц.
урок п.
Поля, границы и отступы
Одной из потрясающих возможностей языка CSS является стилизация полей,
границ и отступов. И дело даже не в том, что мы можем стилизовать подобные
детали, а в гибкости, которую мы получаем при использовании стилей.
Считается, что в визуальной модели языка CSS у всех элементов существуют
поля, границы и отступы. Такое возможно благодаря тому, что каждый элемент
формирует блок. Существуют два типа блоков: отдельные блоки (относящиеся
к элементам блочного уровня) и строчные блоки (относящиеся к внутри-
строчным блокам). На рисунке 11.1 показана разница между ними.
Рис. 11.1. Изучение блоков визуальной модели языка CSS
Светло-серый цвет использован для фона, чтобы визуально выделить отдельные
и строчные блоки. Заголовок h2 является отдельным блоком. Ширина блока
равна ширине доступного пространства браузера (шириной блока можно
управлять при помощи свойства width), а с правого края блока размещается разрыв
строки. Строчный блок представлен ссылкой и размещен на одной строке с
окружающим его текстом. Несложно заметить, что его края находятся в
непосредственной близости от содержимого.
Воспользовавшись визуальной моделью языка CSS, известной как блочная модель,
можно применять стили к различным частям блока. Я продемонстрирую
блочную модель в следующем разделе главы, чтобы стало понятным, как эта модель
работает, однако сейчас важно понять, что стилизовать можно не только все
стороны данного блока, но и отдельные стороны.
Поля предоставляют возможность управления полями блока с использованием
как положительных, так и отрицательных значений. Границы позволяют
стилизовать границу блока с использованием предопределенных стилей, а отступы
позволяют добавлять в блок отступы (очень похоже на атрибут cellpaddmg
элемента table). Возможность стилизовать перечисленные аспекты любого
элемента - это одна из причин, по которым язык CSS, с точки зрения
возможности применения стилей к страницам и гибкого управления, является гораздо
более мощным, чем все прежние доступные технологии.
196
Языки HTML и CSS
Исследование блочной модели
Блочная модель - это стандартизированная часть технологии, используемой
в браузерах. Консорциум W3C наблюдает за реализацией стандартов в браузерах,
и поэтому разработал блочную модель, представленную на рисунке 11.2.
Поле (прозрачное)
г
Граница
Отступ
Содержимое
~1
J
— — — Край поля
■ Край границы
Край отступа
Край содержимого
Рис. 11.2. Блочная модель, разработанная консорциумом W3C
Сравните этот рисунок с рисунком 11.1 и мысленно представьте на выделенном
фоне каждого блока все перечисленные части: поля, границы, отступы и область
содержимого. Понимание данного соответствия окажет огромную помощь как
при изучении данной главы, так и последующих глав.
Квантовый скачок: блочная модель в CSS-лизайне
На протяжении всех оставшихся глав мы будем работать с аспектами
блочной модели. Поскольку язык CSS в большинстве своем используется для
визуальной стилизации, понимание блочной модели и способа ее
интерпретации или неправильной интерпретации браузерами становится ключевым
моментом при изучении и, в свою очередь, применении языка CSS к
страницам. В главе 12 «Позиционирование, плавающее размещение и Z-индекс» мы
узнаем, что блочная модель касается не только стилизации полей, границ и
отступов, но и использования языка CSS в качестве инструмента
позиционирования для создания макетов.
Урок 11. Поля, границы и отступы 197
Использование полей
Стилизация полей чаще всего используется для управления расстоянием между
элементами. Обратите внимание, что по умолчанию вокруг содержимого, при
отображении в Web-браузерах, существует определенное пространство, как
показано на рисунке 11.1. Этим пространством можно управлять, изменяя значения
полей элемента body, как показано в примере 11.1.
Пример 11.1. Установка значений полей для элемента body
body {font: 14px Verdana, Arial, Helvetica, sans-serif; color:
white; background-color: black; margin-top: 0; margin-left: 0;
border: 2px solid white;}
hi {font-size: 24px; color: orange;}
h2 {font: italic 20px Georgia, Times, serif; color: #999;
text-indent: 15px;}
Заметьте, что после О значение длины, например рх или ет, не
указывается, поскольку для значения О длина не требуется; это подразумеваемое
значение.
После установки значения верхнего и левого полей элемента body в 0, все
содержимое элемента body сместится вместе с его дочерними элементами, как
показано на рисунке 11.3.
Рис. 11.3. Задание нулевых значений для верхнего и левого полей элемента
body - обратите внимание, что белая граница вокруг элемента body
прижата к верхней и левой стороне области просмотра
Посмотрите на рисунок 11.3 и обратите внимание, что все дочерние элементы
прижаты к левой стороне, кроме элемента h2, у которого значение свойства
text-indent равняется 15 пикселам. Однако у элемента абзаца и элемента hi,
которые являются дочерними элементами элемента body, значения полей не
заданы, поэтому они прижаты к левой и верхней стороне. Или нет? Что это за
расстояние между элементом hi и внешней границей элемента body? Хотя
198
Языки HTML и CSS
очевидно, что элемент body прижат к верхней стороне окна просмотра, этого не
скажешь об элементе hi. Чтобы первый элемент был прижат к верхней границе
родительского элемента, в браузерах Mozilla предполагается, что значение
свойства margin-top для первого элемента должно быть равным 0. В браузере Internet
Explorer данное предположение игнорируется и в результате элемент hi, как и
остальные элементы, прижимается к верхней и левой стороне элемента body.
В примере 11.2 приведены стили, которые созданы для демонстрации
использования полей для элементов, включая обнуление значения поля для элемента hi.
Пример 11.2. Установка ряда полей и значений для демонстрации их использования
body {font: 14px Verdana, Arial, Helvetica, sans-serif; color:
white; background-color: black; margin-top: 0; margin-right: 0;
margin-bottom: 0; margin-left: 0; border: 2px solid white;}
hi {font-size: 24px; color: orange; margin-top: 0;
margin-right: lOOpx; border: 2px solid white;}
h2 {font: italic 20px Georgia, Times, serif; color: #999;
text-indent: 15px;}
p (margin-left: lOOpx; margin-top: 5px; margin-bottom: 0;
border: 2px solid yellow;}
На рисунке 11.4 показано, как применяются поля. Отображение некоторых
границ включено для визуализации полей. Подробнее о границах мы узнаем далее
в этой главе.
Рис. 11.4. Использование полей для ряда элементов,
вклкгчая элементы body, hi и элементы абзаца
Урок 11. Поля, границы и отступы
199
Использование отрицательных значений
при указании полей
При указании полей можно использовать отрицательные значения. Этот способ
полезен для решения определенных дизайнерских задач, но его следует
использовать с осторожностью, поскольку браузеры обрабатывают отрицательные
значения полей по-разному.
В основном, отрицательные значения полей используются для выполнения
коррекции внешнего вида дизайна, создания обходных путей при
центрировании текучих дизайнов в макете или для вынесения определенных элементов за
пределы блока, в котором они находятся, как показано в примере 11.3.
Пример 11.3. Использование отрицательных значений полей
для вынесения содержимого за пределы элемента-контейнера
body {font: 14px Verdana, Arial, Helvetica, sans-serif; color:
white; background-color: black; margin-top: 30px; margin-right:
30px; margin-bottom: 30px; margin-left: 130px; border: 2px
solid white;}
p {margin-left: -65px; margin-top: 5px; margin-bottom: 0;}
Теперь поля абзаца смещены относительно левого поля элемента body, как
показано на рисунке 11.5.
р wofking with style - MoziUa •* * . -
I married early, and was happy to find In my wife a disposition not uncongenial with my own,
Observd j my partiality for domestic pets, she lost no opportunity of procuring those of the most
agreeabk kind. We had birds, gold fish, a fine dog, rabbits, a small monkey, and a cat.
This latU ■ was a remarkably large and beautiful animal, entirely black, and sagacious to an
astonisri lg degree. In speaking of his Intelligence, my wife, who at heart was not a tittle tinctured
with sup rstltion, made frequent allusion to the ancient popular notion, which regarded all black
cats as »itches In disguise. Not that she was ever senous upon this point - and I mention the
matter a all for no better reason than that It happens, just now, to be remembered.
Pluto - tt is was the cat's name - was my favorite pet and playmate. I alone fed him, and he
attended me wherever I went about the house. It was even with difficulty that I could prevent him
from foil ■•' " ■■" ■—-■■-
Рис. 11.5. Использование отрицательных
значений полей для вынесения содержимого за пределы
блока-контейнера - в данном случае, элемента body
200
Языки HTML и CSS
Квантовый скачок: решения с использованием отрицательных
значений полей для дизайнеров
Если вы заинтересовались использованием отрицательных значений полей
для решения известных дизайнерских задач, в Интернете существует
несколько отличных статей. Статья Райана Брила (Ryan Brill) «Creating
Liquid Layouts with Negative Margins» - прочитайте ее сейчас или
отложите, пока не познакомитесь со следующими двумя главами (статья находится
по адресу http://www.alisapart.com/articles/negativemargins/). При помощи
отрицательных значений полей также можно центрировать элементы, что
описывается в статье Роба Чанданайз (Rob Chandanais) по адресу
http://www.bluerobot.com/web/css/center2.html. Как и в случае с множеством
других проблем языка CSS, способы реализации свойства браузерами
отличаются. Отрицательные значения полей попадают в эту категорию,
поскольку эти значения интерпретируются по-разному различными
браузерами. Поэтому, используйте отрицательные значения с осторожностью -
хороший практический совет: если существует более простой способ для
достижения цели, используйте его.
Свойство-сокрашение margin
У свойств полей существует сокращенный эквивалент - свойство margin.
Обратите внимание, что свойства-сокращения языка CSS имеют собственные
причуды, например порядок значений. Свойство margin - не исключение.
При использовании свойства margin значения полей задаются именно в этом
порядке: верх, право, низ, лево. Популярная символика, используемая в
индустрии, - «TRouBLe». В примере 11.3 установлены все «полноформатные»
свойства для элемента body:
body {margin-top: ЗОрх; margin-right: ЗОрх; margin-bottom:
ЗОрх; margin-left: 130px;}
Хотя «полноформатные» свойства необязательно указывать в определенном для
полей порядке, полагаю, вам будет полезно увидеть, как этот «полноформатный»
стиль преобразуется в сокращенную запись:
body {margin: ЗОрх ЗОрх ЗОрх 130рх;}
Обратите внимание, что значения не разделяются запятыми и все значения будут
применены в порядке TRBL.
Постойте, есть еще кое-что. Сокращенную форму записи можно сократить еще
больше, основываясь на том факте, что если не указано значение для какой-либо
стороны, автоматически будет использовано значение для противоположной
стороны:
body {margin: ЗОрх 20рх;}
Урок 11. Поля, границы и отступы
201
Б результате значения полей сверху и снизу будут равны 30 пикселам, а справа
и слева - 20 пикселам. Но что произойдет, если указать три значения?
body {margin: ЗОрх 20рх 70рх;}
Значение левого поля будет взято из значения правого поля, поэтому в
результате получим: значение верхнего поля - 30 пикселов, правого - 20 пикселов,
нижнего - 70 пикселов, левого - 20 пикселов.
Если значения всех полей одинаковы, просто укажите это значение:
body {margin: ЮОрх; }
В результате значения всех полей элемента body будут равны 100 пикселам.
Можно также использовать значения, выраженные в процентах:
body {margin: 2 0%;}
В результате значения всех полей элемента body будут равны 20%. Наконец,
запомните, что для значения 0 не нужно указывать длину или проценты:
body {margin: 0 ЗОрх 20рх 0;}
Стилизация границ
В предыдущих главах использованы границы, чтобы помочь вам наглядно
представить концепции языка CSS. В этой части мы рассмотрим подробности
стилизации границ.
Стилизация границ включает в себя стилизацию сторон, толщины, начертания и
цвета. Для этого используются различные свойства границы: border-width,
border-style и border-color. Сторона границы указывается между двумя
составляющими названия свойства: border-left-color, border-right-style
и border-top-width. Более изящный подход по использованию свойств
границы описан в части «Свойство-сокращение border» этой главы.
Толщина границы
Толщину границы можно указать с использованием значений длины,
например пикселов или единиц размеров шрифта или ключевых слов thin, medium
или thick:
border-bottom-width: 2рх;
border-left-width: thick,-
Начертание границы
А вот это действительно забавно. В настоящее время восемь значений отвечают
за необычное начертание границы, а два дополнительных значения
используются для свойства border-style, как показано в таблице 11.1.
202
Языки HTML и CSS
Табл. 11.1. Начертания границ в языке CSS
Стиль
dotted
dashed
solid
double
groove
ridge
inset
outset
hidden
none
Эффект
Ряд точек
Ряд штрихов
Сплошная линия
Две сплошные линии
Углубление на холсте
Выступ на холсте
Врезанный вид
Рельефный вид
Скрытая граница, которую можно отобразить при помощи скрипта
Граница никогда не будет видна
А вот пример использования свойства начертания границы и соответствующего
значения:
border-right-style: dotted
1Лвет границы
Цвета можно задавать при помощи любых доступных значений:
шестнадцатеричных, сокращенных шестнадцатеричных, RGB-значений, RGB-процентов
и поддерживаемых названий цветов:
border-top-color: #808080;
А теперь все вместе!
В примере 11.4 продемонстрировано использование различных комбинаций
свойств границы.
Пример 11.4. Комбинирование стилей свойств границы
body {font: 14px Verdana, Arial, Helvetica, sans-serif; color:
white,- background-color: black; margin-top: 0;}
hi {font-size: 24px,- color: orange; border-left-width: 3px;
border-left-color: red; border-left-style: dotted;
Урок 11. Поля, границы и отступы
203
border-bottom-width: thick; border-bottom-color: lime-
border-bottom- style : insert;}
h2 {font: italic 20px Georgia, Times, serif; color: #999;
text-indent: 15px; border-bottom: thin; border-bottom-
style :dotted; border-color: fuschia;}
p {border-left-widht: medium; border-left-style: solid;
border-left-color: blue;}
Результаты использования всех стилей границы показаны на рисунке 11.6.
■.«*2LZ?i£2r ■"J.J.'ilijajjj
^ working with style - Microsoft Internet Explorer.
File Edit View Favorites Tools Help
The Black Cat
By Edgar Allen Poe
II married early, and was happy to find in my wife a disposition not uncongenial with my own.
Observing my partiality for domestic pets, she lost no opportunity of procuring those of the
most agreeable kind. We had birds, gold fish, a fine dog, rabbits, a small monkey, and a cat.
This latter was a remarkably large and beautiful animal, entirely black, and sagacious to an
astonishing degree. In speaking of his intelligence, my wife, who at heart was not a little
tinctured with superstition, made frequent allusion to the ancient popular notion, which
regarded all black cats as witches in disguise. Not that she was ever serious upon this point -
and I mention the matter at all for no better reason than that it happens, just now, to be
remembered. i
jPluto - this was the cat's name - was my favorite pet and playmate. I alone fed him, and he
[attended me wherever I went about the house. It was even with difficulty that I could prevent
.him from following me through the streets.
Рис. 11.6. Применение границ для определенных сторон
и использование значений толщины, начертания и цвета
Свойство-сокрашение border
Свойство-сокращение border - это наиболее расширенное сокращение,
используемое для отдельного свойства. Существует несколько вариантов сокращений.
Сокращенная форма записи для стороны, толщины,
начертания и цвета
У каждой категории сокращений существует соответствующая сокращенная
форма записи, как показано ниже:
border-right, border-left, border-top, border-bottom
border-width
border-style
204 Языки HTML и CSS
border-color
Поэтому можно записать так:
border-right: lpx dotted red;
Правая граница элемента с указанным свойством будет обладать следующими
характеристиками: толщина 1 пиксел, пунктирная, красного цвета.
Свойство border
Это свойство-сокращение устанавливает толщину, начертание и цвет для всех
четырех сторон границы выбранного элемента:
border: thick ridge white,-
Результаты показаны на рисунке 11.7.
Рис. 11.7. Использование свойства-сокращения border
В отличие от полей (и отступов) в самом свойстве border нельзя
указать различную толщину для сторон. Если вы хотите стилизовать одну
сторону границы совершенно иначе, чем три остальные стороны, просто
добавьте еще одно правило, воспользовавшись «полнсформатным»
свойством, например border-right-width.
Использование отступов
Отступы позволяют стилизовать промежуток между содержимым и его границей.
Обратите внимание, что в предыдущих примерах этой главы элементы были
прижаты к своим границам и полям. Отступы помогают решить эту проблему.
Отступ можно добавить к любой отдельной стороне, используя значения длины,
например пикселы или проценты. Существуют следующие отдельные свойства
отступа: padding-top, padding-right, padding-bottom и padding-left.
Использование каждого из этих свойств продемонстрировано в примере 11.5.
Пример 11.5. Использование свойств отступа для добавления пустого пространства
body {font: 14px Verdana, Arial, Helvetica, sans-serif; color:
white; background-color: black; margin-top: lOpx;}
hi {font-size: 24px; color: orange; border-bottom: 2px dotted
lime; padding-bottom: lOpx;}
Урок 11. Поля, границы и отступы
205
h2 {font: italic 20px Georgia, Times, serif; color: #ccc-
text-indent: 15px;}
p {border: thin solid orange; padding-top: 15px; padding-right:
30px; padding-bottom: 0; padding-left: 30px;}
Обратите внимание, как отступ отделяет текст элемента hi от границы,
а также на отступы сверху, справа, снизу и слева элемента абзаца, как
показано на рисунке 11.8.
woiking with style ■ Mozilla
The Black Cat
By Edgar Allen Рое
I married early, and was happy to find In
my wife a disposition not uncongenial
with my own. Observing my partiality for
domestic pets, she lost no opportunity
of procuring those of the most agreeable
kind. We had birds, gold fish, a fine dog,
. and a cat
а.Ч •ДЁЯЕжчШуАН RUli&i i
:jxj
Рис. 11.8. Использование отступа
для добавления пустого пространства
Свойство-сокращение padding
Для задания отступов можно также применять сокращенную форму записи,
используя свойство padding. Сокращенная форма записи для задания отступов
очень сильно похожа на сокращенную форму записи для заданий полей.
Это означает, что важен порядок указания значений, иначе вы очень быстро
столкнетесь с проблемой (TRouBLe)! Для функционирования механизма
сокращенной записи необходимо размещать значения в следующем порядке: верхняя
сторона, правая сторона, нижняя сторона, левая сторона:
р {padding: 15px ЗОрх 25рх 0;}
Данное правило установит следующие отступы для абзаца: 15 пикселов сверху,
30 пикселов справа, 25 пикселов снизу и 0 пикселов слева, как показано на
рисунке 11.9.
206
Языки HTML и CSS
Рис. 11.9. Использование свойства-сокращения padding
для управления отступами абзаца
Можно также использовать комбинации из двух и трех значений - принцип
применения значений точно такой, как для свойства-сокращения margin,
описанного ранее в этой главе. Наконец, если указано всего лишь одно значение, оно будет
применено ко всем четырем сторонам блока элемента.
Получение большего контроля...
Безусловно, начало изучения блочной модели и понимание принципов работы
элементов языка CSS переносит вас еще дальше по пути к получению большего
контроля над дизайнами.
Я хочу вам напомнить о важности корректной структуры документа. Из-за
технологии переключения режимов браузера в соответствии с объявлениями
DOCTYPE, необходимо убедиться, что используется корректное объявление
DOCTYPE, позволяющее избежать проблем с блочной моделью в браузере IE 6.O.
Если вы использовали методы, описанные в данной книге, вам об этом не нужно
беспокоиться. Понятно? В моем помешательстве на самом деле есть логика.
В следующей главе мы познакомимся с чашей Грааля языка CSS:
позиционированием. Вы готовы? Тогда поехали!
УРОК 12.
Позиционирование, плавающее
размещение и Z-инлекс
Если вы с пользой провели время, добавляя на страницы цвета, фоны, текстовые
стили и поля, то веселье только началось. Мы углубим наши знания (которые к
данному моменту уже должны быть достаточно твердыми), чтобы использовать
наиболее важные аспекты языка CSS, применяемые на протяжении последних
нескольких лет.
Комбинация технологий, с которыми мы познакомимся в этой главе, формирует
основу, необходимую для создания великолепных CSS-макетов, а не макетов на
основе таблиц, так часто обсуждаемых в этой книге. К счастью, в современных
браузерах поддержка языка CSS выполнена достаточно неплохо - и у нас
накоплено достаточно знаний для применения обходных путей. Все это позволяет
применять описываемые методики для создания потрясающих страниц.
Позиционирование относится к схеме языка CSS, которая позволяет использовать
элементы для создания блоков и перемещать эти блоки относительно документа
или браузера. Мы узнаем, что это за схемы и как их применять.
Плавающее размещение относится к методике языка CSS, которая позволяет
располагать элемент справа или слева. Текст документа может обтекать данный
элемент. Вероятнее всего, вы знакомы с этим на примере изображений.
Плавающее изображение можно выровнять по правому краю и текст будет обтекать
изображение. Добавьте небольшой отступ и получите отличный внешний вид.
Применение плавающего размещения связано с использованием плавающих
элементов div, позволяющих употреблять плавающие блоки для навигации или,
что даже более рискованно, для создания нескольких столбцов, которые можно
использовать, с позиционированием или без него, в дизайне различных макетов.
Z-индекс служит способом размещения блоков элементов вдоль оси z. Пока
было рассказано только про оси х и у - ось х отвечает за горизонтальное
размещение, а ось у - за вертикальное. Ось z представляет третье измерение.
Представьте это следующим образом: вы держите перед собой колоду карт.
Порядок, в котором располагаются карты от самой ближней и до самой дальней, -
отличная аналогия с z-индексом. Используя z-индекс, можно буквально
накладывать элементы друг на друга и смещать их. Это полезная возможность для
создания макетов и эффектов, однако, обычно z-индекс используется совместно с
языком JavaScript. Мы немножко поиграем с ним, поскольку это интересный аспект
языка CSS. Хорошо, тогда - представление продолжается!
208
Языки HTML и CSS
Введение в позиционирование
К этому времени вы уже знаете, что я в определенной степени интересуюсь
подробностями. Я считаю очень важным изучать предмет на уровне вопросов
«почему?» и «как?». Поэтому перед тем, как рассказать вам о способах
позиционирования элементов, хотелось бы ввести новую терминологию и ключевые понятия,
которые важны для работы с позиционированием. Конечно, вам не терпится
приступить к позиционированию элементов и работе с макетами, но потерпите
немного. Уверяю вас, что в моей нелогичности есть порядок.
Во-первых, важно запомнить, что CSS-позиционирование является частью языка
CSS, а не отдельной технологией. Многие люди считают позиционирование
отдельной концепцией, называя ее CSS-P или как-то по-другому, однако это не
отдельная часть языка CSS.
Фактически, позиционирование - это сердце языка CSS - та часть, которая
предоставляет максимальные возможности по управлению внешним видом
страницы. Мнение насчет разделения позиционирования и языка CSS является
ошибочным, оно, в основном, возникло из-за плохой реализации поддержки
позиционирования, и поэтому позиционирование практически не использовалось
вплоть до нескольких последних лет.
К счастью, мы уже прошли это и можем начать серьезное рассмотрение
позиционирования. Остались ли еще проблемы в браузерах? Будьте уверены, что они
есть, и я буду рассказывать о некоторых из них в этой и следующей главах.
Я помогу вам быстро уловить смысл тех моментов, на которые люди потратили
годы, пытаясь понять их. Я буду использовать несколько терминов для описания
позиций и их назначения. Самым большим препятствием для многих людей,
желающих использовать язык CSS в качестве средства для создания макетов
страниц, является терминология - иногда она сбивает с толку, вводит в заблуждение
или совершенно непонятна.
Схема позиционирования языка CSS позволяет использовать четыре типа
позиционирования:
• Абсолютное (Absolute).
• Относительное (Relative).
• Статическое (Static).
• Фиксированное (Fixed).
Для позиционирования блока можно воспользоваться свойствами top, bottom,
left и right с определенными значениями.
Урок 12. Позиционирование, плавающее размещение и Z-индекс
209
В этой главе мы подробно рассмотрим, как работает каждый из этих типов
позиционирования. Однако для начала немножко поговорим о нормальном потоке,
блоках-контейнерах и окне просмотра браузера. Полагаю, это немного скучно, но,
не смотря на это, данные вопросы необходимо обсудить.
Нормальный поток
Термин нормальный поток обозначает обычное поведение браузера.
Несомненно, вы заметили, что по умолчанию все содержимое выравнивается по левой
стороне браузера, пока это поведение не будет изменено при помощи языка
HTML или CSS. Рассмотрим пример 12.1.
Пример 12.1. Нестилизованное содержимое, позволяющее наглядно представить
нормальный поток в браузере
<!D0CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>working with style</title>
</head>
<body>
<hl>The Black Cat</hl>
<h2>By Edgar Allen Poe</h2>
<p> I married early, and was <a href=
"http://www.poemuseum.org/">happy to find</a> in my wife a
disposition not uncongenial with my own. Observing my
partiality for domestic pets, she lost no opportunity of procuring
those of the most agreeable kind. We had birds, gold fish, a
fine dog, rabbits, a small monkey, and a cat.</p>
<p>This latter was a <a href="http://www.poemuseum.org/"> re-
markably</a> large and beautiful animal, entirely black, and
sagacious to an astonishing degree. In speaking of his
intelligence, my wife, who at heart was not a little tinctured with
superstition, made frequent allusion to the ancient popular
notion, which regarded all black cats as witches in disguise. Not
that she was ever serious upon this point - and I mention the
matter at all for no better reason than that it happens, just
now, to be remembered.</p>
</body>
</html>
210
Языки HTML и CSS
Поскольку у вас уже есть представление о блочной модели, вы теперь можете
заметить, как все блочные элементы (заголовки и абзацы) размещаются друг над
другом и выравниваются по левой стороне.
Встроенные элементы (ссылки) не отрываются от потока. Если изменить
размеры окна браузера, они просто займут свою новую позицию, не разрывая при
этом строку.
На рисунке 12.1 показан документ в окне браузера, а на рисунке 12.2 показан тот
же документ, но уже в браузере с измененными размерами окна. Обратите
внимание, как текст заполняет доступное пространство, при этом он всегда
выравнивается по левой стороне.
Посмотрев на эти примеры, попробуйте сами: откройте простой документ, не
содержащий таблиц или CSS-позиционирования, установите и измените размеры
окна браузера. То, что вы увидите, - это нормальный поток элементов в браузере.
%Э woiking with style - Mozilla Fiiefox
File Edil View Go Bookmarks .Tools Help
1эШ
The Black Cat
By Edgar Allen Рое
I married early, and was happy to find in my wife a disposition not uncongenial with my own.
Observing my partiality for domestic pets, she lost no opportunity of procuring those of the most
agreeable kind. We had birds, gold fish, a fine dog, rabbits, a small monkey, and a cat.
This latter was a remarkably large and beautiful animal, entirely black, and sagacious to an
astonishing degree, bi speaking of his intelligence, my wife, who at heart was not a little tinctured
with superstition, made frequent allusion to the ancient popular notion, which regarded all black
cats as witches in disguise. Not that she was ever serious upon this point - and I mention the
matter at all for no better reason than that it happens, just now, to be remembered.
Рис. 12.1. Нестилизоватшй документ в нормальном потоке
Урок 12. Позиционирование, плавающее размещение и Z-индекс
211
File £dit View Во Bookmarks Tools
I married early, and was happy to j^J
find in my wife a disposition not
uncongenial with my own.
Observing my partiality for
domestic pets, she lost no , \
opportunity of procuring those of
the most agreeable kind. We had
birds, gold fish, a fine dog,
rabbits, a small monkey, and a
cat. ж\
Рис. 12.2. Изменение размеров окна браузера
все равно приводит к выравниванию текста полевой стороне
Блоки-контейнеры
Еще одним важным понятием при работе с CSS-позиционированием является
блок-контейнер. Блок-контейнер - это любой родительский блок для элемента,
который вы пытаетесь позиционировать. Рассмотрим пример 12.2.
Пример 12.2. Понятие блоков-контейнеров
<div id="content">
<hl>The Black Cat</hl>
<h2>By Edgar Allen Poe</h2>
<p> I married early, and was <a href="http:// www.poemuseum.
org/">happy to find</a> in my wife a disposition not
uncongenial with my own. Observing my partiality for domestic pets,
she lost no opportunity of procuring those of the most
agreeable kind. We had birds, gold fish, a fine dog, rabbits, a
small monkey, and a cat.</p>
<p>This latter was a <a href="http://www.poemuseum.org/"> re-
markably</a> large and beautiful animal, entirely black, and
sagacious to an astonishing degree. In speaking of his
intelligence, my wife, who at heart was not a little tinctured with
superstition, made frequent allusion to the ancient popular
notion, which regarded all black cats as witches in disguise. Not
that she was ever serious upon this point - and I mention the
matter at all for no better reason than that it happens, just
now, to be remembered.</p>
</div>
212 Языки HTML и CSS
Как видно из примера, все содержимое размещено в элементе div, значение
свойства id которого установлено в content (блестяще?). Все блоки, расположенные
в элементе div с идентификатором content, теперь содержатсяв элементе div.
Предположим, что мы разместили контейнер вокруг элемента с
идентификатором content:
<div id="main">
<div id="content">
</div>
</div>
Элемент div с идентификатором content теперь содержится в элементе div
с идентификатором main, который стал блоком-контейнером для элемента div
с идентификатором content.
Думаю, пока все достаточно просто. Однако, если вы не можете это представить,
вспомните лакированные китайские шкатулки, которые вкладываются друг в
друга. В большой шкатулке находится средняя шкатулка, а в средней шкатулке
находится маленькая шкатулка. Таким образом, блоком-контейнером для маленькой
шкатулки является средняя шкатулка, для которой блоком-контейнером является
большая шкатулка.
Важно понимать эту концепцию, поскольку при использовании
позиционирования блок-контейнер элемента может существенно влиять на то, как на самом деле
позиционируется элемент или элементы, содержащиеся в нем.
На мгновение вернемся к примеру 12.1. В примере нет очевидного блока-
контейнера, не так ли? Вы удивитесь, если я скажу, что в этом документе все-таки
есть блок-контейнер? И вот почему: если блок-контейнер не указан, блоком-
контейнером является корневой элемент. Мы знаем, что корневой элемент - это
элемент html, который и является блоком-контейнером.
Квантовый скачок:
Почему В том случае, когда не указаны другие блоки-контейнеры, блоком-
контейнером является элемент html? С точки зрения позиционирования, это
происходит потому, что существуют стандартные стили браузера для
множества элементов, включая элемент html. Дополнительную информацию можно
найти в главе 7 «Использование языка CSS». У каждого браузера существует
стандартная таблица стилей, благодаря которой даже без применения стилей
будет выполнена визуальная стилизация. Вот почему заголовки, абзацы,
ссылки и другие элементы отображаются при помощи определенного шрифта, его
размера и жирности. Работая с позиционированием, кажется, что позиция
определенных блоков устанавливается относительно сторон браузера (также
называемых «хромом»). На самом деле, позиционирование определенных
блоков, находящихся за пределами контейнера, происходит благодаря
стандартным стилям, описанным для элемента html.
Урок 12. Позиционирование, плавающее размещение и Z-индекс
213
Для рисунка 12.3 просто стилизован элемент html, заданием для него границы
шириной в 2 пиксела. Обратите внимание, как различные браузеры
интерпретируют элемент html.
amtmwt • ' _joj.x|
£йе' £d* View ^o goolunarks lools b
The Black Cat
By Edgar Allen Рое
I married early, and was happy to
End in my wife a disposition not
uncongenial with my own. Observing
rny partiality for domestic pets, she
Ы
L.J File Edit View Navigation Bookrr. e? X
^Л'>'.|; v.(»i 'л1?' * Ooera
Backup mail, rules, Shop for Kitchen!
witn superstition, made trequent auusion
to the ancient popular notion, which
regarded all black cats as witches in
disguise. Not that she was ever serious
upon this point - and I mention the
matter at all for no better reason than
that it happens, just now, to be
remembered.
j Ffe , Edit View Fevontes 1 **
The Black Cat
By Edgar Allen Рое
I married early, and was happy to
End in my wife a disposition not
uncongenial with my own.
Observing my partiality for
Рис. 12.3. Слева направо: браузеры Firefox, Opera и Internet Explorer 6.0- обратите
внимание, как браузеры Firefox и Opera интерпретируют элемент html и что его
стилизованные границы принадлежат документу, тогда как в браузере IE нижняя
и левая части элемента включают области браузера, например полосы прокрутки
Нельзя сказать, что реализация браузера IE является неправильной, хотя и кажется
странной, поскольку в спецификациях точно не указано, как браузеры должны
реализовывать блоки-контейнеры. Существует море причин для понимания
необходимости использования позиционирования, а также его применения.
Окно просмотра браузера
Окно просмотра браузера - это окно браузера, в котором отображается содержимое
документа. Это достаточно простое понятие, однако, повторюсь, это понятие
отличается от понятия блоков-контейнеров.
При позиционировании, в некоторых случаях, блоки элементов
позиционируются относительно окна просмотра, а не относительно нормального потока или
блоков-контейнеров. Поэтому, необходимо иметь общее представление об окне
просмотра, как показано на рисунке 12.4.
Поведение браузера, при котором полосы прокрутки включаются в окно
просмотра, когда содержимое длиннее или шире доступного
пространства окна просмотра, считается стандартным. В этом смысле
браузеры ведут себя по-разному, отчасти из-за нестрогих принципов,
описывающих идеальное поведение браузеров. В результате, возникнет
несогласованность при просмотре дизайна пользователями, независимо от
используемого метода.
214
Языки HTML и CSS
walking with style - Mazilla Fiiefott ,
File £dit View (3o bookmarks Jools Help
Qj | U file:///C7Documents^20and%2 jj j|Gl
О
Ц> -
Bookmarks
Search. j
В Personal Toolbar
Q CSS 2.1 Qui
Q HTML 4 01
В I Search and Dire
(J Netscape Se.
Q AltaVisla
[j Ask Jeeves
fj Google
[j GoTo
Q HotBot
|j LookSmart
[ Lycos
o|
A
—I
d
Г
Done
The Black Cat
By Edgar Allen Рое
I married early, and was happy to find in my wife a disposition
not uncongenial with my own. Observing my partiality for
domestic pets, she lost no opportunity of procuring those of the
most agreeable kind. We had birds.Jgold fish, a fine dog,
rabbits, a small monkey, and a cat
This latter was a remarkably large and beautiful animal, entirely
black, and sagacious to an astonishing degree. Ь speaking of his _»j
Рис. 12.4. Браузер Firefox с боковой панелью, меню и строкой состояния;
окно просмотра - это только то окно, в котором отображается документ
Абсолютное позиционирование:
относительно корневого элемента
Достаточно терминологии. Настало время повеселиться и воспользоваться
позиционированием! Абсолютное позиционирование подразумевает
позиционирование блока элемента относительно его блока-контейнера. Когда для какого-либо
элемента применяется абсолютное позиционирование, этот элемент полностью
выпадает из нормального потока. Проще говоря, это означает, что любой
позиционируемый блок всегда будет позиционирован относительно его явного
контейнера или относительно корневого элемента html (но не окна просмотра),
независимо от остального содержимого страницы.
Ну, хорошо! Теперь вы поймете, почему вначале было потрачено время для
изучения терминологии. В примере 12.3 заголовок и абзац были размещены внутри
блока-контейнера, а затем позиция блока была смещена на 100 пикселов слева
и на 50 пикселов сверху.
Пример 12.3. Абсолютное позиционирование блока относительно корневого элемента
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
Урок 12. Позиционирование, плавающее размещение и Z-индеке
215
<title>working with style</title>
<style type="text/css">
icontent {
position: absolute;
left: lOOpx;
top: 50px;
border: lpx solid red;
}
</style>
</head>
<body>
div id="content">
<p> I married early, and was <a href="http://www.poemu-
seum.org/">happy to find</a> in my wife a disposition not
uncongenial with my own. Observing my partiality for domestic
pets, she lost no opportunity of procuring those of the most
agreeable kind. We had birds, gold fish, a fine dog, rabbits, a
small monkey, and a cat.</p>
</div>
</body>
</html>
Поскольку больше никаких блоков не определено явно, блок будет
позиционирован относительно корневого элемента html. Снимок экрана окна браузера, без
«хрома», был загружен в программу Photoshop, и теперь можно наглядно
представить абсолютное позиционирование блока относительно блока-контейнера, как
показано на рисунке 12.5. На рисунке 12.6 показан тот же блок, но уже вместе
с другими элементами страницы.
Л
Ц
■ 1 г,
!
0 150
1,i.1,111
100, , , ИБО 1200 1250 1300 1350 1400 1450
The Black Cat
[ married early, and was happy to find in mv wife a disposition
not uncongenial with my own. Observing my partiality for
domestic pets, she lost no opportunity of procuring those of
the most agreeable kind. We had birds, gold fish, a fine dog,
rabbits, a small monkey, and a cat.
1500
Рис. 12.5. Абсолютное позиционирование
элемента dive идентификатором content
216
Языки HTML и CSS
I© woiking with style - Mozilla Fiiefox
file Edit View Go Bookmarks Tools Help
•*V *s»C
The Black Cat
This latter was a remarkably large and beautiful animal, entirely black, and
sagacious to ariastQnishirip.jit.grae-Jn^nftakmgj^lmunteffigau^my wife,
who at heart w,
allusion to the г
witches in disg;
mention the ma
to be remembe ^rnsrne^ early, and was happy to find in my wife
a disposition not uncongenial with my own
Observing my partiality for domestic pets, she lost^ I alone
no opportunity of procuring those of the most
with difficulty tragreeable kind. We had birds, gold fish, a fine
dog, rabbits, a small monkey, and a cat.
Done
Pluto - this was
fed him, and he
lent
:s as
• and I
just now,
^as even
ie streets
Л
Рис. 12.6. Абсолютное позиционирование блока с заданной шириной - содержимое
размещается в блоке, позиция которого не изменяется, не смотря на другие
элементы документа. При этом, блок отображается безупречно - это
означает, что он удален из нормального потока
Абсолютное позиционирование:
относительно другого блока
Возвращаясь к предыдущему примеру, в котором описан блок-контейнер для
блока с содержимым, мы можем продвинуться дальше и узнать, как блок с
абсолютным позиционированием размещается только относительно его блока-
контейнера, как показано на примере 12.4.
Пример 12.4. Абсолютное позиционирование блока относительно блока-контейнера
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>working with style</title>
<style type="text/css">
#main {
position: absolute;
left: 50px;
top: 20px;
border: lpx solid green;
}
Урок 12. Позиционирование, плавающее размещение и Z-индекс 217
ttcontent {
position: absolute;
left: ЮОрх;
top: 50px;
width: ЗООрх;
border: lpx solid red;
background-color: #ccc;
}
ul,li,a {
list-style-type: none;
display: inline;
text-decoration: none;
}
</style>
</head>
<body>
<div id="main">
<div id="nav">
<ul>
<lixa href = "home.html">Home</ax/li>
<li><a href ="products .html">Products</ax/li>
<lixa href ="services .html">Services</ax/li>
<lixa href="about .html">About As</ax/li>
<lixa href="contact.html">Contact</ax/li>
</ul>
</div>
<div id="content">
<hl>The Black Cat</hl>
<p> I married early, and was <a href="http://www.poemu-
seum.org/">happy to find</a> in my wife a disposition not
uncongenial with my own. Observing my partiality for domestic
pets, she lost no opportunity of procuring those of the most
agreeable kind. We had birds, gold fish, a fine dog, rabbits, a
small monkey, and a cat.</p>
</div>
</div>
</body>
</html>
В этом примере блок-контейнер с идентификатором main абсолютно
позиционирован на 50 пикселов слева и 20 пикселов сверху. Блок навигации совсем не
позиционируется, но он содержится внутри блока с идентификатором main и
поэтому отображается в своем блоке как обычно. Были добавлены несколько
стилей, чтобы продемонстрировать все это вместе. Наконец, для элемента div с
идентификатором content используется абсолютное позиционирование.
Посмотрим, что у нас получилось, на рисунке 12.7.
218
Языки HTML и CSS
i
ol
0 -
П
0 -
0]
П
5 -
0]
Fl
0 -
0]
zl
5 -
0]
3~z
ISO
ilrlilililih
0
r
K.
50 1100
if ih 1,1 ill 111,! ill
^\
*J Home Pre
r
С
150 |200 |250 1300 1350 1400 1450 1500
Li.i.1,1,1 '.I, i,l и il ihli hi il,l il 11, l il ,1 ih l il.lil 11 ,l ,m,
ducts Services About Us Contact
-\
У
The Black Cat
I married early, and was happy to find in my wife
a disposition not uncongenial with my own
Observing my partiality for domestic pets, she losl
no opportunity of procuring those ofthe most
agreeable kind. We had birds, gold fish, a fine
dog, rabbits, a small monkey, and a cat.
..—Л ....
4
Рис 12.7. Абсолютное позиционирование элемента div
с идентификатором content относительно блока-контейнера
Обратите внимание на две окружности на рисунке. Первая окружность
обозначает начальную точку блока-контейнера с идентификатором main. Вторая
окружность обозначает начальную точку блока с идентификатором content.
Обратите внимание на позиционирование блока с идентификатором content
относительно блока-контейнера: 100 пикселов от левой стороны блока-
контейнера и 50 пикселов от верхней стороны блока-контейнера.
Теперь блок расположен в 150 пиксела слева и 70 пиксела сверху. И это понятно,
поскольку он был позиционирован относительно позиции блока-контейнера,
а не элемента html или окна просмотра браузера.
Для блока-контейнера не обязательно использовать абсолютное
позиционирование. Описанная схема позиционирования остается прежней,
независимо от типа позиционирования: блок с абсолютным позиционированием
всегда позиционируется относительно его блока-контейнера, и он всегда
выпадает из нормального потока, без всяких исключений.
Относительное позиционирование
Как отмечалось ранее, терминология, используемая в CSS-позиционировании,
немного смутная. Относительное позиционирование поначалу часто приводит в
замешательство, поскольку возникает вопрос: относительно чего? Большинство
людей автоматически - и достаточно логично - считают, что позиция будет
определяться относительно другого элемента.
Урок 12. Позиционирование, плавающее размещение и Z-индекс
219
Но это не так (вы знали это). Блоки с относительным позиционированием
позиционируются относительно нормального потока. Это означает, что они не
выпадают из нормального потока, как блоки с абсолютным позиционированием.
В этом примере удалены все поля, с помощью универсального селектора (*);
таким образом мы избавимся от всех пустых пространств, что позволит нам
увидеть точное измерение относительного позиционирования, как показано в
примере 12.5.
Пример 12.5. Относительное позиционирование
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>working with style</title>
<style type="text/ess">
* {margin: 0;}
ttcontent {
position: relative;
left: 45px;
top: lOpx;
width: 400px;
border: lpx solid red;
}
</style>
</head>
<body>
<hl>The Black Cat</hl>
<p> I married early, and was <a href="http://
www.poemuseum.org/">happy to find</a> in my wife a disposition
not uncongenial with my own. Observing my partiality for
domestic pets, she lost no opportunity of procuring those of the
most agreeable kind. We had birds, gold fish, a fine dog,
rabbits, a small monkey, and a cat.</p>
<div id="content">
<p>This latter was a <a href="http://www.poemuseurn.org/"> re-
markably</a> large and beautiful animal, entirely black, and
sagacious to an astonishing degree. In speaking of his
intelligence, my wife, who at heart was not a little tinctured with
superstition, made frequent allusion to the ancient popular
notion, which regarded all black cats as witches in disguise. Not
that she was ever serious upon this point - and I mention the
matter at all for no better reason than that it happens, just
now, to be remembered.</p>
</div>
<p>Pluto - this was the cat's name - was my <a
href="http://www.poemuseum.org/">favorite</a> pet and playmate.
I alone fed him. and he attended me wherever I went about the
220
Языки HTML и CSS
house. It was even with difficulty that I could prevent him
from following me through the streets.</p>
</body>
</html>
На рисунке 12.8 показано, что элемент div с идентификатором content
размещен относительно нормального потока документа, а не других блоков.
The Black Cat
uncoi
no opp'
S2M
marrit d early, and was happy to find in my wife a disposition not
ing :nial with my own. Observing my partiality for domestic pets, she lost
>rtunity of procuring those of the most agreeable kind. We had birds,
a fine dog, rabbits, a small monkey, and a cat.
fish,
Pluto
fed him
with difii
ISO
1.1.1.iii
TToo Iil5 I2B0 1250 1555 |3§5 pfoo HsC
1 ' ■ 1 ■ 1 1 ■' ■'■'■' ■ 1 ■ 1111111111111111111111111111111111111111111
This latter was a remarkably large and beautiful animal, entirely
black, and sagacious to an astonishing degree. In speaking of his
intelligence, my wife, who at heart was not a little tinctured with
superstition, made frequent allusion to the ancient popular notion,
which regarded all black cats as witches in disguise. Not that she
was ever serious upon this point - and I mention the matter at all
for no better reason than that it happens, just now, to be
remembejred. _^ r .___ ,i.„.i
and he attended me wherever I went about the house. It was even
iculry that I could prevent him from following me through the streets.
Рис. 12.8. Блок с относительным позиционированием - обратите внимание,
что смещения указываются относительно нормального потока,
а не относительно другого элемента
Итак, смещение блока сверху, от блока предыдущего элемента, составляет
10 пикселов, а от левого края потока - 45 пикселов. Именно в этом месте
начинается текст, поскольку он также включен в нормальный поток. Обратите
внимание, что позиционирование не прерывает поток; последующее содержимое
отображается обычным образом как перед, так и после блока с относительным
позиционированием.
Относительное позиционирование используется в том случае, когда
нормальный поток не должен нарушаться. Абсолютное
позиционирование лучше всего использовать для элементов с крайне необычным
размещением. Часто эти два типа позиционирования применяются
совместно, например элемент div с относительным позиционированием и
элемент div с абсолютным позиционированием, расположенный внутри
первого элемента, или наоборот. Мы познакомимся с этим более
подробно в главе 13 «CSS-макеты».
Урок 12. Позиционирование, плавающее размещение и Z-индеке 221
Фиксированное позиционирование
Фиксированное позиционирование - это замечательная часть языка CSS. Знайте,
что если я начинаю раздел подобным образом, значит я сообщаю вам сначала
хорошие новости, чтобы смягчить удар. Даже не смотря на замечателыгость
фиксированного позиционирования, этот тип не поддерживается в браузере
Internet Explorer и, по существу, может использоваться только в браузерах Mozilla,
Opera, Safari, а также в других браузерах, поддерживающих этот тип
позиционирования. Фу!
Фиксированное позиционирование позволяет закрепить блок в любом месте
страницы. В отличие от абсолютного позиционирования, фиксированные
элементы позиционируются относительно окна просмотра (вы знали, что оно
просто обязано быть упомянуто где-то в этой главе). Посмотрим на пример 12.6.
Пример 12.6. Фиксированное позиционирование
<style type="text/css">
#nav {
position: fixed;
left: Opx;
top: Opx;
background: iccc;
width: 100%;
}
ul,li,a {
list-style-type: none;
display: inline;
text-decoration: none;
padding-left: 3px;
padding-right: 3px;
}
</style> ^^
Давайте посмотрим, что же получилось. Установив значения позиции элемента
div с идентификатором nav слева и сверху в 0, добавив серый фон и задав
ширину, равную 100%, мы сделали панель навигации очень похожей на стандартное
меню браузера, как показано на рисунке 12.9.
Хотя у браузера IE 6.0 отсутствует поддержка фиксированной схемы, это
вовсе не означает, что ее вообще нельзя использовать. В результате
будет создан блок в определенной позиции, однако он будет прокручиваться
вместе с остальным содержимым вместо того, чтобы оставаться в
первоначальной позиции.
222
Языки HTML и CSS
О working with style - МогШа Firefox
File- Edit -View ^Go .Bookmarks Jools Help
Home Products Services About Us Contact
The Black Cat
I married early, and was happy to find in my wife a
disposition not uncongenial with my own. Observing my
partiality for domestic pets, she lost no opportunity of
procuring those of the most agreeable kind. We had birds,
gold fish, a fine dog, rabbits, a small monkey, and a cat
Рис. 12.9. Фиксированное позиционирование панели навигации
В браузерах, поддерживающих фиксированное позиционирование, положение
этого меню останется прежним, не зависимо от перемещения других элементов.
Итак, если я прокручу содержимое, оно исчезнет позади меню, как показано на
рисунке 12.10.
■© working with style - Mozilla Firefox
fjle Edit View Go .Bookmarks Tpols ИФ
лЫ
Home Products Services About Us Contact <
1UC JLfKIVlY V^idl
I married early, and was happy to find in my wife a
disposition not uncongenial with my own. Observing my
Рис. 12.10. Содержимое прокручивается позади панели навигации
с фиксированным позиционированием
Теперь понятно, чем плохо отсутствие поддержки фиксированного
позиционирования в браузере IE - такой полезной схемы позиционирования.
Статическое позиционирование - это четвертый тип позиционирования.
В данном случае блок просто позиционируется в нормальном потоке,
и поэтому этот тип позиционирования используется редко.
Использование статического позиционирования похоже на использование свойства и
значения text-align: left;. Это стандартное поведение браузера,
поэтому этот тип используется только для переопределения
предыдущего правила. В результате, статическое позиционирование используется
достаточно редко.
Плавающие элементы
Как отмечалось во вступлении к главе, плавающее размещение - это не схема
позиционирования. Иногда его путают с позиционированием, поскольку
плавающее размещение может использоваться как отдельно, так и с
позиционированными блоками для создания макетов.
Причина, по которой плавающее размещение было введено в язык CSS,
совершенно не касалась макета, как такового. Необходимо было получить
возможность для плавающего размещения элементов, особенно изображений, а также
для обтекания содержимым этого изображения, как показано на рисунке 12.7.
Пример 12.7. Плавающее размещение изображения
<style type="text/ess">
img {
float: right;
padding: 15px;
}
</style>
На рисунке 12.11 показаны результаты. Стили добавлены были, чтобы оживить
внешний вид.
working with style - Mozilla Fneiox
чД*>*'Л,'.л<
File Edit View Go Bookmarks look Help
By Edgar Allen Рое
I married early, and was in my wife a
disposition not uncongenial with my own. Observing my
partiality for domestic pets, she lost no opportunity of
procuring those of the most agreeable kind. We had
birds, gold fish, a fine dog, rabbits, a small monkey, and
a cat.
This latter was a large and beautiful animal,
entirely black, and sagacious to an astonishing degree. In
speaking of his intelligence, my wife, who at heart was
not a little tinctured with superstition, made frequent
allusion to the ancient popular notion, which regarded all
black cats as witches in disguise. Not that she was ever
serious upon this point - and I mention the matter at all
for no better reason than that it happens, just now, to be
remembered.
Pluto - this was the cat's name - was my pet and
playmate. I alone fed him, and he attended me wherever I went about the house. It
was even with difficulty that I could prevent him from following me through the
streets.
Рис. 12.11. Плавающее размещение изображения позволяет тексту
обтекать изображение, создавая замысловатый внешний вид
224
Языки HTML и CSS
Плавающее размещение можно использовать не только для элемента img, но и
для остальных элементов. Таким образом, если навигация реализована с
использованием элемента div и вы хотите использовать плавающее размещение для
данного элемента, это легко сделать, как показано в примере 12.8.
Пример 12.8. Плавающее размещение элемента div
#nav {
float: right;
border: lpx solid red;
padding-right: 2 Opx;
padding-top: lOpx;
padding-left: lOpx;
margin-left: lOpx;
}
На рисунке 12.12 показано, как элемент div с идентификатором nav и
содержащиеся в нем элементы, размещаются с правой стороны, как и изображение из
предыдущего примера. Выполнив это, вы, фактически, создали систему
навигации с плавающим размещением, которую можно стилизовать по собственному
усмотрению.
лш
О working with style - Mozilla Firefox
File Edit View £o gookmaiks Tools "Help"
By Edgar АПеп Рое
I married early, and was in my wife a disposition
not uncongenial with my own. Observing my partiality for
domestic pets, she lost no opportunity of procuring those of
the most agreeable kind. We had birds, gold fish, a fine dog,
rabbits, a small monkey, and a cat.
This latter was a large and beautiful animal, entirely black, and sagacious
to an astonishing degree. In speaking of his intelligence, my wife, who at heart was not
a little tinctured with superstition, made frequent allusion to the ancient popular notion,
which regarded all black cats as witches in disguise. Not that she was ever serious upon
this point - and I mention the matter at all for no better reason than that it happens,
just now, to be remembered.
Pluto - this was the cat's name - was my pet and playmate. I alone fed him,
and he attended me wherever I went about the house. It was even with difficulty that I
could prevent him from following me through the streets.
Рис. 12.12. Плавающее размещение блока - для элемента div
с идентификатором nav использовано
плавающее размещение, как и для изображения
Теперь достаточно просто представить, как можно использовать плавающее
размещение для макетирования частей документа.
Урок 12. Позиционирование, плавающее размещение и Z-индекс
225
Очищенное плавающее размещение
Очистка плавающего размещения служит для того, чтобы размещение элемента
оставалось плавающим, однако его не окружали другие элементы. Свойство
clear принимает следующие значения: left, right или both. Добавив
свойство со значением clear: right; к разделу документа, навигация с плавающим
размещением останется на прежнем месте, однако текст слева от нее
отображаться не будет, как показано на рисунке 12.13.
File Edit View £o Bookmarks look Help
~| !
■
I
m
m
I 1
By Edgar Allen Рое
I married early, and was in my wife a disposition not uncongenial with my own.
Observing my partiality for domestic pets, she lost no opportunity of procuring those of the most
agreeable kind. We had birds, gold fish, a fine dog, rabbits, a small monkey, and a cat.
This latter was a large and beautiful animal, entirely black, and sagacious to an
astonishing degree. In speaking of his intelligence, my wife, who at heart was not a little tinctured
with superstition, made frequent allusion to the ancient popular notion, which regarded all black cats
as witches in disguise. Not that she was ever serious upon this point - and I mention the matter at
all for no better reason than that it happens, just now, to be remembered.
Pluto - this was the cat's name - was my pet and playmate. I alone fed him, and he
attended me wherever I went about the house. It was even with difficulty that I could prevent him
from following me through the streets.
Рис. 12.13. Очистка плавающего размещения позволяет
плавающему элементу оставаться на первоначальном месте,
но при этом последующее содержимое располагается ниже элемента
В примере 12.9 создаются два блока с плавающим размещением.
Пример 12.9. Стилизация двух блоков с плавающим размещением,
один из которых размещается слева, а второй — справа
#nav {float: right; border; lpx solid red; padding-right: 20px;
padding-top: lOpx; margin-left: lOpx;}
#nav2 {float: left; border; lpx solid red; padding-right: 20px;
padding-top: lOpx; margin-right: lOpx; }
На рисунке 12.14 показано, что произойдет в случае некорректного
использования свойства clear для содержимого.
В-1356
226
Языки HTML и CSS
£te ti't Vcv Go Вог^И Jooli beo
. By Edgar Allen Рое .
m •
. I married early, and was in my wife .
, a disposition not uncongenial with my own. „
Observing my partiality for domestic pets, she lost
no opportunity of procuring those of the most
agreeable kind. We had birds, gold fish, a fine dog, rabbits, a small monkey, and a cat.
This latter was a large and beautiful animal, entirely black, and sagacious to an
astonishing degree. In speaking of his intelligence, my wife, who at heart was not a little tinctured
with superstition, made frequent allusion to the ancient popular notion, which regarded all black cats 1
as witches in disguise. Not that she was ever serious upon this point - and I mention the matter at
all for no better reason than that it happens, just now, to be remembered.
Pluto - this was the cat's name - was my pet and playmate I alone fed him, and he
attended me wherever I went about the house, It was even with difficulty that I could prevent him
from following me through the streets.
Рис. 12.14. Без надлежащего использования свойства clear,
содержимое отображается в нормальном потоке
между блоками с плавающим размещением
Свойство clear добавлено к обоим стилям, описывающим содержимое, как
показано на рисунке 12.15.
By Edgar Alien Рое
I married early, and was in my wife a disposition not uncongenial with my own.
Observing my partiality for domestic pets, she lost no opportunity of procuring those of the most
agreeable kind. We had birds, gold fish, a fine dog, rabbits, a small monkey, and a cat.
Рис. 12.15. Очищение левого и правого блоков с плавающим размещением
Интересно, да? Вот так создаются столбцы. Мы будем работать со столбцами,
созданными с использованием плавающего размещения, в главе 13.
Урок 12. Позиционирование, плавающее размещение и Z-индекс
227
Z-индекс
Z-индекс создает ось в пространстве, с помощью которой можно «складывать»
и перекрывать элементы. Эту возможность удобно использовать при
позиционировании, поскольку с ее помощью можно определять, какие блоки при
изменении размеров окна браузера выйдут на передний план, а какие - на задний.
Использование z-индекса по большей своей части относится к языку DHTML,
в котором скрипты взаимодействуют с блоками элементов для динамических
целей, например для создания анимации или игр.
В примере 12.10 представлены три блока с абсолютным позиционированием,
каждый из которых перекрывает остальные, и стилизованы они таким образом,
чтобы был понятен порядок наложения.
Пример 12.10. Z-индекс и позиционированные блоки
#boxl {
position: absolute;
top: Юрх;
left: Юрх;
background: #000;
width: ЗООрх;
height: 200px;
z-index: 1;
}
#box2 {
position: absolute;
top: 20px;
left: 20px;
background: #999;
width: ЗООрх;
height: 200px,-
z-index: 2;
}
#box3 {
position: absolute;
top: 30px;
left: 30px;
background: #ccc;
width: ЗООрх;
height: 200px;
z-index: 3;
}
Обратите внимание, чем выше значение z-индекса, тем «ближе» в стеке
располагается блок. Итак, блок со значением свойства z- index равным 3 является
ближайшим блоком в стеке по отношению к вам, как показано на рисунке 12.16.
228
Языки HTML и CSS
©walking with style - Mozilla Fiiefox
FileS Edit View Go Bookmarks Tools
ШШШ
Рис. 12.16. Z-индекс и порядок наложения - чем выше целочисленное значение,
тем ближе в стеке располагается элемент по отношению к вам
Как профессионал...
Если вы потратили время на изучение концепций, представленных в этой главе,
пожалуйста, не волнуйтесь. Это одни из наиболее сложных, запутанных и
многообещающих аспектов языка CSS.
Если вы испытываете определенные сложности, я не смогу вам помочь иначе,
чем сказать, что этому необходимо уделить время. Никто не изучает этот
материал ночью - а если вы изучили его, хорошо, значит вы готовы к основному
времени!
Чтобы освоить использование позиционирования, необходимо постоянно
практиковаться и экспериментировать; это простая часть природы зверя CSS.
Конечно, результаты превосходят ожидания. В следующей главе мы соберем все
вместе - по крайней мере, концептуально - когда начнем изучение макетов.
А после этого необходимо практиковаться, практиковаться и еще раз
практиковаться, чтобы действительно отточить свои навыки до уровня профессионала.
УРОК 13.
CSS-макеты
Несколько лет назад люди нашли способ решения всех проблем, возникающих при
использовании макетов на основе таблиц, который заключается в применении
языка CSS для управления визуальным представлением дизайнов. В этой главе у
нас появится шанс поработать с основными типами CSS-макетов, обычно
используемыми для получения ряда дизайнов. Некоторые из этих макетов построены на
основе схем позиционирования, которые были рассмотрены в главе 12
«Позиционирование, плавающее размещение и z-индекс». В некоторых макетах применяется
плавающее размещение, которое, если помните, не является схемой
позиционирования, однако позволяет создавать колоночные макеты. Распространено также и
комбинированное использование плавающего размещения и позиционирования,
и в этой главе мы познакомимся с подобными примерами.
Чтобы упростить понимание материала, я собираюсь научить вас
создавать описанные дизайны в наиболее простом виде. Это означает, что я не
включаю ряд популярных обходных решений, которые, возможно,
понадобится использовать для поддержки определенных версий браузеров. Без
применения обходных решений данные дизайны будут отлично
функционировать в браузерах, перечисленных в таблице 13.1.
Табл. 13.1. Браузеры с поддержкой CSS-макетов, представленных в этой главе
Браузер
Intenet Explorer
Mozilla
Netscape
Firefox
Opera
Safari
Операционная система
Windows
Все доступные
Все доступные
Все доступные
Все доступные
Macintosh
Версия
6.0
1.ЛГ +
6.ЛГ +
Все
6.Х +
1.ЛГ +
Во всех используемых современных браузерах проблем с отображением
представленных макетов не будет. Необходимость в применении обходных решений
возникает в том случае, когда приходится поддерживать версии браузеров,
которых нет в этом списке, в частности, версии 5.0 и 5.5 браузера Internet Explorer для
операционной системы Windows, все версии браузера IE для операционной
системы Macintosh, а также все версии браузера Netscape до версии 6.0; необходимые
230
Языки HTML и CSS
свойства языка CSS во всех указанных версиях браузеров реализованы
неправильно или частично.
Три столбца с обрамляюшими меню
фиксированной ширины
Одним из наиболее распространенных макетов для Web-сайтов является трехколо-
ночный макет с обрамляющими столбцами определенной фиксированной
ширины и с внутренним столбцом плавающей ширины, как показано на рисунке 13.1.
Столбец
фиксированной
ширины
Ширина столбца уменьшается
или увеличивается при изменении
размеров окна браузера или
разрешения экрана
Столбец
фиксированной
ширины
Рис. 13.1. Трехколопочный макет с обрамляющими столбцами
фиксированной ширины и с центральным столбцом плавающей ширины
Для создания такого макета используется абсолютное позиционирование для
размещения левого и правого столбцов. Затем явно указывается ширина
столбцов в пиксела (именно так достигается фиксированная ширина). Хитрость здесь
в том, что ширина центрального столбца не указывается, благодаря чему она
остается плавающей и увеличивается или уменьшается в соответствии с доступным
пространством, как показано в примере 13.1.
Пример 13.1. Трехколопочный макет с обрамляющими столбцами
фиксированной ширины и с центральным столбцом плавающей ширины
<style type="text/css">
#nav {position: absolute; left: lOpx; top: 50px; width: 200px;}
♦content {margin-left: 200px; margin-right: 200px; margin-top:
Юрх;}
Урок 13. CSS-макеты
231
#sidebar {position: absolute; right: 10px,- top: 10px; width:
200px;}
</style>
Обратите внимание, что в ID-селекторе #content для элемента div указаны
значения левого и правого полей. Эти числовые значения должны быть
скорректированы для соответствия отступам или границам, которые вы сами добавите к
столбцам. Верхнее поле используется просто для зрительного баланса и никакая
ширина для него не указывается. На рисунке 13.2 показан макет страницы,
созданный с использованием данной методики, с дополнительными стилями для
текста, промежутков и изображения. На рисунке 13.3 показана та же страница,
но уже после изменения размеров окна браузера, - на рисунке видно, как
содержимое заполняет все доступное пространство.
C/woiking with style - Mozilla Fiiefox
Hie *£dit Щей £о lookmarks IqoIs Help
■ ■ofxl
I married early, and was happy to
find in my wife a disposition not
uncongenial with my own Observing
my partiality for domestic pets, she
lost no opportunity of procuring
those of the agreeable kind
We had birds, gold fish, a fine dog
rabbits, a small monkey, and a cat.
This latter was a large
and beautiful animal entirely black,
and sagacious to an astonishing
degree. In speaking of his
intelligence, my wife, who at heart
was not a litt e tinctured with
superstition, made frequent allusion
to the ancient popular notion, which
regarded all black cats as witches in
disguise. Not that she was ever
serious upon this point - and I
mention the matter at all for no
better reason than that it happens,
just now, to be remembered
Pluto - this was the cat"s name - was
my pet and playmate I
alone fed him, and he attended me
wherever I went about the house. It
was even with difficulty that I could
prevent him from following me
through the streets
Best known for his poems and
short fiction, Edgar Allan Рое,
born in Boston, Jan. 19, 1809,
died Oct 7, 1849 in Baltimore,
deserves more credit than any
other writer for the
transformation of the short
tory from anecdote to art.
He virtually created the
detective story and perfected
the psychological thriller He
also produced some of the
most influential literary
criticism of h s time ~
important theoretical
statements on poetry and the
short story — and has had a
worldwide influence on
literature.
Рис. 13.2. Обрамляющие столбцы фиксированной ширины
и центральный столбец плавающей ширины
232
Языки HTML и CSS
The Black Cat
By Edgar Allen Рое
I married early, and was happy to find in my wife a disposition not uncongenial with my own. Observing my
partiality for domestic pets, she lost no opportunity of procuring those of the ni;:f agreeable kind. We had
birds, gold fish, a fine dog, rabbits, a small monkey, and a cat.
Рис. 13.3. Здесь показано, как текст заполняет доступное пространство
окна браузера после изменения его размеров
s\ Если вы хотите зафиксировать ширину центрального столбца, просто
укажите ее явно. Но в этом случае, при изменении размеров окна браузера,
столбцы будут перекрываться.
Три столбца с шапкой и нижним колонтитулом
Еще одним распространенным ма.кетом является трехколоночный макет с
шапкой и нижним колонтитулом, как показано на рисунке 13.4.
Шапка
Боковая
панель
Содержимое
Боковая
панель
Нижний колонтитул
Рис. 13.4. Замысловатый трехколоночный макет
с шапкой и нижним колонтитулом
Для получения желаемых результатов в этом макете используется плавающее
размещение, а не позиционирование, как показано в примере 13.2.
Урок 13. CSS-макеты
233
Пример 13.2. Использование плавающего размещения в макете
<style type="text/css">
#masthead {width: 768px;}
#nav {float: left; width: 200px;}
#content {float: left; width: 368px;}
#sidebar {float: left; width: 200px;}
#footer {width: 768px; clear: both;}
</style>
Это макет с фиксированной шириной - ширина ни одного из его столбцов не
будет изменяться динамически. Обратите внимание, что свойство float для
всех столбцов просто установлено в значение left, а сами столбцы размещаются
друг за другом по горизонтали. Обратите также внимание, что для элемента div с
ID-селектором #footer используется свойство clear со значением both. Это
гарантирует, что нижний колонтитул полностью очистит столбцы с плавающим
размещением, как показано на рисунке 13.5.
working with style - Mozilla Fitefox
Эе £di( ifew £o jSa*maiks lods Иф
;x%\rz^zM*i
T e
ck
By Edgar Allen Рое
I married early, and was happy to fnd in m wife a
disposition not uncongenial with my own bserving my
part ality for domestic pets s e ost no opportun ty of
procuring those of the agreeable kind. We had birds
gold fish, a fine dog, rabbits, a small monkey and a cat
This latter was a targe and beautiful animal
entirely black, and sagacious to n astonishing degree In
speaking of h s intelli ence my wife, w о at heart was not a
little tinctured with superstition, made frequent all sion to
the ancient p pular notion which regarded all b ack cats as
witches n d sgu se Not that she was ever serious upon thi
p int - and I mention the matter at a I for no better reason
than that it happens, just now, to be re embered
Pluto this was the cat's name was my pet and
playmate I alone fed him, and he attended me wh rever I
went about the house It was even with difficulty that I could
prevent him from following me through the streets
t n nt i
th ubh
рое trivia
Best known for his poems a d
short fiction Edgar Allan Рое
born in Boston Jan 19 1809
died Oct 7 1849 in В It more,
d serve more credit than any
ot er writer for the
transformation of the short
st ry from anecdote to art
He virtu Ну created the
detective story and perfected
th psychological thriller Me
also produced some of the
m st nfluential lite ary
cnt cism of his time
mportant theoretical
tatements on poetry and th
short story -- and has had a
wo Idw de influence on
iterature
Рис. 13.5. Трехколоночный макет с фиксированной шириной,
с шапкой и нижним колонтитулом
Можно сделать версию этого макета с плавающей шириной, воспользовавшись
не фиксированными значениями, а значениями, выраженными в процентах, как
показано в примере 13.3.
234
Языки HTML и CSS
Пример 13.3. Использование значений, выраженных в процентах,
для создания версии с плавающей шириной
<style type="text/css">
#masthead {width: 100%;}
#nav {float: left; width: 20%;}
#content {float: left; width: 60%;}
#sidebar {float: left; width: 20%;}
#footer {width: 100%; clear: both;}
</style>
Отличная статья «Containing floats», написанная экспертом языка CSS
Эриком Мейером (Eric Meyer), описывает принципы работы с
использованием плавающего размещения; эту статью можно найти по адресу
http://www.complexspiral.com/publicatlons/containing-floats/.
Вложенный плавающий блок
В очень простом, но полезном макете применяется вложенный плавающий блок.
В этом макете плавающий блок размещается в основной области содержимого.
Этот блок можно использовать для навигации, изображений или для других
целей, как показано на рисунке 13.6.
Основное содержимое
Плавающий блок
Рис. 13.6. Блок с плавающим размещением в области содержимого
Урок 13. CSS-макеты
235
В примере 13.4 показано, как получить такой макет.
Пример 13.4. Макет с вложенным плавающим блоком
<style type="text/css">
#content {margin: lOpx; border: lpx solid orange;}
#content #nav {float: right; width: 150px; border: lpx solid
orange; margin-left: 5px,-}
</style>
Чтобы вы лучше представили этот макет, я установила поле и добавила границу
для содержимого. Для получения вложенности плавающего блока я использовала
дочерний селектор #nav ID-селектора #content, а затем расположила элемент
с идентификатором nav по правой стороне элемента с идентификатором
content. Значение свойства margin-left добавляет небольшой промежуток между
границей и текстом. При написании соответствующего кода на языке HTML (что
уже сделано в самом шаблоне) необходимо обязательно размесить элемент div с
идентификатором nav внутри элемента div с идентификатором content.
div id="content">
<div id="nav">
<ul>
<lixa href ="home.html">Home</a></li>
<li><a href ="poe3 .html">Forward</ax/li>
<lixa href ="poel.html">Back</ax/li>
<lixa href ="about .html">About</ax/li>
<lixa href ="Contact .html">Contact</ax/li>
</ul>
</div>
<hl>The Black Cat</hl>
<h2>By Edgar Allen Poe</h2>
<p> I married early, and was happy to find in my wife a
disposition not uncongenial with my own. Observing my partiality
for domestic pets, she lost no opportunity of procuring those
of the <a href="http://vig.prenhall.com/"> most </a> agreeable
kind. We had birds, gold fish, a fine dog, rabbits, a small
monkey, and a cat.</p>...
</div>
Как показано на рисунке 13.7, были использованы дополнительные стили
(которые применялись ранее) для получения декоративных аспектов дизайна.
236
Языки HTML и CSS
О working with style - Mozilla Firefox
file Edit View Go Ekrakmarks Iools Help4
The Black Cat
By Edgar Allen Рое
Home
Forward
Back
About
Contact
1
I married early, and was happy to find in my
wife a disposition not uncongenial with my
own. Observing my partiality for domestic pets, she lost no opportunity
of procuring those of the agreeable kind. We had birds, gold fish,
a fine dog, rabbits, a small monkey, and a cat.
This latter was a large and beautiful animal, entirely black,
and sagacious to an astonishing degree. In speaking of his intelligence,
my wife, who at heart was not a little tinctured with superstition, made
frequent allusion to the ancient popular notion, which regarded all
black cats as witches in disguise. Not that she was ever serious upon
this point - and I mention the matter at all for no better reason than
that it happens, just now, to be remembered.
Pluto - this was the cat's name - was my pet and playmate. I
alone fed him, and he attended me wherever I went about the house.
It was even with difficulty that I could prevent him from following me
through the streets.
Рис. 13.7. Макет с вложенным
плавающим блоком - простой, но весьма полезный
Макеты с выравниванием по центру
Чрезвычайно популярным методом создания макетов является метод
выравнивания по центру дизайна с фиксированной шириной по горизонтали. Это
означает, что дизайн будет всегда отцентрирован по горизонтали, а
промежутки с левой и правой стороны будут равномерно изменяться, как показано
на рисунке 13.8.
Урок 13. CSS-макеты 237
Область дизайна
всегда выровнена
по центру и имеет
фиксированную ширину
Рис. 13.8. Макет с фиксированной шириной, выровненный по центру
Создание такого дизайна требует дополнительных усилий из-за способов
центрирования элементов по горизонтали в языке CSS. Существует множество
вариантов выравнивания. Для центрирования по горизонтали я собираюсь
использовать подход с применением отрицательных значений полей. Хотя это и не
лучший способ, исходя из практики использования языка CSS, однако он лучше
всего поддерживается различными браузерами, как показано в примере 13.5.
Пример 13.5. Дизайн с фиксированной шириной и выравниванием по центру
<style type="text/css">
#container {position: absolute; left: 50%; width: 400px;
margin-left: -200px; border: lpx solid orange;}
icontent {margin-top: 75px;}
#nav {position: fixed; top: 0; width: 400px; border-top:
lpx solid orange; border-bottom: lpx solid orange;}
</style>
Сначала создается контейнер - элемент div с идентификатором content - для
которого будет использовано абсолютное позиционирование. Содержимое,
навигация и остальные компоненты дизайна, расположенные в центральной части
дизайна, размещаются в этом контейнере. Отрицательное значение поля
перемещает контейнер вправо, на середину позиционного смещения. На рисунке 13.9
показаны результаты. Ради забавы также была добавлена панель навигации с
фиксированной шириной и дополнительные стили.
238
Языки HTML и CSS
£ile £dit View Co.: „.Bookmarks Tools Help
Home Forward Back About Contact
T e lack С
у Edgar Allen Рое
I married early, and was happy to find in my wife a disposition not
uncongenial with my own. Observing my partiality for domestic
pets, she lost no opportunity of procuring those of the
agreeable kind. We had birds, gold fish, a fine dog, rabbits, a small
monkey, and a cat.
This latter was a large and beautiful animal,
entirely black, and sagacious to an astonishing degree. In speaking
of his intelligence, my wife, who at heart was not a little tinctured
with superstition, made frequent allusion to the ancient popular
notion, which regarded all black cats as witches in disguise. Not
that she was ever serious upon this point - and I mention the
matter at all for no better reason than that it happens, just now, to
be remembered.
Pluto - this was the cat's name - was my it pet and
playmate. I alone fed him, and he attended me wherever I went
about the house. It was even with difficulty that I could prevent
him from following me through the streets.
Рис. 13.9. Дизайн с фиксированной шириной
и выравниванием по центру - чрезвычайно популярный макет
Если вы хотите создать дизайн с выравниванием по центру, но с плавающей
шириной, используйте значения, выраженные в процентах, как показано в
примере 13.6.
Пример 13.6. Дизайн с плавающей шириной и выравниванием по центру
#container {position: absolute; left: 50%; margin-left: -200px;
border: lpx solid orange;}
icontent {margin-top: 75px;}
#nav {position: fixed; top: 0; border-top: lpx solid orange;
border-bottom: lpx solid orange;}
Смешанные макеты
Сейчас перед нами стоит задача - объединить методики для получения более
изысканных макетов. Хорошим примером является дизайн с фиксированной
шириной, выравниванием по центру, и состоящий из трех столбцов. Если вы
думаете, что мы будем использовать метод позиционирования для дизайнов с
I
Урок 13. CSS-макеты
239
фиксированной шириной и выравниванием по центру, а плавающее
размещение - для столбцов, то вы - лучший ученик в классе! В примере 13.7 показано,
как получить такой дизайн.
Пример 13.7. Смешанный макет с выравниванием по центру,
позиционированием и плавающим размещением
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>working with style</title>
<style type="text/ess">
#container {position: absolute; left: 50%; margin-left: -ЗООрх;
width: бООрх; margin-top: lOpx;}
#masthead {width: бООрх;}
#nav {float: left; width: 150px;}
#content {float: left; width: 290px; margin-right: 5px;
margin-left: 5px,-}
#sidebar {float: right; width: 140px; margin-right: lOpx;}
#footer {clear: both; width: бООрх;}
</style>
<link rel="stylesheet" type="text/ess" href="layout.ess">
</head>
<body>
<div id="container">
<div id="masthead">
<hl>Readings from Edgar Allen Poe</hl>
</div>
<div id="nav">
<ul>
<li><a href="home.html">Home</ax/li>
<lixa href="poe3 .html">Forward</ax/li>
<lixa href ="poel .html">Back</ax/li>
< 1 ixa href = "about. html" >About</ax/1 i>
<lixa href ="Contact .html">Contact</ax/li>
</ul>
</div>
<div id="content">
<hl>The Black Cat</hl>
<h2>By Edgar Allen Poe</h2>
<p> I married early, and was happy to find in my wife a
disposition not uncongenial with my own. Observing my partiality for
domestic pets, she lost no opportunity of procuring those of
the <a href="http://vig.prenhall.com/"> most </a> agreeable
kind. We had birds, gold fish, a fine dog, rabbits, a small
monkey, and a cat.</p>
<p>This latter was a <a href="http://www.prengall.com/"> remarka-
bly</a> large and beautiful animal, entirely black, and sagacious
to an astonishing degree. In speaking of his intelligence.
240
Языки HTML и CSS
my wife, who at heart was not a little tinctured with
superstition, made frequent allusion to the ancient popular notion, which
regarded all black cats as witches in disguise. Not that she was
ever serious upon this point - and I mention the matter at all
for no better reason than that it happens, just now, to be
remembered. </p>
<p>Pluto - this was the cat's name - was my <a
href="http://www.prenhall.com/">favorite</a> pet and playmate.
I alone fed him, and he attended me wherever I went about the
house. It was even with difficulty that I could prevent him
from following me through the streets.</p>
</div>
<div id="sidebar">
<h2>poe trivia</h2>
<p>Best known for his poems and short fiction, Edgar Allan Рое,
born in Boston, Jan. 19, 1809, died Oct. 7, 1849 in Baltimore,
deserves more credit than any other writer for the
transformation of the short story from anecdote to art.</p>
<p>He virtually created the detective story and perfected the
psychological thriller. He also produced some of the most
influential literary criticism of his time - important theoretic-
cal statements on poetry and the short story - and has had a
worldwide influence on literature.</p>
</div>
<div id="footer">
<p class="footertext">All text content is in the public domain.
Images © 2004</p>
</div>
</div>
</body>
</html>
Хотелось бы обратить ваше внимание на несколько вещей: во-первых, для
демонстрации основ метода был использован внедренный стиль, а для других стилей
была использована связанная таблица стилей. Во-вторых, все элементы div
размещены внутри элемента div с идентификатором container. Это позволяет
выровнять по центру дизайн, в основе которого лежит плавающее размещение,
как показано на рисунке 13.10.
Урок 13- CSS-макеты
241
Readings from Edgar Allen Poe
* Home;
* Forward
о Dack
о About
* Contact
I
The Black Cat
By Edgar Allen Poe
I married early, and was happy to find in my
wife a disposition not uncongenial with my own.
Observing my partiality for domestic pets, she
lost no opportunity of procuring those of the
mar;', agreeable kind. We had birds, gold fish, a
fine dog, rabbits, a small monkey, and a cat.
This latter was a remarkably large and beautiful
animal, entirely black, and sagacious to an
astonishing degree. In speaking of his
intelligence, my wife, who at heart was not a
little tinctured with superstition, made Frequent
allusion to the ancient popular notion, which
regarded all black cats as witches in disguise.
Not that she was ever serious upon this point -
and I mention the matter at all for no better
reason than that it happens, just now, to be
remembered.
Pluto ■ this was the cat's name - was my
iv;vnr=i.e pet and playmate. I alone Fed him, and
he attended me wherever I went about the
house. It was even with difficulty that I could
prevent him from following me through the
streets.
poe trivia
Best known For his
poems and short fiction,
Edgar Allan Poe, born in
Boston, Jan. 19, 1609,
died Oct. 7, 1649 "m
Baltimore, deserves
more credit than any
other writer for the
transformation of the
short story from
anecdote to art.
He virtually created the
detective story and
perfected the
psychological thriller. He
also produced some of
the most influential
literary criticism of his
time — important
theoretical statements
on poetry and the short
story — and has had a
worldwide influence on
literature.
All text content is in the public domain. Images © 2004
Рис. 13.10. Смешанный CSS-макет
Повторяйте за мной...
Помните, я сказала, что для понимания концепций макетов, описанных в данной
главе, может потребоваться время. Это действительно так, поскольку
необходимо освоить огромное количество технической информации, и единственный
способ получить твердые знания - очень сильно испачкать руки кодом.
На данном этапе я рекомендую загрузить все примеры с сайта и
поэкспериментировать с ними. Делайте ошибки - и продолжайте! Это важная составляющая
процесса обучения. Кроме того, ничто не может сравниться с тем моментом,
когда вы наконец решили проблему, изводившую вас днями.
Не имеет значения, что конкретно вас интересует в языках HTML и CSS, я
надеюсь, эта книга помогла вам понять, как современные Web-дизайнеры и Web-
разработчики решают чрезвычайно сложные задачи. В этой книге просто
невозможно рассмотреть множество других вопросов (хорошая информационная
архитектура, удобство использования). Я работала над тем, чтобы в процессе изу
чения материала обращать ваше внимание на полезные подсказки и хитрости,
однако я буду искренне рада, если вы посетите сайты, указанные в данной книге,
и углубите свои знания.
Если вы решаете проблемы, связанные с применением языка CSS, во сне, значит
вы действительно начали думать, как Web-дизайнер.
9-1356
ПРИЛОЖЕНИЕ А.
Аннотированный справочник
по языку XHTML 1.0
В данном приложении описаны все элементы определения XHTML 1.0 Transitional DTD.
Обратите внимание, что многие из этих элементов по своей сути отвечают за
представление документа и были удалены из определения Strict DTD. Для каждого
элемента приведены замечания и рекомендации по использованию.
Разъяснение типов элементов: Отображение
Блочный (block): Элемент блочного уровня, по умолчанию создает блочный
прямоугольник. Все последующие элементы будут размещены на новой строке.
Встроенный (inline): Встроенный элемент, создает прямоугольник в строке и не
разрывает ее.
Структурный (structural): Элемент, который используется для формирования
структуры документа или для структурирования других элементов в
определенной части документа, например, table, head и т. д.
Обратите внимание, что тип отображения элемента можно изменить
при помощи свойства display языка CSS. Терминология, используемая
здесь, предназначена для описания основного стандартного поведения
элемента. У некоторых элементов существует несколько типов
отображения, например структурный и блочный. В таких случаях приводится
основной тип отображения.
Разъяснение типов элементов: пустой и непустой
Пустой (empty): Элемент, не содержащий данных, но являющийся инструкцией
для браузера для выполнения какого-либо действия, например разрыва строки
или отображения изображения. В языке XHTML пустые элементы завершаются
слэшем, как, например, <br />.
Непустой (non-empty): Элемент, содержащий данные. В языке XHTML все непустые
элементы должны быть закрыты, как показано в следующем примере:
<p>This is a paragraph, it contains data and is therefore
non-empty.</p>
Элемент: а
Описание: Используется для выполнения связывания с внешними документами
или для внутристраничных ссылок.
Тип элемента: Встроенный, непустой.
Приложение А. Аннотированный справочник по языку XHTML 1.0
243
Пример:
<а href="http://www.pearson.com/">Go to the Pearson Web Site</a>
<a name="referencel">Go to Reference One</a>
Советы: Для данного элемента советы отсутствуют. Внутри одного элемента
anchor нельзя использовать другой элемент anchor.
Элемент: abbr
Описание: Обозначает аббревиатуры И особенно полезен для поддержания
доступности.
Тип элемента: Встроенный, непустой.
Пример:
<abbr title="department">dept.</abbr>
Советы: Элемент поддерживается современными браузерами и часто
используется вместо элемента acronym, из-за недостаточной поддержки последнего.
Элемент: acronym
Описание: Обозначает акронимы и особенно полезен для поддержания
доступности.
Тип элемента: Встроенный, непустой.
Пример:
<acronym title="Hypertext Markup Language">HTML</a>
Советы: Поддержка элемента, в лучшем случае, неполная. В настоящий момент
элемент удален из спецификации XHTML 2.O. В результате, во всех случаях для
аббревиатур и акронимов лучше всего использовать элемент abbr.
Элемент: address
Описание: Обозначает адрес.
Тип элемента: Встроенный, непустой.
Пример:
<address>1600 Pennsylvania Avenue</address>
Советы: Поддержка элемента очень широкая. Обычно браузеры отображают
текст элемента address курсивом.
Элемент: applet
Описание: Обозначает апплет.
244
Языки HTML и CSS
Тип элемента: Блочный, непустой.
Пример:
<applet code="nervoustext.class"
width="300" height="60">
<param name="text" value="Java Comes Alive" />
</applet>
Советы: Элемент исключен в пользу элемента object, но может быть
использован в языке XHTML 1.0.
Элемент: area
Описание: Обозначает область ввода карты ссылок.
Тип элемента: Структурный (тар), пустой.
Пример:
<area shape="circle" href="http://molly.com/" coords="0,10,8" />
Советы: Элемент поддерживается современными браузерами.
Элемент: b
Описание: Презентационный элемент, обозначающий полужирный текст.
Тип элемента: Встроенный, непустой.
Пример:
<b>This sentence will appear in bold text</b>
Советы: Элемент поддерживается множеством браузеров, но считается
презентационным; вместо этого элемента должен использоваться элемент strong.
Элемент: base
Описание: Определяет основную URI-информацию для относительных путей в
документе. Также используется для определения основной цели для связанных
фреймов внутри документа. Размещается в элементе head.
Тип элемента: Структурный (head), пустой.
Примеры:
<base href="http://molly.com/" />
<base target="_top" />
Советы: Очень широкая поддержка для данного элемента.
Приложение А. Аннотированный справочник по языку XHTML 1.0 245
Элемент: basef ont
Описание: Обозначает основной шрифт.
Тип элемента: Структурный (head), пустой.
Пример:
<basefont color="#ff0000" size="4" face="Arial" />
Советы: Элемент не рекомендуется, поэтому его не следует использовать в языке
XHTML 1.0 Strict, хотя его можно использовать в языке XHTML 1.0.
Элемент: bdo
Описание: Обозначает двунаправленный текст. В основном используется для
интернационализации, для обозначения текста, отображаемого в обратном
направлении.
Тип элемента: Встроенный, непустой.
Пример:
<bdo lang="he" dir="rtl">I would enter Hebrew characters here
and they would appear right to left.</bdo>
Советы: Элемент поддерживается современными браузерами. В языке CSS также
есть свойства для стилизации двунаправленного текста.
Элемент: big
Описание: Презентационный элемент, используемый для форматирования
текста стилем большого размера.
Тип элемента: Встроенный, непустой.
Пример:
<big>This text will appear bigger than default body text</big>
Советы: Существует широкая поддержка элемента, но его использование должно
быть ограничено, поскольку он является презентационным элементом и язык
CSS предоставляет альтернативу.
Элемент: blockquote
Описание: Используется для цитат.
Тип элемента: Блочный, непустой.
Пример:
<blockquote>"To be or not to be, that is the
question."</blockquote>
246
Языки HTML и CSS
Советы: Существует широкая поддержка элемента. Элемент часто используется
для представления, поскольку браузеры при форматировании цитат добавляют
поля, однако такого использования следует избегать. Вместо этого, для установки
полей и отступов для любого элемента используйте язык CSS.
Элемент: body
Описание: Обозначает часть любого XHTML-документа без фреймов, в которой
размещается содержимое для отображения.
Тип элемента: Структурный (body), непустой.
Пример:
<body>All content for the page goes here </body>
Советы: Не известно.
Элемент: br
Описание: Вставляет разрыв строки.
Тип элемента: Блочный, пустой.
Пример:
То break my line<br />
A break is fine.
Советы: В некоторых старых браузерах замыкающий слэш, расположенный
сразу за последним символом пустых элементов, может приводить к проблемам при
отображении. Эту проблему решает пробел между последним символом элемента
и замыкающим слэшем.
Элемент: button
Описание: Позволяет включать в формы кнопки-изображения.
Тип элемента: Встроенный, непустой.
Пример:
<button type="submit" id="button" value="clicked">
<img src="images/submit.gif" width="50" height="30"
alt="submit" />
</button>
Советы: Элемент поддерживается множеством браузеров, за исключением
браузеров Netscape 4.x.
Приложение А. Аннотированный справочник по языку XHTML 1.0 247
Элемент: caption
Описание: Объявляет заглавия таблиц. Чрезвычайно полезен для реализации
доступности.
Тип элемента: Структурный (table), непустой.
Пример:
<caption>This is the Table's purpose</caption>
Советы: Элемент поддерживается множеством браузеров, но в разных версиях и
типах браузеров отображается по-разному.
Элемент: center
Описание: Презентационный элемент, используемый для центрирования на
странице текста или другого содержимого.
Тип элемента: Блочный, непустой.
Пример:
<center>This text will now be centered on the page</center>
Советы: Это презентационный элемент, поэтому следует избегать его
использования, применяя язык CSS.
Элемент: cite
Описание: Обозначает цитату или ссылку на другой источник.
Тип элемента: Встроенный, непустой.
Пример:
Не said <cite>"Don't cry honey, it's only spilt
milk!"</cite>but she kept crying anyway.
Советы: Поддерживается множеством браузеров. Этот элемент следует
использовать для встроенных выдержек, цитат и ссылок. Большинство браузеров для
отображения содержимого элемента используют курсив, однако при помощи
языка CSS это поведение можно изменить на свое усмотрение.
Элемент: code
Описание: Обозначает примеры кода.
Тип элемента: Встроенный, непустой.
Пример:
The <code>code</code> element is used to denote code items that
appear inline.
248
Языки HTML и CSS
Советы: Поддерживается практически всеми браузерами. Содержимое элемента в
большинстве браузеров отображается с использованием моноширинного шрифта.
Элемент: col
Описание: Определяет и управляет отображением столбца в группе столбцов;
полезен при реализации доступности таблиц.
Тип элемента: Встроенный, пустой.
Пример:
<col span="2" align="right" />
Советы: Во многих браузерах этот элемент является ненадежным, и поскольку
чаще всего он используется для представления, современная практика советует
использовать хорошо структурированную таблицу и язык CSS для согласующихся
результатов.
Элемент: colgroup
Описание: Обозначает группу столбцов таблицы.
Тип элемента: Встроенный, непустой.
Пример:
<table>
<colgroup align="center" span="2"x/colgroup>
<colgroup valign="bottom"></colgroup>
<tr>
<td>column one, spans two columns, is centered.</td>
<td>column two, part of the two column span, is centered</td>
<td>column three, aligned to the bottom</td>
</tr>
</table>
Советы: Во многих браузерах этот элемент является ненадежным и чаще всего
используется для группирования столбцов в презентационных целях. Для
согласующихся результатов такое представление лучше всего реализовать с
использованием языка CSS.
Элемент: dd
Описание: Создает описание списка определений.
Тип элемента: Блочный, непустой.
Пример:
<dl>
<dt>XHTML</dt>
Приложение А. Аннотированный справочник по языку XHTML 1.0
249
<dd>Extensible Hypertext Markup Language</dd>
</dl>
Советы: Поддерживается очень большим количеством браузеров, но, к
сожалению, используется редко.
Элемент: del
Описание: Обозначает удаленный текст, обычно из предыдущей версии одного и
того же документа или в отредактированном документе.
Тип элемента: Встроенный, непустой.
Пример:
<del>This text is to be deleted</del>
Советы: Не поддерживается браузерами Netscape 4.x. В браузерах с поддержкой
данного элемента, содержимое элемента обычно отображается перечеркнутым.
Элемент: df n
Описание: Описывает термин, используемый в документе впервые.
Тип элемента: Встроенный, непустой.
Пример:
<dfn>XHTML</dfn> is the Extensible Hypertext Markup Language.
Советы: Не поддерживается браузерами Netscape 4.x. Хорошо поддерживается
остальными браузерами. Содержимое элемента обычно отображается курсивом.
Элемент: dir
Описание: Определяет список каталогов.
Тип элемента: Блочный, непустой.
Пример:
<dir>
<li>Item one</li>
<li>Item two</li>
<li>Item three</li>
</dir>
Советы: Поддерживается множеством браузером. Это устаревший элемент и
следует избегать его использования, заменяя элементом ul.
Элемент: div
Описание: Обозначает раздел документа. Используется в основном для
идентификации разделов документа, которые в последствии можно позиционировать и
стилизовать при помощи языка CSS.
250
Языки HTML и CSS
Тип элемента: Блочный, непустой.
Пример:
<div id="content">
This section will contain the document's primary content.
</div>
Советы: Поддерживается практически всеми браузерами. Это один из основных
элементов, используемых для эффективной стилизации разделов страницы.
Элемент: dl
Описание: Обозначает список определений терминов.
Тип элемента: Блочный, непустой.
Пример:
<dl>
<dt>XHTML</dt>
<dd>Extensible Hypertext Markup Language</dd>
</dl>
Советы: Поддерживается практически всеми браузерами.
Элемент: dt
Описание: Обозначает определяемый термин.
Тип элемента: Блочный, непустой.
Пример: обратитесь к примеру для элемента dl.
Советы: Поддерживается практически всеми браузерами.
Элемент: em
Описание: Структурный, непустой, встроенный элемент, используемый для
обозначения текста, которому придается особое значение.
Тип элемента: Встроенный, непустой.
Пример:
<em>This text is marked up as emphasized text.</em>
Советы: Поддерживается очень большим количеством браузером. Хотя браузеры
обычно отображают акцентированный текст курсивом, это всего лишь
соглашение. Элемент em не считается презентационным элементом.
Элемент: fieldset
Описание: Предоставляет способ группирования связанных заголовков формы и
элементов управления. Используется для доступности.
Приложение А. Аннотированный справочник по языку XHTML 1.0
251
Тип элемента: Блочный, непустой.
Пример:
<form>
<fieldset>
<input type="text" id="firstname" value="firstname" />
<input type="text" id="lastname" value="lastname" />
</fieldset>
</form>
Советы: Не поддерживается браузерами Netscape 4.x. Поддерживается
современными браузерами. Большинство браузеров отображают вокруг содержимого
элемента f ieldset рамку.
Элемент: font
Описание: Позволяет автору документа добавлять шрифты в документ.
Тип элемента: Встроенный, непустой.
Пример:
<font face="Arial" color="blue" size="2">This will appear as
Arial blue text one size smaller than the default text</font>
Советы: Это устаревший элемент, и хотя он допустим в языке XHTML 1.0
Transitional, следует избегать его использования.
Элемент: form
Описание: Обозначает форму.
Тип элемента: Блочный, непустой.
Пример:
<form>
<input type="text" id="firstname" value="firstname" />
<input type="text" id="lastname" value="lastname" />
</form>
Советы: Обычно, необходимо указывать скрипт, который отвечает за обработку
введенных данных. Эти скрипты сильно отличаются друг от друга;
проконсультируйтесь со своим поставщиком услуг насчет того, нужно ли предоставлять
дополнительную информацию для скриптов, характерных для вашей среды.
Элемент: frame
Описание: Обозначает фрейм в документе набора фреймов. Может
использоваться только вместе с определением DTD набора фреймов, заменяет элемент
body в документе такого типа.
252
Языки HTML и CSS
Тип элемента: Структурный (frames), пустой.
Пример:
<frame src="framel.html" id="framel" scrolling="no" />
Советы: Поддерживается всеми современными браузерами. Элемент должен
быть использован в наборе фреймов вместе с определением DOCTYPE для набора
фреймов.
Элемент: frameset
Описание: Определяет набор фреймов - элемент управления сайтом,
построенным на фреймах.
Тип элемента: Структурный (frames), непустой.
Пример:
<frameset cols="30%,100%" scrolling="auto">
<frame src="nav.html">
<frame src="content.html" />
<frame src="frame3.html" />
</frameset>
Советы: Поддерживается всеми современными браузерами. Элемент доступен
только в определении DOCTYPE для набора фреймов.
Элемент: hl-h6
Описание: Используется для заголовков, уровни 1-6.
Тип элемента: Блочный, непустой.
Пример:
<hl>Welcome to the site that does it all!</hl>
Советы: Поддерживается практически всеми браузерами. Заголовки должны
быть использованы семантически для хорошо структурированных документов, а
не для управления размером заголовка. Элемент hi считается наиважнейшим
заголовком на странице, приравниваемым по значению к заголовку главы.
Многие профессиональные авторы пропагандируют использование только одного
элемента hi в документе, однако это не обязательное правило.
Элемент: head
Описание: Обозначает головную часть документа. Это обязательный элемент для
всех документов, создаваемых с использованием языка XHTML, и он должен
включать в себя элемент title. Головная часть документа используется для
определения заголовка страницы и может быть использована для элементов meta,
link, style и script.
Приложение А. Аннотированный справочник по языку XHTML 1.0
253
Тип элемента: Структурный (документ), непустой.
Пример:
<head>
<title>The title element must always appear within a head
element</title>
</head>
Советы: Старые браузеры будут отображать код стилей или скриптов, если код
не включен в комментарии, однако сейчас это случается довольно редко.
Элемент: hr
Описание: Отображает горизонтальную линию.
Тип элемента: Блочный, пустой.
Пример:
I want to separate my text with a rule, so I'll place a
horizontal rule element after.
<hr />
Советы: Поддерживается практически всеми браузерами. Многие специалисты по
разметке советуют избегать использования горизонтальных линий, а вместо этого
применять язык CSS для стилизации нижней границы выбранного элемента; этот
подход является более гибким и позволяет управлять внешним видом линии.
Элемент: html
Описание: Считается корневым элементом всех документов, создаваемых с
использованием языков HTML и XHTML. Это злемент-«предок» - все элементы HTML-
и XHTML-документов являются потомками корневого элемента.
Тип элемента: Структурный (документ), непустой.
Пример:
<html xmlns="http://www.w3/org/1999/xhtml">
<head>
<titlex/title>
</head>
<body>
</body>
</html>
Советы: Поддерживается всеми браузерами. В языке XHTML открывающий тег
должен всегда содержать атрибут xmlns (пространство имен XML). Некоторые
HTML-редакторы не включают этот атрибут, что приводит к ситуации, когда
корректно оформленные документы не проходят проверку на корректность.
254 Языки HTML и CSS
Элемент: i
Описание: Презентационный элемент, используемый для создания курсивного
текста.
Тип элемента: Встроенный, непустой.
Пример:
<i>This text will appear as italicized.</i>
Советы: Этот документ доступен в определениях DTD для языков XHTML
Transitional и XHTML Strict. Однако пуристы рекомендуют избегать его использования,
поскольку существует элемент em, который считается структурным, а не
презентационным элементом.
Элемент: i frame
Описание: Создает встроенный фрейм.
Тип элемента: Блочный, непустой.
Пример:
<iframe src="about.html" width="100" height="100" id="message">
</iframe>
Советы: Элемент iframe поддерживается всеми современными браузерами, за
исключением браузеров Netscape до версии 7.0.
Элемент: img
Описание: Вызывает изображение.
Тип элемента: Встроенный, пустой.
Пример:
<img src="images/molly.gif" width="150" height="200"
alt="picture of Molly" />
Советы: Элемент поддерживается всеми браузерами, но ожидается, что в языке
XHTML 2.0 он станет устаревшим, а ему на смену придет элемент object,
используемый для всех объектов в этом языке.
Элемент: input
Описание: Используется в формах и обозначает элемент управления, например
поле ввода.
Тип элемента: Встроенный, пустой.
Пример:
<input type="text" id="firstname" value="firstname" />
Советы: Этот элемент поддерживается всеми браузерами.
Приложение А. Аннотированный справочник по языку XHTML 1.0
255
Элемент: ins
Описание: Обозначает текст, вставленный в документ.
Тип элемента: Встроенный, непустой.
Пример:
<ins>Inserted text here.</ins>
Советы: Этот элемент поддерживается всеми современными браузерами.
Поддержка полностью отсутствует у браузера Netscape 4.x. Обычно отображается в
виде подчеркнутого текста.
Элемент: isindex
Описание: Используется Web-авторами для предоставления строки ввода для
поиска индекса. Также, идентифицирует документ, как часть индекса, по которому
осуществляется поиск.
Тип элемента: Блочный, пустой.
Пример:
<isindex />
Советы: Этот элемент поддерживается практически всеми браузерами. Является
устаревшим в языке XHTML, поэтому его нельзя использовать в документах с
определением Strict DTD. Преимущественно используется в качестве формы для
программного обеспечения поисковой системы. В браузере обычно
отображается текст «This is a searchable index. Enter search keywords:», за которым следует
поле ввода для поиска.
Элемент: kbd
Описание: Определяет текст, который читатель должен вести с клавиатуры.
Тип элемента: Встроенный, непустой.
Пример:
Please type the following into your practice document:
<kbd>Hello, World!</kbd>
Советы: Этот элемент поддерживается практически всеми браузерами и обычно
текст отображается при помощи моноширинного шрифта.
Элемент: label
Описание: Позволяет авторам присваивать метки элементам управления формы.
Особенно полезно для реализации доступности.
Тип элемента: Встроенный, непустой.
256
Языки HTML и CSS
Пример:
<label for="fullname"><input type="text" id="fullname" /></label>
Советы: Элемент поддерживается всеми современными браузерами, а также
браузером Netscape 4.x.
Элемент: legend
Описание: Определяет заголовок для группы элементов формы.
Тип элемента: Блочный, непустой.
Пример:
<form>
<fieldset>
<legend>Personal Info</legend>
<input type="text" id="firstname" value="firstname" />
<input type="text" id="lastname" value="lastname" />
</fieldset>
</form>
Советы: Этот элемент недоступен в браузере Netscape 4.x, однако он
поддерживается большинством современных браузеров.
Элемент: li
Описание: Обозначает отдельный элемент упорядоченного или
неупорядоченного списка.
Тип элемента: Блочный, непустой.
Пример:
<ul>
<li>By default, unordered list items display with a
bullet.</li>
</ul>
Советы: Для этого элемента проблемы, связанные с поддержкой, не известны.
Элемент: link
Описание: Ссылки на связанные файлы, например на внешнюю таблицу стилей,
в разделе документа head.
Тип элемента: Структурный (head), непустой.
Пример:
<link href="my.css" rel="stylesheet" type="text/css" />
Приложение А. Аннотированный справочник по языку XHTML 1.0
257
Советы: Элемент поддерживается всеми браузерами, в которых реализована
хотя бы минимальная поддержка языка CSS.
Элемент: тар
Описание: Обозначает карту ссылок.
Тип элемента: Блочный, непустой.
Пример:
<тар пате="тар2">
<area shape="rect" href="http://www.molly.com/"
cords="0/0,10,20" />
<area shape="circle" href="http://www.pearson.com/"
cords="0/10,8" />
<area shape="poly" href="http://www.google.com/"
cords="10,0,20,10,0,10" />
</map>
<img src="images/map.gif" usemap="#map2" />
Советы: Поддерживается всеми современными браузерами.
Элемент: menu
Описание: Создает список меню с одним столбцом.
Тип элемента: Блочный, непустой.
Пример:
<menu>
<li>option one</li>
<li>option two</li>
<li>option three</li>
</menu>
Советы: Этот элемент поддерживается многими браузерами, однако он является
устаревшим - ему на смену пришел элемент ul.
Элемент: meta
Описание: Управляет различными метаданными в HTML- и XHTML-документах.
Тип элемента: Структурный (head), пустой.
Пример:
<meta name="description" content="Enter your description here" />
Советы: Этот элемент всегда размещается в элементе документа head.
258 Языки HTML и CSS
Элемент: nof rames
Описание: Используется только в документах с набором фреймов. Его
назначение - предоставить авторам документов возможность добавлять раздел в набор
фреймов, который будет отображаться в браузерах, не имеющих поддержки
фреймов, или который будут использовать люди для доступа к сайтам на основе
фреймов, применяя средства специальных возможностей.
Тип элемента: Блочный, непустой.
Пример:
<frameset cols="30%,100%" scrolling="auto">
<frame src="nav.html">
<frame src="content.html" />
<frame src="frame3.html" />
<noframes>
It appears your browser does not support frames. Please use this
<a href="noframes.html">version</a> for access to the content.
</noframes>
</frameset>
Советы: Этот элемент поддерживается практически всеми браузерами и должен
использоваться во всех документах с набором фреймов, помогая людям, которые
не могут воспользоваться фреймами.
Элемент: noscript
Описание: Определяет альтернативное содержание для браузеров без
поддержки язык JavaSscript.
Тип элемента: Блочный, непустой.
Пример:
<script src="scripts/myscript.js" type="text/javascript"> </script>
<noscript>
Your browser either does not support JavaScript, or you have it
disabled, thank you.
</noscript>
Советы: Этот элемент поддерживается практически всеми браузерами и должен
использоваться для предоставления информации, касающейся поддержки
скриптов, тем людям, у которых нет подходящего браузера или которые
отключили поддержку языка JavaScript по какой-либо причине.
Элемент: object
Описание: Определяет любой внешний объект. В настоящее время используется
в основном для Flash-роликов, видео, аудио и Java-апплетов, однако в языке
XHTML 2.0 этот элемент будет применяться повсеместно, включая изображения.
Приложение А. Аннотированный справочник по языку XHTML 1.0
259
Тип элемента: Особый (может быть блочным или встроенным, в зависимости от
контекста), непустой.
Пример:
<object codebase="http://www.molly.com/java/classes"
classid="FunApplet.class" width="50" height="100">Applet</object>
Советы: Этот элемент следует использовать везде, где это возможно, вместо
элемента applet, который является устаревшим. Элемент embed, который
является собственностью браузеров и не описан ни в одной из спецификаций, должен
быть заменен элементом object или, если необходимо реализовать обратную
совместимость, использоваться вместе с элементом object.
Элемент: ol
Описание: Обозначает упорядоченный список. Без стилизации, стандартным
поведением браузеров является использование числа 1 для первого элемента
списка. Это поведение можно изменить при помощи свойств языка CSS
(обратитесь к Приложению В «Аннотированный справочник по языку CSS 2.1»).
Тип элемента: Блочный, непустой.
Пример:
<ol>
<li>This is the first item in the list</li>
<li>This is the second item in the list</li>
</ol>
Советы: Элемент поддерживается всеми браузерами и должен использоваться во
всех логичных случаях, когда необходимо применять последовательный список.
Элемент: optgroup
Описание: Позволяет сгруппировать варианты в меню выбора формы.
Тип элемента: Блочный, непустой.
Пример:
<form>
<select id="browsers">
<option>Name your favorite web browser</option>
<optgroup label="standards-compliant">
<option>Mozilla</option>
<option>Firefox</option>
<option>Safari</option>
<option>Opera</option>
</optgroup>
<optgroup label="needs-updating">
<option>Internet Explorer</option>
<option>AOL</option>
260
Языки HTML и CSS
</optgroup>
</select>
</form>
Советы: Этот элемент поддерживается только современными браузерами,
например IE 6.0, Mozilla и Mozilla Firefox. Очень полезен для реализации доступности и
общего понимания, поэтому его рекомендуется использовать. Если браузер не
поддерживает этот элемент, список вариантов будет все равно отображаться и
корректно функционировать.
Элемент: option
Описание: Описывает отдельные варианты меню формы.
Тип элемента: Блочный, непустой.
Пример: обратитесь к примеру для элемента optgroup.
Советы: Этот элемент поддерживается всеми браузерами.
Элемент: р
Описание: Обозначает абзац текста.
Тип элемента: Блочный, непустой.
Пример:
<p>This is a paragraph of text.</p>
Советы: Этот элемент поддерживается всеми известными браузерами.
Элемент: param
Описание: Указывает значения для апплетов или объектов.
Тип элемента: Структурный (object), пустой.
Пример:
<object codebase="http://www.molly.com/java/classes"
classid="FunApplet.class" width="50" height="100">
<param name="FunStuff" value="lgh" />
Fun Stuff Java Applet</object>
Советы: Этот элемент поддерживается многими браузерами и часто является
обязательным для корректного функционирования выбранного объекта.
Элемент: pre
Описание: Чрезвычайно полезный элемент, обозначающий часть, в которой
весь текст, все символы окончания строки и пробелы будут интерпретированы
браузером.
Приложение А. Аннотированный справочник по языку XHTML 1.0
261
Тип элемента: Блочный, непустой.
Пример:
<рге>
This text will
appear with all the spaces
and carriage returns intact.
</pre>
Советы: Элемент поддерживается практически всеми браузерами. Чаще всего
используется для отображения длинных отрывков кода. Содержимое элемента
отображается при помощи моноширинного шрифта почти во всех браузерах.
Элемент: q
Описание: Определяет короткие встроенные цитаты.
Тип элемента: Встроенный, непустой.
Пример:
<q>Don't put all your eggs in one basket.</q>
Советы: Все современные браузеры поддерживают элемент q, однако способы
отображения текста у них отличаются. В некоторых браузерах добавляются
символы кавычек; в других - никаких изменений не происходит. Для изменения
внешнего вида элемента можно использовать язык CSS.
Элемент: s
Описание: Отображает перечеркнутый текст.
Тип элемента: Встроенный, непустой.
Пример:
<q>Don't put all your <s>eggs</s> hopes in one basket.</q>
Советы: Элемент поддерживается множеством браузеров, но является
устаревшим, поскольку таблицы стилей предоставляют гораздо большие возможности
по управлению.
Элемент: samp
Описание: Отображает результаты выполнения скриптов или других программ.
Тип элемента: Встроенный, непустой.
Пример:
<p>Enter the following text into your code: <samp>Hello,
World! < / sampx /p>
262
Языки HTML и CSS
Советы: Элемент поддерживается множеством браузеров и полезен для
встроенного отображения результатов выполнения примера, поскольку большая часть
браузеров отображает текст при помощи моноширинного шрифта.
Элемент: script
Описание: Встраивает или связывает документ со скриптами, обычно
написанными на языке JavaScript.
Тип элемента: Структурный (head), непустой.
Пример:
<script type="text/javascript">(javascript code here)</script>
<script href="myscript.js"></script>
Советы: Элемент поддерживается практически всеми браузерами.
Элемент: select
Описание: Создает открывающееся меню на форме.
Тип элемента: Блочный, непустой.
Пример:
<form>
<select name="browsers">
<option>Your favorite browser:</option>
<option>IE</option>
<option>Mozilla / Firefox</option>
<option>Opera</option>
<option>Safari</option>
</select>
</form>
Советы: Элемент поддерживается практически всеми браузерами.
Элемент: small
Описание: Презентационный элемент для отображения текста шрифтом, размер
которого меньше стандартного размера текста браузера.
Тип элемента: Встроенный, непустой.
Пример:
What do you know - <small>this text will appear smaller</small>
than the surrounding text.
Советы: Вместо элемента small используйте язык CSS, чтобы получить больше
возможностей управления размером текста.
Приложение А. Аннотированный справочник по языку XHTML 1.0
263
Элемент: span
Описание: Встроенный общий контейнер для текста.
Тип элемента: Встроенный, непустой.
Пример:
In this paragraph <span style="color: blue; font-weight:
bold;">I've styled this text</span> differently than the
surrounding text.
Советы: Элемент поддерживается множеством браузеров и в основном используется
для применения встроенного стиля. Элемент span находится под пристальным
взглядом пуристов разметки, которые считают, что другие элементы, например q,
cite или code, лучше подходят для разметки текста, имеющего особый смысл.
Элемент: strike
Описание: Создает перечеркнутый текст (как и элемент s).
Тип элемента: Встроенный, непустой.
Пример:
Don't put all your <strike>eggs</strike> dreams in one basket.
Советы: Этот элемент поддерживается множеством браузеров, однако
предпочтительнее использовать язык CSS для применения стилей, перечеркивающих текст.
Элемент: strong
Описание: Структурный элемент, обозначающий акцентируемую часть текста.
Тип элемента: Встроенный, непустой.
Пример:
I want to <strong>shout out the good news</strong> for everyone
to hear!
Советы: Поддерживается множеством браузеров. Элемент strong
предпочтительно использовать вместо элемента Ь. По умолчанию, обычно эти два элемента
отображают текст шрифтом полужирного начертания.
Элемент: style
Описание: Обозначает раздел встроенного стиля.
Тип элемента: Структурный (head), непустой.
Пример:
<style type="text/ess">
264
Языки HTML и CSS
hi {font-family: Arial, font-size: 1.5em; color: #000;}
</style>
Советы: Этот элемент поддерживается всеми браузерами, у которых реализована
хотя бы минимальная поддержка языка CSS. Хотя в определенных ситуациях
встроенные стили могут быть весьма полезны, рекомендуется использовать
внешние стили для лучшего управления документами.
Элемент: sub
Описание: Описывает текст в нижнем индексе.
Тип элемента: Встроенный, непустой.
Пример:
What do you know - <sub>this text will appear as
subscript</sub> that is, lower than the surrounding text.
Советы: Поддерживается практически всеми браузерами.
Элемент: sup
Описание: Описывает текст в верхнем индексе.
Тип элемента: Встроенный, непустой.
Пример:
On the 24<sup>th</sup> of June, my niece got married to the
nicest guy!
Советы: Поддерживается практически всеми браузерами.
Элемент: table
Описание:
Тип элемента: Блочный, непустой.
Пример:
<table>
<tr>
<th>Table header</th>
<td>Table cell</td>
<td>Another table cell</td>
</tr>
</table>
Советы: Поддерживается всеми браузерами. Элемент table в идеале
используется в качестве структурного элемента - то есть для описания табличных данных,
- а не в качестве инструмента для создания макетов. Для управления всеми
аспектами табличного представления можно использовать язык CSS.
Приложение А. Аннотированный справочник по языку XHTML 1.0 265
Элемент: tbody
Описание: Группирует строки таблиц. Полезен для обеспечения доступности
таблиц.
Тип элемента: Структурный (table), непустой.
Пример:
<table>
<tr>
<th>Table header</th>
<td>Table cell</td>
<td>Another table cell</td>
</tr>
<tbody id="row2">
<tr>
<th>Table header</th>
<td>Table cell</td>
<td>Another table cell</td>
</tr>
<tbody>
</table>
Советы: Этот элемент доступен только в современных браузерах. Его полезно
использовать при разделении таблицы на части, чтобы сделать ее более понятной.
Элемент: td
Описание: Включает содержимое столбца таблицы.
Тип элемента: Структурный (table), непустой.
Пример: обратитесь к примерам для элементов table и tbody.
Советы: Этот элемент поддерживается всеми браузерами.
Элемент: textarea
Описание: Создает многострочные поля ввода на формах.
Тип элемента: Блочный, непустой.
Пример:
<form>
<textarea name="feedback rows="2" cols="25">This text will
appear within the text area</textarea>
</form>
Советы: Этот элемент поддерживается всеми браузерами.
266
Языки HTML и CSS
Элемент: tf oot
Описание: Описывает строку нижнего колонтитула таблицы.
Тип элемента: Структурный (table), непустой.
Пример:
<tfoot>
<tr>
<th>Table header</th>
<td>Table cell</td>
<td>Another table cell</td>
</tr>
</tfoot>
Советы: Этот элемент доступен в современных браузерах и используется для
расширенной доступности.
Элемент: th
Описание: Заголовок таблицы для столбцов данных.
Тип элемента: Структурный (table), непустой.
Пример: обратитесь к примерам для элементов table и tbody.
Советы: Поддерживается всеми браузерами. Этот элемент необходим при
создании структурированных таблиц данных. По умолчанию содержимое элемента
отображается шрифтом с полужирным начертанием и выравниванием по центру,
однако это можно легко изменить при помощи языка CSS.
Элемент: thead
Описание: Определяет головную часть многострочной таблицы.
Тип элемента: Структурный (table), непустой.
Пример:
<thead>
<tr>
<th>Table header</th>
<td>Table cell</td>
<td>Another table cell</td>
</tr>
</thead>
Советы: Поддерживается только современными браузерами. Используется для
улучшения доступности и понимания многострочных таблиц.
Приложение А. Аннотированный справочник по языку XHTML 1.0 267
Элемент: title
Описание: Обозначает заголовок страницы, который отображается в строке
заголовка браузера.
Тип элемента: Структурный (head), непустой.
Пример:
<title>Welcome to Molly.Com!</title>
Советы: Поддерживается всеми браузерами. Чтобы документ прошел проверку
на корректность, этот элемент должен размещаться в разделе документа head.
Элемент: tr
Описание: Создает строку таблицы.
Тип элемента: Структурный (table), непустой.
Пример: обратитесь к примерам для элементов table и tbody.
Советы: Поддерживается всеми браузерами.
Элемент: tt
Описание: Создает телетайпный текст.
Тип элемента: Встроенный, непустой.
Пример:
In this sentence <tt>these words represent teletype text</tt>.
Советы: Поддерживается практически всеми браузерами. Обычно отображается
моноширинным шрифтом и считается презентационным элементом, поскольку
этот визуальный стиль можно легко воспроизвести при помощи языка CSS.
Элемент: и
Описание: Презентационный элемент, используемый для подчеркивания текста.
Тип элемента: Встроенный, непустой.
Пример:
In this sentence, <u>these words are underlined</u>.
Советы: Поддерживается всеми браузерами, хотя предпочтительнее
использовать язык CSS. Многие эксперты протестуют против использования
подчеркивания, поскольку люди путают подчеркнутый текст со связанным текстом.
268
Языки HTML и CSS
Элемент: ul
Описание: Создает неупорядоченный список.
Тип элемента: Блочный, непустой.
Пример:
<ul>
<li>List item one</li>
<li>List item two</li>
<ul>
Советы: Поддерживается всеми браузерами. Элементы неупорядоченных
списков отображаются с маркерами, используемыми по умолчанию, хотя это можно
изменить при помощи языка CSS.
Элемент: var
Описание: Обозначает переменную.
Тип элемента: Встроенный, непустой.
Пример:
Locate for the <var>book.php</var> file before continuing.
Советы: Этот элемент используется редко, но поддерживается практически
всеми браузерами.
ПРИЛОЖЕНИЕ В.
Аннотированный справочник
по языку CSS 2.1
В этом приложении собрана информация о селекторах и свойствах, доступных
в языке CSS 2.1. Селекторы сначала определяются и описываются, затем
приводится пример и полезные советы по использованию. Что касается свойств, то
каждое свойство сначала определяется и описывается, при этом указывается
его классификация среды. Затем приводится пример и полезные советы по
использованию.
Селекторы, псевдоклассы и псевдоэлементы
Следующие типы селекторов, псевдоклассы и псевдоэлементы доступны для
использования в языке CSS 2.1.
Селектор: Селектор сестринских элементов
Описание: Выбирает сестринский элемент (смежный непосредственно с первым
определенным селектором с общими предками).
Пример:
hi + р {
text-indent: 0;
}
Советы: Этот селектор недоступен для использования в браузере Internet Explorer
и поэтому он используется в основном для улучшения стилей в браузерах,
поддерживающих данный тип селектора, или для реализации обходных решений.
Селектор: Селектор атрибута
Описание: Выбирает элемент на основе его атрибутов.
Пример:
acronym [title] {
color: red;
}
Советы: Этот селектор недоступен для использования в браузере Internet Explorer
и поэтому он используется в основном для улучшения стилей в браузерах,
поддерживающих данный тип селектора, или для реализации обходных решений.
Селектор: Селектор дочерних элементов
Описание: Выбирает дочерние элементы для указанного элемента.
270
Языки HTML и CSS
Пример:
#content > р {
padding: Юрх;
}
Советы: Этот селектор недоступен для использования в браузере Internet Explorer
и поэтому он используется в основном для улучшения стилей в браузерах,
поддерживающих данный тип селектора, или для реализации обходных решений.
Селектор: Селектор класса
Описание: Позволяет создавать пользовательский класс. В языке HTML или
XHTML вызывается с использованием атрибута class для выбранного элемента.
Пример:
.notation {
font-size: xx-small;
}
Советы: Этот селектор поддерживается практически всеми браузерами, и
поэтому используется слишком часто. Избежать чрезмерного использования
возможно путем упрощения кода на языке CSS при помощи селекторов потомков.
Селектор: Селектор потомка
Описание: Выбирает все элементы-потомки родительского элемента.
Пример:
#content p {
font-family: Arial, Helvetica, sans-serif;
}
Советы: Этот селектор поддерживается практически всеми браузерами и его
следует использовать всегда, когда это возможно, чтобы свести к минимуму
зависимость от селекторов класса.
Селектор: ID-селектор
Описание: Позволяет создавать селектор с уникальным идентификатором. В
коде на языке HTML или XHTML вызывается при помощи атрибута id выбранного
элемента. В документе может использоваться только один раз.
Пример:
#content {
margin-left: 25px;
margin-right: 25px;
}
Приложение В. Аннотированный справочник по языку CSS 2.1
271
Советы: Этот селектор поддерживается практически всеми браузерами и
обычно применяется для описания частей документа, используемых для макета.
Он также используется для связи элементов со скриптами в языке DHTML.
Селектор: Универсальный селектор
Описание: Выбирает все элементы.
Пример:
* {
border: lpx dashed blue;
}
Советы: Этот селектор крайне полезен при выявлении ошибок, однако его не
следует использовать для решения обычных задач. В версиях браузера Internet Explorer
существуют определенные проблемы с поведением универсального селектора.
Селектор: Селектор (типа) элемента
Описание: Селектор, соответствующий типу элемента.
Пример:
hi {
font-size: 22рх;
}
Советы: Поддерживается практически всеми браузерами - это наиболее часто
используемый селектор.
Селектор: Динамический псевдокласс : active
Описание: Выбирает элемент в момент его активации пользователем.
Пример:
a:active {
color: red;
}
Советы: Поддерживается практически всеми браузерами. Выполняя стилизацию
ссылок, необходимо придерживаться порядка LoVe/HAte - link, visited,
hover, active - иначе результаты могут оказаться несоответствующими.
Селектор: Псевдоэлемент rafter
Описание: Используется для размещения сгенерированного текста за
выбранным элементом.
272
Языки HTML и CSS
Пример:
a:after {
content: link;
}
Советы: Этот селектор недоступен для использования в браузере Internet Explorer
и поэтому используется в основном для улучшения стилей в браузерах,
поддерживающих данный тип селектора.
Селектор: Псевдоэлемент : before
Описание: Используется для размещения сгенерированного текста перед
выбранным элементом.
Пример:
a:before {
content: link;
}
Советы: Этот селектор недоступен для использования в браузере Internet Explorer
и поэтому используется в основном для улучшения стилей в браузерах,
поддерживающих данный тип селектора.
Селектор: Псевдокласс :firstchild
Описание: Используется для выбора только первого элемента-потомка.
Пример:
p;firstchild em {
font-weight: bold;
}
Советы: Этот селектор недоступен для использования в браузере Internet Explorer
и поэтому используется в основном для улучшения стилей в браузерах,
поддерживающих данный тип селектора.
Селектор: Псевдоэлемент : f irstletter
Описание: Используется для выбора только первой буквы содержимого элемента.
Пример:
ttcontent p:firstletter {
font-size: larger;
}
Советы: Поддерживается практически всеми современными браузерами. Этот
селектор полезен для создания буквиц без применения изображений.
Приложение В. Аннотированный справочник по языку CSS 2.1
273
Селектор: Псевдоэлемент rfirstline
Описание: Используется для выбора только первой строки содержимого элемента.
Пример:
#content p:firstline {
color: red;
}
Советы: Поддерживается практически всеми современными браузерами. Этот
селектор позволяет применить стиль к первой строки содержимого элемента.
Если длина строки изменилась из-за изменения размеров окна браузера, стиль
все равно будет применен к первой строке.
Селектор: Динамический псевдокласс : focus
Описание: Применяет стиль, когда элемент находится в фокусе (позволяет
вводить символы с клавиатуры, например в форме).
Пример:
input:focus {
border: lpx solid red;
}
Советы: Этот селектор недоступен для использования в браузере Internet Explorer
и поэтому используется в основном для улучшения стилей в браузерах,
поддерживающих данный тип селектора.
Селектор: Динамический псевдокласс : hover
Описание: Применяет стиль, когда указатель мыши или устройства
позиционирования наведен на элемент.
Пример:
#toggle:hover {
border: lpx solid green;
}
Советы: Этот селектор недоступен для использования в браузере Internet Explorer
кроме случая, когда он применяется к элементу. Поэтому данный тип селектора
используется в основном для улучшения стилей в браузерах, поддерживающих его.
Селектор: Псевдокласс : lang
Описание: Выбирает элемент в зависимости от его языка.
Пример:
p.-lang(de) {
quotes: '»' *«' '\2039' '\203A';
}
10-1356
274
Языки HTML и CSS
Советы: Несовместимая поддержка селектора. Этот селектор используется для
многоязычных документов и интернационализации.
Селектор: Псевдокласс ссылки :link
Описание: Выбирает ссылку в нормальном состоянии.
Пример:
a:link {
color: #ccc;
}
Советы: Этот селектор поддерживается практически всеми браузерами. Не
забывайте правило последовательности LoVe/HAte, чтобы избежать
несоответствующих результатов.
Селектор: Псевдокласс ссылки : visited
Описание: Выбирает посещенную ссылку.
Пример:
a:visited {
color: #333;
}
Советы: Этот селектор поддерживается практически всеми браузерами. Не
забывайте правило последовательности LoVe/HAte, чтобы избежать
несоответствующих результатов.
Свойства, доступные в языке CSS 2.1
Свойство: background
Тип(ы) среды: Визуальный
Описание: Свойство-сокращение для всех отдельных свойств фона.
Пример:
body: {
background: url(images/body-back.gif) #ccc 50% no-
repeat fixed;
}
Советы: Свойства-сокращения зачастую являются уникальными. В данном
случае, необходимо использовать последовательность: изображение, цвет, позиция,
заполнение и присоединение. Если вы не используете все свойства, необходимо
просто сохранить порядок остальных свойств.
Приложение В. Аннотированный справочник по языку CSS 2.1
275
Свойство: background-attachment
Описание: Используется для управления прокручиванием фона.
Тип(ы) среды: Визуальный
Пример:
body {
background-attachment: scroll;
}
Советы: Значение scroll означает прокручивание фона вместе с содержимым;
если используется значение fixed, при прокручивании содержимого фон
остается зафиксированным.
Свойство: background-color
Описание: Определяет цвет фона элемента.
Тип(ы) среды: Визуальный
Пример:
div#content {
background-color: #fff;
}
Советы: Используйте цвет фона вместе с фоновым изображением, при этом
выбирайте цвет, близкий к концевому эффекту изображения. Это поможет
избежать проблем, возникающих, когда фоновое изображение не загружается по
какой-либо причине.
Свойство: background-image
Описание: Указывает путь к изображению для фона элемента.
Тип(ы) среды: Визуальный
Пример:
div#nav {
background-image: url(images/nav.gif);
}
Советы: Иногда путь к изображению и имя файла заключаются в кавычки. Это
совсем необязательно; если не использовать кавычки, вы сможете сэкономить
несколько байтов данных.
Свойство: background-position
Описание: Позволяет управлять положением фонового изображения
относительно его элемента.
276
Языки HTML и CSS
Тип(ы) среды: Визуальный
Пример:
div#nav {
background-position: top left;
}
Советы: Можно определять положение фонового изображения при помощи
процентов или ключевых слов значений длины (top, right, center, bottom,
left). Если указано только одно значение, оно определяет только
горизонтальное положение. Если указаны оба значения, горизонтальное значение
указывается первым. Для определения положения можно использовать отрицательные
значения, выраженные в процентах.
Свойство: background-repeat
Описание: Описывает используемый способ заполнения фона или отключает
заполнение.
Тип(ы) среды: Визуальный
Пример:
div#content {
background-repeat: repeat-x;
}
Советы: Когда-то все фоновые изображения просто заполняли раздел документа
body. Теперь можно управлять заполнением элемента, использовать полное
заполнение элемента, использовать заполнение вдоль оси х или у, или вообще не
использовать заполнение.
Свойство: border
Описание: Свойство-сокращение, позволяющее применять толщину, стиль и
цвет ко всем четырем сторонам блока элемента.
Тип(ы) среды: Визуальный
Пример:
blockquote {
border: lpx dotted red;
}
Советы: Использование свойства border для отображения контуров элементов
может оказаться весьма полезным при обнаружении ошибок, а также является
красивым вариантом дизайна для представления элемента. При помощи данного свойства-
сокращения невозможно применить различные стили к четырем сторонам; в таком
случае необходимо использовать полную форму записи для каждой из сторон.
Приложение В. Аннотированный справочник по языку CSS 2.1
277
Свойство: border-collapse
Описание: Определяет модель отображения границ таблицы. Значение
separate позволяет отображать раздельные границы ячеек; значение collapse
устанавливает модель сплошного отображения границ.
Тип(ы) среды: Визуальный
Пример:
#table01 {
border-collapse: separate;
}
Советы: Выбранная модель отображения границ таблицы является полностью
эстетическим выбором.
Свойство: border-color
Описание: Устанавливает цвет границы для любого элемента. Может
использоваться вместо свойств border-top-color, border-right-color, border-
bottom-color и border-left-color.
Тип(ы) среды: Визуальный
Пример:
#sidebar {
border-color: red blue green yellow;
}
Советы: Если вы указываете больше одного цвета, необходимо перечислять
значения в соответствии с правилом TRouBLe: top, right, bottom, left. Если
указано только одно значение, оно применяется ко всем сторонам. Если указаны
два значения, первое значение применяется к верхней и нижней границам, а
второе - к левой и правой. Если указаны три значения, первое значение
применяется к верхней границе, второе - к левой и правой границам, а третье - к
нижней границе. Если указаны четыре значения, они применяются ко всем границам
в следующем порядке: верхняя, правая, нижняя и левая.
Свойство: border-spacing
Описание: Определяет расстояние между соседними ячейками таблицы.
Тип(ы) среды: Визуальный
Пример:
table {
border-spacing: 1.Oem;
}
278
Языки HTML и CSS
Советы: Если указано только одно значение, оно задает расстояние, как по
горизонтали, так и по вертикали. Если указаны два значения, первое значение задает
расстояние по горизонтали, а второе - расстояние по вертикали. Значения
длины не могут быть отрицательными.
Свойство: border-style
Описание: Устанавливает начертание границы элемента. Может использоваться
вместо свойств border-top-style, border-right-style, border-bottom-
style и border-left-style.
Тип(ы) среды: Визуальный
Пример:
#sidebar {
border-style: solid dotted dashed none;
}
Советы: Если вы указываете больше, чем одно начертание, необходимо
перечислять значения в соответствии с правилом TRouBLe: top, right, bottom,
left. Если указаны только одно значение, оно применяется ко всем сторонам.
Если указаны два значения, первое значение применяется к верхней и нижней
границам, а второе - к левой и правой. Если указаны три значения, первое
значение применяется к верхней границе, второе - к левой и правой границам, а
третье - к нижней границе. Если указано четыре значения, они применяются ко
всем границам в следующем порядке: верхняя, правая, нижняя и левая.
Свойство: border-top
Описание: Свойство-сокращение для стилизации толщиной, начертанием и
цветом верхней границы элемента.
Тип(ы) среды: Визуальный
Пример:
#sidebar {
border-top: 2px dashed green;
}
Советы: Все три значения использовать не обязательно. Можно указать,
например, только значение толщины, а для остальных значений использовать свойства
border-style и border-color.
Свойство: border-right
Описание: Свойство-сокращение для стилизации толщиной, начертанием и
цветом правой границы элемента.
Тип(ы) среды: Визуальный
Приложение В. Аннотированный справочник по языку CSS 2.1
279
Пример:
#sidebar {
border-right: 2px solid green;
}
Советы: Все три значения использовать не обязательно. Можно указать,
например, только значение толщины, а для остальных значений использовать свойства
border-style и border-color.
Свойство: border-bottom
Описание: Свойство-сокращение для стилизации толщиной, начертанием и
цветом нижней границы элемента.
Тип(ы) среды: Визуальный
Пример:
#sidebar {
border-bottom: 2px dashed green;
}
Советы: Все три значения использовать не обязательно. Можно указать,
например, только значение толщины, а для остальных значений использовать свойства
border-style и border-color.
Свойство: border-left
Описание: Свойство-сокращение для стилизации толщиной, начертанием и
цветом левой границы элемента.
Тип(ы) среды: Визуальный
Пример:
#sidebar {
border- bottom: 2px solid green;
}
Советы: Все три значения использовать не обязательно. Можно указать,
например, только значение толщины, а для остальных значений использовать свойства
border-style и border-color.
Свойство: border-top-color
Описание: Задает цвет верхней границы элемента.
Тип(ы) среды: Визуальный
Пример:
#nav {
border-top-color: #c30;
)
280
Языки HTML и CSS
Советы: Использование свойств-сокращений позволяет сделать код на языке CSS
более изящным. Используйте полную форму записи свойств border только в тех
случаях, когда это действительно необходимо.
Свойство: border-right-color
Описание: Задает цвет правой границы элемента.
Тип(ы) среды: Визуальный
Пример:
#nav {
border-right-color: red;
}
Советы: Использование свойств-сокращений позволяет сделать код на языке CSS
более изящным. Используйте полную форму записи свойств border только в тех
случаях, когда это действительно необходимо.
Свойство: border-bottom-color
Описание: Задает цвет нижней границы элемента.
Тип(ы) среды: Визуальный
Пример:
#nav {
border-bottom-color: #808080;
}
Советы: Использование свойств-сокращений позволяет сделать код на языке CSS
более изящным. Используйте полную форму записи свойств border только в тех
случаях, когда это действительно необходимо.
Свойство: border-left-color
Описание: Задает цвет левой границы элемента.
Тип(ы) среды: Визуальный
Пример:
#nav {
border-left-color: red;
}
Советы: Использование свойств-сокращений позволяет сделать код на языке CSS
более изящным. Используйте полную форму записи свойств border только в тех
случаях, когда это действительно необходимо.
Приложение В. Аннотированный справочник по языку CSS 2.1
281
Свойство: border-top-style
Описание: Задает начертание верхней границы элемента.
Тип(ы) среды: Визуальный
Пример:
blockquote {
border-top-style: dashed;
}
Советы: Использование свойств-сокращений позволяет сделать код на языке CSS
более изящным. Используйте полную форму записи свойств border только в тех
случаях, когда это действительно необходимо. Существуют следующие значения
свойства: dotted, dashed, solid, double, groove, ridge, inset и
outset. Также существуют значения none (ничего не отображается) и hidden.
Свойство: border-right-style
Описание: Определяет начертание правой границы элемента.
Тип(ы) среды: Визуальный
Пример:
blockquote {
border-right-style: groove;
}
Советы: Использование свойств-сокращений позволяет сделать код на языке CSS
более изящным. Используйте полную форму записи свойств border только в тех
случаях, когда это действительно необходимо. Существуют следующие значения
свойства: dotted, dashed, solid, double, groove, ridge, inset и
outset. Также существуют значения none (ничего не отображается) и hidden.
Свойство: border-bottom-style
Описание: Задает начертание нижней границы элемента.
Тип(ы) среды: Визуальный
Пример:
blockquote {
border-bottom-style: ridge;
}
Советы: Использование свойств-сокращений позволяет сделать код на языке CSS
более изящным. Используйте полную форму записи свойств border только в тех
случаях, когда это действительно необходимо. Существуют следующие значения
свойства: dotted, dashed, solid, double, groove, ridge, inset и
outset. Также существуют значения none (ничего не отображается) и hidden.
282
Языки HTML и CSS
Свойство: border-left-style
Описание: Задает начертание левой границы элемента.
Тип(ы) среды: Визуальный
Пример:
blockquote {
border-left-style: groove;
}
Советы: Использование свойств-сокращений позволяет сделать код на языке CSS
более изящным. Используйте полную форму записи свойств border только в тех
случаях, когда это действительно необходимо. Существуют следующие значения
свойства: dotted, dashed, solid, double, groove, ridge, inset и
outset. Также существуют значения none (ничего не отображается) и hidden.
Свойство: border-top-width
Описание: Задает толщину верхней границы элемента.
Тип(ы) среды: Визуальный
Пример:
ttcontent {
border-top-width: 2px;
}
Советы: Использование свойств-сокращений позволяет сделать код на языке CSS
более изящным. Используйте полную форму записи свойств border только в тех
случаях, когда это действительно необходимо.
Свойство: border-right-width
Описание: Определяет толщину правой границы элемента.
Тип(ы) среды: Визуальный
Пример:
ttcontent {
border-right-width: 4px;
}
Советы: Использование свойств-сокращений позволяет сделать код на языке CSS
более изящным. Используйте полную форму записи свойств border только в тех
случаях, когда это действительно необходимо.
Свойство: border-bottom-width
Описание: Определяет толщину нижней границы элемента.
Тип(ы) среды: Визуальный
Приложение В. Аннотированный справочник по языку CSS 2.1
283
Пример:
ttcontent {
border-bottom-width: 2рх;
}
Советы: Использование свойств-сокращений позволяет сделать код на языке CSS
более изящным. Используйте полную форму записи свойств border только в тех
случаях, когда это действительно необходимо.
Свойство: border-left-width
Описание: Задает толщину левой границы элемента.
Тип(ы) среды: Визуальный
Пример:
ttcontent {
border-left-width: 4рх;
}
Советы: Использование свойств-сокращений позволяет сделать код на языке CSS
более изящным. Используйте полную форму записи свойств border только в тех
случаях, когда это действительно необходимо.
Свойство: border-width
Описание: Свойство-сокращение, используемое для определения ширины
границы элемента.
Тип(ы) среды: Визуальный
Пример:
ttcontent {
border-width: 2рх 4рх 8рх Юрх;
}
Советы: Если вы указываете больше, чем одну толщину, необходимо
перечислять значения в соответствии с правилом TRouBLe: top, right, bottom, left.
Если указано только одно значение, оно применяется ко всем сторонам. Если
указаны два значения, первое значение применяется к верхней и нижней
границам, а второе - к левой и правой. Если указаны три значения, первое
значение применяется к верхней границе, второе - к левой и правой границам,
а третье - к нижней границе. Если указаны четыре значения, они применяются
ко всем границам в следующем порядке: верхняя, правая, нижняя и левая.
Свойство: bottom
Описание: Указывает смещение нижнего края позиционируемого блока.
284
Языки HTML и CSS
Тип(ы) среды: Значение
Пример:
ttcontent {
position: absolute;
bottom: 45px;
}
Советы: Используемая схема позиционирования влияет на способ вычисления
величины смещения. Для блоков с абсолютным позиционированием значение
вычисляется в соответствии с блоком-контейнером. Для блоков с относительным
позиционированием смещение вычисляется в соответствии с блоком элемента.
Свойство: caption-side
Описание: Используется для позиционирования блока заголовка в таблицах
с элементом caption.
Тип(ы) среды: Визуальный
Пример:
caption {
caption-side: bottom;
}
Советы: Недостаточная поддержка свойства современными браузерами
ограничивает его использование.
Свойство: clear
Описание: Используется для запрещения обтекания элементов с плавающим
размещением.
Тип(ы) среды: Визуальный
Пример:
#tipscolumn {
clear: both;
}
Советы: Доступные значения: left, right и both. Использование этого
свойства аналогично использованию атрибута clear языка HTML в разметке для
представления документа.
Свойство: clip
Описание: Определяет, какая часть блока будет видна.
Тип(ы) среды: Визуальный
Приложение В. Аннотированный справочник по языку CSS 2.1
285
Пример:
#dynamicbox {
clip: rect(15px, 20px, 15px, 25px);
}
Советы: Это свойство часто применяется для функционирования скриптов,
использующих объектную модель документа (DOM - Document Object Model), для
добавления динамического поведения к выбранному элементу.
Свойство: color
Описание: Определяет основной цвет текстового содержимого элемента.
Тип(ы) среды: Визуальный
Пример:
Р (
color: blue;
}
Советы: Известных проблем не существует. Это свойство широко используется
со времени появления языка CSS.
Свойство: content
Описание: Используется для сгенерированного содержимого вместе с
псевдоэлементами :bef ore и :af ter.
Тип(ы) среды: Все
Пример:
a:after {
content: "link";
}
Советы: Сгенерированное содержимое не поддерживается браузером IE 6.O.
В результате использование этого свойства в настоящее время, к сожалению,
достаточно ограничено.
Свойство: cursor
Описание: Определяет вид отображаемого указателя мыши.
Тип(ы) среды: Визуальный, интерактивный
Пример:
а {
cursor: pointer;
}
286
Языки HTML и CSS
Советы: Использование этого свойства очень полезно для предоставления
дополнительных подсказок об элементе в фокусе. Оно полезно для улучшения
доступности и удобства использования.
Свойство: direction
Описание: Указывает направление печати в блоках.
Тип(ы) среды: Визуальный
Пример:
Р (
direction: rtl;
}
Советы: Возможные значения: rtl (справа налево) и ltr (слева направо).
Это чрезвычайно важно при интернационализации и разработке
многоязычных документов.
Свойство: display
Описание: Задает тип отображения элемента.
Тип(ы) среды: Все
Пример:
ul, li {
display: inline;
}
Советы: Это свойство чрезвычайно полезно в современных дизайнах макетов и
навигации.
Свойство: empty-cells
Описание: Определяет, отображать или скрывать пустые ячейки таблицы.
Тип(ы) среды: Визуальный
Пример:
table {
empty-cells: show;
}
Советы: Это свойство используется вместе с моделью отображения раздельных
границ (обратитесь к свойству border-collapse).
Свойство: float
Описание: Позволяет элементу с плавающим размещением выравниваться по
левому или правому краю.
Приложение В. Аннотированный справочник по языку CSS 2.1
287
Тип(ы) среды: Визуальный
Пример:
#contentcolumn {
float: right;
}
Советы: Изначально свойство float было разработано для управления такими
элементами с плавающим размещением, как изображения.
Свойство: font
Описание: Свойство-сокращение для управления отображением шрифта.
Тип(ы) среды: Визуальный
Пример:
Р (
font: italic small-caps bold 100%/100% Arial, sans-serif;
}
Советы: Для свойства font необходимо перечислять значения в определенном
порядке: font-style, font-variant, font-weight, font-size/font-
height, font-family. Нет необходимости включать все свойства, однако
порядок существенен. Также необходимо указать, по крайней мере, размер
шрифта и его семейство.
Свойство: font-family
Описание: Задает семейство шрифта для текста элемента.
Тип(ы) среды: Визуальный
Пример:
Р (
font-family: Georgia, "Times New Roman", serif;
}
Советы: Разумно всегда включать общее название семейства используемых
шрифтов (serif, sans-serif, fantasy, monospace). Также обратите
внимание, что названия шрифтов разделяются запятыми, а кавычки используются
только в одном случае - для названий шрифтов, состоящих из нескольких слов.
Свойство: font-size
Описание: Определяет размер шрифта.
Тип(ы) среды: Визуальный
288
Языки HTML и CSS
Пример:
.notation {
font-size: small;
}
Советы: Можно использовать ключевые слова для абсолютных размеров
(от xx-small до xx-large), ключевые слова для относительных размеров
(larger, smaller), а также распространенные значения длины и значения,
выраженные в процентах.
Свойство: font-style
Описание: Задает начертание шрифта, обычно italic (курсив) и oblique (наклонный).
Тип(ы) среды: Визуальный
Пример:
.notation {
font-style: italic;
Советы: Используйте начертания шрифтов для вспомогательного текста,
например примечаний и заголовков. Курсивное и наклонное начертания плохо
подходят для текста большого объема.
Свойство: font-variant
Описание: Задает способ отображения прописных букв.
Тип(ы) среды: Визуальный
Пример:
hi .{
font-variant: small-caps;
}
Советы: Это свойство может оказаться весьма полезным для создания
привлекательных заголовков и акцентируемого текста. Свойство не предназначено для
основного текста. Если браузер не поддерживает это свойство, шрифт будет
отображаться обычным способом.
Свойство: font-weight
Описание: Задает жирность шрифта.
Тип(ы) среды: Визуальный
Пример:
.highlight {
font-weight: bold;
}
Приложение В. Аннотированный справочник по языку CSS 2.1 289
Советы: Поддержка браузерами числовых значений от 100 до 900 реализована
противоречиво, поэтому не следует полагаться на эти значения.
Свойство: height
Описание: Задает высоту содержимого элемента.
Тип(ы) среды: Визуальный
Пример:
#content {
height: 400рх;
}
Советы: Поддержка этого свойства реализована противоречиво, поэтому на него
не стоит полагаться. Обратите внимание, что свойство height не применяется к
незаменяемым внутристрочным элементам.
Свойство: letter-spacing
Описание: Указывает расстояние между символами текста.
Тип(ы) среды: Визуальный
Пример:
#content p {
letter-spacing: O.lem;
}
Советы: Дизайнеры, предпочитающие контролировать отображение текста,
высоко ценят это свойство, однако его поддержка отчасти противоречива. Если
браузер не может распознать свойство, используется расстояние по умолчанию.
Свойство: line-height
Описание: Определяет высоту данной строки текста.
Тип(ы) среды: Визуальный
Пример:
#content p {
line-height: 120%;
}
Советы: Обычно высота строки должна приближаться к размеру шрифта. Чем
меньше высота строки относительно шрифта, тем ближе будут размещаться
строки, и наоборот. Слишком большое или слишком малое расстояние в любом
из направлений может привести к проблемам с читабельностью.
290
Языки HTML и CSS
Свойство: list-style
Описание: Свойство-сокращение для управления видом маркеров, их
размещением, а также изображением для маркеров.
Тип(ы) среды: Визуальный
Пример:
ttcontent ul {
list-style: disc outside url(images/bullet.gif);
}
Советы: Если изображение недоступно, на его месте будет отображаться
стиль disc.
Свойство: list-style-image
Описание: Добавляет изображение к элементам списка.
Тип(ы) среды: Визуальный
Пример:
#nav ul {
list-style-image: url(images/nav-bullet.gif);
}
Советы: Если вы хотите задать вид маркера на случай невозможности загрузки
изображения, можно получить немного больше управления над отображением.
Если вы не добавите значение вида маркера и изображение не отобразится, будет
использован стандартный вид маркера для данного типа списка.
Свойство: list-style-position
Описание: Описывает размещение блока маркера в списке.
Тип(ы) среды: Визуальный
Пример:
#content ul {
list-style-position: inside,-
}
Советы: Значение inside размещает вторую строку текста элемента списка
непосредственно под маркером. Значение outside размещает вторую строку
текста элемента списка за переделами блока, формируя удобные и знакомые
отступы, которые встречаются в большинстве списков.
Свойство: list-style-type
Описание: Задает вид маркера списка.
Приложение В. Аннотированный справочник по языку CSS 2.1
291
Тип(ы) среды: Визуальный
Пример:
#content ol {
list-style-type: decimal-leading-zero;
}
Советы: Доступны следующие значения: disc, circle, square, decimal,
decimal-leading-zero, lower-roman, upper-roman, lower-greek, lower-
latin, upper-latin, armenian, georgian, none и inherit. Обратите
внимание, что значение none удаляет все маркеры, что полезно при создании
дизайна навигации на основе списков.
Свойство: margin
Описание: Свойство-сокращение для значений полей элемента.
Тип(ы) среды: Визуальный
Пример:
ttcontent {
margin: 10px 2 0px ЗОрх;
}
Советы: Значения необходимо перечислять в соответствии с правилом TRouBLe:
top, right, bottom, left. Если указано только одно значение, оно применяется
ко всем сторонам. Если указаны два значения, первое значение применяется к
верхней и нижней границам, а второе - к левой и правой. Если указано три
значения, первое значение применяется к верхней границе, второе - к левой и
правой границам, а третье - к нижней границе. Если указаны четыре значения, они
применяются ко всем границам в следующем порядке: верхняя, правая, нижняя и
левая. Значения полей не наследуются.
Свойство: margin-right
Описание: Задает значение для правого поля элемента.
Тип(ы) среды: Визуальный
Пример:
#nav {
margin-right: 20px;
}
Советы: Значения полей не наследуются.
Свойство: margin-left
Описание: Задает значение для левого поля элемента.
292
Языки HTML и CSS
Тип(ы) среды: Визуальный
Пример:
#nav {
margin-left: 2.Oem;
}
Советы: Значения полей не наследуются.
Свойство: margin-top
Описание: Задает значение для верхнего поля элемента.
Тип(ы) среды: Визуальный
Пример:
#nav {
margin-top: 10%;
}
Советы: Значения полей не наследуются.
Свойство: margin-bottom
Описание: Задает значение для нижнего поля элемента.
Тип(ы) среды: Визуальный
Пример:
#nav {
margin-bottom: 20рх;
}
Советы: Значения полей не наследуются.
Свойство: max-height
Описание: Задает максимальную высоту блока элемента.
Тип(ы) среды: Визуальный
Пример:
h2 {
max-height: 35px;
}
Советы: Нельзя использовать отрицательные значения. Это свойство не
применяется к незаменяемым внутристрочным элементам или таблицам.
Приложение В. Аннотированный справочник по языку CSS 2.1
293
Свойство: max-width
Описание: Задает максимальную ширину.
Тип(ы) среды: Визуальный
Пример:
Р (
max-width: 80%
}
Советы: Это свойство полезно использовать для ограничения длины строк
текста, чтобы строки не были слишком длинными. К сожалению, это свойство не
поддерживается в браузере Internet Explorer 6.0, что расстраивает дизайнеров,
которые хотят управлять отображением текста на данном уровне.
Свойство: min-height
Описание: Задает минимальную высоту блока элемента.
Тип(ы) среды: Визуальный
Пример:
h2 {
min-height: lOOpx;
}
Советы: Это свойство не применяется к незаменяемым внутристрочным
элементам или таблицам.
Свойство: min-width
Описание: Задает максимальную ширину для блока элемента.
Тип(ы) среды: Визуальный
Пример:
Р (
min-width: 80%
}
Советы: Это свойство полезно использовать для гарантии того, что ширина
строк текста будет по крайней мере равна минимальной ширине. К сожалению,
это свойство не поддерживается в браузере Internet Explorer 6.0, что расстраивает
дизайнеров, которые хотят управлять отображением текста на данном уровне.
294
Языки HTML и CSS
Свойство: outline
Описание: Свойство-сокращение, создающее динамическую окантовку для
элементов управления форм и объектов.
Тип(ы) среды: Визуальный, интерактивный
Пример:
img {
outline: red solid thick;
}
Советы: Все динамические свойства outline, в отличие от свойств border, не
занимают место (не являются частью блочной модели при расчете ширины или
высоты) и могут иметь не только прямоугольную форму. Поддержка этих свойств
сильно ограничена (браузер Safari 1.2 поддерживает свойства outline), и
поэтому в настоящее время они используются очень редко.
Свойство: outline-color
Описание: Определяет цвет окантовки для элементов управления форм и объектов.
Тип(ы) среды: Визуальный, интерактивный
Пример:
img {
outline-color: blue;
}
Советы: Все динамические свойства outline, в отличие от свойств border,
не занимают место (не являются частью блочной модели при расчете ширины
или высоты) и могут иметь не только прямоугольную форму. Для этого
свойства можно использовать все цвета, а также значение invert. Это значение
инвертирует цвет, что может оказаться полезным для обеспечения видимости
окантовки, когда элемент управления или объект находятся в фокусе.
Поддержка этих свойств сильно ограничена (браузер Safari 1.2 поддерживает
свойства outline) и поэтому в настоящее время они используются очень редко.
Свойство: outline-style
Описание: Определяет начертание окантовки для элементов управления форм и
объектов.
Тип(ы) среды: Визуальный, интерактивный
Пример:
img {
outline-style: groove;
}
Приложение В. Аннотированный справочник по языку CSS 2.1
295
Советы: Все динамические свойства outline, в отличие от свойств border, не
занимают место (не являются частью блочной модели при расчете ширины или
высоты) и могут иметь не только прямоугольную форму. Для этого свойства
можно использовать те же значения, что и для свойства border-style, за
исключением значения hidden. Поддержка этих свойств сильно ограничена
(браузер Safari 1.2 поддерживает свойства outline), и поэтому в настоящее время они
используются очень редко.
Свойство: outline-width
Описание: Определяет толщину окантовки для элементов управления форм и
объектов.
Тип(ы) среды: Визуальный, интерактивный
Пример:
input {
outline-width: 2рх,-
}
Советы: Все динамические свойства outline, в отличие от свойств border, не
занимают место (не являются частью блочной модели при расчете ширины или
высоты) и могут иметь не только прямоугольную форму. Для этого свойства
можно использовать те же значения, что и для свойства border-width.
Поддержка этих свойств сильно ограничена (браузер Safari 1.2 поддерживает
свойства outline), и поэтому в настоящее время они используются очень редко.
Свойство: overflow
Описание: Используется для управления содержимым, выходящим за пределы
блока элемента.
Тип(ы) среды: Визуальный, интерактивный
Пример:
#tipscolumn {
overflow: scroll;
}
Советы: Доступны следующие значения: visible - отображает содержимое за
пределами блока; hidden - скрывает все содержимое, находящееся за
пределами блока; scroll - включает полосы прокрутки для блока элемента с
содержимым; и auto - при необходимости автоматически включает полосы прокрутки.
Свойство: padding
Описание: Свойство-сокращение для определения отступов блока элемента.
Тип(ы) среды: Визуальный
296
Языки HTML и CSS
Пример:
#content {
padding: Юрх 20px 15px 0;
}
Советы: Значения необходимо перечислять в соответствии с правилом
TRouBLe: top, right, bottom, left. Если указано только одно значение, оно
применяется ко всем сторонам. Если указаны два значения, первое значение
применяется к верхней и нижней границам, а второе - к левой и правой. Если
указаны три значения, первое значение применяется к верхней границе,
второе - к левой и правой границам, а третье - к нижней границе. Если указаны
четыре значения, они применяются ко всем границам в следующем порядке:
верхняя, правая, нижняя и левая.
Свойство: padding-top
Описание: Задает отступ сверху блока элемента.
Тип(ы) среды: Визуальный
Пример:
#content>p {
padding-top: Юрх;
}
Советы: Отступы считаются частью блочной модели и значения должны
учитываться при вычислении ширины и высоты.
Свойство: padding-right
Описание: Задает отступ с правой стороны блока элемента.
Тип(ы) среды: Визуальный
Пример:
#content p {
padding-right: 10%;
}
Советы: Отступы считаются частью блочной модели и значения должны
учитываться при вычислении ширины и высоты.
Свойство: padding-bottom
Описание: Задает отступ снизу блока элемента.
Тип(ы) среды: Визуальный
Приложение В. Аннотированный справочник по языку CSS 2.1
297
Пример:
#content+p {
padding-bottom: 2.Oem;
}
Советы: Отступы считаются частью блочной модели и значения должны
учитываться при вычислении ширины и высоты.
Свойство: padding-left
Описание: Задает отступ с левой стороны блока элемента.
Тип(ы) среды: Визуальный
Пример:
#content {
padding-left: 16px;
}
Советы: Отступы считаются частью блочной модели и значения должны
учитываться при вычислении ширины и высоты.
Свойство: page-break-after
Описание: Выполняет разрыв страницы в соответствии с указанным значением.
Тип(ы) среды: Визуальный, страничный
Пример:
#content {
page-break-after: always;
}
Советы: Допустимые значения свойств page-break включают: auto (не
разрывать страницу), always (выполнять разрыв всегда), avoid (избегать разрыва
страницы для данного элемента), left (разорвать страницу и продолжить отображение
содержимого на левой странице) и right (разорвать страницу и продолжить
отображение содержимого на правой странице).
Свойство: page-break-before
Описание: Выполняет разрыв страницы в соответствии с указанным значением.
Тип(ы) среды: Визуальный, страничный
Пример:
п2 {
page-break-before: right;
}
298
Языки HTML и CSS
Советы: Допустимые значения свойств page-break включают: auto (не
разрывать страницу), always (выполнять разрыв всегда), avoid (избегать разрыва
страницы для данного элемента), left (разорвать страницу и продолжить отображение
содержимого на левой странице) и right (разорвать страницу и продолжить
отображение содержимого на правой странице).
Свойство: page-break-inside
Описание: Выполняет разрыв страницы в соответствии с указанным значением.
Тип(ы) среды: Визуальный, страничный
Пример:
п2 {
page-break-inside: avoid;
}
Советы: Допустимые значения свойств page-break включают: auto (не
разрывать страницу), always (выполнять разрыв всегда), avoid (избегать разрыва
страницы для данного элемента), left (разорвать страницу и продолжить отображение
содержимого на левой странице) и right (разорвать страницу и продолжить
отображение содержимого на правой странице).
Свойство: position
Описание: Определяет схему позиционирования: static, relative, absolute
или fixed.
Тип(ы) среды: Визуальный
Пример:
#topnav {
position: absolute;
top: 0;
left: 0;
}
Советы: Схема позиционирования fixed не поддерживается браузером Internet
Explorer. Схема позиционирования static соответствует нормальному потоку
браузера, используемому по умолчанию.
Свойство: quotes
Описание: Указывает вид кавычек для встроенных цитат.
Тип(ы) среды: Визуальный
Приложение В. Аннотированный справочник по языку CSS 2.1
299
Пример:
blockquote:before {
content: open-quote;
}
blockquote:after {
content: close-quote;
}
Советы: Это свойство обычно используется для генерируемого содержимого, как
показано в примере. Поскольку генерируемое содержимое недоступно в старых
браузерах и в браузере Internet Explorer 6.0, использование этого свойства
ограничено поддерживающими его средами, или же применяются обходные пути
для поддержки других браузеров.
Свойство: right
Описание: Указывает значение смещения правого поля при позиционировании.
Тип(ы) среды: Визуальный
Пример:
#topnav {
position: absolute;
right: 20px;
}
Советы: Используемая схема позиционирования влияет на способ вычисления
величины смещения. Для блоков с абсолютным позиционированием значение
вычисляется в соответствии с блоком-контейнером. Для блоков с относительным
позиционированием смещение вычисляется в соответствии с блоком элемента.
Свойство: table-layout
Описание: Управляет способом обработки таблиц браузерами.
Тип(ы) среды: Визуальный
Пример:
table {
table-layout: fixed;
}
Советы: Для обработки таблиц используется два алгоритма. Первый алгоритм -
fixed - считается более быстрым, поскольку ширина столбцов не зависит от
содержимого ячеек. Второй алгоритм - auto - зависит от ширины содержимого
ячеек и обычно является стандартным поведением для большинства браузеров.
Хотя свойство table-layout достаточно хорошо поддерживается браузерами,
результаты в различных браузерах отличаются довольно сильно, из-за чего люди
300
Языки HTML и CSS
отказываются от использования этого свойства и полагаются на стандартный
алгоритм браузера.
Свойство: text-indent
Описание: Задает отступ.
Тип(ы) среды: Визуальный
Пример:
Р {
text-indent: 5px;
}
Советы: Применение этого свойства позволяет придавать профессиональный
вид длинным абзацам текста. Для создания эффекта втяжки можно также
использовать отрицательные значения.
Свойство: text-trans form
Описание: Преобразует выбранный текст - каждое слово начинается с
прописной буквы, весь текст отображается прописными буквами или весь текст
отображается строчными буквами, - независимо от того, как текст был введен в
документ.
Тип(ы) среды: Визуальный
Пример:
h3 {
text-transform: uppercase;
}
Советы: Существует широко распространенная поддержка. Это свойство
полезно применять для поддержания согласованности при отображении заголовков и
других важных текстовых элементов.
Свойство: top
Описание: Указывает смещение верхнего края позиционируемого блока.
Тип(ы) среды: Визуальный
Пример:
#nav {
position: relative; top: 20px;
>
Приложение В. Аннотированный справочник по языку CSS 2.1
301
Советы: Используемая схема позиционирования влияет на способ вычисления
величины смещения. Для блоков с абсолютным позиционированием значение
вычисляется в соответствии с блоком-контейнером. Для блоков с относительным
позиционированием смещение вычисляется в соответствии с блоком элемента.
Свойство: unicode-bidi
Описание: Помогает управлять двунаправленным алгоритмом, используемым
для определения направления букв для заданного языка.
Тип(ы) среды: Визуальный
Пример:
р.hebrew {
direction: rtl;
unicode-bidi: embed;
}
Советы: Свойство unicode-bidi используется только теми авторами, кто
заинтересован в управлении двунаправленными алгоритмами в браузерах.
Свойство: vertical-align
Описание: Задает выравнивание по вертикали с использованием ключевых слов
baseline, sub, super, top, text-top, middle, bottom, text-bottom или
значения длины, или значения, выраженного в процентах.
Тип(ы) среды: Визуальный
Пример:
img {
vertical-align: baseline;
}
Советы: В браузерах Netscape 4.x это свойство работает только с изображениями.
Свойство: vi s ibi 1 i ty
Описание: Определяет, будет ли отображаться сгенерированный элементом
блок, или же он будет скрыт.
Тип(ы) среды: Визуальный
Пример:
#container {
visibility: hidden;
}
302
Языки HTML и CSS
Советы: Невидимые блоки влияют на макет. Если вы хотите полностью избежать
генерации блока, используйте свойство display со значением попе. Значение
collapse используется для таблиц.
Свойство: white-space
Описание: Определяет способ обработки пробелов элемента.
Тип(ы) среды: Визуальный
Пример:
td {
white-space: nowrap;
}
Советы: Доступны следующие значения: pre - функционирует точно так же, как
предварительно отформатированный текст; nowrap - подавляет разрывы строк;
pre-wrap - разрывает строки на новые строки в исходном документе; и рге-
line - сокращает последовательность пробелов.
Свойство: width
Описание: Задает ширину содержимого элемента.
Тип(ы) среды: Визуальный
Пример:
#content p {
width: 225px;
}
Советы: Это свойство не применяется к незаменяемым внутристрочным
элементам.
Свойство: word-spacing
Описание: Задает расстояние между словами.
Тип(ы) среды: Визуальный
Пример:
#content p {
word-spacing: l.Oem;
}
Советы: Для уменьшения расстояния между словами можно использовать
отрицательные значения.
Приложение В. Аннотированный справочник по языку CSS 2.1 303
Свойство: z-index
Описание: Используется вместе с позиционируемыми блоками для определения
порядка наложения.
Тип(ы) среды: Визуальный
Пример:
.boxtwo {
position: absolute;
top: Юрх;
left: Юрх;
z-index: 2;
}
Советы: Чем выше значение свойства, тем ближе к зрителю размещается блок
в стеке.
М. Хольишлаг
Языки HTML и CSS
Для создания Web-сайтов
Официальный учебный курс
Отдел распространения группы издательств «ТРИУМФ»:
^ «Издательство Триумф»
• «Лучшие книги»
i/ «Технический бестселлер»
%/ «Только для взрослых»
t/ «Технолоджи - 3000»
• «25 КАДР»
• «100 КНИГ»
Телефон: (495) 772-19-56, (495) 720-07-65. E-mail: opt@triumph.ru
Интернет-магазин: www.3st.ru
ОТДЕЛ КНИГА-ПОЧТОЙ:
125438, г.Москва, а/я 18 «Триумф».
E-mail: post@triumph.ru
Научный редактор Владислав Перелыгин
Перевод Александр Климович
Выпускающий редактор Ирина Колмыкова
Редактор-координатор Александра Куксова
Корректор Светлана Крючкова
Верстка Василина Баукова
Дизайн обложки Александра Чубарь
Подписано в печать с оригинал-макета 24.04.2007 г.
Формат 70 X100'/16. Печать офсетная. Печ.л. 19. Заказ № 1356.
Доп.тираж 3000 экз.
ООО «Издательство ТРИУМФ».
Россия, 125438, г. Москва, а/я 18.
Отпечатано в полном соответствии с качеством предоставленных
диапозитивов в ОАО «Можайский полиграфический комбинат»
143200, г. Можайск, ул. Мира, 93
ОФИЦИАЛЬНЫЙ
КУРС
Кратчайший путь
к овладению мастерством Web-дизайна
В
ы хотите создать собственный Web-сайт? Или обновить уже существующий? Или добавить к
сайту какое-нибудь новое эффектное содержимое? Или, быть может, вы просто хотите
усовершенствовать свои навыки Web-дизайнера и стать настоящим мастером?
Тогда - добро пожаловать! Эта книга - для
вас. Опираясь на свои знания и опыт работы
в Web, вы семимильными шагами двинетесь
к намеченной цели - и сами будете удивлены
скоростью, с которой вы овладеете наиболее
тонкими и эффективными инструментами
Web-дизайна. Вы познакомитесь с
многочисленными примерами кода HTML, XHTML и
CSS, разработанными специально для
быстрого освоения этих языков и их применения к
реальным проектам Web-сайтов.
Вам нужны для работы какие-то готовые,
шаблонные проекты Web-сайтов?
Модульный формат этой книги, снабженной
наглядными и мощными средствами навигации по
тексту, позволит вам почти мгновенно найти
нужный раздел. Никакие другие справочники
по HTML/CSS не охватывают такое огромное
количество материала, не представляют
материал в такой прекрасно структурированной
и наглядной форме. В книге есть все, что
необходимо для применения HTML, XHTML и
CSS в реальных проектах.
♦ Освойте технику создания Web-страниц,
которые будут корректно отображаться
практически в любом современном браузере.
♦ Научитесь создавать шаблоны, которые
упростят разработку любой страницы Web.
♦ Овладейте мастерством структурирования и
разметки текста, чтобы сделать его приятным
для чтения и удобным для обработки.
♦ Добавьте к своим Web-страницам рисунки,
файлы мультимедиа, сценарии - и сделайте свой
сайт динамичным.
♦ Уясните корректные методы создания HTML-
таблиц.
♦ Поместите на свои Web-страницы удобные и
эффективные формы, умеющие реагировать на
действия посетителя сайта.
♦ Используйте код CSS для полного контроля
над внешним видом и восприятием сайта.
♦ Изучите основные средства CSS для
управления цветом, рисунками, текстовыми стилями,
ссылками, списками, средствами навигации.
♦ Возьмите под свой контроль положение
полей, границ, отступов, плавающих элементов
дизайна и эффекты наложения компонентов.
♦ Разрабатывайте эффективные,
согласованные и легкоуправляемые CSS-макеты.
ISBN 978-5-89392-146-5
Книга содержит краткую справочную информацию
по каждому элементу языков HTML, XHTML и CSS.
9"785893»921465l
Л Addison-Wesley
Pearson Education
ТРИУМФ