Web-дизайн. 4 курс. Практическое занятие №2. Google Material дизайн

 Вам нужно создать страницу, реализованную по принципам material дизайна, включающую в себя:

- две иллюстрации
- несколько блоков текста со стартовыми буквами
- верхнее активное меню

На странице рекомендовано использовать два контрастных цвета и сопутствующие им палитры. Для создания страницы потребуется конфигурация стилей в CSS, библиотека JS, динамический сценарий JavaScript и подключение этих стилей к коду страницы в HTML.

Рекомендуемая тема для выполнения задания: Contempo 1. В настройках темы необходимо отключить фоновую картинку.

I) Параметры стилей
CSS в данном проекте состоит двух компонентов – верхнее меню (компонент 1) и  стартовые буквы (компонент 2).

Верхнее меню:

1) Задаем универсальные параметры стилей:

* {
  box-sizing: border-box;
  padding: 0;
  margin: 0;
  font-family: 'Roboto', sans-serif;
  font-weight: 400;
  font-size: 16px;
  line-height: 1.3;
}

2) Указываем параметры фото, которое будет основным на странице:

#image {
  z-index: 0;
}

#image img {
  display: block;
  margin-right: auto;
  margin-left: auto;
  width: 100%;
  max-width: 820px;
}

3) Параметры текста с отступами:

#text {
  z-index: 0;
  padding: 18px 38px;
}


4) Навигационное меню:

.nav {
  z-index: 9;
  position: fixed;
  bottom: 10.5%;
  right: 5.5%;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background-color: #f9f9f9;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  visibilty: hidden;
  opacity: 0;
  box-shadow: 3px 3px 10px 0px rgba(0, 0, 0, 0.48);
  cursor: pointer;
  transition: all 0.3s ease-in;
}


5) Создаем класс класса для отображения меню при клике:

.nav.show {
  visibility: visible;
  opacity: 1;
}


Верхнее меню
6) Перекрывающий слой. Укажите в нем фон нужного цвета для отображения (лучше всего - прозрачный):

#header-overlay {
  height: 100vh;
  width: 100%;
  background:?;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1000;
}

7) Вводный заголовок с границами перехода и стилями ссылки:

#intro {
  position: absolute; 
  top: 25%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
  text-align: center;
  color: rgba(96, 125, 139,1.0);
}

#intro h3 {
  font-family: 'Roboto', serif;
  font-size: 50px;
  text-transform: capitalize;
  font-weight: 400;
  padding-bottom: 7px;
  transition: .7s ease-in-out;
  color: rgba(70,130,180);
  
}

#intro a {
  font-family: 'Roboto', sans-serif;
  font-size: 14px;
  border: 1px solid rgba(96, 125, 139,1.0);
  padding: 10px 30px;
  position: absolute;
  transition: .3s ease-in-out;
  cursor: pointer;
  left: 0;
  top: 0;
}

8) Контейнер заполняемой кнопки (фуллера):

#button-container {
  height: 40px;
  width: 118px;
  position: absolute;
  left: 50%;
  transform: translate(-50%, 50%);
  transition: .3s ease-in-out;
}

9) Заполняемый бар фуллера с цветом rgba (укажите свой):

#button-overlay {
  height: 40px;
  width: 0;
  top: 0;
  left: 0;
  position: absolute;
  background: rgba(255, 255, 240);
  transition: .3s ease-in-out;
}

10) Классы загрузки цвета и его рамка:

.grow {
  width: 118px !important;
}

.grow2 {
  color: #000;
  border: 1px solid rgba(255, 255, 240) !important;
}

11) Классы загрузчика:

.fuller {
  margin-left: -8%;
  opacity: 0;
  visibility: hidden;
}

.fuller2 {
  visibility: hidden;
  opacity: 0;
}


12) Контейнер иконки меню и его кнопка:

#menu-button-container {
  display: inline-block;
  float: right;
  padding: 20px;
}

#menu-button {
  height: 30px;
  width: 32px;
  position: relative;
  cursor: pointer;
  z-index: 2000;
  overflow: hidden;
}


