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

Тема: Использование модуля FlexBox для верстки web-страниц

 

Создать web-страницу по образцу.

 

1. На странице index.html после создания структуры web-страницы добавьте следующие блоки, которые будут составлять основные части сайта:

 

            <div id="wrapper">

          <div class="block1"></div>

          <div class="block2"></div>

          <div class="block3"></div>

          <div class="block4"></div>

          <div class="block5"></div>

          <div class="block6"></div>

     </div>

 

Создайте файл style.css, в котором будем параллельно записывать стили блоков страницы.

Ориентировочные стили для блока, содержащего весь контент страницы:

#wrapper{

     max-height: 100%;

     width: 100%;

}

Для контейнеров, находящихся в основном блоке зададим границы. Это нам понадобится на этапе создания блоков. После того, как контейнеры и их содержимое будет создано и оформлено эти границы нужно будет убрать:

#wrapper div{border: 1px solid black;}

 

Для всех шести блоков зададим цвет заливки и высоту, чтобы увидеть блоки на странице:

 

.block1{

     background-color: #FFFFFF;

     height: 50px;

}

.block2{

     background: #008080;

     height: 100px;

}

.block3{

     background: #FFFFFF;

     height: 200px;

}

.block4{

     background: #008B8B;

     height: 150px;

}

.block5{

     background: #008B8B;

     height: 300px;

}

.block6{

     background: rgb(32, 178, 170);

     height: 150px;

}

 

Должно получиться следующее:

 

 

2. Создаем навигацию на странице, оформляем меню – контейнер в контейнере block1 (на странице index.html)

<div id="nav">

     <a href="">Главная</a>

     <a href="">Новости</a>

     <a href="">Консультация</a>

     <a href="">Информация</a>

     <a href="">Контакты</a>

</div>

Меню задаем стили (в файле style.css):

#nav{

     width: 80%;    /* ширина блока 80% */

     margin: 0px auto; /*выравниваем по центру этот блок*/

     border: 1px solid blue;  /*задаем границы – нужно на этапе разработки*/

     display: flex;      /*делаем контейнер гибким, т.е. flex-контейнером*/

     justify-content: space-between;   /*между каждым элементом flex-контейнера будет одинаковое расстояние*/

}

 

Блок меню будет иметь такой вид:

 

Увеличиваем размер пунктов меню

#nav a{

     padding: 10px 20px;

}

 

Стилизуем ссылки в меню

#nav a{

padding: 10px 20px; /*отступы внутри ссылки увеличиваем, тем самым увеличиваем площадь ссылки*/

     text-decoration: none;   /*убираем подчеркивание у ссылки*/

     font-size: 80%; /*увеличиваем размер шрифта*/

     text-transform: uppercase;   /*все символы отображаем в верхнем регистре*/

     color: #008080;     /*устанавливаем цвет ссылок*/

}

 

Задаем стили для ссылок при наведении на них мышкой – эффект hover

 

#nav a:hover{

     color: #FFFFFF;

     background-color: #008080;

}

 

Получаем такое меню:

 

 

Убираем высоту блока 1, так как высоту этого блока будет составлять его содержимое:

.block1{

     background-color: #FFFFFF;

}

 

3. Поработаем со следующим блоком block2. Добавляем в него блок для текста content, а нем соответствующий текст (в index.html)

 

<div id="content">

     <div class="text" >

          <h2>Программист</h2>

          <h4>навсегда</h4>

</div>

</div>

 

В файле style.css разделяем стили блоков:

/*------------------*/

Для контейнера с текстом задаем стили:

#content{

width: 80%;    /* ширина блока 80% */

     margin: 0px auto; /*выравниваем по центру этот блок*/

     text-align: center; /*задаем выравнивание для текста контейнера по центру*/

}

 

Забираем высоту у контейнера block2 и отдаем в контейнер в текстом

.block2{

     background: #008080;

     /*удалили свойство высоты*/

}

 

#content{

     width: 80%;

     margin: 0px auto;

     text-align: center;

     height: 100px; /*добавили свойство высоты*/

}

 

Контейнер #content делаем гибким (flex-контейнером) и его дочерние элементы выравниваем по центру по вертикали и горизонтали

#content{

     width: 80%;

     margin: 0px auto;

     text-align: center;

     display: flex; /*делаем контейнер гибким, т.е. flex-контейнером*/

     justify-content: center; /*все элементы flex-контейнера выравниваем по центру по горизонтали – по основной оси*/

     align-items: center; /*все элементы flex-контейнера выравниваем по центру по вертикали – по побочной оси*/

     height: 100px;

}

 

