vue实现购物车小案例
本文实例为大家分享了vue实现购物车小案例的具体代码,供大家参考,具体内容如下
最终效果
HTML部分:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>shopcar.html</title>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<link rel="stylesheet" href="css/shopcar.css" >
<script src="js/shopcar.js"></script>
</head>
<body>
<div class="content1" id="content1">
<div class="con1">
<input type="checkbox" id="all" class="all">
<p>全选</p>
<p>商品</p>
<p>单价</p>
<p>数量</p>
<p>小计</p>
<p>操作</p>
</div>
<div class="con2">
<ul class="uls1">
<input type="checkbox" class="jingdong">
<p class="uls1p2">京东自营</p>
</ul>
<ul class="uls1a">
<p>满赠</p>
<a href="#" >活动商品满19,即可领取商品一件></a>
<p>查看赠品</p>
<a href="#" >去凑单</a>
</ul>
<ul class="uls2" id="box">
<input type="checkbox" class="all all1">
<a href="#" >
<img src="img/aaa.jpg" alt="">
<p>OPPO R11全网通双卡双待 64G 32G<br> 手机 玫瑰金色</p>
</a>
<p class="weight"><i id="weight">¥2000</i></p>
<button class="min" @click="sub(1,2000)">-</button>
<input ref="add1" type="text" class="txt" v-model="add1">
<button class="add" @click="add(1,2000)">+</button>
<p class="xiaoji"><i id="xiaoji1">¥{{add2}}</i></p>
<p class="a666 b666">删除</p>
<p class="a666">移到我的关注</p>
<p class="a666">加到我的关注</p>
</ul>
<ul class="uls2" id="box2">
<input type="checkbox" class="all all2">
<a href="#" >
<img src="img/bbb.jpg" alt="">
<p>OPPO R11全网通双卡双待 64G 32G<br> 手机 玫瑰金色</p>
</a>
<p class="weight"><i id="weight">¥3000</i></p>
<button class="min" @click="numsub(1,3000)">-</button>
<input ref="num1" type="text" class="txt" v-model="num1">
<button class="add" @click="numadd(1,3000)">+</button>
<p class="xiaoji"><i id="xiaoji1">¥{{num2}}</i></p>
<p class="a666 b666">删除</p>
<p class="a666">移到我的关注</p>
<p class="a666">加到我的关注</p>
</ul>
<div class="uls4">
<div class="uls4L">
<input type="checkbox" class="all">
<a href="#" class="delete">删除选中商品</a>
<a href="#" >移到我的关注</a>
<a href="#" >清除下柜商品</a>
</div>
<div class="uls4R">
<div class="uls4a">
<div class="uls4a1">
<div class="aaa">
<p>已选择<i class="chose">0</i>件商品^</p>
<p>总价:<span>¥</span><i>{{num3}}</i></p>
</div>
<p class="bbb">已节省:¥- 00.0</p>
</div>
</div>
<div class="uls4b">
<a href="gouwu.html" rel="external nofollow" >去结算</a>
</div>
</div>
</div>
</div>
</div>
<div class="fixed">
<p>京东商城</p>
<span>您确认删除吗?</span>
<button class="sure">确认</button>
<button class="quxiao">取消</button>
</div>
</body>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script src="js/jquery-1.8.3.min.js"></script>
<script src="js/shopcar.js"></script>
<script type="text/javascript">
</script>
css部分
/* common */
body,div,dl,dt,dd,ul,li,h1,h2,h3,h4,h5,h6,code,form,input,textarea,p,th,td,fieldset,legend,figure{
margin:0;
padding:0;
}
body{
font-family:"微软雅黑",Arial;
}
ul,ol{
list-style:none;
}
a{
text-decoration:none;
}
img{
border:0;
}
/* content1 */
.content1{
width: 100%;
}
.con1{
width:952px;
height: 36px;
margin:0 auto;
background: #f3f3f3;
}
.con1 input{
float: left;
margin-top: 10px;
}
.con1 p{
float: left;
font-size: 12px;
line-height: 36px;
}
.con1 p:nth-child(3){
margin-left: 60px;
}
.con1 p:nth-child(4){
margin-left: 300px;
}
.con1 p:nth-child(5){
margin-left: 93px;
}
.con1 p:nth-child(6){
margin-left: 93px;
}
.con1 p:nth-child(7){
margin-left: 93px;
}
.con1 p:nth-child(8){
margin-left: 93px;
}
.con2{
width: 952px;
height: 364px;
margin:0 auto;
margin-top: 15px;
}
.con2 ul:first-child{
width: 100%;
height: 36px;
border-bottom: 1px solid #ececec;
}
.uls1 input, .uls1 p, .uls1 img{
float: left;
margin-top: 10px;
}
.uls1{
background: white;
}
.uls1 p{
font-size: 12px;
}
.all{
margin-right: 10px;
margin-left: 20px;
}
.uls1p1{
margin-right: 20px;
font-weight: 600;
}
.jingdong{
margin-left: 20px;
}
.uls1a{
width: 100%;
height:37px;
border-top: 2px solid #aaaaaa;
}
.uls1a p,.uls1a a{
float: left;
}
.uls1a p:nth-child(1){
font-size: 14px;
width: 35px;
height: 20px;
border: 1px solid #f5993c;
text-align: center;
line-height: 20px;
color: #ff9933;
margin-left: 20px;
margin-right: 20px;
margin-top: 5px;
}
.uls1a a:nth-child(2){
font-size: 12px;
margin-top: 10px;
margin-right: 20px;
color: #999999;
}
.uls1a p:nth-child(3){
width: 60px;
height: 20px;
background:red;
text-align: center;
line-height: 20px;
color: white;
font-size: 14px;
margin-top: 5px;
}
.uls1a a:nth-child(4){
font-size: 12px;
margin-top: 10px;
margin-left: 10px;
color: #666666;
}
.uls1p2{
margin-left: 10px;
color: white;
width: 55px;
height: 17px;
background: #e4393b;
text-align: center;
}
.uls2{
width: 100%;
height: 98px;
border-bottom:1px dashed #ececec;
background: white;
}
.uls2 input,.uls2 a,.uls2 img,.uls2 li,.weight,button{
float: left;
}
.uls2 a img{
width: 60px;
border: 1px solid #ececec;
margin-top: 17px;
}
.uls2 p,.uls2 span{
font-size: 12px;
}
.uls2 a p{
font-size: 12px;
color: #666666;
margin-top: 16px;
float: left;
margin-left: 10px;
}
.uls2 input{
margin-top: 40px;
}
.uls2 li span{
display: block;
}
.uls2 .txt{
width: 32px;
height: 19px;
border: 1px solid #cccccc;
border-left: none;
border-right: none;
outline:none;
text-indent: 10px;
margin-top: 20px;
font-weight: 600;
font-size: 12px;
}
.weight{
margin-left: 150px;
margin-top: 19px;
}
.uls2 li{
margin-top: 19px;
margin-left: 66px;
margin-right: 37px;
}
.uls2 button{
width: 20px;
height: 21px;
border: none;
border: 1px solid #cccccc;
background: white;
margin-top: 20px;
outline:none;
cursor: pointer;
}
.uls2 li p{
color: #999999;
text-decoration: line-through;
}
.uls2 a .laji{
width: 18px;
float: left;
margin-left: 60px;
margin-top: 20px;
}
.xiaoji{
float: left;
margin-left: 47px;
margin-top: 20px;
margin-right: 80px;
}
.content1 i{
font-style: normal;
}
.uls3{
width: 100%;
height: 36px;
border-bottom: 1px dashed #cccccc;
background: white;
}
.heji{
float: right;
margin-right: 20px;
}
.heji p,.heji span{
float: left;
font-size: 12px;
line-height: 36px;
}
.heji span{
color: #999999;
}
.heji p:nth-child(2),.heji p:nth-child(4){
margin-right: 44px;
}
.uls4{
width: 100%;
height: 60px;
border-top: 1px solid #cccccc;
border-bottom: 1px solid #cccccc;
margin-top: 15px;
background: white;
}
.uls4L{
float: left;
margin-left: 10px;
}
.uls4R{
float: right;
}
.uls4L p{
float: left;
line-height: 60px;
font-size: 12px;
color: #999999;
margin-right: 10px;
}
.uls4L input{
float: left;
margin-top: 25px;
margin-right: 10px;
}
.uls4L a{
font-size: 12px;
color: #999999;
line-height: 60px;
}
.uls4L a:first-child{
margin-right: 5px;
}
.uls4a,.uls4b{
float: left;
}
.uls4a1 p{
float: left;
font-size: 12px;
}
.uls4a2 p ,.uls4a2 span{
float: left;
font-size: 12px;
margin-top: 10px;
}
.uls4a{
margin-right: 20px;
}
.aaa p{
font-size: 12px;
color: #999999;
}
.aaa p:first-child{
margin-right: 20px;
margin-top: 20px;
}
.aaa p:last-child{
margin-top: 20px;
}
.aaa span,.aaa i{
color: red;
font-weight: 600;
}
.bbb{
float: left;
color: #999999;
}
.shopnum{
color: #ff9933;
font-weight: 600;
}
.uls4b a{
width: 70px;
height: 61px;
display: block;
background: red;
font-size: 14px;
color: white;
font-weight: 600;
text-align: center;
line-height: 60px;
}
.weight{
margin-right: 60px;
}
.a666{
cursor: pointer;
}
.fixed{
position: fixed;
width: 400px;
height: 200px;
background: white;
z-index: 200;
top:40%;
left: 30%;
border: 1px solid red;
display: none;
}
.fixed p{
width: 380px;
height: 30px;
background: red;
font-size: 12px;
color: white;
line-height: 30px;
padding-left: 20px;
}
.fixed span{
display: block;
color: #666666;
margin-top: 20px;
text-align: center;
}
.fixed button:nth-child(3){
margin-left: 140px;
}
.fixed button{
margin-right: 20px;
border: none;
width: 50px;
height: 30px;
margin-top: 50px;
border: 1px solid red;
color: red;
background: white;
}
js部分
//基础加减
new Vue({
el:"#content1",
data:{
add1:1,
add2:2000,
num1:1,
num2:3000,
num3:5000, //设置总价的最小值
},
methods:{
add:function(inc,inc2,inc3){
this.add1 += inc;
this.add2 += inc2;
this.num3 = this.add2 +this.num2;
},
sub:function(dec,dec2,dec3){
this.add1 -= dec;
this.add2 -= dec2;
this.num3 = this.add2 +this.num2;
if(this.add1 <= 1){
this.add1 =1;
}
if(this.add2 <= 2000){
this.add2 =2000;
}
if(this.num3 <= 5000){
this.num3 =5000;
}
},
numadd:function(mun1,mun2,mun3){
this.num1 += mun1;
this.num2 += mun2;
this.num3 = this.add2 +this.num2;
this.num3 = this.add2 +this.num2;
},
numsub:function(mun1,mun2,mun3){
this.num1 -= mun1;
this.num2 -= mun2;
this.num3 = this.add2 +this.num2;
if(this.num1 <= 1){
this.num1 =1;
}
if(this.num2 <= 3000){
this.num2 =3000;
}
if(this.num3 <= 5000){
this.num3 =5000;
}
},
}
});
$(function(){
$(".b666").click(function(){
var $this = $(this);
$(".fixed").css("display","block");
$(".sure").click(function(){
$this.parent().css("display","none");
$(this).parent().css("display","none");
});
$(".quxiao").click(function(){
$(this).parent().css("display","none");
});
});
});
//全选
$("#all").click(function(){
if($("#all[type='checkbox']").prop("checked") == true){
$(".all").attr('checked', true);
$(".chose").html(2);
}else{
$(".all").attr('checked', false);
$(".chose").html(0);
}
});
$(".all1").click(function(){
if($(".all1[type='checkbox']").prop("checked") == true){
$(".chose").html(1);
}else{
$(".chose").html(0);
}
});
$(".all2").click(function(){
if($(".all2[type='checkbox']").prop("checked") == true){
$(".chose").html(1);
}else{
$(".chose").html(0);
}
});
$(".delete").click(function(){
if($(".all[type='checkbox']").prop("checked") == false){
return;
}
if($("#all[type='checkbox']").prop("checked") == true){
$(".uls2").css("display","none");
$(".chose").html(0);
}
});
以上是 vue实现购物车小案例 的全部内容, 来源链接: utcz.com/z/341908.html