13) Идентификатор селектора открытого меню:

#menu-button div {
  height: 3px;
  width: 100%;
  background: rgba(0, 0, 255);
  position: absolute;
  top: 14px;
  transition: .4s ease-in-out;
}

14) Активность иконки меню:

#menu-button div:nth-child(1) {
  top: 7px;


#menu-button div:nth-child(2), #menu-button div:nth-child(3) {
  top: 14px;
}

#menu-button div:nth-child(4) {
  top: 21px;
}


#menu-button.animate div:nth-child(1), #menu-button.animate div:nth-child(4) {
    top: 14px;
    opacity: 0;
  }

#menu-button.animate div:nth-child(2) {
    transform: rotate(45deg);
  }

#menu-button.animate div:nth-child(3) {
  transform: rotate(-45deg);
  
}

15) Цвет кнопки при положении курсора:

#menu-button.change-color div {
  background: rgba(0, 0, 255); /* курсор на кнопке закрыть */
}

#menu-button.hover-animation div:nth-child(1), #menu-button.hover-animation div:nth-child(4) {
  width: 80%;
}

#menu-button.hover-color div {
  background: rgba(0, 0, 255); /* активность на кнопке закрыть */
}

#menu-button.hover-color2 div {
  background: rgba(255, 255, 255) !important; /* курсор за пределом кнопки */
}

16) Перекрывающее меню с фото и высота его показа в пикселях (выровняйте в классе reveal в зависимости от высоты ваших фото):

#menu-overlay {
  position: absolute;
  height: 0;
  width: 100%;
  background: url(""); /* ваше перекрывающее фото */
  left: 0;
  top: 0;
  transition: .5s ease-in;
  z-index: 2000;
}

.reveal {
  height: 610px !important; 
}

17) Контейнер навигации с позицией букв относительно верхнего и левого краев - у меня 10% сверху и 60% слева (укажите подходящие вам параметры):

#nav-container {
  position: absolute;
  top: ?; 
  left: ?;
  transform: translate(-50%, -50%);
  z-index: 2000;
  transition: 1s ease-out;
}

#nav-container ul li {
  list-style: none;
  transition: .6s ease-in-out;
}

18) Цвет букв меню при наведенном курсоре (укажите свой):

#nav-container ul li a {
  text-decoration: none;
  font-family: 'Roboto', serif;
  font-size: 50px;
  line-height: 28px;
  color: rgba(255, 255, 255);
  transition: .3s ease-in-out;
}

19) Скрытое меню:

.hidden {
  opacity: 0;
  visibility: hidden;
  margin-left: -60%;
}


20) Анимация меню с цветом (укажите свой):

.nav-animate {
  color: rgba(0, 0, 255) !important; 
}


Стартовые буквы
21) Объявите стартовые буквы любым классом и укажите в нем ваш цвет и следующие параметры:


 float: left;
 font-size: 84px;
 line-height: 64px;
 padding-top: 4px;
 padding-right: 8px;
 padding-left: 3px;
 font-family: 'Roboto', sans-serif;


II) Динамический сценарий JavaScript
22) Активная кнопка раскрытия:

$(document).ready(function(){
   
  $("#intro h3").delay(1000).queue(function(n){
    $(this).toggleClass("fuller")
    n()
  })
  
  $("#intro a").delay(1400).queue(function(n){
    $(this).toggleClass("fuller2")
    n()
  })
   
   
   $("#intro a").hover(function(){
     $("#button-overlay").toggleClass("grow")
     $("#button-container a").toggleClass("grow2")
   })
   

23) Сценарии меню:

 $("#menu-button").hover(function(){
     $("#menu-button").toggleClass("hover-animation")
     $("#menu-button").toggleClass("hover-color")
   })
   
   
   $('#nav-container ul li a').hover(function(){
  $('#nav-container ul li a').toggleClass('nav-animate');
  $(this).toggleClass('nav-animate')
});

24) И сценарии кнопок:

  $("#menu-button").click(function (){
  
    /* hides intro */
    $("#intro h3").toggleClass("fuller")
  
    $("#intro a").toggleClass('fuller2')
    
    
    $("#menu-button").toggleClass("animate")

    $("#menu-overlay").toggleClass("reveal")

    $("#menu-button").toggleClass("change-color")
    
    $("#menu-button").hover(function(){
      $("#menu-button").toggleClass('hover-color')
      $("#menu-button").toggleClass('hover-color2')
    })
    
    /* shows and hides nav */

    $("#nav-container").delay(200).queue(function(n){
      $(this).toggleClass("hidden")
      n()
    })

    $("#nav1").delay(400).queue(function(n){
      $(this).toggleClass("hidden")
      n()
    })

    $("#nav2").delay(600).queue(function(n){
      $(this).toggleClass("hidden")
      n()
    })

    $("#nav3").delay(800).queue(function(n){
      $(this).toggleClass("hidden")
      n()
    })
  })
   
   
})

25) В HTML также потребуется встроить библиотеку JS. Ее можно взять здесь: https://raw.githubusercontent.com/Dmitrykonn/locals/main/panoramaminjq.js

III) Собственно сам HTML:
26) Указываем doctype, внутри <head> прописываем метаданные и стандартный заголовок:

<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>GM page</title>
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">

27) Подключаем библиотеку CSS, иконки и шрифты Google:
Библиотеку нужно загрузить в репозиторий отсюда: https://raw.githubusercontent.com/Dmitrykonn/locals/main/normalizergm.css
иконки отсюда: https://fonts.googleapis.com/icon?family=Material+Icons и шрифты отсюда: https://fonts.googleapis.com/css?family=Roboto

28) Встраиваем CSS и закрываем </head>
29) Внутри тега <body> указываем идентификаторы элементов из CSS:

<div id="header-container">
  <div id="header-bg"></div>
  <div id="header-overlay">
    <div id="intro">

30) Основной заголовок страницы:

      <h3 class="fuller">Ваш заголовок</h3>
      <div id="button-container">
        <div id="button-overlay"></div>
       
31) Текст на фуллере с идентификатором закладки:

        <a class="fuller2" href="#1">ваш текст</a>

32) Закрываем классы и открываем меню:

      </div>
       </div>

   <div id="menu-overlay"></div>
<div id="menu-button-container">
  <div id="menu-button">

33) Указываем блоки разделителя и закрываем оставшийся класс:

    <div></div>
    <div></div>
    <div></div>
    <div></div>
  </div></div>
</div>

34) Прописываем скрываемое меню. Пропишите в нем имена вкладок и ссылки:

  <div id="nav-container" class="hidden">
    <ul>
      <li id="nav1" class="hidden"><a href="#">первая ссылка</a></li>
      <li id="nav2" class="hidden"><a href="#">вторая</a></li>
      <li id="nav3" class="hidden"><a href="#">третья</a></li>
    </ul>
  </div>


35) Открываем основной раздел страницы и в классе фото указываем расположение исходного фото на странице:

<main>
  <div id="image">
    <img src="https://sites.google.com/site/konoplevmedia/lv0.png">
  </div>

36) Открываем класс текста:

<div id="text">

37) Для каждого абзаца текста после тега абзаца указываем класс с буквой, например:
<p><span class="first-character fl">В</span>аш текст</p>

Обратите внимание, что стили будут запрашиваться из класса CSS – каким вы его указали.

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

<section class="section" id="1"><p>ваш текст</section>

39) Закрываете тег </div>, указываете идентификатор
  <div id="overlay"></div>
И затем закрываете основной блок:
</main>

40) Встраиваете ваш JavaScript и библиотеку и закрываете все оставшиеся теги: </div>
</body> и </html>.

Если все верно, то ваша страница будет выглядеть примерно так: https://konoplevtech4.blogspot.com/2020/05/google-material-simple-page.html Ссылки на выполненное задание принимаются в комментариях к этому посту до 15:00 пятницы 27 сентября.

Комментарии

Популярные сообщения