Введение 19
Некоторые замечания 19
Типографские соглашения 20
Благодарности 22

ЧАСТЬ I. СОДЕРЖИМОЕ WEB-СТРАНИЦ. ЯЗЫК HTML5 23
Глава 1. Современный Web-дизайн. Web 2.0
25
Современный Web-дизайн. Концепция Web 2.0 25
Что требуется от современного Web-сайта 25
Концепция Web 2.0 28
Интернет: как все это работает 30
Клиенты и серверы Интернета. Интернет-адреса 30
Web-сайты и Web-серверы 31
Что дальше? 33
Глава 2. Введение в язык HTML5
34
Основные принципы HTML 34
Первая Web-страница 34
Теги и атрибуты тегов 36
Вложенность тегов 37
Форматирование Web-страницы 38
Секции Web-страницы 38
Метаданные и метатеги 39
Что дальше? 40
Глава 3. Структурирование текста
41
Простейшие средства структурирования текста 41
Абзацы и заголовки 41
Блочные элементы HTML 43
Списки 43
Цитаты и адреса 45
Текст фиксированного формата 46
Блочные контейнеры 47
Семантическая разметка текста 47
Горизонтальные линии 49
Комментарии 49
Что дальше? 50
Глава 4. Оформление текста
51
Выделение фрагментов текста 51
Встроенные элементы HTML 52
Встроенные контейнеры 53
Разрыв строк 53
Вставка специальных символов. Литералы 53
Что дальше? 55
Глава 5. Графика и мультимедиа
56
Внедренные элементы Web-страниц 56
Графика 57
Форматы интернет-графики 57
Вставка графических изображений 58
Мультимедиа 59
Поддерживаемые форматы мультимедийных файлов 59
Вставка аудиоролика 60
Вставка видеоролика 61
Указание нескольких источников аудио и видео 63
Что дальше? 64
Глава 6. Таблицы
65
Создание таблиц 65
Заголовок и секции таблицы 68
Объединение ячеек таблиц 70
Что дальше? 73
Глава 7. Средства навигации
74
Текстовые гиперссылки 74
Создание гиперссылок 74
Интернет-адреса в WWW 76
Почтовые гиперссылки 77
Дополнительные возможности гиперссылок 77
Графические гиперссылки 79
Изображения-гиперссылки 79
Изображения-карты 79
Полоса навигации 81
Якоря 82
Что дальше? 83
Глава 8. Web-формы и элементы управления
84
Средства ввода данных 84
Создание Web-форм 85
Создание элементов управления 86
Общие вопросы создания элементов управления 86
Поле ввода 87
Поле ввода пароля 88
Поле ввода числового значения 89
Поле ввода интернет-адреса 89
Поле ввода адреса электронной почты 89
Флажок 90
Переключатель 90
Регулятор 91
Область редактирования 91
Список 92
Поле ввода файла 94
Скрытое поле 94
Кнопки 95
Элементы оформления и их создание 96
Надпись 96
Группа 96
Что дальше? 97

