<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" name="viewport" content="width=device-width,initial-scale=1">
<title></title>
<link href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.min.js"></script>
</head>
<style>
*{padding: 0;margin: 0;list-style: none;}
@media (min-width:768px ) {
#app{max-width: 768px;}
}
@media (max-width:375px ) {
#app{min-width: 375px;}
}
#app{height: 100vh;width: 100%;border: 1px solid gainsboro;margin: 0 auto;display: flex;flex-direction: column;}
.head{height: 40px;width: 100%;border-bottom: 1px solid gainsboro;display: flex;align-items: center;}
.head i{color: silver;margin:0 20px;}
.head div{height: 30px;width: 80%;background: #F5F5F5;display: flex;align-items: center;border-radius: 20px;}
.head input{height:100%;outline: none;border: none;border-radius: 20px;padding-left: 10px;font-size: 15px;color: ;background: #F5F5F5;flex: 1;}
.main{flex: 1;display: flex;height:calc(100vh - 40px - 50px);}
.leftlist{height:calc(100vh - 40px - 50px);width: 100px;background: ghostwhite;display: flex;flex-direction: column;overflow-y: auto;}
.leftlist::-webkit-scrollbar{display:none;}
.lis{min-height: 40px ! important;background: ghostwhite;display: flex;justify-content: center;align-items: center;}
.rightlist{flex: 1;}
.bottom{height: 50px;width: 100%;border-top: 1px solid pink;box-shadow:0px -2px 8px 0px rgba(240,128,128,.5);z-index: 2;}
.current{background: white !important;}
.rlist{display: flex;flex-wrap: wrap;padding: 20px;}
.rlist>div{height: 30px; width: 50px;border: 1px solid black;display: flex;justify-content: center;align-items: center;margin: 10px;}
</style>
<body>
<div id="app">
<v-head></v-head>
<v-main></v-main>
<v-bottom></v-bottom>
</div>
<template id="head">
<div class="head">
<i class="fa fa-chevron-left fa"></i>
<div >
<i class="fa fa-search fa"></i><input />
</div>
</div>
</template>
<template id="main">
<div class="main">
<div class="leftlist" >
<div v-for="(item,index) in leftlist" @click="change(item.name)" :class="['lis',listname==item.name?current:' ']">
{{item.classification}}
</div>
</div>
<div class="rightlist">
<component :is='listname'></component>
</div>
</div>
</template>
<template id="bottom">
<div class='bottom'>
</div>
</template>
<template id="hot">
<div class="rlist">
<div v-for="(item,index) in menu">
{{item}}
</div>
</div>
</template>
<template id="phone">
<div class="rlist">
<div v-for="(item,index) in menu">
{{item}}
</div>
</div>
</template>
<template id="computer">
<div class="rlist">
<div v-for="(item,index) in menu">
{{item}}
</div>
</div>
</template>
<template id="ele">
<div class="rlist">
<div v-for="(item,index) in menu">
{{item}}
</div>
</div>
</template>
</body>
<script>
var head={
template:'#head'
}
var main={
template:'#main',
data(){
return{
leftlist:[
{classification:'热门推荐',menu:['空调','手机','电脑'],name:'hot'},
{classification:'手机数码',menu:['空调','手机','电脑'],name:'phone'},
{classification:'电脑办公',menu:['空调','手机','电脑'],name:'computer'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'},
{classification:'家用电器',menu:['空调','手机','电脑'],name:'ele'}
],
listname:'hot',
num:0,
current:'current'
}
},
components:{
'hot':{
template:'#hot',
data(){
return{
menu:['空调','手机','电脑','风扇','微波炉']
}
}
},
'phone':{
template:'#phone',
data(){
return{
menu:['空调','手机','电脑1']
}
}
},
'computer':{
template:'#computer',
data(){
return{
menu:['空调','手机','电脑2']
}
}
},
'ele':{
template:'#ele',
data(){
return{
menu:['空调','手机','电脑3']
}
}
},
},
methods:{
change(it){
this.listname=it
}
}
}
var bottom={
template:'#bottom'
}
new Vue({
el:'#app',
data:{
bottomlist:['首页','分类','购物车','用户'],
fenlei:'热门推荐'
},
components:{
'v-head':head,
'v-main':main,
'v-bottom':bottom
}
})
</script>
</html>
效果: