Загрузил Толик Родионов

Курсовая работа 2 Курс РПППИС

реклама
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«МИРЭА – Российский технологический университет»
РТУ МИРЭА
Институт информационных технологий (ИТ)
Кафедра инструментального и прикладного программного обеспечения (ИиППО)
КУРСОВАЯ РАБОТА
по дисциплине: Разработка клиентских частей интернет-ресурсов
по профилю: Разработка программных продуктов и проектирование информационных
систем
направления профессиональной подготовки: 09.03.04 «Программная инженерия»
Тема: Клиентская часть интернет-ресурса «Автосалон»
Студент: Родионов Анатолий Анатольевич
Группа: ИКБО-32-21
Работа представлена к защите___.12.2022__________/Родионов А.А./
(подпись и ф.и.о. студента)
Руководитель: старший преподаватель, Матчин Василий Тимофеевич
Работа допущена к защите___.12.2022_________/Матчин В.Т./
(подпись и ф.и.о. рук-ля)
Оценка по итогам защиты: __________
___.12.2022/ ___________/Алпатов А.Н., доцент, к.т.н., доцент/
___.12.2022 / ___________/ Матчин В.Т., ст.преподаватель/
(подписи, дата, ф.и.о., должность, звание, уч. степень двух преподавателей, принявших
защиту)
М. РТУ МИРЭА. 2022 г.
АННОТАЦИЯ
Курсовая работа содержит 36 страниц отчёта, 9 иллюстраций, 7
листингов.
Целью данной курсовой работы является создание интернет-ресурса
“Автосалон”
В разделе “Введение” даётся информация по данной курсовой работе, а
именно: актуальность темы, её основные цели, описание предмета
исследования
Основана часть состоит из трёх разделов: общие сведенья, описание
логической структуры и оптимизация интернет ресурса
В разделе “Общие сведенья” излагаются обозначения, наименования,
программное обеспеченье, необходимое для разработки интернет-ресурса.
В разделе “Описание логической структуры” определяются основные
вопросы и подразделы, такие как анализ предметной области, ряд выбранных
технологий.
В разделе “Оптимизация
клиентской части интернет ресурса”
демонстрируются необходимость оптимизации веб-страниц для различных
устройств.
В разделе “Заключение” формируются выводы и предложения,
описывающие успех в достижении поставленных ранее целей.
В разделе “Список используемых источников” находится перечень
источников, использованных при разработке данного интернет-ресурса
СОДЕРЖАНИЕ
АННОТАЦИЯ ...................................................................................................... 3
СПИСОК СОКРАЩЕНИЙ И СПЕЦИАЛЬНЫХ ТЕРМИНОВ ......................... 5
ВВЕДЕНИЕ .......................................................................................................... 6
1.ОБЩИЕ СВЕДЕНИЯ ........................................................................................ 7
1.1 Наименование клиентской части интернет-ресурса.................................. 7
1.2 Прикладное программное обеспечение, необходимое для разработки и
функционирования клиентской части интернет ресурса ................................ 7
1.3 Языки и технологии, с помощью которых реализована клиентская часть
интернет-ресурса ............................................................................................... 7
2. ОПИСАНИЕ ЛОГИЧЕСКОЙ СТРКУТУРЫ .................................................. 9
2.1 Анализ предметной области разрабатываемой части интернет-ресурса . 9
2.2 Описание и выбор технологий, описание и выбор средств разработки. .. 9
2.3 Наполнение контентом и оформление веб-страниц с проработкой
межстраничного взаимодействия. Создание стилей CSS3 ........................... 10
2.4 Создание межстраничной навигации ....................................................... 28
2.5 Реализация слоя клиентской логики веб-страниц с применением
технологии JavaScript ...................................................................................... 28
3. ОПТИМИЗАЦИЯ КЛИЕНТСКОЙ ЧАСТИ ИНТЕРНЕТ-РЕСУРСА. ......... 33
4. ЗАКЛЮЧЕНИЕ .............................................................................................. 36
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ ................................................ 37
СПИСОК СОКРАЩЕНИЙ И СПЕЦИАЛЬНЫХ ТЕРМИНОВ
РКЧИР – Разработка клиентской части интернет ресурсов
КР – Курсовая работа
JS – JavaScript
ПК – Персональный компьютер
IDE – Интегрированная среда разработки
GUI – Графический интерфейс пользователя
WebStorm – Среда разработки
HTML – Hypertext Markup Language
CSS – Cascading Style Sheets
div – Тег универсального контейнера
a – Тег гиперссылки
p – Тег параграфа
span – Тег строчного элемента
h1 – h6 – Теги заголовков
body – Тег контента
button – Тег кнопки
header – Тег вводного контента
footer – Тег нижнего колонтитула
li – Тег списка
ul – Тег неупорядоченного списка
title – Тег заголовка
style – Тег информации о стилях
nav – Тег секции навигации
script – Тег подключения JavaScript кода
ВВЕДЕНИЕ
На данный момент одна из основных технологий в мире является
распределённая система, которая предоставляет доступ к документам,
связанным между собой, находящихся на разных компьютерах, имеющих
доступ к сети интернет. На 6 августа 2021 года, в интернете насчитывается
около 1.8 миллиарда сайтов. Нельзя отрицать всю ту пользу, которую можно
получить,
пользуясь
различными
сайтами.
Исходя
из
всего
вышеперечисленного, можно прийти к выводу, что на данный момент работа
актуальна.
Цель работы и задачи, на практике ознакомиться с современными
инструментами разработки клиентской части интернет ресурсов, а именно
HTML, CSS, JavaScript
HTML – язык гипертекстовой разметки документов для просмотра вебстраниц в браузере. Браузер получает HTML код по одному из двух
протоколов HTTP или HTTPS, а затем интерпретирует полученный код в
интерфейс, отображаемый в окне браузера. HTML – это основа сайта, а его
элементы можно интерпретировать как базовые, из которых стоится сайт. CSS
– каскадные таблицы стилей. Язык описания того, как будет выглядеть
внешний вид документа, написанного на языке разметки(HTML/XHTML).
JavaScript – язык программирования, наиболее часто используемый в сайтах
для добавления различных взаимодействий на сайте. При помощи
вышеописанных инструментов надо реализовать клиентскую часть интернет
ресурса по продаже поддержанных автомобилей.
1.ОБЩИЕ СВЕДЕНИЯ
1.1 Наименование клиентской части интернет-ресурса
В данной курсовой работе рассматривается и разрабатывается
клиентская часть интернет ресурса “Автосалон” с использованием HTML,
CSS, JavaScript.
1.2 Прикладное программное обеспечение, необходимое для
разработки и функционирования клиентской части интернет ресурса
В качестве среды разработки была выбрана программа WebStorm Интегрированная среда разработки на JavaScript, CSS & HTML от компании
JetBrains, разработанная на основе платформы IntelliJ IDEA. С помощью
данной программы разработка упрощается и ускоряется, из-за таких функций
как: Автоматический поиск ошибок и генератор решений для исправления
найденных ошибок, Подсветка ключевых слов в коде, из-за чего упрощается
читабельность кода.
Для тестирования клиентской части ресурса были использованы такие
браузеры, как: Chrome, Firefox, Yandex.
1.3 Языки и технологии, с помощью которых реализована
клиентская часть интернет-ресурса
HTML – это язык гипертекстовой разметки. Веб-браузеры получают
HTML документ от сервера по протоколам HTTP/HTTPS или открывают с
локального диска, далее интерпретируют код в интерфейс, который будет
отображаться на экране монитора. Данный язык используется для написания
“каркаса” сайта, а именно его основных элементов – заголовки, параграфы,
навигационная панель и.т.д.
CSS – это каскадные таблицы стилей. формальный язык описания
внешнего вида документа (веб-страницы), написанного с использованием
языка разметки (чаще всего HTML или XHTML). Также может применяться к
любым XML-документам, например, к SVG или XUL. С помощью данного
языка можно предать презентабельный внешний вид страницам ресурса.
JavaScript -
язык программирования. Поддерживает объектно-
ориентированный, императивный и функциональный стили. Данный язык
позволит нам добавить функционал интернет ресурсу
2. ОПИСАНИЕ ЛОГИЧЕСКОЙ СТРКУТУРЫ
Курсовая работа имитирует интернет ресурс автосалона поддержанных
автомобилей.
2.1 Анализ предметной области разрабатываемой части интернетресурса
В
ходе
разработки
были
выдвинуты
следующие
критерии,
соответствующие функционалу интернет автосалона, которым должен
работать сайт:
1.Приятный интерфейс, для повышения продаж
2.Доступность всей нужной информации
Приятный интерфейс один из ключевых критериев удержания
пользователя на сайте. Неприятный и не интуитивный интерфейс будет
отпугивать пользователя, из-за чего снизятся продажи и популярность данного
ресурса. Так же и важна информация о товаре. Если не будет достаточно
доступной информации, это так же отпугнёт, как и пользователей, так и людей,
которые хотели бы продать свои машины на данном ресурсе. Исходя из
вышеперечисленных размышлений и были выведены требования, описанные
выше.
2.2 Описание и выбор технологий, описание и выбор средств
разработки.
HTML5 – это язык гипертекстовой разметки. Данная разметка
реализуется за счёт тегов. Тэги это какое либо ключевое слово, заключённое в
треугольные скобки. В HTML5 реализовано множество новых синтаксических
особенностей. Например, элементы <video>, <audio> и <canvas>, а также
возможность использования SVG и математических формул. С помощью SVG
тега можно реализовать изображения на сайте, которые будут в хорошем
разрешении на любом экране.
CSS3 – каскадные таблицы стилей. Данная технология позволить
придать тегам оригинальное оформление и полностью изменить внешний вид
сайта. В CSS3 появились такие полезные функции как: тень от блоков и текста,
и скругления углов у блоков. Данные функции помогут более гибко придавать
внешний вид ресурсу.
JavaScript – язык программирования. Будет использоваться для
добавления функционала ресурсу. Тем самым он будет выглядеть более
“живым” и функциональным, что сделает интерфейс более интуитивным и
приятным в использовании.
WebStorm – среда разработки, разработанная JetBrains, имеет много
плюсов:
 Удобное автодополнение как кода на HTML, CSS, так и на
