Vue實(shí)現(xiàn)購(gòu)物車基本功能
Vue實(shí)現(xiàn)購(gòu)物車商品 加、減、單選、全選、刪除、價(jià)格更新等功能


Dome和Vue代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>商城</title>
<link rel="stylesheet" href="./css/common.css" >
<link rel="stylesheet" href="./css/cart.css" >
</head>
<body>
<div id="main">
<div class="container">
<div id="cart">
<h1>購(gòu)物車</h1>
<form action="#" method="post">
<table class="form">
<thead>
<tr>
<th width="8%">選擇</th>
<th width="50%">商品</th>
<th width="13%">單價(jià)(元)</th>
<th width="15%">數(shù)量</th>
<th width="14%">金額(元)</th>
</tr>
</thead>
<tbody id="cart-goods-list">
<tr v-for="cart in productList">
<td>
<input type="checkbox" name="good-id" :value="1" v-model="cart.select">
</td>
<td class="goods">
<div class="goods-image">
<img v-bind:src="cart.pro_img">
</div>
<div class="goods-information">
<h3>{{cart.pro_name}}</h3>
<ul>
<li>{{cart.pro_purity}}</li>
<li>{{cart.pro_service}}</li>
</ul>
</div>
</td>
<td>
<span class="price">¥<em class="price-em">{{cart.pro_price.toFixed(2)}}</em></span>
</td>
<td>
<div class="combo">
<input type="button" name="minus" value="-" class="combo-minus" @click="cart.pro_num<2?cart.pro_num=1:cart.pro_num--">
<input type="text" name="count" v-model.number="cart.pro_num" class="combo-value">
<input type="button" name="plus" value="+" class="combo-plus" v-on:click="cart.pro_num++">
</div>
</td>
<td>
<strong class="amount">¥<em class="amount-em">{{(cart.pro_price*cart.pro_num).toFixed(2)}}</em></strong>
</td>
</tr>
</tbody>
<tfoot v-show="productList.length!=0">
<tr>
<td colspan="2">
<label>
<input type="checkbox" name="all" v-model="isSelectAll">
<span @click="">全選</span>
</label>
<a href="#" rel="external nofollow" id="cart-delete" @click="del()">刪除</a>
</td>
<td colspan="3">
<span>合計(jì):</span>
<strong id="total-amount">¥<em id="total-amount-em">{{getTotal}}</em></strong>
<input type="submit" value="立即結(jié)算" id="settlement">
</td>
</tr>
</tfoot>
</table>
</form>
<div v-show="productList.length===0">
購(gòu)物車還是空的哦~快來(lái)購(gòu)物吧~
</div>
</div>
</div>
</div>
</body>
<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
new Vue({
el:"#cart",
data:{
productList:[
{
'pro_name': 'Dior 迪奧 花漾甜心小姐 女士淡香水',//產(chǎn)品名稱
'pro_purity': '50ml',//規(guī)格
'pro_service': "不支持7天無(wú)理由退貨",//售后
'pro_num': 1,//數(shù)量
'pro_img': 'img/1.jpg',//圖片鏈接
'pro_price': 498,//單價(jià),
'select': true ,//選中狀態(tài)
},
{
'pro_name': '迪奧(dior)口紅CD烈艷藍(lán)金唇膏',//產(chǎn)品名稱
'pro_purity': '350g',//規(guī)格
'pro_service': "不支持7天無(wú)理由退貨",//售后
'pro_num': 1,//數(shù)量
'pro_img': 'img/2.jpg',//圖片鏈接
'pro_price': 268,//單價(jià)
'select': true //選中狀態(tài)
},
{
'pro_name': 'LANCÔME 蘭蔻 嫩肌活膚精華肌底液',//產(chǎn)品名稱
'pro_purity': '50ml',//規(guī)格
'pro_service': "不支持7天無(wú)理由退貨",//售后
'pro_num': 1,//數(shù)量
'pro_img': 'img/3.jpg',//圖片鏈接
'pro_price': 598,//單價(jià)
'select': true //選中狀態(tài)
}
]
},
computed:{
getTotal:function(){
var newArr=this.productList.filter(function(val){
return val.select===true;
})
var price=0;
for(var i=0;i<newArr.length;i++){
price+=newArr[i].pro_num*newArr[i].pro_price
}
return price.toFixed(2)
},
isSelectAll:{
get:function(){
return this.productList.every(function(val){
return val.select===true;
})
},
set:function(newValue){
for(var i=0;i<this.productList.length;i++){
this.productList[i].select=newValue;
}
}
}
},
methods:{
del:function(){
if(confirm("確定要?jiǎng)h除嗎")){
var newArr=[];
for(var i=0;i<this.productList.length;i++){
if(this.productList[i].select===false){
newArr.push(this.productList[i])
}
}
this.productList=newArr;
}
}
}
})
</script>
</html>
購(gòu)物車部分CSS代碼
@charset "utf-8";
#main{
padding: 30px 0px;
}
#cart{
background: #FFFFFF;
padding: 40px;
}
#cart h1{
line-height: 40px;
padding: 0px 0px 10px 0px;
}
table.form{
border-collapse: collapse;
empty-cells: show;
margin: 20px 0px;
padding: 0px;
table-layout: fixed;
width: 100%;
}
table.form th,
table.form td{
border-bottom: 1px solid #DDDDDD;
padding: 15px 10px;
text-align: left;
}
table.form{
border-top: 3px solid #DDDDDD;
}
.goods .goods-image img{
border: 1px solid #DDDDDD;
float: left;
height: 100px;
margin: 0px 20px 0px 0px;
}
.goods .goods-information{
float: left;
}
.goods .goods-information ul{
color: #666666;
font-size: 12px;
line-height: 20px;
margin:10px 0px 0px 0px;
}
.price,
.amount,
#total-amount{
color: #E00000;
}
#total-amount{
font-size: 22px;
}
.price em,
.amount em,
#total-amount em{
font-style: normal;
}
.combo .combo-minus,
.combo .combo-value,
.combo .combo-plus{
background: #FFFFFF;
border: 1px solid #DDDDDD;
color: #333333;
float: left;
font-weight: bold;
margin: 0px;
outline: none;
text-align: center;
}
.combo .combo-minus,
.combo .combo-plus{
font-size: 16px;
height: 26px;
line-height: 26px;
padding: 0px;
width: 24px;
}
.combo .combo-value{
border-left: none;
border-right: none;
height: 20px;
line-height: 20px;
padding: 2px;
width: 40px;
}
#cart-delete{
margin-left: 20px;
}
#settlement{
background: #E00000;
border: none;
color: #FFFFFF;
float: right;
font-size: 16px;
height: 40px;
line-height: 40px;
margin: 0px;
outline: none;
padding: 0px;
width: 160px;
}
注:CSS樣式代碼由于太多上面沒(méi)有給全,只給了主要代碼。小伙伴們可以根據(jù)實(shí)際情況修改樣式
關(guān)于vue.js組件的教程,請(qǐng)大家點(diǎn)擊專題vue.js組件學(xué)習(xí)教程進(jìn)行學(xué)習(xí)。
更多vue學(xué)習(xí)教程請(qǐng)閱讀專題《vue實(shí)戰(zhàn)教程》
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue+vant實(shí)現(xiàn)購(gòu)物車全選和反選功能
- Vuex實(shí)現(xiàn)購(gòu)物車小功能
- vue實(shí)現(xiàn)購(gòu)物車列表
- vuex實(shí)現(xiàn)購(gòu)物車的增加減少移除
- vuex實(shí)現(xiàn)購(gòu)物車功能
- vuejs手把手教你寫(xiě)一個(gè)完整的購(gòu)物車實(shí)例代碼
- 基于Vuejs實(shí)現(xiàn)購(gòu)物車功能
- Vue實(shí)現(xiàn)購(gòu)物車功能
- vue實(shí)現(xiàn)商城購(gòu)物車功能
- Vue實(shí)現(xiàn)簡(jiǎn)單購(gòu)物車功能
相關(guān)文章
使用vue2實(shí)現(xiàn)購(gòu)物車和地址選配功能
這篇文章主要介紹了使用vue2實(shí)現(xiàn)購(gòu)物車和地址選配功能,本文通過(guò)實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2018-03-03
element-plus日歷(Calendar)動(dòng)態(tài)渲染以及避坑指南
這篇文章主要給大家介紹了關(guān)于element-plus日歷(Calendar)動(dòng)態(tài)渲染以及避坑指南的相關(guān)資料,這是最近幫一個(gè)后端朋友處理一個(gè)前端問(wèn)題,elementUI中calendar日歷組件內(nèi)容進(jìn)行自定義顯示,實(shí)現(xiàn)類似通知事項(xiàng)的日歷效果,需要的朋友可以參考下2023-08-08
vue el-table 動(dòng)態(tài)添加行與刪除行的實(shí)現(xiàn)
這篇文章主要介紹了vue el-table 動(dòng)態(tài)添加行與刪除行的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
詳解Vue如何實(shí)現(xiàn)字母驗(yàn)證碼
這篇文章主要為大家介紹了Vue如何實(shí)現(xiàn)字母驗(yàn)證碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
el-select如何獲取下拉框選中l(wèi)abel和value的值
在開(kāi)發(fā)業(yè)務(wù)場(chǎng)景中我們通常遇到一些奇怪的需求,例如el-select業(yè)務(wù)場(chǎng)景需要同時(shí)獲取我們選中的label跟 value,下面這篇文章主要給大家介紹了關(guān)于el-select如何獲取下拉框選中l(wèi)abel和value的值,需要的朋友可以參考下2022-10-10

