Загрузка данных
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>КоктейльБар - Заказать коктейль</title>
<style>
body {
font-family: Arial, sans-serif;
background: #f4f4f4;
margin: 0;
padding: 20px;
}
h1 {
text-align: center;
color: #333;
}
.container {
max-width: 1200px;
margin: 0 auto;
}
.search {
text-align: center;
margin-bottom: 30px;
}
input {
padding: 10px;
width: 300px;
font-size: 16px;
}
button {
padding: 10px 20px;
font-size: 16px;
background: #e74c3c;
color: white;
border: none;
cursor: pointer;
}
.cards {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 20px;
}
.card {
background: white;
border-radius: 10px;
overflow: hidden;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
transition: transform 0.3s;
}
.card:hover {
transform: scale(1.05);
}
.card img {
width: 100%;
height: 250px;
object-fit: cover;
}
.card-body {
padding: 15px;
text-align: center;
}
.card h3 {
margin: 10px 0;
color: #333;
}
.order-btn {
background: #27ae60;
color: white;
border: none;
padding: 8px 16px;
border-radius: 5px;
cursor: pointer;
}
.order-btn:hover {
background: #219653;
}
</style>
</head>
<body>
<div class="container">
<h1>КоктейльБар</h1>
<div class="search">
<input type="text" id="searchInput" placeholder="Поиск по названию...">
<button onclick="searchCocktails()">Найти</button>
</div>
<div class="cards" id="cocktails"></div>
</div>
<script>
const API_URL = "https://www.thecocktaildb.com/api/json/v1/1/filter.php?c=Cocktail";
async function fetchCocktails() {
try {
const res = await fetch(API_URL);
const data = await res.json();
displayCocktails(data.drinks);
} catch (e) {
document.getElementById('cocktails').innerHTML =
"<p style='color:red;text-align:center'>Ошибка загрузки данных </p>";
}
}
function displayCocktails(drinks) {
const container = document.getElementById('cocktails');
container.innerHTML = '';
drinks.forEach(drink => {
const card = document.createElement('div');
card.className = 'card';
card.innerHTML = `
<img src="\( {drink.strDrinkThumb}" alt=" \){drink.strDrink}">
<div class="card-body">
<h3>${drink.strDrink}</h3>
<button class="order-btn" onclick="orderCocktail('${drink.strDrink}')">
Заказать
</button>
</div>
`;
container.appendChild(card);
});
}
// Поиск
function searchCocktails() {
const query = document.getElementById('searchInput').value.toLowerCase().trim();
if (!query) {
fetchCocktails();
return;
}
fetch(API_URL)
.then(res => res.json())
.then(data => {
const filtered = data.drinks.filter(d =>
d.strDrink.toLowerCase().includes(query)
);
displayCocktails(filtered);
});
}
// "Заказ"
function orderCocktail(name) {
alert(` Вы заказали: ${name}!\n\nКоктейль добавлен в корзину `);
}
// Загрузка при старте
window.onload = fetchCocktails;
</script>
</body>
</html>