JavaScript.
 Проверка на наличие ошибок и удобная отладка кода
обеспечивается с помощью интеграции с рядом систем
отслеживания ошибок.
 Встроенная интеграция с такими системами управления
версиями как GitHub, Git, а также Subversion, Perforce и Mercurial.
2.3 Наполнение контентом и оформление веб-страниц с
проработкой межстраничного взаимодействия. Создание стилей CSS3
В данном ресурсе находится 5 страниц, каждая из которых даёт пользователю
определённую информацию:
1. Главная страница: Первое что видит пользователь. Предоставляет
информацию о каждой из следующих страниц.
2. Каталог: Основная страница. На данной странице пользователь может
отыскать нужный ему автомобиль.
3. Калькулятор: На данной странице пользователь в бедующем сможет
рассчитать кредит у банков-партнёров.
4. Контакты: На этой странице присутствуют все нужные контакты, а
также график работы офлайн магазина.
5. Авторизация: В будущем, на данной странице сможет войти в свой
аккаунт.
На данный момент сайты становятся все более и более сложными и с
новыми технологиями их интерфейс тоже становится более красивым и
лаконичным. Продажи сайта на прямую зависят от того, на сколько
сайт приятен глазу и на сколько он удобен. Особенно важна главная
страница, ведь это именно то, что первым делом видит пользователь,
открывая сайт. Если он не уверен в данной компании и главная
страница не будет привлекать его, то с довольно большим шансом он
просто закроет сайт, не зайдя глубже. Поддержанные автомобили ещё
долгое время будут востребованными, так как производство
автомобиля довольно долгий и дорогой процесс, что делает новые
автомобили менее доступными. Зайдя на главную страницу
пользователь сразу понимает, что данный ресурс о автомобилях, о чём
говорит крупная картинка автомобиля почти в центре экрана на жёлтом
фоне, что делает её ещё более заметной. С помощью навигационной
панели пользователь может перемещаться по сайту, а наводя на
кнопки, текст в центре экрана будет изменяться в зависимости от того
на какую кнопу навёл пользователь, давая информацию, о том куда
ведёт та или иная кнопка. Главная страница представлена на картинке
1.
Рисунок 1 – Главная страница
В листинге 1 представлены свойства главной страницы.
Листинг 1 – Код свойств CSS, использованных на главной странице.
body{
box-sizing: border-box;
margin: 0px;
padding: 0px;
background-color: rgba(228,249,245,100);
font-family: 'Montserrat', sans-serif;
color: #40514E;
}
body::before{
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-image: url("../assets/images/skyline r34.jpg");
background-repeat:no-repeat;
background-size: cover;
background-position:center;
z-index: -2;
}
body::after{
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgb(228,249,245);
background: linear-gradient(180deg, rgba(228,249,245,0.7) 0%,
rgba(128,255,231,1) 100%);
z-index: -1;
}
.header{
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
height: 15vh;
}
.logo-text{
text-decoration: none;
font-size: 48px;
margin: 0px 40px;
color: #11999E;
}
.nav{
display: flex;
flex-direction: row;
margin: 0 40px;
border-radius: 10px;
}
.nav-button{
margin: 0 20px;
display: flex;
flex-direction: row;
align-items: center;
font-size: 40px;
transition: 0.3s;
border-radius: 10px;
}
.nav-text{
color: #40514E;
text-decoration: none;
transition: 0.3s;
}
@media screen and (min-width: 1295px) {
.nav-button:hover{
background-color: rgba(64, 81, 78, 0.7);
border-radius: 10px;
padding: 5px 20px;
backdrop-filter: blur(5px);
}
.nav-button:hover > .nav-text{
color: #30E3CA;
}
.nav-button:hover > svg{
fill: #30E3CA;
}
}
.nav-button > svg{
width: 40px;
height: 40px;
margin: 0px 10px;
fill: #40514E;
transition: 0.3s;
}
.hero{
height: 80vh;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-evenly;
}
.hero-section{
width: 35vw;
font-size: 30px;
animation: appearing 0.5s;
}
.hero-main-text{
font-size: 60px;
}
.hero-sub-text{
font-size: 30px;
}
.car-image{
position: relative;
aspect-ratio: 15/10;
width: 700px;
z-index: 2;
}
.car-image-container{
position: relative;
}
.car-image-container::after{
position: absolute;
content: '';
width: 600px;
height: 400px;
top: 60px;
left: 0;
background-color: yellow;
z-index: 0;
border-radius: 400px 100px 400px 100px;
}
.footer{
position: absolute;
left: 40px;
bottom: 10px;
}
@keyframes appearing {
0%{
transform: translateY(-10px);
opacity: 0;
}
100%{
transform: translateY(0px);
opacity: 1;
}
}
@media screen and (max-width: 1294px) {
.nav{
position: relative;
flex-direction: column;
z-index: 2;
height: 40px;
border-radius: 20px 0px 0px 20px;
overflow: hidden;
margin: 0px;
align-items: center;
z-index: 5;
}
.nav::before{
content: '';
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
background-color: rgba(0,0,0, 10%);
backdrop-filter: blur(10px);
z-index: -1;
}
.nav:hover{
transform: translateY(45%);
margin-top: 33px;
height: calc(100vh - 40px);
border-radius: 20px 0px 0px 0px;
}
.nav-button{
font-size: 30px;
height: 60px;
}
.hero-main-text{
font-size: 40px;
}
.hero-sub-text{
font-size: 20px;
}
.car-image{
width: 500px;
}
.car-image-container::after{
width: 500px;
height: 300px;
}
.nav-button{
width: 100%;
border-radius: 0px;
}
.nav-text{
padding: 0px 10px;
}
.nav-button:hover{
background-color: rgba(64, 81, 78, 0.7);
backdrop-filter: blur(5px);
}
.nav-button:hover > .nav-text{
color: #30E3CA;
}
.nav-button:hover > svg{
fill: #30E3CA;
}
}
@media screen and (max-width: 1000px) {
.nav-button{
font-size: 30px;
}
.nav-button > svg{
width: 30px;
height: 30px;
}
.hero > svg{
width: 200px;
height: 200px;
}
.car-image{
width: 40vw;
}
.car-image-container::after{
top: 5vw;
width: 35vw;
height: 20vw;
}
}
@media screen and (max-width: 472px) {
.logo-text{
margin: 0px 10px;
}
.footer{
left: 10px;
}
.hero-section{
font-size: 20px;
}
.hero > svg{
width: 150px;
height: 150px;
}
.car-image{
width: 200px;
}
}
На рисунке 2 Можно увидеть вторую страницу сайта увидеть страницу сайта
с каталогом. На данной странице пользователь может подобрать нужной ему
автомобиль.
Рисунок 2 – Страница с каталогом
В листинге 2 представлены основные стили для страницы с каталогом.
Листинг 2 – Код свойств основных CSS, для страницы с каталогом.
.settings{
position: fixed;
width: 20.83vw;
background-color: rgba(64,81,78, 0.2);
backdrop-filter: blur(10px);
height: 100vh;
padding-top: 15vh;
z-index: 1;
}
.settings-div{
display: flex;
align-items: center;
}
.settings-input{
height: 40px;
width: 75%;
margin: 5px 5px 0px 10px;
border: none;
border-radius: 10px;
font-size: 24px;
padding: 0px 10px;
font-family: Montserrat;
}
.settings-input:focus{
outline: none;
}
.settings-input::placeholder{
font-family: Montserrat;
color: #888;
opacity: 1;
}
.settings-svg{
opacity: 0.5;
}
.settings-range-div{
background-color: white;
border-radius: 10px;
margin: 10px 10px;
}
.settings-text{
font-size: 24px;
color: #888;
}
.settings-info{
display: flex;
align-items: center;
justify-content: space-between;
padding: 0px 10px;
}
.settings-range-input{
height: 40px;
width: 60%;
margin: 0.26vw 5px 0px 0.52vw;
border: none;
border-radius: 10px;
font-size: 24px;
background-color: #30E3CA;
box-shadow: 0px 3px 0px #5CB9A7;
color: white;
font-family: Montserrat;
padding: 0px 10px;
}
.settings-range-input:focus{
outline: none;
}
.settings-range{
width: 93%;
margin: 0.26vw 10px 0px 0.52vw;
}
.settings-range {
-webkit-appearance: none !important;
background: #11999E;
height:3px;
border: none;
}
.settings-range::-webkit-slider-thumb {
-webkit-appearance: none !important;
background: #30E3CA;
box-shadow: 0px 2px 0px #5BC0AD;
border:none;
border-radius: 10px;
height:14px;
width:14px;
margin-top: -3px;
}
.settings-range::-moz-range-thumb{
-webkit-appearance: none !important;
-moz-appearance: none;
background: #30E3CA;
box-shadow: 0px 2px 0px #5BC0AD;
border:none;
height:14px;
width:14px;
margin-top: -3px;
}
.settings-slider{
font-size: 13px;
display: flex;
justify-content: space-between;
margin: 0px 10px;
}
.show-result-button{
position: relative;
left: 10px;
margin-top: 40px;
height: 60px;
border-radius: 10px;
margin-right: 20px;
background-color: #FAFF00;
box-shadow: 0px 5px 0px #8a8f00;
display: flex;
justify-content: center;
align-items: center;
transition: 0.3s;
cursor: pointer;
}
.show-result-button-text{
font-size: 35px;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.show-result-button:hover{
transform: translateY(5px);
box-shadow: 0px 0px 0px #8a8f00;
}
.show-result-button:active{
background-color: #8a8f00;
}
.catalog{
display: grid;
justify-items: center;
position: absolute;
width: 78vw;
height: 80vh;
right: 0;
bottom: 0;
}
.car-card{
display: grid;
grid-template-columns: auto 1fr;
overflow: hidden;
border-radius: 30px;
height: 200px;
width: 90%;
background-color: rgba(64,81,78,0.2);
backdrop-filter: blur(5px);
margin-bottom: 10px;
transition: 0.3s;
}
.hidden{
opacity: 0;
scale: 0;
}
.car-content{
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 60px 20px 1fr;
align-items: center;
margin-left: 10px;
}
.car-name,.car-mileage,.car-year,.car-info,.car-drive,.car-transmission,.carlocation,.car-cost{
margin: 0px;
}
.car-name,.car-mileage,.car-year{
font-size: 32px;
}
.car-info,.car-drive,.car-transmission,.car-location{
font-size: 16px;
}
.car-year,.car-transmission{
justify-self: center;
}
.car-location{
grid-column: 1/2;
grid-row: 3/4;
height: 26px;
align-self: flex-end;
}
.car-cost{
position: relative;
font-size: 24px;
grid-column: 3/4;
grid-row: 3/4;
height: 35px;
align-self: flex-end;
justify-self: center;
z-index: 2;
}
.car-cost::after{
content: '';
position: absolute;
width: 250%;
height: 40px;
top: -5px;
left: -40px;
border-radius: 20px 0px 0px 0px;
background-color: #FAFF00;
z-index: -1;
}
.nav-button > svg{
width: 40px;
height: 40px;
margin: 0px 10px;
fill: #40514E;
transition: 0.3s;
}
На рисунке 3 представлена страница с основными контактами, а также
расписанием офлайн магазина.
Рисунок 3 – Страница с контактами.
В листинге 3 представлен CSS код для вышеупомянутой страницы.
Листинг 3 – CSS код страницы с контактами.
body{
box-sizing: border-box;
margin: 0px;
padding: 0px;
background-color: rgba(228,249,245,100);
font-family: 'Montserrat', sans-serif;
color: #40514E;
overflow: hidden;
}
body::before{
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-image: url("../assets/images/skyline r34.jpg");
background-repeat:no-repeat;
background-size: cover;
background-position:center;
z-index: -2;
}
body::after{
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgb(228,249,245);
background: linear-gradient(180deg, rgba(228,249,245,0.7) 0%,
rgba(128,255,231,1) 100%);
z-index: -1;
}
.header{
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
height: 15vh;
}
.logo-text{
text-decoration: none;
font-size: 48px;
margin: 0px 40px;
color: #11999E;
z-index: 20;
}
.nav{
display: flex;
flex-direction: row;
margin: 0 40px;
border-radius: 10px;
}
.nav-button{
margin: 0 20px;
display: flex;
flex-direction: row;
align-items: center;
font-size: 40px;
transition: 0.3s;
border-radius: 10px;
}
.nav-text{
color: #40514E;
text-decoration: none;
transition: 0.3s;
}
@media screen and (min-width: 1295px) {
.nav-button:hover{
background-color: rgba(64, 81, 78, 0.7);
border-radius: 10px;
padding: 5px 20px;
backdrop-filter: blur(5px);
}
.nav-button:hover > .nav-text{
color: #30E3CA;
}
.nav-button:hover > svg{
fill: #30E3CA;
}
}
.nav-button > svg{
width: 40px;
height: 40px;
margin: 0px 10px;
fill: #40514E;
transition: 0.3s;
}
.hero{
height: 80vh;
align-self: center;
display: flex;
justify-content: center;
align-items: center;
}
.contacts{
position: relative;
z-index: 2;
}
.contacts::after{
content: '';
position: absolute;
background-color: #FAFF00;
top: -100px;
left: -50px;
width: 500px;
height: 600px;
border-radius: 300px 100px 400px 50px;
z-index: -1;
}
.contact-text{
font-size: 24px;
z-index: 5;
}
@media screen and (max-width: 1294px) {
.nav{
position: relative;
flex-direction: column;
z-index: 2;
height: 40px;
border-radius: 20px 0px 0px 20px;
overflow: hidden;
margin: 0px;
align-items: center;
z-index: 5;
}
.nav::before{
content: '';
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
background-color: rgba(0,0,0, 10%);
backdrop-filter: blur(10px);
z-index: -1;
}
.nav:hover{
transform: translateY(45%);
margin-top: 33px;
height: calc(100vh - 40px);
border-radius: 20px 0px 0px 0px;
}
.nav-button{
font-size: 30px;
height: 60px;
}
.hero-main-text{
font-size: 40px;
}
.hero-sub-text{
font-size: 20px;
}
.car-image{
width: 500px;
}
.car-image-container::after{
width: 500px;
height: 300px;
}
.nav-button{
width: 100%;
border-radius: 0px;
}
.nav-text{
padding: 0px 10px;
}
.nav-button:hover{
background-color: rgba(64, 81, 78, 0.7);
backdrop-filter: blur(5px);
}
.nav-button:hover > .nav-text{
color: #30E3CA;
}
.nav-button:hover > svg{
fill: #30E3CA;
}
}
@media screen and (max-width: 1000px) {
.contact-text{
font-size: 20px;
}
.nav-button{
font-size: 30px;
}
.nav-button > svg{
width: 30px;
height: 30px;
}
.hero > svg{
width: 200px;
height: 200px;
}
.car-image{
width: 40vw;
}
.car-image-container::after{
top: 5vw;
width: 35vw;
height: 20vw;
}
}
@media screen and (max-width: 472px) {
.logo-text{
margin: 0px 10px;
}
.footer{
left: 10px;
}
.hero-section{
font-size: 20px;
}
.hero > svg{
width: 150px;
height: 150px;
}
.car-image{
width: 200px;
}
}
На
рисунке
4
представлена
страница
бедующей
страницы
с
калькулятором кредитов при поддержке сайтов партнёров.
Рисунок 4 – Страница с бедующей страницей с калькулятором
кредитов.
На данной странице использовались все те же стили, что использовались
в предыдущих страницах.
На рисунке 5 показана страница с авторизацией.
Рисунок 5 – Страница с авторизацией.
В листинге 4 показаны основные стили для вышеупомянутой страницы.
Листинг 4 – Основной CSS код для страницы с авторизацией
.login-form{
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 30vw;
height: 400px;
background-color: rgba(64, 81, 78, 10%);
border-radius: 20px;
backdrop-filter: blur(5px);
}
.login-text{
margin: 30px 0px;
font-size: 40px;
color: #40514E;
}
.input{
width: 80%;
height: 30px;
border: none;
border-radius: 10px;
color: #11999E;
font-size: 20px;
padding-left: 10px;
}
.input:focus{
outline: none;
}
.send-button{
background-color: #40514E;
display: flex;
justify-content: center;
border-radius: 10px;
align-items: center;
margin: 30px 0px;
width: 40%;
transition: 0.3s;
}
.send-button > p{
color: #E4F9F5;
font-size: 20px;
margin: 5px 0px;
}
.send-button:hover{
background-color: #11999E;
}
2.4 Создание межстраничной навигации
Межстраничная навигация реализована с помощью тега <a> в HTML5.
В вверху страниц находится навигационная панель, с помощью которой
можно перемещаться по страницам интернет-ресурса. Схема переходов
продемонстрирована в рисунке 6.
Рисунок 6 – Схема переходов между интернет ресурсами.
2.5 Реализация слоя клиентской логики веб-страниц с
применением технологии JavaScript
JS код на данном Интернет-ресурсе применён для разнообразного рода
задач. Например, на главной странице при наводке на кнопки навигации, текст
в центре экрана меняется, демонстрируя информацию о той странице, на
кнопку перехода которой навёлся пользователь. Это можно увидеть на
рисунках 7-8.
Рисунок 7 – Страница при наводке на кнопку каталога
Рисунок 8 – Страница при наводке на кнопку контактов
Данный код продемонстрирован в листинге 5.
Листинг 5 – Код смены текста на главной странице.
const catalog_text = `
<div class="hero-section">
<p class="hero-main-text">Used cars for all</p>
<p class="hero-sub-text">pick up the car you've always
dreamed</p>
</div>
`
const selection_text = `
<div class="hero-section">
<p class="hero-main-text">Cant find car by yourself?</p>
<p class="hero-sub-text">Contact to our experts!</p>
</div>
`
const calculator_text = `
<div class="hero-section">
<p class="hero-main-text">Dont have enough money now?</p>
<p class="hero-sub-text">Take a loan in our partner banks</p>
</div>
`
const account_text = `
<div class="hero-section">
<p class="hero-main-text">This your account</p>
<p class="hero-sub-text">You can find your liked car and much
more</p>
</div>
`
let current_text = "catalog";
window.onmousemove = ev => {
const button = (ev.target.closest(".nav-button") !== null) ?
ev.target.closest(".nav-button") : undefined;
let hero = document.querySelector("div.hero")
if(button.dataset.type === "catalog" && button.dataset.type !=
current_text){
document.querySelector("div.hero-section").remove()
hero.insertAdjacentHTML("afterbegin", catalog_text);
current_text = "catalog"
}else if(button.dataset.type === "selection" && button.dataset.type !=
current_text){
document.querySelector("div.hero-section").remove()
hero.insertAdjacentHTML("afterbegin", selection_text);
current_text = "selection"
}
else if(button.dataset.type === "calculator" && button.dataset.type !=
current_text){
document.querySelector("div.hero-section").remove()
hero.insertAdjacentHTML("afterbegin", calculator_text);
current_text = "calculator"
}
else if(button.dataset.type === "account" && button.dataset.type !=
current_text){
document.querySelector("div.hero-section").remove()
hero.insertAdjacentHTML("afterbegin", account_text);
current_text = "account"
}
}
Так же JS был применён для реализации ползунков в настройках
фильтров на станице с каталогом. Пример работы данного кода
продемонстрирован на рисунке 9.
Рисунок 9 – Демонстрация работы кода ползунков на странице с
каталогом.
Данный код показан в листинге 6.
Листинг 6 – JS код со страницы с каталогом.
const mileage_slider = document.querySelector('input#mileage')
const mileage_input = document.querySelector('input.mileage-input')
const cost_slider = document.querySelector('input#cost')
const cost_input = document.querySelector('input.cost-input')
mileage_slider.addEventListener("input", () => {
let mileage_value = parseInt(mileage_slider.value)
mileage_input.value = `${mileage_value} km`
})
mileage_input.addEventListener("input", () => {
let input_value = parseInt(mileage_input.value)
if(input_value != NaN){
mileage_slider.value = input_value
}
})
cost_slider.addEventListener("input", () => {
let cost_value = parseInt(cost_slider.value)
cost_input.value = `${cost_value} ₽`
})
cost_input.addEventListener("input", () => {
let input_value = parseInt(cost_input.value)
if(input_value != NaN){
cost_slider.value = input_value
}
})
3. ОПТИМИЗАЦИЯ КЛИЕНТСКОЙ ЧАСТИ ИНТЕРНЕТРЕСУРСА.
За адаптивность сайта отвечают медиа запросы, которые были
подремонтированы в листинге 7, но такие медиа запросы присутствуют в
каждом CSS файле.
Листинг 7 – Код CSS с медиа запросами
@media screen and (max-width: 1294px) {
.nav{
position: relative;
flex-direction: column;
z-index: 2;
height: 40px;
border-radius: 20px 0px 0px 20px;
overflow: hidden;
margin: 0px;
align-items: center;
z-index: 5;
}
.nav::before{
content: '';
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
background-color: rgba(0,0,0, 10%);
backdrop-filter: blur(10px);
z-index: -1;
}
.nav:hover{
transform: translateY(45%);
margin-top: 33px;
height: calc(100vh - 40px);
border-radius: 20px 0px 0px 0px;
}
.nav-button{
font-size: 30px;
height: 60px;
}
.hero-main-text{
font-size: 40px;
}
.hero-sub-text{
font-size: 20px;
}
.car-image{
width: 500px;
}
.car-image-container::after{
width: 500px;
height: 300px;
}
.nav-button{
width: 100%;
border-radius: 0px;
}
.nav-text{
padding: 0px 10px;
}
.nav-button:hover{
background-color: rgba(64, 81, 78, 0.7);
backdrop-filter: blur(5px);
}
.nav-button:hover > .nav-text{
color: #30E3CA;
}
.nav-button:hover > svg{
fill: #30E3CA;
}
}
@media screen and (max-width: 1000px) {
.nav-button{
font-size: 30px;
}
.nav-button > svg{
width: 30px;
height: 30px;
}
.hero > svg{
width: 200px;
height: 200px;
}
.car-image{
width: 40vw;
}
.car-image-container::after{
top: 5vw;
width: 35vw;
height: 20vw;
}
}
@media screen and (max-width: 472px) {
.logo-text{
margin: 0px 10px;
}
.footer{
left: 10px;
}
.hero-section{
font-size: 20px;
}
.hero > svg{
width: 150px;
height: 150px;
}
.car-image{
width: 200px;
}
}
4. ЗАКЛЮЧЕНИЕ
В результате работы было выполнено задание в полном объёме,
соблюдая все требования. Ресурс соответствует заданной теме. Клиентская
часть
интернет-ресурса
была
выполнена
при
помощи
современных
технологий. Так же сайт соответствует современным требованиям вебдизайна.
В данной работе были использованы такие технологии, как HTML5,
CSS3, JavaScript. В ходе выполнения данной работы были приобретены
навыки использования данных технологий на примере учебного проекта.
В заключение, можно сказать, что, как и рынок поддержанных
автомобилей, так и web технологий ещё долгое время будут востребованы.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1.
htmlbook.ru [Электронный источник] http://htmlbook.ru/html
Дата обращения (11.11.2022)
2.
htmlbook.ru [Электронный источник] http://htmlbook.ru/css Дата
обращения (11.11.2022)
3.
habr.com [Электронный источник] https://habr.com/ru/post/467049/
Дата обращения (12.11.2022)
4.
habr.com [Электронный источник]
https://habr.com/ru/company/macloud/blog/564182/
Дата обращения
(12.11.2022)
5.
Youtube.com [Электронный источник]
https://www.youtube.com/watch?v=Bluxbh9CaQ0&t=9996s&ab_channel=Владил
енМинин
6.
Дата обращения (13.11.2022)
Youtube.com [Электронный источник]
https://www.youtube.com/watch?v=GKgOOuTL0po&ab_channel=Фрілансерпож
иттю Дата обращения (13.11.2022)
7.
Youtube.com [Электронный источник]
https://www.youtube.com/watch?v=yZFg3cuq_LU&ab_channel=Фрілансерпожи
ттю Дата обращения (13.11.2022)
8.
Youtube.com [Электронный источник]
https://www.youtube.com/watch?v=uQEGUpsnqsw&t=3s&ab_channel=Фрілансе
рпожиттю Дата обращения (14.11.2022)
9.
Youtube.com [Электронный источник]
https://www.youtube.com/watch?v=lv47xClJolw&ab_channel=webDev
Дата
обращения (15.11.2022)
10.
Youtube.com [Электронный источник]
https://www.youtube.com/watch?v=sTdmUdsfOkY&ab_channel=VideoSmile
Дата обращения (15.11.2022)
11.
Youtube.com [Электронный источник]
https://www.youtube.com/watch?v=FShnKqPXknI&t=1s&ab_channel=CodingNe
pal
Дата обращения (16.11.2022)
12.
developer.mozzila.org [Электронный источник]
https://developer.mozilla.org/en-US/docs/Web/API/Event
Дата обращения
(17.11.2022)
13.
developer.mozzila.org [Электронный источник]
https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Functions
Дата
обращения (18.11.2022)
14.
developer.mozzila.org [Электронный источник]
https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Working_with_Object
s
Дата обращения (18.11.2022)
15.
developer.mozzila.org [Электронный источник]
https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Iterators_and_Generat
ors
Дата обращения (18.11.2022)
Скачать