Vue实现简易购物车页面


Posted in Vue.js onDecember 30, 2020

VUE实现简易购物车效果,供大家参考,具体内容如下

简易的购物车小demo

引用了一下bootstrap3,的表格

Vue实现简易购物车页面

<section id="gouwuche">
 
 <table class="table table-hover">
 <thead>
  <tr>
  <th>
  <input type="checkbox" @change="handlechange" v-model="isAllChange" @click='inshow()'/>
  全选
  </th>
  <th>商品信息</th>
  <th>单价</th>
  <th>数量</th>
  <th>金额</th>
  <th>操作</th>
  </tr>
 </thead>
 <tbody>
  <tr style="height:50px;"></tr>
  <tr v-for="(date,index) in arr" :class="{bgcolor:isActive}">
  <td>
  <input type="checkbox" v-model="checkgroup" :value="date" @change="handleLiChange" />
  <img :src="date.imges"/>
  {{date.name}}
  </td>
  <td>
  <p>{{date.networkType}}</p>
  <p>{{date.colorClass}}</p>
  <p>{{date.packageType}}</p>
  <p>{{date.rom}}</p>
  <p>{{date.purchaseMethod}}</p>
  <br>
  </td>
  <td>
  <p><b class="danjia">{{date.price}}</b></p>
  </td>
  <td>
  <button @click="handleDelclike(date)" >-</button>
  <input type="text" :value="date.numbers"/>
  <button @click="date.numbers++">+</button>
  </td>
  <td>
  <p><b class="jiner">{{getSumje(date)}}.00</b></p>
  </td>
  <td>
  <p>移入收藏夹</p>
  <a href="#" @click="rmove(index)">删除</a>
  </td>
  </tr>
 </tbody>
 </table>
 
 <div class="box">
 <div class="boxa">
  <input type="checkbox" @change="handlechange" v-model="isAllChange" @click='inshow()'/>
  <a href="#" >全选</a>
  <a href="#" >删除</a>
 </div>
 <div class="boxc">
  <p>已选商品:<b class="jiner">{{checkgroup.length}}</b></p>
  <p>合计(不含运费):<b class="jiner">{{getSum()}}<b></p>
 </div>
 <div class="boxb" >
  结算
 </div>
 </div>
</section>

CSS:

#gouwuche {
 width: 1200px;
 height: ;
 margin: 0 auto;
}

.box {
 width: 1200px;
 height: 50px;
 margin: 30px auto;
 display: flex;
 justify-content: space-between;
 align-items: center;
 background-color: #C4E3F3;
}

.boxa {
 width: 780px;
 height: 50px;
}

.boxa a {
 margin-right: 50px;
}

.boxb {
 width: 120px;
 height: 50px;
 background-color: #C0C0C0;
 display: flex;
 align-items: center;
 justify-content: center;
 color: white;
 font-size: 18px;
}

.boxc {
 width: 300px;
 height: 50px;
 display: flex;
 align-items: center;
 justify-content: space-between;
}

input {
 width: 50px;
 text-align: center;
}

img {
 width: 60px;
 height: 60px;
}

a {
 text-decoration: none;
 color: #000;
}

* {
 font-size: 12px;
}

p {
 margin: 0;
 padding: 0;
 line-height: 1.9;
}

.danjia {
 font-size: 16px;
}

.jiner {
 font-size: 18px;
 color: #FF8C00;
}
.bgcolor{
 background-color: rgba(205,205,205,0.2);
 
}

js:

