СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Проектирование и дизайн ИС Практическая работа №15

Категория: Информатика

Нажмите, чтобы узнать подробности

https://cloud.mail.ru/public/J74D/CNMnoNvJi  - МАТЕРИАЛ К ПР №15

Просмотр содержимого документа
«Проектирование и дизайн ИС Практическая работа №15»

Практическое занятие №15

Тема: создание адаптивной посадочной страницы

Цель работы: с помощью блочной модели CSS создать адаптивную посадочную страницу

Приобретаемые умения и навыки: Умение работать с СSS

Норма времени: 2 часа.

Оборудование: Компьютер с установленным программным обеспечением и подключенный к Internet

Введение

Открыв HTML-документ из архива, вы увидите готовый каркас посадочной страницы. В теге  мы подключили таблицы стилей, которые понадобятся вам для работы:

  • normalize.css — файл для сброса стандартных стилей браузера (мы подробно рассказывали о нем в одном из уроков первой части учебника);

  • шрифт Raleway от Google Fonts;

  • иконочный шрифт FontAwesome;

  • style.css — файл, куда вы будете записывать все стили для лендинга.

Тело документа разделено на секции — шапка сайта (header) с навигацией (nav), большой блок на всю ширину (jumbotron), блок сервисов (services), записи блога (blog) и подвал сайта (footer). Каждая секция содержит соответствующий контент.

Макет страницы выглядит следующим образом:




Так должен выглядеть окончательный результат работы. Просмотрите файл index.html в браузере — пока что он выглядит не очень интересно, но совсем скоро вы это исправите собственноручно. Поехали!

Таблица стилей

Откройте файл style.css из папки «css». Вы увидите, что документ структурирован с помощью комментариев — для удобства мы разделили его на части в соответствии со структурой HTML-страницы. Записывайте каждый стиль в соответствующий раздел: стили для шапки сайта помещайте под комментарием /* Header */, стили для блога — под комментарием /* Blog */, базовые стили и стили для повторяющихся элементов страницы — под комментарием /* General */ и т. д.

Приступаем к работе

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

Основные стили CSS

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

Начнем с основного текста на сайте. Согласно дизайну макета, основной (и единственный) шрифт на странице — это Raleway, а все параграфы 

 должны иметь размер шрифта 14 пикселей, цвет #999 и высоту строки 1.6. Запишем эти данные в нашу таблицу стилей, в раздел General:

!!!Заметим что, кроме Raleway мы добавили несколько запасных шрифтов

Двигаемся дальше: нужны стили для заголовков. У нас есть один заголовок , а также несколько заголовков  и . Согласно макету, заголовок h1 имеет размер шрифта 40 пикселей и белый цвет. Остальные заголовки имеют цвет #282828. Размер шрифта для заголовков второго уровня — 28 пикселей, а для h3 — 26 пикселей.


Помимо текста у нас есть еще несколько повторяющихся элементов. Например, класс .container — это блок, с ограниченной шириной в который помещается контент. Ширина нашего контента должна занимать 90% экрана, но при этом контейнер не должен растягиваться шире, чем 960 пикселей. Здесь нам пригодится недавно рассмотренное свойство max-width. Кроме того, этот контейнер должен размещаться по центру страницы, для чего мы воспользуемся свойством margin.

Следующие повторяющиеся элементы — блок с классом .brand и навигационное меню. Эти элементы присутствуют в хедере и футере. Они не будут выглядеть абсолютно идентично, однако часть стилей для них будут общими.

Итак, оба элемента .brand будут иметь одинаковый размер шрифта:

А оба навигационных меню будут горизонтальными и тоже будут иметь одинаковый размер шрифта. Кстати, для создания горизонтального меню мы задействуем свойство float, применив его к пунктам меню:

С основными стилями мы разобрались. Сохраните изменения в таблице CSS и обновите файл index.html в браузере. Вы уже можете видеть, как начала видоизменяться веб-страница. Теперь пора перейти к оформлению секций.

