В этой статье вы узнаете, как создать веб-сайт генератора случайных цитат с использованием HTML, CSS и JavaScript. Веб-сайт извлекает данные из API, а затем отображает полученные данные в браузере с помощью HTML и CSS.
Вот скриншот того, как выглядит готовый сайт:
Давайте начнем.
Предпосылки:
- Базовое понимание HTML.
- Базовое понимание CSS.
- Базовое понимание JavaScript.
Хорошо, сначала давайте настроим наш проект
Создайте три файла в корневой папке и назовите их index.html, styles.css и index.js.
- Создание базовой структуры веб-сайта.
В файле index.html мы создадим очень простую структуру нашего веб-сайта с заголовком Генератор случайных цитат, мы также свяжем наш файл CSS и наш файл сценария только здесь.
index.html будет выглядеть примерно так:
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8" /> | |
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<title>Random Quote Generator</title> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" integrity="sha512-KfkfwYDsLkIlwQp6LFnl8zNdLGxu9YAA1QvwINks4PhcElQSvqcyVLLD9aMhXd13uQjoXtEKNosOWaZqXgel0g==" crossorigin="anonymous" referrerpolicy="no-referrer" /> | |
<link rel="stylesheet" href="styles.css" /> | |
</head> | |
<body> | |
<div id="container"> | |
<div id="quote-content"> | |
<div id="heading">Quote of The Day</div> | |
<div id="quote-area"> | |
<i class="fas fa-quote-left"></i> | |
<p id="quote-text"> | |
We cannot solve our problems with the same thinking we used when we | |
created them | |
</p> | |
<i class="fas fa-quote-right"></i> | |
</div> | |
<div id="quote-author"> | |
<p id="author">~ Albert Einstein</p> | |
</div> | |
<div id="reload"> | |
<hr id="divider" /> | |
<button><i class="btn fa-solid fa-arrow-rotate-right"></i></button> | |
</div> | |
</div> | |
</div> | |
<script src="index.js"></script> | |
</body> | |
</html> |
При развертывании на рабочем сервере веб-сайт выглядит примерно так:
Я знаю, что это выглядит очень просто и просто, без каких-либо стилей, и вообще ничего не делает. Что ж, не волнуйтесь, сейчас мы придадим этому сайту стиль и сделаем его немного презентабельным.
2. Стилизация веб-сайта и улучшение его внешнего вида.
Теперь мы напишем некоторый код в нашем файле styles.css, который мы создали в нашей корневой папке. Здесь мы нацелимся на классы и идентификаторы из HTML-файла и соответствующим образом стилизуем их.
Во-первых, добавьте следующий код в самом начале файла styles.css:
* { box-sizing: border-box; } body { height: 100vh; margin: 0; padding: 0; position: relative; background-color: #1f2632; }
После правильного выполнения вышеуказанного шага добавьте следующий код в файл styles.css.
#container { position: absolute; width: 100%; top: 50%; left: 50%; max-width: 550px; transform: translate(-50%, -50%); padding: 1em; } #quote-content { border-radius: 0.8rem; background-color: #323a49; text-align: center; } #heading { font-size: 1.8rem; font-weight: 900; padding: 1em 1em 0.25em 1em; color: #52ffa8; letter-spacing: 4px; } #quote-area { display: flex; justify-content: center; padding: 1.5em 1.5em 0 1.5em; } #quote-area i { font-size: 1.4rem; color: #52ffa8; } #quote-area i:first-child { margin: 3px 10px 0 0; } #quote-area i:last-child { display: flex; margin: 0 0 3px 10px; align-items: flex-end; } #quote-text { font-size: 1.5rem; font-weight: 500; letter-spacing: 2px; color: #cee3e9; } #quote-author p { padding: 0.5em 1em 0.5em 0.5em; color: grey; display: flex; justify-content: flex-end; font-size: 0.95rem; color: #cee3e9; } #divider { border-top: 1px solid #4e5d73; margin: 0.5em 2em; background-color: #4e5d73; } #reload button { padding: 1.45em; border-radius: 50%; border: 10px solid #1f2632; transform: translate(0%, 50%); background-color: #52ffa8; }
После добавления вышеуказанных стилей в нашу HTML-структуру наш веб-сайт теперь выглядит примерно так:
Выглядит довольно аккуратно, но есть одна проблема, если мы нажмем кнопку перезагрузки, она ничего не сделает, цитата не изменится. Мы исправим эту проблему на следующем шаге.
3. Получайте случайные котировки с помощью API и отображайте их в браузере.
А вот и основная часть создания нашего веб-сайта генератора случайных цитат. В файле index.js напишем асинхронную функцию getQuote()
. Эта функция будет отвечать за получение данных из API и отображение этих данных в браузере. Но прежде чем писать функцию, давайте сначала определим некоторые константы, которые нам потребуются при написании асинхронной функции.
//Element where the fetched quote will be displayed const quoteText = document.getElementById("quote-text"); const quoteBtn = document.querySelector(".btn"); //Element to display the quote author const quoteAuthor = document.getElementById("author"); //Button to trigger api call const reload = document.getElementById("reload"); //API to fetch a random quote const quoteUrl = "https://api.quotable.io/random";
Создайте асинхронную функцию getQuote()
:
const getQuote = async () => { //some code goes here }
Теперь внутри getQuote()
function напишите следующий код:
//This code goes inside the getQuote() function quoteText.innerText = "...Loading"; quoteAuthor.innerHTML = "loading"; quoteBtn.classList.add("fa-spin"); await fetch(quoteUrl) //fetches data from api .then((res) => res.json()) // convert response to JSON .then((result) => { const randomQuote = result.content; const author = result.author; //changes the quoteText to received random quote quoteText.innerText = randomQuote; //changes the quoteAuthor to received random quote author quoteAuthor.innerText = "~ " + author; quoteBtn.classList.remove("fa-spin"); });
Теперь мы добавим прослушиватель событий при кнопке перезагрузки, чтобы прослушивать событие щелчка и вызывать функцию getQuote()
для обновления котировки новой полученной котировкой.
//Adds an Event Listener on reload button to listen for click event reload.addEventListener("click", getQuote);
Мы также вызовем getQuote()
отдельно от события click один раз, чтобы данные обновлялись после того, как наш веб-сайт завершит загрузку в первый раз.
После выполнения вышеуказанных шагов файл index.js будет выглядеть примерно так:
const quoteText = document.getElementById("quote-text"); | |
const quoteBtn = document.querySelector(".btn"); | |
const quoteAuthor = document.getElementById("author"); | |
const reload = document.getElementById("reload"); | |
const quoteUrl = "https://api.quotable.io/random"; | |
const getQuote = async () => { | |
quoteText.innerText = "...Loading"; | |
quoteAuthor.innerHTML = "loading"; | |
quoteBtn.classList.add("fa-spin"); | |
await fetch(quoteUrl) | |
.then((res) => res.json()) | |
.then((result) => { | |
const randomQuote = result.content; | |
const author = result.author; | |
quoteText.innerText = randomQuote; | |
quoteAuthor.innerText = "~ " + author; | |
quoteBtn.classList.remove("fa-spin"); | |
}); | |
}; | |
reload.addEventListener("click", getQuote); | |
getQuote(); |
Заключение
Поздравляем!!, вы только что создали веб-сайт, который извлекает и отображает случайные цитаты с использованием HTML, CSS и JavaScript. Выглядит довольно аккуратно 😉
Если вы следовали моему коду, ваш сайт будет выглядеть примерно так:
Вы можете найти полный код GitHub здесь: https://github.com/AviSharmaaa/random-quote