var gouwuche = new Vue({
 el:"#gouwuche",
 data:{
 checkgroup:[],
 isAllChage:false,
 isActive:false,
 arr:[
 {
  //商品名
  name:"小米 note8 Pro",
  //图片地址
  imges:"img/t1.jpg",
  //颜色分类
  colorClass:"机身颜色:冰翡翠",
  //网络类型
  networkType:"网络类型:4G+全网通",
  //套餐类型
  packageType:"套餐类型:官方标配",
  //存储容量
  rom:"存储容量:6+128GB",
  //购买方式
  purchaseMethod:"官方旗舰店",
  //单价
  price:1299.00,
  //数量
  numbers:1,
  //金额
  money:1299.00,
  //索引
  id:"1",
 },
 {
  //商品名
  name:"红米 k30 5G",
  //图片地址
  imges:"img/t3.jpg",
  //颜色分类
  colorClass:"机身颜色:紫玉幻境",
  //网络类型
  networkType:"网络类型:5G+全网通",
  //套餐类型
  packageType:"套餐类型:官方标配",
  //存储容量
  rom:"存储容量:8+128GB",
  //购买方式
  purchaseMethod:"官方旗舰店",
  //单价
  price:1499.00,
  //数量
  numbers:1,
  //金额
  money:1499.00,
  //索引
  id:"2",
 },
 {
  //商品名
  name:"红米 k30 Pro",
  //图片地址
  imges:"img/t4.jpg",
  //颜色分类
  colorClass:"机身颜色:象牙白",
  //网络类型
  networkType:"网络类型:5G+全网通",
  //套餐类型
  packageType:"套餐类型:官方标配",
  //存储容量
  rom:"存储容量:8+256GB",
  //购买方式
  purchaseMethod:"官方旗舰店",
  //单价
  price:3999.00,
  //数量
  numbers:1,
  //金额
  money:3999.00,
  //索引
  id:"3",
 },
 {
  //商品名
  name:"红米 k20 Pro",
  //图片地址
  imges:"img/t4.jpg",
  //颜色分类
  colorClass:"机身颜色:象牙白",
  //网络类型
  networkType:"网络类型:5G+全网通",
  //套餐类型
  packageType:"套餐类型:官方标配",
  //存储容量
  rom:"存储容量:8+256GB",
  //购买方式
  purchaseMethod:"官方旗舰店",
  //单价
  price:3999.00,
  //数量
  numbers:1,
  //金额
  money:3999.00,
  //索引
  id:"3",
 }
 ],
 },
 
 methods:{
 
 inshow:function(){
  this.isActive = !this.isActive;
 },
 
    //总额
 getSum:function(){
  var sum = 0;
  for(var i in this.checkgroup){
  sum += this.checkgroup[i].numbers * this.checkgroup[i].price;
  }
  return sum;
 },
 
    //单品总额
 getSumje:function(date){
  var sum = date.price;
  sum *= date.numbers;
  return sum;
 },
 
    //判断全选框
 handlechange:function(){
  if(this.isAllChange){
  this.checkgroup = this.arr;
  }else{
  this.checkgroup = [];
  }
 },
 
    //判断全选框
 handleLiChange:function(){
  if(this.checkgroup.length !== this.arr.length){
  this.isAllChange = false;
  }else{
  this.isAllChange = true;
  }
 },
 
    //数量减1
 handleDelclike:function(date){
  var numbers = date.numbers--;
  if(numbers === 1){
  date.numbers = 1;
  }
 },
 
    //删除
 rmove:function(index){
  var that = this;
  that.arr.splice(index,1);
  that.checkgroup.splice(index,1);
  

 }
 
 }
 
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
vue3+typeScript穿梭框的实现示例
Dec 29 Vue.js
vue导入.md文件的步骤(markdown转HTML)
Dec 31 Vue.js
如何在 Vue 表单中处理图片
Jan 26 Vue.js
vue实现轮播图帧率播放
Jan 26 Vue.js
Vue项目打包部署到apache服务器的方法步骤
Feb 01 Vue.js
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 Vue.js
vue3.0封装轮播图组件的步骤
Mar 04 Vue.js
vue完美实现el-table列宽自适应
May 08 Vue.js
vue实现无缝轮播效果(跑马灯)
May 14 Vue.js
vue中div禁止点击事件的实现
Apr 02 Vue.js
Vue3实现简易音乐播放器组件
Aug 14 Vue.js
Vue router配置与使用分析讲解
Dec 24 Vue.js
利用Vue实现简易播放器的完整代码
Dec 30 #Vue.js
vue+element UI实现树形表格
Dec 29 #Vue.js
vue实现树状表格效果
Dec 29 #Vue.js
vue实现图书管理系统
Dec 29 #Vue.js
Vue实现随机验证码功能
Dec 29 #Vue.js
vue3+typeScript穿梭框的实现示例
Dec 29 #Vue.js
Vue.extend 登录注册模态框的实现
Dec 29 #Vue.js
You might like
php中socket通信机制实例详解
2015/01/03 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
PHP查询大量数据内存耗尽问题的解决方法
2016/10/28 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
Json字符串转换为JS对象的高效方法实例
2013/05/01 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
JavaScript定义变量和变量优先级问题探讨
2014/10/11 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
JavaScript Date 知识浅析
2017/01/29 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
2017/07/04 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
基于jQuery实现无缝轮播与左右点击效果
2018/05/13 jQuery
node实现爬虫的几种简易方式
2019/08/22 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
原生js实现日历效果
2020/03/02 Javascript
python中dir函数用法分析
2015/04/17 Python
Python科学画图代码分享
2017/11/29 Python
Python检测网络延迟的代码
2018/05/15 Python
对python中的高效迭代器函数详解
2018/10/18 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
化学系大学生自荐信范文
2014/03/01 职场文书
大学生实习介绍信
2015/05/05 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
Python制作动态字符画的源码
2021/08/04 Python
python lambda 表达式形式分析
2022/04/03 Python