Задаем форматирование тексту, который находит в этом контейнере:

.text h2{

     text-transform: uppercase; /*все символы в верхнем регистре*/

     color: #FFFFFF;

     margin-bottom: -3px;    /*отступ снизу уменьшаем, чтобы две строки были ближе*/

}

.text h4{

     color: #FFFFFF;

     letter-spacing: 10px;   /*расстояние между символами увеличиваем*/

     font-size: 70%;

}

 

 

4. Оформляем третий блок block3. В него помещаем заголовок, картинку, абзац, горизонтальную линию, и ссылку

 

<div id="how">

<h3>Как стать программистом</h3>

<div class="info">

          <div class="image">

              <img src="img/foto2.jpg" alt="">

          </div>

          <div class="text2">

              <h4>Говорят, что в мире есть 10 видов людей. <br>Те, кто понимает двоичный код… и те, кто не понимает.</h4>

              <p class="abz">Программирование зародилось в XIX веке, и до середины XX века, когда случился бурный рост информационных технологий, создание программ для машины было сродни искусству. Программирование было уделом избранных. Сегодня же профессия программиста распространена и очень востребована.</p>

              <hr>

              <a href="">Read more</a>

          </div>

     </div>

</div>

 

Разделяем стили блоков:

/*------------------*/

Картинке задаем ширину:

.info img{width: 200px;}

 

Блоку how задаем ширину и выравнивание по центру, цвет текста:

#how{

     width: 80%;

     margin: 0px auto;

     color: #008080;

}

 

Выравниваем блок с картинкой и текстом в одну линию. Устанавливаем flex-контейнеру (родителю) – контейнеру с классом info свойство display: flex;

 

.info{

     display: flex;

}

 

Блоку с картинкой запрещаем сжиматься и разжиматься и устанавливаем фиксированную ширину:

.image{

     flex-grow: 0;  /*коэффициент растяжения = 0 */

     flex-shrink: 0;/*коэффициент сжатия = 0*/

     flex-basis: 200px;  /*ширина контейнера*/

}

Или кратко можно записать так:

.image{

     flex: 0 0 200px;

}

 

А соседнему блоку разрешаем все – сжатие и растяжение:

.text2{

     flex: 1 1 auto;

}

 

Добавляем отступ текста от края контейнера:

.text2{

     flex: 1 1 auto;

     padding-left: 20px;

}

 

Добавим остальное форматирование для заголовков и текста:

Отступы сверху и снизу для первого заголовка:

#how h3{ 

     text-transform: uppercase;

     margin: 20px 0px 20px 0px;

}

 

Отступ снизу для второго заголовка:

#how h4{

     margin-bottom: 10px;

}

 

Уменьшаем размер шрифта до 80% для абзаца:

#how .abz{

     font-size: 80%;

}

 

Параметры для горизонтальной линии зададим атрибутами тега

<hr color="#FFA500" width="30" align="left">

 

И стилями зададим отступ для линии:

#how hr{

     margin: 10px 0px 10px 0px;

}

 

Удаляем высоту для третьего блока

.block3{

     background: #FFFFFF;

     /*убираем высоту*/

}

 

Получим такой вид страницы:

 

 

5. Оформляем четвертый блок block4. В него добавляем контейнер с классом three и в него – три контейнера с заголовками и абзацем текста:

<div class="three">

     <div class="sistem">

          <h3 class="h3">Системные<br>программисты</h3>

          <p class="p">Системные программисты занимаются созданием операционных систем (например, Android или iOS). Веб-программисты разрабатывают интернет-сайты и программы, которые поддерживают работу этих сайтов.

           </p>

     </div>

     <div class="prikl">

          <h3 class="h3">Прикладные<br>программисты</h3>

          <p class="p">Прикладные программисты занимаются написанием различных программ и приложений: игры (например, популярная игра Angry birds), офисные приложения (например, Microsoft Office Word) и многое другое.</p>

     </div>

     <div class="web">

          <h3 class="h3">Web-<br>программисты</h3>

          <p  class="p">Web-программист – это специалист, разрабатывающий веб-приложения (любые сайты, в которых есть элементы интерактива), то есть фактически большую часть интернет-ресурсов: поисковики, интернет-магазины, соцсети, видеохостинги, сервисы заказа и бронирования, онлайн-калькуляторы и т. д. Современные веб-приложения, как правило, клиент-серверные. Клиентскую часть разрабатывает фронтенд-программист, а серверную – бэкенд разработчик. Специалисты, способные выполнять обе эти роли, называются фуллстек-программистами. </p>

     </div>

</div>

 

Задаем стили ширину, выравнивание по центру и делаем контейнер гибким (flex-контейнером):

