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;
}
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;
}
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;
}
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;
}
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;
}
visibility: visible;
opacity: 1;
}
Верхнее меню
6) Перекрывающий слой. Укажите в нем фон нужного цвета для отображения (лучше всего - прозрачный):
#header-overlay {
height: 100vh;
width: 100%;
background:?;
position: absolute;
top: 0;
left: 0;
z-index: 1000;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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);
}
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; /* курсор за пределом кнопки */
}
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;
}
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;
}
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;
}
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%;
}
opacity: 0;
visibility: hidden;
margin-left: -60%;
}
20) Анимация меню с цветом (укажите свой):
.nav-animate {
color: rgba(0, 0, 255) !important;
}
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")
})
$("#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')
});
$("#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()
})
})
})
/* 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">
<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
иконки отсюда: 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">
<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>
<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">
<div id="menu-button-container">
<div id="menu-button">
33) Указываем блоки разделителя и закрываем оставшийся класс:
<div></div>
<div></div>
<div></div>
<div></div>
</div></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>
<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>
<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>.
</body> и </html>.
Если все верно, то ваша страница будет выглядеть примерно так: https://konoplevtech4.blogspot.com/2020/05/google-material-simple-page.html Ссылки на выполненное задание принимаются в комментариях к этому посту до 15:00 пятницы 29 сентября.
https://dontstopthemusicslpw.blogspot.com/2023/09/google-material.html#1
ОтветитьУдалитьОценка "отлично"
Удалитьhttps://yankajourney.blogspot.com/2023/09/gm-page-httpsvk.html#1
ОтветитьУдалитьОценка "отлично"
Удалитьhttps://grnata74.blogspot.com/2023/09/gm-page-apple-apple-httpsvk_25.html#1
ОтветитьУдалитьОценка "отлично"
Удалитьhttps://krisnovajour.blogspot.com/2023/09/blog-post.html
ОтветитьУдалитьОценка "отлично"
Удалитьhttps://dashulyaivanova.blogspot.com/2023/09/gm-page-box-sizing-border-box-padding-0.html
ОтветитьУдалитьОценка "отлично"
Удалитьhttps://annajour1.blogspot.com/2023/09/web-4-2-google-material.html
ОтветитьУдалитьОценка "отлично"
Удалить