美文网首页
2018-09-17vue.js实现购物车效果案例、vue.js

2018-09-17vue.js实现购物车效果案例、vue.js

作者: 不与众生 | 来源:发表于2018-09-18 19:13 被阅读0次

一、简单的购物车案例
body部分:

 <div class="container"> 
  <table class="table table-bordered text-center"> 
   <thead> 
              <tr> 
                        <th class="text-center">编号</th>
                          <th class="text-center">名称</th> 
                          <th class="text-center">单价</th>
                             <th class="text-center">数量</th>
                              <th class="text-center">小计</th>
                        </tr>
           </thead> 
            <tbody>
                       <tr v-for="(value,index) in arr">
                           <td>{{index+1}}</td>
                             <td>{{value.name}}</td>
                        <td>{{value.price}}</td>
                   <td>
                       <button @click="add(index)">-</button> 
                        <input type="text" v-model="value.num" style="width:30px"> 
                          <button @click="alt(index)">+</button> 
                       </td>
                           <td>{{value.price*value.num}}</td> 
                   </tr> 
                   <tr> 
                         <td colspan="5">总价:{{arrs}}</td>
                     </tr>
                </tbody>
             </table>
             </div>

js部分:

         <script src="js/vue.js"></script>
          <script>
                 new Vue({
                    el:".container",
             data:{
                     arr:[
                           {name:'香蕉',price:1,num:1,total:1},
                           {name:'苹果',price:2,num:1,total:2},
                           {name:'鸭梨',price:3,num:1,total:3}
                     ],
             arrs:6
      },
    methods:{
        alt:function(index){
            //1.数量加
           this.arr[index].num++;
        //  2.小计加
            this.arr[index].total=this.arr[index].price*this.arr[index].num
            this.getTotal()
        },
        add:function(index){
           if(this.arr[index].num>1){
        //1. 数量减
               this.arr[index].num--;
        //    2.小计减
               this.arr[index].total=this.arr[index].price*this.arr[index].num
           }
            this.getTotal()
        },
        getTotal:function(){
            //总价
            for(var i=0,sum=0;i<this.arr.length;i++){
                sum+=this.arr[i].total
            }
            this.arrs=sum;
        }
  }
})
 </script>

效果图:


购物车.png

二、选项卡
body部分:

  <div id="itany">
      <ul class="list">
      <li v-for='(value,index) in arr' @click='chg(index)'>{{value.name}}</li>
  </ul>
  <ul class="content">
    <li v-for="(value,index) in arr" v-show="value.flag">{{value.cont}}</li>
</ul>
</div>

js部分:

<script src="js/vue.js"></script>
 <script>

new Vue({
    el:'#itany',
    data:{
       arr:[
           {name:'选项卡一',cont:'这是选项卡一',flag:true},
           {name:'选项卡二',cont:'这是选项卡二',flag:false},
           {name:'选项卡三',cont:'这是选项卡三',flag:false}
       ]
    },
    methods:{
           chg:function(ind){
            for(var i=0;i<this.arr.length;i++){
                this.arr[i].flag=false;
            }
            this.arr[ind].flag=true;
        }
    }
  })
 </script>

css部分:

<style>
*{
    margin:0;
    padding:0;
    box-sizing: border-box;
}
a{
    text-decoration:none;
    color:#333;
}
li{
    list-style: none;
    
}
#itany{
    width:450px;
    margin: 100px auto;
}
.list{
    overflow: hidden;
    width:450px;
}
.list>li{
    float:left;
    text-align: center;
    font-size:30px;
    width:150px;
    background:red;
}
.list>li:nth-child(2){
    background:cyan;
}
.list>li:nth-child(3){
    background:yellow;
}

.content>li{
    width:450px;
    height: 150px;
    line-height: 150px;
    text-align: center;
    border:1px solid #000; 
    background:red;
}
.content>li:nth-child(2){
    background:cyan;
}
.content>li:nth-child(3){
    background:yellow;
}
 </style>

效果图:


选项卡.png

相关文章

网友评论

      本文标题:2018-09-17vue.js实现购物车效果案例、vue.js

      本文链接:https://www.haomeiwen.com/subject/umymnftx.html