.three{

     background: #008B8B;

     height: 150px;

     width: 80%;

     margin: 0px auto;

     display: flex; /*делаем контейнер flex-контейнером*/

     justify-content: row;   /*размещаем flex-элементы в строку*/

}

 

Стилизуем заголовок (все символы переводим в верхний регистр и создаем нижний отступ от соседних элементов) и абзац (размер шрифта уменьшаем до 80%):

.h3{

     text-transform: uppercase;

     margin: 0 0 20px 0;

}

.p{font-size: 80%;}

 

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

.three div{

     padding: 30px 20px 30px 20px;

}

 

Задаем для каждого из трех дочерних контейнеров цвет текста, цвет фона и ширину в процентах (с помощью свойства flex-basis):

.sistem{

     color: #40E0D0;

     background-color: #008080;

     flex-basis: 30%;

}

.prikl{

     color: #E0FFFF;

     background-color: #48D1CC;

     flex-basis: 30%;

}

.web{

     color: #FFFFFF;

     background-color: #FFA500;

     flex-basis: 40%;

}

 

Удаляем свойство высоты для блока с классом .three

 

Удаляем свойство высоты для пятого блока:

.block5{

     background: #008B8B;

/*удалили высоту*/

}

Получаем такой вид:

 

6. Оформляем пятый блок block5. В пятом блоке создаем еще один блок с идентификатором <div id="articles"></div>

В этом блоке сначала создадим заголовок и одну статью:

 

<div id="articles">

     <h3>Какие веб программисты бывают</h3>

     <div class="article">

          <div class="image">

              <img src="img/foto3.jpg" alt="">

          </div>

          <div class="text3">

              <h4>Frontend-разработчики</h4>

              <p class="abz">Frontend-разработчики занимаются отображением информации в браузере. Это те люди, которые работают в связке с дизайнерами и отвечают за корректность макета, плавность анимации, инфографику на сайте – за все, что видят пользователи, за frontend-часть (сторону) продукта. А она взаимодействует с браузером и использует его для выполнения определенных задач. Технологии (языки), которые понимает браузер, – это HTML, CSS и JavaScript. Все это надо знать web-программисту, работающему с frontend-частью. Если у вас «поплыл» текст или кнопка «убегает» от вас при наведении, знайте, что во всем виноват фронтендер.</p>

              <hr color="# FFFFFF " width="30" align="left">

              <a href="">Read more</a>

          </div>

     </div>

</div>

 

Для блока со статьями задаем свойства:

#articles{

     width: 80%;

     margin: 0px auto;   /*размещаем по центру родителя*/

     display: flex; /*делаем контейнер flex-контейнером*/

     flex-wrap: wrap;    /*перенос элементов на другую строку*/

}

 

Всем статьям задаем половину ширины родителя (49%) и также свойтво display: flex, чтобы содержимое статьи (картинка и текст) были гибкими элементами:

.article{

     flex-basis: 49%;

     display: flex;

     padding: 50px 10px 10px 0px;

     font-size: 70%;

}

 

Картинкам задаем ширину:

.block5 img{

     width: 180px;

}

 

Для абзаца с текстом задаем отступ справа и цвет текста:

.text3 .abz{

     margin: 0px 20px 0px 0px;

     color: #AFEEEE;

}

 

Для горизонтальной линии задем отступ сверху и снизу:

.text3 hr{

margin: 10px 0px 10px 0px;

}

 

Устанавливаем стили ссылке – цвет, переводим символы в верхний регистр, убираем подчеркивание:

.text3 a{

     color: #FFFFFF;

     text-transform: uppercase;

     text-decoration: none;

}

 

Задаем параметры тексту абзаца – отступ справа и цвет:

.text3 .abz{

     margin: 0px 20px 0px 0px;

     color: #AFEEEE;

}

 

Заставим горизонтальную линию и ссылку прижиматься к нижнему краю контейнера. Для этого контейнеру с классом text3 зададим следующие свойства:

.text3{

     display: flex; /*flex-контейнер*/

     flex-direction: column; /*все дочерние элементы (абзац, линию и ссылку) располагаем в столбец*/

}

 

Заставляем абзац занимать все свободное место:

.text3 .abz{

     margin: 0px 20px 0px 0px; /*отступ справа 20px*/

     color: #AFEEEE;

     flex: 1 1 auto; /*задаем сжатие и растяжение, автоматическую ширину, тем самым заставляем прижаться к нижнему краю контейнера-родителя*/

}

 

 

7. Самостоятельно создайте подвал сайта. Заставьте его прижиматься к нижнему краю страницы.