Vue shopCart 组件开发详解(2)
这样就渲染到 template 里了
<div class="shopCart">
<div class="content">
<div class="content-left">
<div class="logo-wrapper">
<!--徽章 展示选中商品的个数-->
<div class="badge" v-show="totalCount">
{{totalCount}}
</div>
<!--购物车 图标 选择商品和未选择商品 时 动态改变 样式 条件:只要选择了商品即总价不为0 ,样式变-->
<div class="logo" :class="{'active':totalCount}">
<i class="icon-shopping_cart"></i>
</div>
</div>
<!--同理: 总价 不为0 字体高亮-->
<div class="price" :class="{'active':totalPrice}">
¥{{totalPrice}}
</div>
<!--配送费 data.json 提供-->
<div class="desc">
另需要配送费¥{{deliveryPrice}}元
</div>
</div>
<!--根据条件 动态 改变样式-->
<div class="content-right" :class="{'enough':totalPrice>=minPrice}">
{{payDesc}}
</div>
</div>
</div>
相关样式
&.active color white &.enough background #00b43c color white
总结:通过以上学习我们能发现,selectFoods()的变化起着关键作用,它的变化会引起DOM的变化,并最终体现到界面上,而我们不用关注DOM内部的具体实现,这就是vue的一大好处。如果采用jQuery完成这些功能会略显繁杂。
二、cartControl 组件
说明:这个组件是控制购物车小球的。其中涉及到小球的动画
(1) 新增属性 count
说明:
在goods 下的 foods 添加一个属性 count,用来存储用户选中的商品个数,计算商品总价 以及 关联徽章(显示用户选择商品的个数)的变化
方法:通过import Vue from 'vue';使用set接口,通过vue.set()添加属性,当它变化时就能被检测到,从而父组件能获取到count值(遍历选中的商品时使用)
methods:{
addCart(event){ // 点击count 加,
//console.log(event.target);
if (!event._constructed) { // 去掉自带click事件的点击
return;
}
if(!this.foodsele.count){
Vue.set(this.foodsele, 'count', 1)
}else{
this.foodsele.count++
}
},
decreaseCart (event){ // 点击减少
if (!event._constructed) { // 去掉自带click事件的点击
return;
}
if(this.foodsele.count){
this.foodsele.count --
}
}
}
(2)添加按钮 实现transtion 过渡
我们要实现的效果是:当点击添加按钮时,减少按钮出现 并伴随着 旋转、平移以及透明度变化的 一些 动画效果
<transition name='move'> <!--平移动画-->
<div class="cart-decrease" v-show="foodsele.count" @click='decreaseCart($event)'>
<span class="icon-remove_circle_outline inner"></span><!--旋转、透明度动画-->
</div>
</transition>
内容版权声明:除非注明,否则皆为本站原创文章。
