English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Написание простой функции корзины покупок на JavaScript

В Интернете много кода для реализации корзины покупок, сегодня я изучил несколько знаний, решил сам написать, поэтому я написал простую корзину покупок,接下来讲解一下具体的实现。 

1、Реализация контента с помощью html; 

2、Декорирование внешнего вида с помощью css; 

3、Создание анимации с помощью js(jq).

Шаг 1:Сначала идет дизайн html страницы, я использую большой div, чтобы включить все товары, затем с помощью различных div я упаковываю различные товары, в списке товаров я использую ul li, конкретное выполнение кода такое (код,涉及的到的商品都是网上随便copy的,不具有参考价值): 

<div id="goods">
  <div class="goodsItem">
   <ul class="goditem">
    <li class="godpic"><img src="images/1.png"></li>
    <li class="godprice">25.00¥</li>
    <li class="godinfo">Многие из стихов в "Сборнике пташек" написаны на бенгальском языке, эту книгу впервые представил в Китае господин Zheng Zhen duo.</li>
    <li class="godadd"><a href="javascript:;">добавить в корзину</a></li>
   </ul>
  </div>
  <div class="goodsItem">
   <ul class="goditem">
    <li class="godpic"><img src="images/2.png"></li>
    <li class="godprice">56.00¥</li>
    <li class="godinfo">Эта книга рассказывает, как использовать существующие веб-технологии для создания приложений для Android.
    <li class="godadd"><a href="javascript:;">добавить в корзину</a></li>
   </ul>
  </div>
  <div class="goodsItem">
   <ul class="goditem">
    <li class="godpic"><img src="images/3.png"></li>
    <li class="godprice">37.00元</li>
    <li class="godinfo">Словами можно победить время.冯唐最受欢迎的作品,杂文才是其销量最好、最受欢迎的作品。</li>
    <li class="godadd"><a href="javascript:;">добавить в корзину</a></li>
   </ul>
  </div>
  <div class="goodsItem">
   <ul class="goditem">
    <li class="godpic"><img src="images/1.png"></li>
    <li class="godprice">25.00¥</li>
    <li class="godinfo">Многие из стихов в "Сборнике пташек" написаны на бенгальском языке, эту книгу впервые представил в Китае господин Zheng Zhen duo.</li>
    <li class="godadd"><a href="javascript:;">добавить в корзину</a></li>
   </ul>
  </div>
  <div class="goodsItem">
   <ul class="goditem">
    <li class="godpic"><img src="images/2.png"></li>
    <li class="godprice">56元</li>
    <li class="godinfo">Эта книга рассказывает, как использовать существующие веб-технологии для создания приложений для Android.
    <li class="godadd"><a href="javascript:;">добавить в корзину</a></li>
   </ul>
  </div>
  <div class="goodsItem">
   <ul class="goditem">
    <li class="godpic"><img src="images/3.png"></li>
    <li class="godprice">37.00元</li>
    <li class="godinfo">Словами побеждайте время. Самый продаваемый труд Фэндуна, его статьи являются самыми продаваемыми и самыми популярными работами.
    <li class="godadd"><a href="javascript:;">добавить в корзину</a></li>
   </ul>
  </div>
 </div>
 <div id="godcar">
  <div class="dnum">0</div>
  <div class="dcar">
   <img src="images/car.jpg">
  </div>
 </div>

В этом涉及到 один из моментов: в <li class="godadd"><a href="javascript:;">добавить в корзину</a></li> я использовал javascript:; это означает, что не происходит переход, выполняется пустое событие. 

Второй шаг:Для дизайна внешнего вида, чтобы лучше отображаться, я установил width и height, а также границу для каждого div списка товаров, что важно. Чтобы карзина была фиксирована в определенном месте, я установил position:fixed, а затем установил top и left, чтобы она фиксировалась в нужном месте. Кроме того, нужно уметь灵活 использовать margin и padding, чтобы сделать отображение более美观ым. 

Примечание:Если нужно установить width и height для инлайн-элементов или свойства других блочных элементов, необходимо установить display:block. 

Конкретный код дизайна如下: 