ЧАСТЬ II. ПРЕДСТАВЛЕНИЕ WEB-СТРАНИЦ. КАСКАДНЫЕ ТАБЛИЦЫ СТИЛЕЙ CSS 3 99
Глава 9. Введение в CSS 3
101
Понятие о стилях CSS 101
Создание стилей CSS 102
Таблицы стилей. Встроенные стили 103
Правила каскадности и приоритет стилей 105
Наследование атрибутов стилей 108
Комментарии CSS 109
Что дальше? 109
Глава 10. Селекторы стилей. Единицы измерения CSS
110
Селекторы стилей 110
Введение в селекторы стилей 110
Компоненты указателей 111
Основные указатели 111
Указатели на атрибуты тега 113
Псевдоклассы 114
Псевдоэлементы 118
Разделители 118
Единицы измерения и вычисления CSS 119
Важные атрибуты стилей 121
Что дальше? 121
Глава 11. Параметры текста и фона
122
Параметры текста 122
Параметры шрифта 122
Загружаемые шрифты. Директивы CSS 126
Параметры, управляющие разрывом строк 127
Параметры вертикального выравнивания 129
Параметры тени у текста 130
Параметры фона 131
Что дальше? 135
Глава 12. Параметры абзацев, списков и отображения. Генерируемое содержимое
136
Параметры вывода текста 136
Параметры списков 137
Параметры отображения 139
Параметры курсора 141
Генерируемое содержимое 141
Статичное генерируемое содержимое 142
Создание нумерации 143
Что дальше? 145
Глава 13. Параметры блоков. Блочный Web-дизайн
146
Параметры блочных элементов 146
Параметры размеров 146
Параметры размещения. Плавающие элементы 147
Параметры переполнения. Элементы с прокруткой 149
Параметры тени у блочного элемента 150
Позиционируемые блоки 151
Понятие позиционируемого блока 151
Создание позиционируемых элементов 152
Основы блочного Web-дизайна 155
Что дальше? 159
Глава 14. Параметры отступов, рамки и выделения
160
Параметры отступов 160
Параметры рамки 163
Параметры выделения 166
Что дальше? 168
Глава 15. Параметры таблиц
169
Параметры выравнивания 169
Параметры отступов и рамок 170
Параметры размеров 171
Прочие параметры 172
Что дальше? 173
Глава 16. Специальные эффекты CSS 3
174
Градиентные фоны 174
Введение в градиенты и градиентные фоны 174
Создание градиентных фонов 175
Линейный градиент 175
Радиальный градиент 177
Повторяющийся градиент 178
Преобразования 179
Как задаются преобразования и их параметры 179
Двухмерные преобразования 179
Смещение 179
Масштабирование 180
Наклон 181
Поворот 181
Трехмерные преобразования 182
Перспектива 182
Трехмерные преобразования 182
Точка зрения и ее местоположение 183
Скрытие обратной стороны элемента 184
Режим проецирования элементов-потомков 185
Позиционирование точки начала координат 187
Сложные преобразования 188
Анимация 188
Анимация с двумя состояниями 188
Простейшая анимация 189
Обратная анимация 191
Сложная анимация 192
Анимация с несколькими состояниями 193
Состояния анимации 193
Параметры анимации 194
Что дальше? 197
Глава 17. Медиазапросы
198
Классификация и использование медиазапросов 198
Медиазапросы HTML 199
Введение в медиазапросы HTML 199
Указатели медиазапросов 200
Разделители медиазапросов 202
Медиазапросы CSS 203
Некоторые соображения о целесообразности использования медиазапросов 204
Управление печатью страниц 204
Что дальше? 205

ЧАСТЬ III. ПОВЕДЕНИЕ WEB-СТРАНИЦ. WEB-СЦЕНАРИИ 207
Глава 18. Язык JavaScript
209
Основные понятия JavaScript 209
Типы данных JavaScript 211
Переменные 213
Именование переменных 213
Объявление переменных 213
Операторы 214
Арифметические операторы 214
Оператор объединения строк 215
Операторы присваивания 215
Операторы сравнения 216
Логические операторы 217
Оператор получения типа typeof 218
Преобразование типов данных 218
Приоритет операторов 219
Сложные выражения 221
Блоки 221
Условные выражения 221
Условный оператор ? 222
Выражения выбора 222
Циклы 223
Цикл со счетчиком 223
Цикл с постусловием 224
Цикл с предусловием 225
Прерывание и перезапуск цикла 225
Функции 226
Объявление функций 226
Функции и переменные. Локальные переменные 227
Вызов функций 227
Присваивание функций. Функциональный тип данных 228
Массивы 229
Ссылки 231
Объекты 231
Понятия объекта и экземпляра объекта 232
Создание экземпляра объекта 232
Работа с экземпляром объекта 233
Встроенные объекты языка JavaScript 234
Объект Object и использование его экземпляров 236
Цикл по свойствам объекта 237
Комментарии JavaScript 238
Как Web-сценарии вставляются в Web-страницу 238
Что дальше? 240
Глава 19. Доступ к элементам Web-страницы и управление ими
241
Объектная модель документа 241
Доступ к странице и ее элементам 243
Доступ к странице 243
Доступ к элементам страницы 243
Доступ к ключевым элементам 243
Прямой доступ к элементу 243
Доступ по имени тега или стилевого класса. Коллекции 244
Доступ по селекторам CSS 245
Доступ к родителю и потомкам 246
Доступ через стандартные коллекции 248
Работа со страницей и ее элементами 248
Работа с параметрами страницы 248
Работа с параметрами элемента 249
Работа с основными параметрами 249
Работа с атрибутами тега и их значениями 252
Работа со стилями 252
Работа с содержимым элемента 254
Добавление нового содержимого 255
Добавление и удаление элементов страницы 255
Что дальше? 258
Глава 20. Обработка событий
259
Событие. Обработчик события 259
События, поддерживаемые страницей и ее элементами 260
Привязка обработчиков событий 261
Получение сведений о событии 263
Особые случаи обработки событий 265
Всплытие событий 265
Режим перехвата событий 266
Действие по умолчанию 267
Что дальше? 268
Глава 21. Управление интерактивными и внедренными элементами
269
Интерактивные элементы 269
Гиперссылки 269
Web-формы 270
Элементы управления 271
Внедренные элементы 277
Графические изображения 277
Аудио- и видеоролики 278
Что дальше? 283
Глава 22. Работа с Web-обозревателем
284
Окна Web-обозревателя 284
Интернет-адрес текущей страницы 288
Список истории Web-обозревателя 289
Параметры экрана 289
Сведения о Web-обозревателе 290
Стандартные диалоги и сообщения 291
Интервалы и тайм-ауты 292
Что дальше? 293
Глава 23. AJAX. Регулярные выражения
294
AJAX 294
Введение в AJAX 294
Программная реализация AJAX 295
Объект XMLHttpRequest 295
Отправка запроса 296
Получение результата 298
Формат JSON 300
AJAX-навигация 301
Недостаток AJAX 305
Регулярные выражения 305
Написание регулярных выражений 305
Работа с регулярными выражениями 308
Что дальше? 310

