vue实现点击左侧菜单,右侧跟着显示隐藏

Posted cinderellastory

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue实现点击左侧菜单,右侧跟着显示隐藏相关的知识,希望对你有一定的参考价值。

技术图片

 

 

  1 <template>
  2   <div class="mainMaterial">
  3     <div class="chooseItem">
  4       <div class="navMenus">
  5         <ul>
  6           <li v-for="(item,index) in items" :key="index" :class="{active:index==isActive}" @click="onChange(index)">{{ item.spaceName }}</li>
  7         </ul>
  8       </div>
  9     </div>
 10     <div class="content">
 11       <ul>
 12         <li v-for="(item,index) in findMaterielListVos" :key="index">
 13           <p class="categoryName">{{ item.classifyCategoryName }}</p>
 14           <div class="materialDetail">
 15             <div class="detailsLeft">
 16               <img src="./../../assets/business/material.jpg" alt="">
 17             </div>
 18             <div class="detailsRight">
 19               <p>
 20                 <span>{{ item.spaceName }}</span>
 21                 <span>{{ item.categoryName }}</span>
 22               </p>
 23               <p class="price">
 24                 <span>单价:{{ item.price }}元</span>
 25                 <span>X{{ item.num }}</span>
 26               </p>
 27               <p class="total">
 28                 <span>合计:{{ item.amount }}元</span>
 29               </p>
 30             </div>
 31           </div>
 32         </li>
 33       </ul>
 34     </div>
 35   </div>
 36 </template>
 37 
 38 <script>
 39 export default {
 40   data() {
 41     return {
 42       isActive: false,
 43       result: [],
 44       items: [
 45         {
 46           spaceName: 主卧,
 47           findMaterielListVos: [
 48             {
 49               classifyCategoryName: 瓷砖类-地砖/墙砖,
 50               spaceName: 主卧,
 51               price: 78.00,
 52               amount: 79.0000,
 53               brandName: 欧神诺,
 54               categoryName: 地砖/墙砖,
 55               num: 1.00
 56             },
 57             {
 58               classifyCategoryName: 电器类-油烟机,
 59               spaceName: 主卧,
 60               price: 2380.00,
 61               amount: 2380.0000,
 62               brandName: 美的,
 63               categoryName: 油烟机,
 64               classifyName: 电器类,
 65               num: 1.00
 66             },
 67             {
 68               classifyCategoryName: 开关面板类-开关面板,
 69               spaceName: 主卧,
 70               price: 2380.00,
 71               amount: 2380.0000,
 72               brandName: 美的,
 73               categoryName: 油烟机,
 74               num: 1.00
 75             },
 76             {
 77               classifyCategoryName: 橱柜类-柜体,
 78               spaceName: 主卧,
 79               relateCode: bc-cl-13773,
 80               relateName: 测试材料,
 81               brandName: TOTO,
 82               price: 0.00,
 83               amount: 0.0000,
 84               categoryName: 柜体,
 85               classifyName: 橱柜类,
 86               num: 1.00
 87             }
 88           ]
 89         },
 90         {
 91           spaceName: 厨房,
 92           findMaterielListVos: [
 93             {
 94               classifyCategoryName: 瓷砖类-地砖/墙砖,
 95               id: 39759,
 96               spaceName: 厨房,
 97               relateCode: cl-cz-qdz-osn-0000489,
 98               relateName: 大理石鱼肚白,
 99               price: 78.00,
100               amount: 79.0000,
101               remark: 额外费用:1.00元;,
102               brandName: 欧神诺,
103               model: ELX00180S,
104               categoryName: 地砖/墙砖,
105               classifyName: 瓷砖类,
106               materieldetailRecordStr: 额外费用:1.00元;,
107               num: 1.00
108             }
109           ]
110         }
111       ]
112     }
113   },
114   created() {
115     this.findMaterielListVos = this.items[0].findMaterielListVos
116     this.result = this.items
117   },
118   methods: {
119     onChange(index) {
120       this.isActive = index
121       let array = []
122       for (let i = 0; i < this.result.length; i++) {
123         if (index === i) {
124           this.items[i] = this.result[i]
125           array = this.items[i].findMaterielListVos
126         }
127       }
128       this.findMaterielListVos = array
129     }
130   }
131 }
132 </script>
133 
134 <style scoped lang="less">
135 .empty{
136   text-align: center;
137   font-size: 14px;
138   margin-top:20px;
139   color: #9c9c9c;
140 }
141 .mainMaterial{
142   display: flex;
143   height: 100vh;
144   .chooseItem{
145     background: #fff;
146     width: 30%;
147     .navMenus{
148       ul{
149         li{
150           text-align: center;
151           padding:10px 0;
152           border-bottom: 1px solid #e3e3e3;
153           &.active{
154             background: #EA5520;
155             color: #fff;
156           }
157         }
158       }
159     }
160   }
161   .content{
162     background: #fff;
163     margin-left: 6px;
164     padding-left: 10px;
165     width: 70%;
166     ul{
167       li{
168         border-bottom: 1px solid #e3e3e3;
169         padding-top: 10px;
170         padding-bottom: 10px;
171         .categoryName{
172           color: #333;
173           font-size: 16px;
174           padding-bottom: 10px;
175         }
176         .materialDetail{
177           display: flex;
178           align-items: center;
179           .detailsLeft{
180            img{
181              width: 110px;
182              height: 70px;
183            }
184           }
185           .detailsRight{
186             margin-left: 8px;
187             width: 50%;
188             p{
189               color: #333;
190               font-size: 15px;
191               line-height: 24px;
192               &.price{
193                 font-size: 13px;
194                 color: #666;
195                 display: flex;
196                 justify-content: space-between;
197               }
198               &.total{
199                 color:#EA5520;
200               }
201             }
202           }
203         }
204       }
205     }
206   }
207 }
208 </style>

 

以上是关于vue实现点击左侧菜单,右侧跟着显示隐藏的主要内容,如果未能解决你的问题,请参考以下文章

vue.js 左侧二级菜单显示与隐藏切换的实例代码

vue2.0实现点击后显示,再次点击隐藏

Vue仿制外卖点餐界面的左右侧菜单联动:点击左侧使右侧滚动到对应位置,右侧滚动时选中左侧对应选项

VUE项目实战21用户列表开发-基本UI布局

duilib 实现 XML重用(item完全重合的CList)

android之SlideMenu双向滑动