Корзина покупок на jQuery
В данном уроке мы создаем клиентскую часть корзины покупок с использованием jQuery. Управление вычислениями общего количества и суммы покупки будет осуществляться в JavaScript.
Для формирования корзины покупок будет использоваться технология "перетащи-и-брось" с помощью библиотеки jQuery UI. Весь список покупок можно будет прокручивать горизонтально с помощью перетаскивания курсором мыши.
HTML
Список товаров
В нашем примере нет серверной части, поэтому код разметки формирует простой список пунктов (в примере используется 10 товаров). Структура разметки проста:
<div id="item_container"> <div class="item" id="i1"> <img src="/img/1.jpg"/> <label class="title">Майка 1</label> <label class="price">200 р.</label> </div> <div class="item" id="i2"> <img src="/img/2.jpg"/> <label class="title">Майка 2</label> <label class="price">240 р.</label> </div> . . . <div class="clear"></div> <div>
Корзина покупок
В корзине покупок имеется элемент, в который будут "сбрасываться" покупки. Даная область также можно будет перетаскивать курсором мыши, чтобы посмотреть весь список покупок. Также в корзине покупок имеются элементы для навигации по списку покупок, кнопка очистки всей корзины сразу и индикаторы общего количества выбранных товаров и суммы покупки.
<div id="cart_container"> <div id="cart_title"> <span>Корзина покупок</span> <div class="clear"></div> </div> <div id="cart_toolbar"> <div id="cart_items" class="back"></div> </div> <div id="navigate"> <div id="nav_left"> <a href="/" id="btn_prev"><</a> <a href="/" id="btn_next">></a> <a href="/" id="btn_clear">Очистить корзину</a> </div> <div id="nav_right"> <span class="sptext"> <label>Покупок </label><label class="count" id="citem">0</label> </span> <span class="sptext"> <label>Цена </label><label class="count" id="cprice">0 р.</label> </span> </div> <div class="clear"></div> </div> </div>
jQuery
Инициализация корзины
Код инициализации устанавливает возможность перетаскивания пунктов списка (формирования копии в новом месте) и элемента с покупками (движение только по горизонтали), и формирует действия после сброса товара в корзину (обновляется общее количество покупок и сумма, устанавливается ссылка для удаления пункта из корзины покупок).
var total_items = 0; var total_price = 0; $(document).ready(function() { $(".item").draggable({ revert: true }); $("#cart_items").draggable({ axis: "x" }); $("#cart_items").droppable({ accept: ".item", activeClass: "drop-active", hoverClass: "drop-hover", drop: function(event, ui) { var item = ui.draggable.html(); var itemid = ui.draggable.attr("id"); var html = '<div class="item icart">'; html = html + '<div class="divrm">'; html = html + '<a onclick="remove(this)" class="remove '+itemid+'">×</a>'; html = html + '<div/>'+item+'</div>'; $("#cart_items").append(html); // Обновление общего количества total_items++; $("#citem").html(total_items); // Обновление общей цены var price = parseInt(ui.draggable.find(".price").html().replace(" р.", "")); total_price = total_price + price; $("#cprice").html(total_price + " р."); // Расширяем корзину if (total_items > 4) { $("#cart_items").animate({width: "+=120"}, 'slow'); } } }); });
Удаление пункта из корзины покупок
Когда удаляется пункт из корзины покупок нужно обновить общее количество и сумму:
function remove(el) {
$(el).hide();
$(el).parent().parent().effect("highlight", {color: "#ff0000"}, 1000);
$(el).parent().parent().fadeOut('1000');
setTimeout(function() {
$(el).parent().parent().remove();
// Сворачиваем позицию в корзине
if (total_items > 3) {
$("#cart_items").animate({width: "-=120"}, 'slow');
}
}, 1100);
// Обновляем общее количество
total_items--;
$("#citem").html(total_items);
// Обновляем общую цену
var price = parseInt($(el).parent().parent().find(".price").html().replace(" р.", ""));
total_price = total_price - price;
$("#cprice").html(total_price + " р.");
}
Навигация по корзине покупок
Перетаскивание области со списком покупок является не единственным способом навигации по корзине. Мы добавили два элемента для прокручивания списка покупок влево и вправо. Они манипулируют свойством CSS left.
$("#btn_next").click(function() { $("#cart_items").animate({left: "-=100"}, 100); return false; }); $("#btn_prev").click(function() { $("#cart_items").animate({left: "+=100"}, 100); return false; }); $("#btn_clear").click(function() { $("#cart_items").fadeOut("2000", function() { $(this).html("").fadeIn("fast").css({left: 0}); }); $("#citem").html("0"); $("#cprice").html("0 р."); total_items = 0; total_price = 0; return false; });
CSS
body { font-family: Arial, "Free Sans"; margin: 0; padding: 0; } #main { background: #0099cc; margin-top: 0; padding: 2px 0 4px 0; text-align: center; } #main a { color: #ffffff; text-decoration: none; font-size: 12px; font-weight: bold; font-family: Arial; } #main a:hover { text-decoration: underline; } #item_container { width: 610px; margin: 0 auto; margin-top: 10px; margin-bottom: 10px; } .item { background: #fff; float: left; padding: 5px; margin: 5px; cursor: move; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.5); -moz-box-shadow: 0 1px 2px rgba(0,0,0,.5); box-shadow: 0 1px 2px rgba(0,0,0,.5); -webkit-border-radius: .5em; -moz-border-radius: .5em; border-radius: .5em; z-index: 5; } .title, .price { display: block; text-align: center; font-size: 14px; letter-spacing: -1px; font-weight: bold; cursor: move; } .title { color: #333; } .price { color: #0099cc; margin-top: 5px; -webkit-border-radius: .5em; -moz-border-radius: .5em; border-radius: .5em; } .icart, .icart label { cursor: e-resize; } .divrm { text-align: right; } .remove { text-decoration: none; cursor: pointer; font-weight: bold; font-size: 20px; position: relative; top: -7px; } .remove:hover { color: #999; } .clear { clear: both; } #cart_container { margin: 0 auto; width: 495px; } #cart_title span { border: 8px solid #666; border-bottom-width: 0; background: #333; display: block; float: left; color: #fff; font-size: 11px; font-weight: bold; padding: 5px 10px; -webkit-border-radius: .5em .5em 0 0; -moz-border-radius: .5em .5em 0 0; border-radius: .5em .5em 0 0; } #cart_toolbar { overflow: hidden; border: 8px solid #666; height: 190px; z-index: -2; width: 483px; -webkit-border-radius: 0 .5em 0 0; -moz-border-radius: 0 .5em 0 0; border-radius: 0 .5em 0 0; background: #ffffff; } #cart_items { height: 190px; width: 483px; position: relative; padding: 0 0 0 2px; z-index: 0; cursor: e-resize; border-width: 0 2px; } .back { background: #e9e9e9; } #navigate { width: 463px; margin: 0 auto; border: 8px solid #666; border-top-width: 0; -webkit-border-radius: 0 0 .5em .5em; -moz-border-radius: 0 0 .5em .5em; border-radius: 0 0 .5em .5em; padding: 10px; font-size: 14px; background: #333; font-weight: bold; } #nav_left { float: left; } #nav_left a { padding: 4px 8px; background: #fff; -webkit-border-radius: .5em; -moz-border-radius: .5em; border-radius: .5em; text-decoration: none; color:#0099cc; } #nav_left a:hover { background: #666; color: #fff; } #nav_right { float: right; } .sptext { background: #ffffff; padding: 4px 8px; margin-left: 8px; -webkit-border-radius: .5em; -moz-border-radius: .5em; border-radius: .5em; color: #666; } .count { color: #0099cc; } .drop-active { background: #ffff99; } .drop-hover { background: #ffff66; }
В итоге получаем интерфейс корзины покупок:
Готово!
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/IGugWTvD638/lessons.php


Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2025-03-14 » SPF-запись
- 2025-03-07 » SEO на маркетплейсах: как оптимизировать карточку товара для поисковой выдачи
- 2025-02-18 » Топ-10 бесплатных нейросетей для генерации изображений: лучшие ии генераторы 2024 года
- 2025-02-11 » Критическая уязвимость в 1С-Битрикс
- 2025-02-11 » Google Search Console: руководство для начинающих вебмастеров
- 2025-02-11 » Методы измерения результативности рекламных кампаний: плюсы и минусы
- 2025-02-11 » Тренды SEO в 2025 году
- 2025-02-10 » Свой Google в локалке. Ищем иголку в стоге сена
- 2025-01-29 » SEO — это комплексная работа. Шесть главных факторов ранжирования сайтов
- 2025-01-29 » Гайд для главной страницы e-commerce сайта: как оформить, чтобы повысить конверсию
- 2025-01-20 » Krea AI выпустила бесплатную функцию преобразования изображений в 3D-объекты — их можно вращать и вписывать в фотографии
- 2025-01-19 » Отзывы на Яндекс Картах: как пройти модерацию
- 2025-01-15 » Топ-6 лучших российских нейросетей, в которых можно генерировать тексты и изображения бесплатно и без VPN
- 2025-01-14 » 15 бесплатных способов узнать, чем интересуется ваша аудитория
- 2025-01-11 » Бездепозитные бонусы в казино за регистрацию с выводом: особенности и возможности получения
- 2025-01-09 » Новая модель LAM способна выполнять задачи в Word
- 2024-12-26 » Универсальный промпт для нейросети: как выжать максимум из ChatGPT, YandexGPT, Gemini, Claude в 2025
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
На голодный желудок русский человек ничего делать и думать не хочет, а на сытый - не может Раневская Фаина Георгиевна - (1896-1984) - выдающаяся советская актриса театра и кино |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.
Или напишите нам в WhatsApp
Или напишите нам в WhatsApp