ЧАСТЬ IV. СЕРВЕРНЫЕ ПРИЛОЖЕНИЯ. PHP. MYSQL. БИБЛИОТЕКА YII 311
Глава 24. Web-сайт как программа. Серверные приложения
313
Статические и динамические сайты 313
Как работают серверные приложения 314
Что дальше? 315
Глава 25. Язык PHP
316
Основные принципы, типы данных, переменные и операторы 316
Регулярные выражения 318
Сложные выражения 318
Функции 319
Массивы 320
Классы и объекты 321
Доступ к свойствам и методам объекта 321
Объявление классов 321
Наследование классов 322
Конструкторы и деструкторы 324
Модификаторы доступа 325
Статические свойства и методы 326
Константы класса 327
Принципы написания программного кода PHP 327
Что дальше? 328
Глава 26. Сервер данных MySQL
329
Реляционные базы данных 329
Введение в реляционные базы данных 329
Поля 330
Индексы и ключи 331
Связи 333
Язык SQL 334
Сервер данных MySQL 336
Типы данных, поддерживаемые MySQL 336
Атрибуты полей и индексов 337
Пользователи и их права 337
Что дальше? 339
Глава 27. Введение в библиотеку Yii
340
Два подхода к разработке сайтов 340
Основные понятия Yii-программирования 341
Модели, контроллеры, действия и шаблоны 341
Маршрутизация 343
Установка библиотеки Yii 344
Создание сайта 344
Структура папок Yii-сайта 345
Настройка сайта 346
Настройка соединения с базой данных 347
Прочие настройки 348
Средства прототипирования 349
Что дальше? 351
Глава 28. Модели
352
Требование к таблицам и моделям 352
Прототипирование моделей 353
Объявление класса модели 355
Основные методы класса модели 355
Задание надписей для элементов управления 356
Задание правил для значений полей 357
Сценарии Yii 362
Задание связей 363
Простейшие случаи создания связей 363
Задание параметров связи 365
Получение статистической информации 368
Расширение функциональности модели 369
Объявление дополнительных свойств и методов 369
Задание дополнительных действий для модели 370
Что дальше? 371
Глава 29. Контроллеры и действия
372
Требования к контроллерам и действиям 372
Прототипирование контроллеров 373
Прототипирование CRUD-контроллера 373
Прототипирование "пустого" контроллера 374
Объявление класса контроллера 375
Обработка данных в контроллерах 376
Получение данных от посетителя 376
Получение доступа к модели 377
Задание сценария для модели 377
Поиск записей 377
Получение значений полей записи 380
Получение связанных записей 380
Создание сложных запросов 381
Подготовительные действия 381
Простая выборка записей 382
Связывание таблиц 383
Получение статистических сведений о записях модели 383
Ограничение количества выбираемых записей 384
Выборка записей 385
Повторное использование сложного запроса 386
Использование пагинатора 386
Сложные запросы к модели 388
Получение сведений об интернет-запросе 389
Получение сведений о контроллере и действии 390
Получение сведений о сайте 391
Вывод данных 391
Вывод посредством шаблона 391
Вывод в формате JSON 393
Перенаправление 393
Что дальше? 394
Глава 30. Шаблоны
395
Требования к шаблонам 395
Основные принципы написания шаблонов 395
Средства Yii по созданию шаблонов 397
Генерирование фрагментов HTML-кода 397
Вывод значений с форматированием 400
Шаблоны разметки 402
Задание шаблона разметки 402
Простейший шаблон разметки 403
Вложенные шаблоны разметки 404
Подшаблоны 406
Использование виджетов 406
Требования к виджетам 407
Создание виджетов 407
Вызов виджета 408
Что дальше? 409
Глава 31. Ввод данных
410
Формы, основанные на моделях 410
Создание самих форм 410
Создание элементов управления 411
Создание полей ввода, области редактирования и регулятора 411
Создание флажков и переключателей 412
Создание списков 413
Создание групп переключателей и флажков 414
Создание скрытых полей 415
Имена элементов управления 415
Создание кнопок 416
Создание надписей 416
Вывод сообщений об ошибках 417
Дополнительные параметры форм и элементов управления 418
Инструменты моделей для ввода и правки данных 419
Инструменты высокого уровня 419
Создание записи 419
Правка записи 421
Удаление записи 422
Инструменты низкого уровня 423
Массовые правка и удаление записей 424
Обычные формы. Модели форм 425
Выгрузка и сохранение файлов 427
Подготовительные действия 427
Обработка выгруженного файла 428
Использование CAPTCHA 432
Что дальше? 435
Глава 32. Разграничение доступа
436
Как реализуется разграничение доступа 436
Настройка разграничения доступа 437
Модель списка пользователей 438
Класс сведений о пользователе 439
Указание прав доступа 441
Реализация входа на сайт 444
Получение сведений о пользователе 446
Реализация выхода с сайта 447
Что дальше? 448
Глава 33. Маршрутизация
449
Настройки маршрутизации 449
Написание привязок 450
Написание простейших привязок 450
Написание параметризованных привязок 451
Несколько слов о генерировании интернет-адресов 452
Удаление из интернет-адресов имени файла index.php 453
Что дальше? 454
Глава 34. Кэширование
455
Настройки кэширования 455
Реализация высокоуровневого кэширования 456
Кэширование фрагментов страниц 456
Условия устаревания кэшируемого фрагмента 458
Кэширование запросов 460
Кэширование целых страниц 461
Кэширование на стороне сервера 461
Управление кэшированием на стороне клиента 462
Кэширование на низком уровне 463
Что дальше? 465