CSS для шапки сайта

Наш хедер будет иметь белый фон и отступ сверху в размере 30 пикселей. Запишем это в таблицу стилей:

Блок с названием проекта будет прилеплен к левой стороне контейнера, иметь цвет #59abe3 и отступ внизу в 30 пикселей:

Обратите внимание, что мы записали стиль именно для того элемента .brand, который находится в шапке сайта, и не затрагивали .brand, расположенный в футере, поскольку он будет иметь другой цвет и расположение. В дальнейшем мы будем продолжать использовать преимущества селекторов потомков.

Навигационное меню мы приклеим к правой стороне шапки, добавим внизу поле высотой 30 пикселей, а также сделаем отступы по 20 пикселей слева для всех пунктов меню, чтобы они не сливались в одно целое:

Установим цвет текста #aaa для пунктов меню. Этот стиль мы применим именно к тегам , а не к 

  • , в противном случае мы не увидим результат. Дело в том, что тег  не наследует цвет текста от родителя, и ссылки продолжат отображаться в стандартном синем цвете.

    Обновите страницу в браузере для просмотра изменений.

    CSS для блока Jumbotron

    Как правило, jumbotron (джамботрон) на сайте — это большой, привлекающий внимание блок, растянутый на всю ширину страницы. Фоном для нашего джамботрона послужит изображение в хорошем качестве, растянутое на всю ширину, а текстовое содержимое будет находиться в ограничивающем блоке .container.

    Фоновое изображение вы найдете в папке «img». Добавьте следующий CSS-код и посмотрите результат и попробовать самостоятельно понять, что и как в нем работает:

    Мы добавим еще несколько строк к стилю джамботрона — для создания вертикальных отступов по 80 пикселей и установки минимальной высоты в 250 пикселей, для выравнивания внутреннего содержимого по центру блока, а также для сброса обтекания, которое было задано навигационному меню:

    Стиль для заголовка джамботрона мы добавили ранее, поэтому сразу перейдем к созданию яркой кнопки, расположенной под ним. Если быть точнее, это обычная ссылка с классом .button, но ведь CSS позволяет нам творить чудеса!

    Во-первых, поскольку тег  является строчным элементом, то первым делом применим к нему свойство display со значением inline-block. Таким образом кнопка будет отображаться как блок, а поведение останется, как у строки.

    Текст кнопки будет белым и без подчеркивания, шрифт — жирный 18 пикселей, верхний margin — 40 пикселей, а цвет фона — #22a7f0. Чтобы это больше было похоже на кнопку, необходимо добавить отступы с четырех сторон — в нашем случае по 20 пикселей вертикально и по 30 пикселей горизонтально. Также мы округлим углы элемента с помощью уже известного нам свойства border-radius:

    CSS для блока Services

    Данная секция будет включать в себя три блока, расположенных в один ряд. В этом нам снова поможет свойство float. Все блоки будут иметь одинаковую ширину, указанную в процентах, и в сумме они займут всю ширину контейнера. Разделив число 100 на 3, получаем 33,333333. Именно его мы записываем в стиль для класса .service. Дополнительно зададим каждому блоку внутренние отступы в размере 15 пикселей и внешние вертикальные отступы в 30 и 50 пикселей:

    Сейчас вы можете обновить страницу и увидеть, как третий блок съехал вниз. Догадаетесь, почему так произошло? Вспомните урок, где мы разбирали, как браузер вычисляет размеры элемента и что делает свойство box-sizing. Мы добавили нашим блокам свойство padding, и сумма их ширин превысила ширину контейнера, поэтому один из них не помещается в ряд. Добавьте к стилю элемента .service свойство box-sizing со значением border-box, после чего обновите страницу в браузере. Вы увидите, что теперь все блоки выстроились так, как надо.

    Идем дальше. Добавим стили для самого блока .services — сделаем верхний отступ в 50 пикселей и центрируем всё текстовое содержимое:

    В качестве иконок блоков мы использовали иконочный шрифт FontAwesome. Мы не будем углубляться в эту тему (на официальном сайте FontAwesome есть очень простая и понятная инструкция по использованию), но мы изменим цвет иконок на более подходящий нам. Каждая иконка представляет собой векторный рисунок, перекрасить который не составит труда. Мы просто запишем стиль, как будто задаем цвет для текста:

    Обновите страницу в браузере и полюбуйтесь результатом. Нам осталось написать стиль для двух последних блоков.

    CSS для блока Blog

    Прежде всего необходимо отменить обтекание для блока .blog. Он будет иметь вертикальные внутренние отступы в 50 пикселей, а также легкий серый фон, в соответствии с макетом:

    Выровняем заголовок этого блока по центру:

    Каждому блоку с классом .post присвоим внутренний отступ в 30 пикселей сверху и поведение строчно-блочного элемента:

    Для миниатюр постов зададим обтекание и внешний отступ 30 пикселей с правой стороны:

    После чего дополните стиль элементов .post строкой clear:both, благодаря которой каждый блок будет отображаться корректно и не съезжать.

    CSS для футера

    Для основного блока подвала понадобится сбросить обтекание, задать вертикальные отступы в 50 пикселей, выравнивание текста по центру и темно-серый фон:

    Установим цвет текста для элемента .brand (как уже упоминалось, он будет отличаться от стиля, применяемого к элементу .brand в шапке сайта):

    Для пунктов меню в футере зададим отступы и цвет ссылок:

    Обратите внимание: чтобы свойство text-align:center, примененное к тегу , повлияло на блок с меню, необходимо сделать его строчно-блочным:


    И, наконец, напишем небольшой стиль для последнего элемента — .copyright:


    Теперь обновите страницу и взгляните на результат вашей работы. Если вы всё сделали без ошибок, то у вас получилась веб-страница, которую вы видели на макете в начале данного урока.

    Проверка адаптивности

    Но это еще не всё. Давайте проверим, насколько наша верстка хорошо адаптируется под разные размеры экрана. Поиграйтесь с шириной окна браузера и понаблюдайте за поведением элементов. Уверены, вы обнаружили несколько недочетов. Давайте исправим их.

    Первое, что бросается в глаза — это три блока .service, каждый из которых имеет ширину 33,333333% от ширины контейнера. На узких экранах текст в этих блоках становится трудночитаемым.

    Это можно исправить, использовав медиазапрос (в предыдущем практическом уроке мы также его применяли, но подробное изучение медиазапросов будет немного позже). В медиазапросе можно указать, при какой ширине экрана какой стиль отображать.

    Итак, наши блоки начинают выглядеть плохо на экранах шириной менее 576 пикселей (в основном, это телефоны в портретной ориентации). Запишем специальный стиль для данной ширины (поместите эту запись в самый низ таблицы стилей):

    Теперь, если ширина экрана пользователя будет менее чем 576 пикселей, каждый блок .service будет иметь ширину 100% и не иметь обтекания.

    Продолжаем проверять нашу верстку на адаптивность. Отчетливо видно, что на маленькие экраны нормально не помещаются блоки .post. Миниатюра поста чересчур большая для небольшого экрана и следующий за ней текст некрасиво обтекает ее. Исправим это следующим стилем (просто добавьте код к уже созданному медиазапросу):

    Напоследок добавим еще пару строк кода, которые помогут всем изображениям на странице стать адаптивными. Внимание: этот стиль добавляем в раздел General!

    Завершение

    Ну вот и всё, ваша посадочная страница готова и адаптирована даже под экраны маленьких устройств.

    Дополнительное задание

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

    Контрольные вопросы

    1. Какие свойства существуют для установки полей или отступов в CSS?

    2. За что отвечает свойство border-style и какие значения может принимать?

    3. Каким образом можно закруглить углы в CSS для границ?