* {
 padding: 0px;
 margin: 0px;
 font-family: "微软雅黑";
}
.goodsItem{
 width:280px;
 height: 400px;
 float: left;
 border: 1px solid #ccc;
 margin: 5px;
}
#goods{
 width: 910px;
}
.goditem{
 list-style: none;
}
.godpic img{
 display: block;
 width: 250px;
 height: 250px;
 margin: 0px auto;
}
.godprice,.godinfo,.godadd{
 display: block;
 width: 220px;
 margin: 0px auto;
 text-align: center;
}
.godprice{
 font-size: 20px;
 color: #f00;
}
.godinfo{
 text-align: center;
 font-size: 14px;
 margin: 10px 0px;
}
.godadd a{
 display: block;
 width: 150px;
 height: 36px;
 background-color: #fd6a01;
 border-radius: 10px;
 margin: 0px auto;
 text-decoration: none;
 color: #fff;
 line-height: 36px;
}
#godcar{
 position: fixed;
 right: 0px;
 top: 40%;
 width: 72px;
 height: 64px;
}
#godcar .dnum{
 width: 24px;
 height: 24px;
 border-radius: 12px;
 background-color: #f00;
 text-align: center;
 line-height: 24px;
 position: absolute;
 font-size: 12px;
 top: 0px;
}
.godadd .bg {
 background-color: #808080;
}

Первая * означает установку свойств для всех элементов, в начале хорошо установлять margin и padding.

Третий шаг:Реализована статическая страница,接下来需要通过jq进行购物车具体的实现,比如加入购物车,购物车数量变化等。我花了一些时间在设计:如何让商品加入购物车时,图片能够慢慢移动到购物车,然后变小,最后消失。其中,我用到了animate函数实现这个过程。要实现这个功能的难点在于:图片要怎么移动,怎么变化。 

Далее讲解如何实现这个过程: 

1) Сначала нужно получить изображение товара, а затем сделать копию этого изображения;

var img = $(this).parent().find(".godpic").find("img");
 var cimg = img.clone();

2) Получить значения top и left изображения товара, значения top и left корзины, так как только через функцию animate можно реализовать перемещение;

var imgleft = img.offset().left;
var cartop = $("#godcar").offset().top;
var carleft = $("#godcar").offset().left; 

3) Написать функцию animate, чтобы реализовать конкретный эффект;
 cimg.appendTo($("body")).css({

    "position": "absolute",// абсолютное позиционирование
    "opacity": "0.7",
    "top": imgtop,
    "left": imgleft
   }).animate({
    "top": cartop,
    "left": carleft,
    "width": "40px",
    "height": "40px",
    "opacity": "0.3" // прозрачность
   }, 1000, function () {
    cimg.remove(); // изображение исчезает
    $(".dnum").text(i); // изменение количества товаров в корзине
   });

Простое перемещение и изменение реализованы.

Но затем я решил, что каждый раз, когда страница обновляется, количество товаров в корзине возвращается к нулю, не соответствует реальности, поэтому я подумал, как можно реализовать, чтобы количество товаров в корзине не изменялось при обновлении страницы, изучил материалы, обобщил три метода: 

(1) сохранение в базу данных; 
(2) через метод cookie; 
(3) через метод localStorage h5; 

В конце я решил использовать третий способ, потому что хотел попробовать новый метод h5 (из любопытства~~, также потому что刚好 увидел этот метод, решил попробовать), данные, хранящиеся в localStorage, не имеют ограничений по времени. Через день, через неделю или через следующий год данные все еще будут доступны. Конкретное реализация моего кода: localStorage.getItem.

Готово, все, что нужно было рассказать, сказано, прилагается весь код jq, если нравится, поставь лайк:

var i = 0;
$(function() {
 var inum = 0;
 if(localStorage.getItem("inum")!==null){
  inum = localStorage.getItem("inum");
 }
 $(".dnum").text(inum);
 $(".godadd").click(function() {
  if (!$(this).find("a").hasClass("bg")) {
   i++;
   $(this).find("a").addClass("bg");
   var img = $(this).parent().find(".godpic").find("img");
   var cimg = img.clone();
   var imgtop = img.offset().top;
   var imgleft = img.offset().left;
   var cartop = $("#godcar").offset().top;
   var carleft = $("#godcar").offset().left;
   cimg.appendTo($("body")).css({
    "position": "absolute",
    "opacity": "0.7",
    "top": imgtop,
    "left": imgleft
   }).animate({
    "top": cartop,
    "left": carleft,
    "width": "40px",
    "height": "40px",
    "opacity": "0.3"
   }, 1000, function () {
    cimg.remove();
    $(".dnum").text(i);
    localStorage.setItem("inum", i);
   });
  }
 });
}); 

Эскиз:


Вот и все, что было в этой статье, надеюсь, это поможет вам в изучении. также希望大家多多支持呐喊教程。

Заявление: содержимое статьи взято из Интернета, авторские права принадлежат соответствующему автору, контент предоставлен пользователями Интернета, веб-сайт не имеет права собственности, не был отредактирован вручную, не несет ответственности за соответствующие юридические вопросы. Если вы обнаружите подозрительное содержание о нарушении авторских прав, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма замените # на @) для отчета,并提供 соответствующие доказательства. При подтверждении факта нарушения авторских прав сайт незамедлительно удаляет涉嫌侵权的内容.

Вам может понравиться