ЧАСТЬ V. РАЗРАБОТКА САЙТА — СВОДИМ ВСЕ ВОЕДИНО 467
Глава 35. Планирование и предварительные действия
469
Планирование сайта 469
Основные этапы планирования сайта 469
Дизайн сайта 470
Логическая и физическая структуры сайта 471
Сайт электронных публикаций "СЭП" 472
Создание сайта 472
База данных сайта 473
Прочие настройки 473
Что дальше? 475
Глава 36. Создание дизайна страниц
476
Особенности создания оформления для страниц 476
Страницы для традиционных компьютеров 477
Разметка 477
Начальное оформление 478
"Шапка" 479
Панель навигации 481
Блок основного содержимого 484
Параметры самого блока основного содержимого 484
Параметры текста 485
Параметры нумерации заголовков 486
Параметры внедренных элементов 487
Параметры форм и элементов управления 489
"Поддон" 491
Страницы для мобильных устройств 492
Разметка 493
"Шапка" 493
Блок основного содержимого 494
"Поддон" 495
Печатная версия страницы 496
Что дальше? 497
Глава 37. Интерактивные элементы
498
Спойлер 498
Формирование спойлера 498
Оформление спойлера 499
Программирование спойлера 501
Лайтбокс 503
Формирование лайтбокса 503
Оформление лайтбокса 504
Программирование лайтбокса 507
Блокнот 510
Формирование блокнота 510
Оформление блокнота 511
Программирование блокнота 513
Задание размеров видео 515
Что дальше? 516
Глава 38. Статичные страницы
517
Маршрутизация 517
Базовый класс контроллера. Определение обращения с мобильного устройства 518
Контроллер 520
Шаблоны 520
Шаблоны разметки 520
Шаблоны страниц 522
Виджет панели навигации 523
Тестирование мобильной версии сайта 525
Параметры кэширования 526
Что дальше? 528
Глава 39. Список пользователей и разграничение доступа
529
Настройки 529
Таблица базы данных 530
Модель 531
Вход и выход 532
Вход на сайт 532
Выход с сайта 533
Виджет панели навигации 533
Работа со списком пользователей 534
Список пользователей 534
Создание пользователя 537
Правка пользователя 538
Удаление пользователя 539
Разграничение доступа 540
Что дальше? 541
Глава 40. Категории и подкатегории
542
Маршрутизация 542
Таблицы базы данных 543
Модели 544
Базовый класс модели 544
Модель категорий 545
Модель подкатегорий 546
Виджет панели навигации 547
Вывод списков категорий и подкатегорий 549
Работа с категориями и подкатегориями 551
Автоматическое генерирование слагов 551
Страницы для работы с подкатегориями 552
Список подкатегорий 552
Создание и правка подкатегорий 553
Разграничение доступа 554
Кэширование 555
Что дальше? 557
Глава 41. Статьи
558
Маршрутизация 558
Таблица базы данных 559
Модель 559
Вывод статей 561
Вывод списка статей, относящихся к выбранной подкатегории 561
Вывод списка последних пяти статей, относящихся к выбранной категории 565
Поиск статей 567
Вывод статьи 570
Форматирование текста статей. BBCode 572
Набор тегов BBCode, поддерживаемых нашим сайтом 572
Собственно форматирование текстов статей 573
Страницы для работы со статьями 576
Разграничение доступа 577
Кэширование 578
Что дальше? 580
Глава 42. Комментарии
581
Маршрутизация 581
Таблица базы данных 581
Модель 582
Список комментариев, относящихся к выбранной статье 584
Страницы для работы с комментариями 587
Кэширование 589
Что дальше? 590
Глава 43. Хранилище файлов
591
Маршрутизация 591
Таблица базы данных 591
Модель 592
Контроллер 598
Шаблон 600
Оформление 603
Web-сценарий 605
Что дальше? 612

