| <!DOCTYPE html> |
| <html lang="ru"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>ArtCanvas | Картины и авторские работы</title> |
| <script src="https://cdn.tailwindcss.com"></script> |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
| <style> |
| @keyframes fadeIn { |
| from { opacity: 0; transform: translateY(10px); } |
| to { opacity: 1; transform: translateY(0); } |
| } |
| |
| @keyframes pulse { |
| 0%, 100% { transform: scale(1); } |
| 50% { transform: scale(1.05); } |
| } |
| |
| .fade-in { |
| animation: fadeIn 0.5s ease-out forwards; |
| } |
| |
| .pulse:hover { |
| animation: pulse 1.5s infinite; |
| } |
| |
| .cart-pulse { |
| animation: pulse 1s ease-out; |
| } |
| |
| .auction-timer { |
| font-family: monospace; |
| } |
| |
| .artwork-card:hover .artwork-overlay { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| |
| .artwork-overlay { |
| opacity: 0; |
| transform: translateY(10px); |
| transition: all 0.3s ease; |
| } |
| |
| .drawer { |
| transition: transform 0.3s ease-out; |
| } |
| |
| .drawer.open { |
| transform: translateX(0); |
| } |
| |
| .drawer.closed { |
| transform: translateX(100%); |
| } |
| </style> |
| </head> |
| <body class="bg-gray-50 font-sans"> |
| <audio id="addToCartSound" src="https://assets.mixkit.co/sfx/preview/mixkit-arrow-whoosh-1491.mp3" preload="auto"></audio> |
| <audio id="purchaseSound" src="https://assets.mixkit.co/sfx/preview/mixkit-cash-machine-buttons-press-1104.mp3" preload="auto"></audio> |
| <audio id="bidSound" src="https://assets.mixkit.co/sfx/preview/mixkit-unlock-game-notification-253.mp3" preload="auto"></audio> |
|
|
| |
| <header class="bg-white shadow-sm sticky top-0 z-50"> |
| <div class="container mx-auto px-4 py-4 flex justify-between items-center"> |
| <div class="flex items-center space-x-2"> |
| <i class="fas fa-palette text-2xl text-indigo-600"></i> |
| <h1 class="text-xl font-bold text-gray-800">ArtCanvas</h1> |
| </div> |
| |
| <nav class="hidden md:flex space-x-8"> |
| <a href="#gallery" class="text-gray-600 hover:text-indigo-600 transition">Галерея</a> |
| <a href="#auctions" class="text-gray-600 hover:text-indigo-600 transition">Аукционы</a> |
| <a href="#custom" class="text-gray-600 hover:text-indigo-600 transition">На заказ</a> |
| <a href="#about" class="text-gray-600 hover:text-indigo-600 transition">О нас</a> |
| </nav> |
| |
| <div class="flex items-center space-x-4"> |
| <button id="cartButton" class="relative"> |
| <i class="fas fa-shopping-cart text-gray-700 hover:text-indigo-600 text-xl transition"></i> |
| <span id="cartCounter" class="absolute -top-2 -right-2 bg-indigo-600 text-white text-xs rounded-full h-5 w-5 flex items-center justify-center hidden">0</span> |
| </button> |
| |
| <button class="bg-indigo-600 hover:bg-indigo-700 text-white px-4 py-2 rounded-full transition transform hover:scale-105"> |
| Войти |
| </button> |
| |
| <button id="mobileMenuButton" class="md:hidden text-gray-700"> |
| <i class="fas fa-bars text-xl"></i> |
| </button> |
| </div> |
| </div> |
| |
| |
| <div id="mobileMenu" class="hidden md:hidden bg-white border-t px-4 py-3 space-y-3"> |
| <a href="#gallery" class="block text-gray-600 hover:text-indigo-600 transition">Галерея</a> |
| <a href="#auctions" class="block text-gray-600 hover:text-indigo-600 transition">Аукционы</a> |
| <a href="#custom" class="block text-gray-600 hover:text-indigo-600 transition">На заказ</a> |
| <a href="#about" class="block text-gray-600 hover:text-indigo-600 transition">О нас</a> |
| </div> |
| </header> |
|
|
| |
| <section class="bg-gradient-to-r from-indigo-500 to-purple-600 text-white py-20 px-4"> |
| <div class="container mx-auto text-center fade-in"> |
| <h2 class="text-4xl md:text-5xl font-bold mb-6">Искусство, которое вдохновляет</h2> |
| <p class="text-xl mb-8 max-w-3xl mx-auto">Уникальные картины от талантливых художников. Находите, покупайте или заказывайте собственные шедевры.</p> |
| <div class="flex justify-center space-x-4"> |
| <a href="#gallery" class="bg-white text-indigo-600 px-6 py-3 rounded-full font-medium hover:bg-gray-100 transition transform hover:scale-105">Исследовать</a> |
| <a href="#custom" class="border-2 border-white text-white px-6 py-3 rounded-full font-medium hover:bg-white hover:text-indigo-600 transition transform hover:scale-105">Заказать</a> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="gallery" class="py-16 px-4 bg-white"> |
| <div class="container mx-auto"> |
| <h2 class="text-3xl font-bold text-center mb-12 text-gray-800">Галерея картин</h2> |
| |
| <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8"> |
| |
| <div class="artwork-card bg-white rounded-xl overflow-hidden shadow-md hover:shadow-lg transition relative"> |
| <div class="relative overflow-hidden"> |
| <img src="https://images.unsplash.com/photo-1578926375605-eaf7559b1458?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1286&q=80" |
| alt="Городской пейзаж" |
| class="w-full h-64 object-cover transition-transform duration-500 hover:scale-105"> |
| <div class="artwork-overlay absolute inset-0 bg-black bg-opacity-40 flex items-end p-4"> |
| <div class="text-white"> |
| <p class="text-sm">Масло, холст</p> |
| <p class="text-xs">50×70 см</p> |
| </div> |
| </div> |
| </div> |
| <div class="p-4"> |
| <h3 class="text-xl font-semibold mb-2 text-gray-800">Городские огни</h3> |
| <p class="text-gray-600 mb-4">Экспрессивный городской пейзаж в ночное время</p> |
| <div class="flex justify-between items-center"> |
| <span class="text-indigo-600 font-bold text-lg">12,500 ₽</span> |
| <button class="add-to-cart-btn" data-id="1" data-title="Городские огни" data-price="12500" |
| class="bg-indigo-100 text-indigo-600 px-4 py-2 rounded-full hover:bg-indigo-600 hover:text-white transition"> |
| В корзину |
| </button> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="artwork-card bg-white rounded-xl overflow-hidden shadow-md hover:shadow-lg transition relative"> |
| <div class="relative overflow-hidden"> |
| <img src="https://images.unsplash.com/photo-1579783902614-a3fb3927b6a5?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1345&q=80" |
| alt="Портрет" |
| class="w-full h-64 object-cover transition-transform duration-500 hover:scale-105"> |
| <div class="artwork-overlay absolute inset-0 bg-black bg-opacity-40 flex items-end p-4"> |
| <div class="text-white"> |
| <p class="text-sm">Акрил, холст</p> |
| <p class="text-xs">60×80 см</p> |
| </div> |
| </div> |
| </div> |
| <div class="p-4"> |
| <h3 class="text-xl font-semibold mb-2 text-gray-800">Весенний взгляд</h3> |
| <p class="text-gray-600 mb-4">Женский портрет с цветочными элементами</p> |
| <div class="flex justify-between items-center"> |
| <span class="text-indigo-600 font-bold text-lg">18,200 ₽</span> |
| <button class="add-to-cart-btn" data-id="2" data-title="Весенний взгляд" data-price="18200" |
| class="bg-indigo-100 text-indigo-600 px-4 py-2 rounded-full hover:bg-indigo-600 hover:text-white transition"> |
| В корзину |
| </button> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="artwork-card bg-white rounded-xl overflow-hidden shadow-md hover:shadow-lg transition relative"> |
| <div class="relative overflow-hidden"> |
| <img src="https://images.unsplash.com/photo-1500462918059-b1a0cb512f1d?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1287&q=80" |
| alt="Горы" |
| class="w-full h-64 object-cover transition-transform duration-500 hover:scale-105"> |
| <div class="artwork-overlay absolute inset-0 bg-black bg-opacity-40 flex items-end p-4"> |
| <div class="text-white"> |
| <p class="text-sm">Акварель, бумага</p> |
| <p class="text-xs">40×60 см</p> |
| </div> |
| </div> |
| </div> |
| <div class="p-4"> |
| <h3 class="text-xl font-semibold mb-2 text-gray-800">Горное эхо</h3> |
| <p class="text-gray-600 mb-4">Завораживающий вид на горный хребет</p> |
| <div class="flex justify-between items-center"> |
| <span class="text-indigo-600 font-bold text-lg">9,800 ₽</span> |
| <button class="add-to-cart-btn" data-id="3" data-title="Горное эхо" data-price="9800" |
| class="bg-indigo-100 text-indigo-600 px-4 py-2 rounded-full hover:bg-indigo-600 hover:text-white transition"> |
| В корзину |
| </button> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="artwork-card bg-white rounded-xl overflow-hidden shadow-md hover:shadow-lg transition relative"> |
| <div class="relative overflow-hidden"> |
| <img src="https://images.unsplash.com/photo-1579547945413-497e1b99dac0?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80" |
| alt="Абстракция" |
| class="w-full h-64 object-cover transition-transform duration-500 hover:scale-105"> |
| <div class="artwork-overlay absolute inset-0 bg-black bg-opacity-40 flex items-end p-4"> |
| <div class="text-white"> |
| <p class="text-sm">Смешанная техника</p> |
| <p class="text-xs">70×90 см</p> |
| </div> |
| </div> |
| </div> |
| <div class="p-4"> |
| <h3 class="text-xl font-semibold mb-2 text-gray-800">Цветной хаос</h3> |
| <p class="text-gray-600 mb-4">Энергичная абстрактная композиция</p> |
| <div class="flex justify-between items-center"> |
| <span class="text-indigo-600 font-bold text-lg">15,300 ₽</span> |
| <button class="add-to-cart-btn" data-id="4" data-title="Цветной хаос" data-price="15300" |
| class="bg-indigo-100 text-indigo-600 px-4 py-2 rounded-full hover:bg-indigo-600 hover:text-white transition"> |
| В корзину |
| </button> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="artwork-card bg-white rounded-xl overflow-hidden shadow-md hover:shadow-lg transition relative"> |
| <div class="relative overflow-hidden"> |
| <img src="https://images.unsplash.com/photo-1574362848149-11496d93a7c6?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1284&q=80" |
| alt="Морской пейзаж" |
| class="w-full h-64 object-cover transition-transform duration-500 hover:scale-105"> |
| <div class="artwork-overlay absolute inset-0 bg-black bg-opacity-40 flex items-end p-4"> |
| <div class="text-white"> |
| <p class="text-sm">Масло, холст</p> |
| <p class="text-xs">50×70 см</p> |
| </div> |
| </div> |
| </div> |
| <div class="p-4"> |
| <h3 class="text-xl font-semibold mb-2 text-gray-800">Морская симфония</h3> |
| <p class="text-gray-600 mb-4">Драматический морской пейзаж с волнами</p> |
| <div class="flex justify-between items-center"> |
| <span class="text-indigo-600 font-bold text-lg">13,750 ₽</span> |
| <button class="add-to-cart-btn" data-id="5" data-title="Морская симфония" data-price="13750" |
| class="bg-indigo-100 text-indigo-600 px-4 py-2 rounded-full hover:bg-indigo-600 hover:text-white transition"> |
| В корзину |
| </button> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="artwork-card bg-white rounded-xl overflow-hidden shadow-md hover:shadow-lg transition relative"> |
| <div class="relative overflow-hidden"> |
| <img src="https://images.unsplash.com/photo-1490750967868-88aa4486c946?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80" |
| alt="Цветы" class="w-full h-64 object-cover transition-transform duration-500 hover:scale-105"> |
| <div class="artwork-overlay absolute inset-0 bg-black bg-opacity-40 flex items-end p-4"> |
| <div class="text-white"> |
| <p class="text-sm">Гуашь, бумага</p> |
| <p class="text-xs">40×50 см</p> |
| </div> |
| </div> |
| </div> |
| <div class="p-4"> |
| <h3 class="text-xl font-semibold mb-2 text-gray-800">Цветочная гармония</h3> |
| <p class="text-gray-600 mb-4">Нежные полевые цветы в тёплых тонах</p> |
| <div class="flex justify-between items-center"> |
| <span class="text-indigo-600 font-bold text-lg">8,900 ₽</span> |
| <button class="add-to-cart-btn" data-id="6" data-title="Цветочная гармония" data-price="8900" |
| class="bg-indigo-100 text-indigo-600 px-4 py-2 rounded-full hover:bg-indigo-600 hover:text-white transition"> |
| В корзину |
| </button> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| <div class="text-center mt-12"> |
| <button class="px-6 py-3 bg-gray-100 text-gray-700 rounded-full hover:bg-gray-200 transition font-medium"> |
| Показать больше |
| </button> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="auctions" class="py-16 px-4 bg-gray-50"> |
| <div class="container mx-auto"> |
| <h2 class="text-3xl font-bold text-center mb-12 text-gray-800">Активные аукционы</h2> |
| |
| <div class="grid grid-cols-1 lg:grid-cols-2 gap-8"> |
| |
| <div class="bg-white rounded-xl overflow-hidden shadow-md hover:shadow-lg transition"> |
| <div class="relative"> |
| <img src="https://images.unsplash.com/photo-1618221195710-dd6b41fa6866?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1400&q=80" |
| alt="Аукционная картина" class="w-full h-64 object-cover"> |
| <div class="absolute top-4 right-4 bg-indigo-600 text-white px-3 py-1 rounded-full text-sm font-medium"> |
| Идёт торг |
| </div> |
| </div> |
| <div class="p-6"> |
| <div class="flex justify-between items-start mb-4"> |
| <div> |
| <h3 class="text-xl font-semibold mb-1 text-gray-800">Ночной город</h3> |
| <p class="text-gray-600">Масло, холст • 50×70 см</p> |
| </div> |
| <div class="text-right"> |
| <p class="text-sm text-gray-500">Текущая цена:</p> |
| <p class="text-indigo-600 font-bold text-xl">24,500 ₽</p> |
| </div> |
| </div> |
| |
| <div class="mb-6"> |
| <div class="flex justify-between text-sm text-gray-500 mb-1"> |
| <span>Следующая ставка от:</span> |
| <span>25,500 ₽</span> |
| </div> |
| <div class="w-full bg-gray-200 rounded-full h-2"> |
| <div class="bg-indigo-600 h-2 rounded-full" style="width: 65%"></div> |
| </div> |
| </div> |
| |
| <div class="mb-6"> |
| <p class="text-sm text-gray-500 mb-2">До окончания аукциона:</p> |
| <div id="auction1Timer" class="auction-timer text-xl font-bold text-gray-800"> |
| 2д 6ч 34м 12с |
| </div> |
| </div> |
| |
| <button class="place-bid-btn w-full bg-indigo-600 hover:bg-indigo-700 text-white py-3 rounded-full font-medium transition"> |
| Сделать ставку |
| </button> |
| </div> |
| </div> |
| |
| |
| <div class="bg-white rounded-xl overflow-hidden shadow-md hover:shadow-lg transition"> |
| <div class="relative"> |
| <img src="https://images.unsplash.com/photo-1479064555552-3ef4979f8908?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80" |
| alt="Аукционная картина" class="w-full h-64 object-cover"> |
| <div class="absolute top-4 right-4 bg-indigo-600 text-white px-3 py-1 rounded-full text-sm font-medium"> |
| Идёт торг |
| </div> |
| </div> |
| <div class="p-6"> |
| <div class="flex justify-between items-start mb-4"> |
| <div> |
| <h3 class="text-xl font-semibold mb-1 text-gray-800">Далекие горизонты</h3> |
| <p class="text-gray-600">Акварель, бумага • 40×60 см</p> |
| </div> |
| <div class="text-right"> |
| <p class="text-sm text-gray-500">Текущая цена:</p> |
| <p class="text-indigo-600 font-bold text-xl">15,800 ₽</p> |
| </div> |
| </div> |
| |
| <div class="mb-6"> |
| <div class="flex justify-between text-sm text-gray-500 mb-1"> |
| <span>Следующая ставка от:</span> |
| <span>16,800 ₽</span> |
| </div> |
| <div class="w-full bg-gray-200 rounded-full h-2"> |
| <div class="bg-indigo-600 h-2 rounded-full" style="width: 45%"></div> |
| </div> |
| </div> |
| |
| <div class="mb-6"> |
| <p class="text-sm text-gray-500 mb-2">До окончания аукциона:</p> |
| <div id="auction2Timer" class="auction-timer text-xl font-bold text-gray-800"> |
| 1д 3ч 15м 42с |
| </div> |
| </div> |
| |
| <button class="place-bid-btn w-full bg-indigo-600 hover:bg-indigo-700 text-white py-3 rounded-full font-medium transition"> |
| Сделать ставку |
| </button> |
| </div> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="custom" class="py-16 px-4 bg-white"> |
| <div class="container mx-auto"> |
| <div class="text-center mb-12"> |
| <h2 class="text-3xl font-bold text-gray-800 mb-4">Картина на заказ</h2> |
| <p class="text-gray-600 max-w-2xl mx-auto">Расскажите нам о картине вашей мечты, и наши художники воплотят ваши идеи в реальность</p> |
| </div> |
| |
| <div class="grid grid-cols-1 md:grid-cols-2 gap-8 items-center"> |
| <div class="fade-in"> |
| <img src="https://images.unsplash.com/photo-1526661295964-905dbe821965?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1471&q=80" |
| alt="Художник за работой" class="rounded-xl shadow-lg w-full h-auto"> |
| </div> |
| |
| <div class="fade-in"> |
| <form class="space-y-6"> |
| <div> |
| <label for="artType" class="block text-gray-700 font-medium mb-2">Тип картины</label> |
| <select id="artType" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-indigo-500"> |
| <option value="">Выберите тип картины</option> |
| <option value="portrait">Портрет</option> |
| <option value="landscape">Пейзаж</option> |
| <option value="abstract">Абстракция</option> |
| <option value="still-life">Натюрморт</option> |
| <option value="other">Другое</option> |
| </select> |
| </div> |
| |
| <div> |
| <label for="artSize" class="block text-gray-700 font-medium mb-2">Размер (см)</label> |
| <select id="artSize" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-indigo-500"> |
| <option value="">Выберите размер</option> |
| <option value="40x50">40×50</option> |
| <option value="50x70">50×70</option> |
| <option value="60x80">60×80</option> |
| <option value="70x90">70×90</option> |
| <option value="custom">Нестандартный</option> |
| </select> |
| </div> |
| |
| <div> |
| <label for="artStyle" class="block text-gray-700 font-medium mb-2">Стиль</label> |
| <select id="artStyle" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-indigo-500"> |
| <option value="">Выберите стиль</option> |
| <option value="realism">Реализм</option> |
| <option value="impressionism">Импрессионизм</option> |
| <option value="abstract">Абстракция</option> |
| <option value="pop-art">Поп-арт</option> |
| <option value="other">Другое</option> |
| </select> |
| </div> |
| |
| <div> |
| <label for="artDescription" class="block text-gray-700 font-medium mb-2">Описание</label> |
| <textarea id="artDescription" rows="4" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-indigo-500" placeholder="Опишите вашу идею как можно подробнее..."></textarea> |
| </div> |
| |
| <div> |
| <label for="artPhoto" class="block text-gray-700 font-medium mb-2">Эталонные изображения (макс. 3)</label> |
| <input type="file" id="artPhoto" multiple accept="image/*" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-indigo-500"> |
| </div> |
| |
| <button type="submit" class="w-full bg-indigo-600 hover:bg-indigo-700 text-white font-medium py-3 px-4 rounded-full transition transform hover:scale-105"> |
| Отправить запрос |
| </button> |
| </form> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="about" class="py-16 px-4 bg-gray-50"> |
| <div class="container mx-auto"> |
| <div class="text-center mb-12"> |
| <h2 class="text-3xl font-bold text-gray-800 mb-4">О ArtCanvas</h2> |
| <p class="text-gray-600 max-w-3xl mx-auto">Мы объединяем талантливых художников и ценителей искусства со всего мира</p> |
| </div> |
| |
| <div class="grid grid-cols-1 md:grid-cols-3 gap-8"> |
| <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition text-center"> |
| <div class="text-indigo-600 mb-4 text-4xl"> |
| <i class="fas fa-paint-brush"></i> |
| </div> |
| <h3 class="text-xl font-semibold mb-3 text-gray-800">150+ художников</h3> |
| <p class="text-gray-600">Работаем только с профессиональными художниками, прошедшими отбор</p> |
| </div> |
| |
| <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition text-center"> |
| <div class="text-indigo-600 mb-4 text-4xl"> |
| <i class="fas fa-star"></i> |
| </div> |
| <h3 class="text-xl font-semibold mb-3 text-gray-800">Гарантия подлинности</h3> |
| <p class="text-gray-600">Все произведения сопровождаются сертификатом подлинности</p> |
| </div> |
| |
| <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition text-center"> |
| <div class="text-indigo-600 mb-4 text-4xl"> |
| <i class="fas fa-truck"></i> |
| </div> |
| <h3 class="text-xl font-semibold mb-3 text-gray-800">Безопасная доставка</h3> |
| <p class="text-gray-600">Идеальная упаковка и страховка каждого произведения при пересылке</p> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <div id="cartDrawer" class="drawer fixed inset-y-0 right-0 w-full sm:w-96 bg-white shadow-xl z-50 overflow-y-auto closed"> |
| <div class="p-6"> |
| <div class="flex justify-between items-center mb-6"> |
| <h3 class="text-xl font-bold text-gray-800">Корзина</h3> |
| <button id="closeCartButton" class="text-gray-500 hover:text-gray-700"> |
| <i class="fas fa-times text-xl"></i> |
| </button> |
| </div> |
| |
| <div id="cartItemsContainer" class="space-y-4 mb-6"> |
| |
| </div> |
| |
| <div class="border-t border-gray-200 pt-4 mb-6"> |
| <div class="flex justify-between mb-2"> |
| <span class="text-gray-600">Промежуточный итог:</span> |
| <span id="cartSubtotal" class="font-medium">0 ₽</span> |
| </div> |
| <div class="flex justify-between mb-2"> |
| <span class="text-gray-600">Доставка:</span> |
| <span class="font-medium">Рассчитывается</span> |
| </div> |
| <div class="flex justify-between text-lg font-bold"> |
| <span>Итого:</span> |
| <span id="cartTotal">0 ₽</span> |
| </div> |
| </div> |
| |
| <button id="checkoutButton" class="w-full bg-indigo-600 hover:bg-indigo-700 text-white font-medium py-3 px-4 rounded-full transition transform hover:scale-105"> |
| Оформить заказ |
| </button> |
| |
| <p class="text-center text-gray-500 mt-4 text-sm">Мы гарантируем конфиденциальность ваших данных</p> |
| </div> |
| </div> |
|
|
| |
| <div id="bidModal" class="hidden fixed inset-0 bg-black bg-opacity-50 z-50 flex items-center justify-center p-4"> |
| <div class="bg-white rounded-xl max-w-md w-full p-6"> |
| <div class="flex justify-between items-center mb-4"> |
| <h3 class="text-xl font-bold text-gray-800">Сделать ставку</h3> |
| <button id="closeBidModal" class="text-gray-500 hover:text-gray-700"> |
| <i class="fas fa-times"></i> |
| </button> |
| </div> |
| |
| <div class="mb-6"> |
| <p class="text-gray-700 mb-4">Текущая цена: <span id="currentBidPrice" class="font-bold">25,500 ₽</span></p> |
| <p class="text-sm text-gray-500 mb-4">Следующая минимальная ставка: <span id="nextBidPrice" class="font-bold">26,500 ₽</span></p> |
| |
| <label for="bidAmount" class="block text-gray-700 font-medium mb-2">Ваша ставка:</label> |
| <div class="relative"> |
| <input type="number" id="bidAmount" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-indigo-500"> |
| <span class="absolute right-4 top-2 text-gray-500">₽</span> |
| </div> |
| </div> |
| |
| <button id="confirmBid" class="w-full bg-indigo-600 hover:bg-indigo-700 text-white font-medium py-3 px-4 rounded-full transition"> |
| Подтвердить ставку |
| </button> |
| </div> |
| </div> |
|
|
| |
| <footer class="bg-gray-800 text-white py-12 px-4"> |
| <div class="container mx-auto"> |
| <div class="grid grid-cols-1 md:grid-cols-4 gap-8"> |
| <div> |
| <h4 class="text-lg font-semibold mb-4">ArtCanvas</h4> |
| <p class="text-gray-400">Искусство доступное каждому. Галерея, аукционы и заказ картин.</p> |
| </div> |
| |
| <div> |
| <h4 class="text-lg font-semibold mb-4">Меню</h4> |
| <ul class="space-y-2"> |
| <li><a href="#gallery" class="text-gray-400 hover:text-white transition">Галерея</a></li> |
| <li><a href="#auctions" class="text-gray-400 hover:text-white transition">Аукционы</a></li> |
| <li><a href="#custom" class="text-gray-400 hover:text-white transition">На заказ</a></li> |
| <li><a href="#about" class="text-gray-400 hover:text-white transition">О нас</a></li> |
| </ul> |
| </div> |
| |
| <div> |
| <h4 class="text-lg font-semibold mb-4">Контакты</h4> |
| <ul class="space-y-2 text-gray-400"> |
| <li><i class="fas fa-map-marker-alt mr-2"></i> Москва, ул. Искусств, 15</li> |
| <li><i class="fas fa-phone mr-2"></i> +7 (495) 123-45-67</li> |
| <li><i class="fas fa-envelope mr-2"></i> info@artcanvas.ru</li> |
| </ul> |
| </div> |
| |
| <div> |
| <h4 class="text-lg font-semibold mb-4">Подписаться</h4> |
| <p class="text-gray-400 mb-4">Подпишитесь на наши новости и акции</p> |
| <div class="flex"> |
| <input type="email" placeholder="Ваш email" class="px-4 py-2 rounded-l-lg w-full focus:outline-none text-gray-800"> |
| <button class="bg-indigo-600 hover:bg-indigo-700 px-4 rounded-r-lg transition"> |
| <i class="fas fa-paper-plane"></i> |
| </button> |
| </div> |
| <div class="flex space-x-4 mt-4"> |
| <a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-instagram text-xl"></i></a> |
| <a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-facebook text-xl"></i></a> |
| <a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-telegram text-xl"></i></a> |
| <a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-youtube text-xl"></i></a> |
| </div> |
| </div> |
| </div> |
| |
| <div class="border-t border-gray-700 mt-8 pt-8 text-center text-gray-400 text-sm"> |
| <p>© 2023 ArtCanvas. Все права защищены.</p> |
| </div> |
| </div> |
| </footer> |
|
|
| |
| <div id="successNotification" class="hidden fixed bottom-4 right-4 bg-green-500 text-white px-6 py-3 rounded-lg shadow-lg"> |
| <div class="flex items-center"> |
| <i class="fas fa-check-circle mr-2"></i> |
| <span id="notificationMessage">Товар добавлен в корзину</span> |
| </div> |
| </div> |
|
|
| <script> |
| |
| const cart = []; |
| |
| |
| const cartButton = document.getElementById('cartButton'); |
| const cartCounter = document.getElementById('cartCounter'); |
| const cartDrawer = document.getElementById('cartDrawer'); |
| const closeCartButton = document.getElementById('closeCartButton'); |
| const cartItemsContainer = document.getElementById('cartItemsContainer'); |
| const cartSubtotal = document.getElementById('cartSubtotal'); |
| const cartTotal = document.getElementById('cartTotal'); |
| const checkoutButton = document.getElementById('checkoutButton'); |
| const addToCartButtons = document.querySelectorAll('.add-to-cart-btn'); |
| const addToCartSound = document.getElementById('addToCartSound'); |
| const purchaseSound = document.getElementById('purchaseSound'); |
| const bidSound = document.getElementById('bidSound'); |
| const successNotification = document.getElementById('successNotification'); |
| const notificationMessage = document.getElementById('notificationMessage'); |
| const mobileMenuButton = document.getElementById('mobileMenuButton'); |
| const mobileMenu = document.getElementById('mobileMenu'); |
| const bidModal = document.getElementById('bidModal'); |
| const closeBidModal = document.getElementById('closeBidModal'); |
| const placeBidButtons = document.querySelectorAll('.place-bid-btn'); |
| const confirmBid = document.getElementById('confirmBid'); |
| const currentBidPrice = document.getElementById('currentBidPrice'); |
| const nextBidPrice = document.getElementById('nextBidPrice'); |
| const bidAmount = document.getElementById('bidAmount'); |
| |
| |
| mobileMenuButton.addEventListener('click', () => { |
| mobileMenu.classList.toggle('hidden'); |
| }); |
| |
| |
| function updateCartCounter() { |
| const totalItems = cart.reduce((sum, item) => sum + item.quantity, 0); |
| cartCounter.textContent = totalItems; |
| |
| if (totalItems > 0) { |
| cartCounter.classList.remove('hidden'); |
| } else { |
| cartCounter.classList.add('hidden'); |
| } |
| } |
| |
| |
| function calculateCartTotal() { |
| const subtotal = cart.reduce((sum, item) => sum + (item.price * item.quantity), 0); |
| cartSubtotal.textContent = `${subtotal.toLocaleString()} ₽`; |
| cartTotal.textContent = `${subtotal.toLocaleString()} ₽`; |
| } |
| |
| |
| function renderCartItems() { |
| cartItemsContainer.innerHTML = ''; |
| |
| if (cart.length === 0) { |
| cartItemsContainer.innerHTML = ` |
| <div class="text-center py-8"> |
| <i class="fas fa-shopping-cart text-4xl text-gray-300 mb-4"></i> |
| <p class="text-gray-500">Ваша корзина пуста</p> |
| </div> |
| `; |
| checkoutButton.disabled = true; |
| return; |
| } |
| |
| checkoutButton.disabled = false; |
| |
| cart.forEach(item => { |
| const cartItemElement = document.createElement('div'); |
| cartItemElement.className = 'flex justify-between items-start p-3 bg-gray-50 rounded-lg'; |
| cartItemElement.innerHTML = ` |
| <div class="flex items-start space-x-3"> |
| <img src="${item.image}" alt="${item.title}" class="w-16 h-16 object-cover rounded"> |
| <div> |
| <h4 class="font-medium text-gray-800">${item.title}</h4> |
| <p class="text-sm text-gray-500">${item.size}</p> |
| <div class="flex items-center mt-1"> |
| <button class="decrease-quantity text-gray-500 hover:text-indigo-600" data-id="${item.id}"> |
| <i class="fas fa-minus text-xs"></i> |
| </button> |
| <span class="quantity mx-2">${item.quantity}</span> |
| <button class="increase-quantity text-gray-500 hover:text-indigo-600" data-id="${item.id}"> |
| <i class="fas fa-plus text-xs"></i> |
| </button> |
| </div> |
| </div> |
| </div> |
| <div class="text-right"> |
| <p class="text-indigo-600 font-medium">${(item.price * item.quantity).toLocaleString()} ₽</p> |
| <button class="remove-item mt-1 text-xs text-gray-400 hover:text-red-500" data-id="${item.id}"> |
| Удалить |
| </button> |
| </div> |
| `; |
| cartItemsContainer.appendChild(cartItemElement); |
| }); |
| |
| |
| document.querySelectorAll('.increase-quantity').forEach(button => { |
| button.addEventListener('click', () => { |
| const id = button.dataset.id; |
| const item = cart.find(item => item.id === id); |
| item.quantity += 1; |
| renderCartItems(); |
| updateCartCounter(); |
| calculateCartTotal(); |
| }); |
| }); |
| |
| document.querySelectorAll('.decrease-quantity').forEach(button => { |
| button.addEventListener('click', () => { |
| const id = button.dataset.id; |
| const item = cart.find(item => item.id === id); |
| if (item.quantity > 1) { |
| item.quantity -= 1; |
| } else { |
| const index = cart.findIndex(item => item.id === id); |
| cart.splice(index, 1); |
| } |
| renderCartItems(); |
| updateCartCounter(); |
| calculateCartTotal(); |
| }); |
| }); |
| |
| document.querySelectorAll('.remove-item').forEach(button => { |
| button.addEventListener('click', () => { |
| const id = button.dataset.id; |
| const index = cart.findIndex(item => item.id === id); |
| cart.splice(index, 1); |
| renderCartItems(); |
| updateCartCounter(); |
| calculateCartTotal(); |
| }); |
| }); |
| } |
| |
| |
| addToCartButtons.forEach(button => { |
| button.addEventListener('click', () => { |
| const id = button.dataset.id; |
| const title = button.dataset.title; |
| const price = parseInt(button.dataset.price); |
| const image = button.closest('.artwork-card').querySelector('img').src; |
| const size = button.closest('.artwork-card').querySelector('.artwork-overlay p.text-xs').textContent; |
| |
| const existingItem = cart.find(item => item.id === id); |
| |
| if (existingItem) { |
| existingItem.quantity += 1; |
| } else { |
| cart.push({ |
| id, |
| title, |
| price, |
| image, |
| size, |
| quantity: 1 |
| }); |
| } |
| |
| |
| addToCartSound.currentTime = 0; |
| addToCartSound.play(); |
| |
| |
| updateCartCounter(); |
| cartCounter.classList.add('cart-pulse'); |
| setTimeout(() => cartCounter.classList.remove('cart-pulse'), 1000); |
| |
| |
| notificationMessage.textContent = `"${title}" добавлена в корзину`; |
| successNotification.classList.remove('hidden'); |
| setTimeout(() => successNotification.classList.add('hidden'), 3000); |
| }); |
| }); |
| |
| |
| cartButton.addEventListener('click', () => { |
| cartDrawer.classList.remove('closed'); |
| cartDrawer.classList.add('open'); |
| renderCartItems(); |
| calculateCartTotal(); |
| }); |
| |
| closeCartButton.addEventListener('click', () => { |
| cartDrawer.classList.remove('open'); |
| cartDrawer.classList.add('closed'); |
| }); |
| |
| |
| checkoutButton.addEventListener('click', () => { |
| purchaseSound.play(); |
| |
| |
| notificationMessage.textContent = 'Ваш заказ успешно оформлен!'; |
| successNotification.classList.add('bg-green-500'); |
| successNotification.classList.remove('hidden'); |
| |
| |
| cart.length = 0; |
| renderCartItems(); |
| updateCartCounter(); |
| |
| setTimeout(() => { |
| successNotification.classList.add('hidden'); |
| cartDrawer.classList.remove('open'); |
| cartDrawer.classList.add('closed'); |
| }, 3000); |
| }); |
| |
| |
| placeBidButtons.forEach(button => { |
| button.addEventListener('click', () => { |
| const currentPrice = button.closest('div').querySelector('p.text-indigo-600').textContent; |
| const nextPrice = button.closest('div').querySelector('span:nth-child(2)').textContent; |
| |
| currentBidPrice.textContent = currentPrice; |
| nextBidPrice.textContent = nextPrice; |
| bidAmount.value = nextPrice.replace(/[^0-9]/g, ''); |
| |
| bidModal.classList.remove('hidden'); |
| document.body.style.overflow = 'hidden'; |
| }); |
| }); |
| |
| closeBidModal.addEventListener('click', () => { |
| bidModal.classList.add('hidden'); |
| document.body.style.overflow = 'auto'; |
| }); |
| |
| confirmBid.addEventListener('click', () => { |
| if (!bidAmount.value || parseInt(bidAmount.value) < parseInt(nextBidPrice.textContent.replace(/[^0-9]/g, ''))) { |
| alert(`Ваша ставка должна быть не менее ${nextBidPrice.textContent}`); |
| return; |
| } |
| |
| bidSound.play(); |
| |
| |
| notificationMessage.textContent = `Ваша ставка ${bidAmount.value} ₽ принята!`; |
| successNotification.classList.add('bg-indigo-500'); |
| successNotification.classList.remove('hidden'); |
| |
| bidModal.classList.add('hidden'); |
| document.body.style.overflow = 'auto'; |
| |
| setTimeout(() => { |
| successNotification.classList.add('hidden'); |
| successNotification.classList.remove('bg-indigo-500'); |
| successNotification.classList.add('bg-green-500'); |
| }, 3000); |
| }); |
| |
| |
| function updateAuctionTimers() { |
| let time1 = document.getElementById('auction1Timer').textContent.split(/[дчмс]/); |
| let days1 = parseInt(time1[0]) || 0; |
| let hours1 = parseInt(time1[1]) || 0; |
| let minutes1 = parseInt(time1[2]) || 0; |
| let seconds1 = parseInt(time1[3]) || 0; |
| |
| seconds1--; |
| if (seconds1 < 0) { |
| seconds1 = 59; |
| minutes1--; |
| if (minutes1 < 0) { |
| minutes1 = 59; |
| hours1--; |
| if (hours1 < 0) { |
| hours1 = 23; |
| days1--; |
| if (days1 < 0) { |
| days1 = 0; |
| } |
| } |
| } |
| } |
| |
| document.getElementById('auction1Timer').textContent = |
| `${days1}д ${hours1}ч ${minutes1}м ${seconds1}с`; |
| |
| let time2 = document.getElementById('auction2Timer').textContent.split(/[дчмс]/); |
| let days2 = parseInt(time2[0]) || 0; |
| let hours2 = parseInt(time2[1]) || 0; |
| let minutes2 = parseInt(time2[2]) || 0; |
| let seconds2 = parseInt(time2[3]) || 0; |
| |
| seconds2--; |
| if (seconds2 < 0) { |
| seconds2 = 59; |
| minutes2--; |
| if (minutes2 < 0) { |
| minutes2 = 59; |
| hours2--; |
| if (hours2 < 0) { |
| hours2 = 23; |
| days2--; |
| if (days2 < 0) { |
| days2 = 0; |
| } |
| } |
| } |
| } |
| |
| document.getElementById('auction2Timer').textContent = |
| `${days2}д ${hours2}ч ${minutes2}м ${seconds2}с`; |
| } |
| |
| setInterval(updateAuctionTimers, 1000); |
| |
| |
| function animateOnScroll() { |
| const elements = document.querySelectorAll('.fade-in'); |
| |
| elements.forEach(element => { |
| const elementPosition = element.getBoundingClientRect().top; |
| const screenPosition = window.innerHeight / 1.3; |
| |
| if (elementPosition < screenPosition) { |
| element.style.animation = 'fadeIn 0.5s ease-out forwards'; |
| } |
| }); |
| } |
| |
| window.addEventListener('scroll', animateOnScroll); |
| |
| |
| document.addEventListener('DOMContentLoaded', () => { |
| setTimeout(() => { |
| document.querySelectorAll('.fade-in').forEach(element => { |
| element.style.animation = 'fadeIn 0.5s ease-out forwards'; |
| }); |
| }, 500); |
| }); |
| </script> |
| <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=gurwa/ruart" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
| </html> |