ЧАСТЬ VI. НАНЕСЕНИЕ ПОСЛЕДНИХ ШТРИХОВ И ПУБЛИКАЦИЯ САЙТА 613
Глава 44. Программируемая графика HTML5
615
Канва 615
Контекст рисования 615
Рисование простейших фигур 616
Задание цвета, уровня прозрачности и толщины линий 616
Рисование сложных фигур 618
Как рисуются сложные контуры 618
Перо. Перемещение пера 618
Прямые линии 619
Дуги 619
Кривые Безье 620
Прямоугольники 621
Задание стиля линий 621
Вывод текста 623
Использование сложных цветов 624
Линейный градиент 624
Радиальный градиент 626
Графический цвет 627
Вывод внешних изображений 628
Создание тени у рисуемой графики 629
Преобразования системы координат 629
Сохранение и загрузка состояния 630
Перемещение начала координат канвы 630
Поворот системы координат 631
Изменение масштаба системы координат 632
Управление наложением графики 633
Создание маски 634
Что дальше? 635
Глава 45. Хранение данных на стороне клиента
636
Хранилище HTML5 636
Временное хранение текста статей на стороне клиента 637
Что дальше? 639
Глава 46. Публикация сайта
640
Подготовка сайта к публикации 640
Указание окончательных настроек 640
Удаление ненужных файлов 641
Создание страницы сообщений об ошибках 642
Публикация сайта 643
Заключение 645

ПРИЛОЖЕНИЯ 647
Приложение 1. Установка и настройка пакета Open Server 649
Установка 649
Запуск и управление серверами 651
Настройка 651
Приложение 2. Использование программы phpMyAdmin для работы с базами данных MySQL 653
Запуск и вход 653
Работа с пользователями 654
Создание пользователя и базы данных 654
Правка и удаление пользователей 656
Работа с таблицами 656
Создание таблиц 656
Правка таблиц 658
Удаление таблиц 659
Работа с индексами 660
Создание индексов 660
Правка и удаление индексов 660
Работа со связями 661
Работа с содержимым таблиц 663
Перенос содержимого из одной базы данных в другую 664
Экспорт данных 664
Импорт данных 665
Выход 666
для перекодирования аудио- и видеофайлов 667
Приложение 4. Описание электронного архива 671
Предметный указатель 673