vue基于better-scroll仿京东分类列表
更新时间:2020年7月1日 11:30 点击:2060
本文实例为大家分享了vue基于better-scroll仿京东分类列表的具体代码,供大家参考,具体内容如下
效果图和目录结构
1、main.js(需要安装router)
import Vue from 'vue' import App from './App.vue' import router from './router' import '../src/assets/js/mock' import axios from 'axios' axios.defaults.baseURL='http://mockjs.com/api' Vue.prototype.$http=axios Vue.config.productionTip = false new Vue({ router, render: h => h(App) }).$mount('#app')
2、router.js
如果字体图标引入错误,百度阿里字体图标引入方法
import Vue from 'vue' import Router from 'vue-router' import './assets/css/iconfont.css' //全局引入字体图标 Vue.use(Router) export default new Router({ linkExactActiveClass:'active', mode: 'history', base: process.env.BASE_URL, routes: [ { path: '/', name: 'home', component: ()=>import('./views/home.vue') }, { path: '/class', name: 'class', component: () => import('./views/class.vue') }, { path: '/shopcart', name: 'shopcart', component: () => import('./views/shopcart.vue') }, { path:'/me', name:'me', component:()=>import('./views/me.vue') } ] })
3、App.vue
<template> <div id="app"> <router-view></router-view> <v-tabbar></v-tabbar> </div> </template> <script> import tabbar from '../components/tabbar'; export default { components:{ 'v-tabbar':tabbar, }, } </script> <style lang="scss"> * { margin: 0; padding: 0; } html { height: 100%; } body { height: 100%; background-color: #efeff4; } a { text-decoration: none; color: #000; } li { list-style: none; } .clearfix:after { content: '.'; display: block; clear: both; visibility: hidden; height: 0; font-size: 0; } #app { font-family: "Avenir", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; height: 100%; } </style>
4、tabbar.vue
<template> <div class="tabbar"> <div class="tabbar"> <router-link class="tab_list" to="/" exact> <i class="iconfont"></i> <p>首页</p> </router-link> <router-link class="tab_list" to="/class"> <i class="iconfont"></i> <p>分类</p> </router-link> <router-link class="tab_list" to="/shopcart"> <i class="iconfont"></i> <p>购物车</p> </router-link> <router-link class="tab_list" to="/me"> <i class="iconfont"></i> <p>我的</p> </router-link> </div> </div> </template> <style lang="scss" scoped> .tabbar { position: fixed; display: flex; bottom: 0; left: 0; width: 100%; height: 42px; padding-top: 8px; background-color: #fff; .tab_list { flex: 1; i { font-size: 18px; } p { font-size: 14px; } } .active { color: #ffaf77; } } </style> 5、class.vue <template> <div class="class"> <div class="head"> <i class="iconfont"></i> <span>分类</span> </div> <div class="main"> <div class="wrapper" ref="wrapper"> <ul class="content"> <!-- 分类列表 --> <li v-for="(item,index) in detialList" :key="index" @click="listClick(index)" :class="index===active?'active':''">{{item.list}}</li> </ul> </div> <div class="detialList_box"> <!-- 分类详情列表 --> <ul class="detialList clearfix" v-for="(item,index) in detialList" v-show="index===active" :key="index"> <li class="detial_title">{{item.list}}</li> <li v-for="(item,index) in item.detial" :key="index"> <img :src="item.src" alt=""> <p>{{item.text}}</p> </li> </ul> <div class="padding_color"></div> </div> </div> </div> </template> <script> import BScroll from "better-scroll"; export default { data() { return { detialList: [ //分类数据 { list:'保健品', detial:[ {src:require('../assets/images/shop1.png'),text:'爱他美'}, {src:require('../assets/images/shop1.png'),text:'爱他美'}, {src:require('../assets/images/shop1.png'),text:'爱他美'}, {src:require('../assets/images/shop1.png'),text:'爱他美'}, {src:require('../assets/images/shop1.png'),text:'爱他美'}, {src:require('../assets/images/shop1.png'),text:'爱他美'}, ] }, { list:'酒水', detial:[ {src:require('../assets/images/shop1.png'),text:'酒水'}, {src:require('../assets/images/shop1.png'),text:'酒水'}, {src:require('../assets/images/shop1.png'),text:'酒水'}, {src:require('../assets/images/shop1.png'),text:'酒水'}, {src:require('../assets/images/shop1.png'),text:'酒水'}, {src:require('../assets/images/shop1.png'),text:'酒水'}, ] }, { list:'茶叶', detial:[ {src:require('../assets/images/shop1.png'),text:'茶叶'}, {src:require('../assets/images/shop1.png'),text:'茶叶'}, {src:require('../assets/images/shop1.png'),text:'茶叶'}, {src:require('../assets/images/shop1.png'),text:'茶叶'}, {src:require('../assets/images/shop1.png'),text:'茶叶'}, {src:require('../assets/images/shop1.png'),text:'茶叶'}, ] }, { list:'农产品', detial:[ {src:require('../assets/images/shop1.png'),text:'农产品'}, {src:require('../assets/images/shop1.png'),text:'农产品'}, {src:require('../assets/images/shop1.png'),text:'农产品'}, {src:require('../assets/images/shop1.png'),text:'农产品'}, {src:require('../assets/images/shop1.png'),text:'农产品'}, {src:require('../assets/images/shop1.png'),text:'农产品'}, ] }, ], active:0, detialtext:'保健品' }; }, methods: { listClick(index){ //显示隐藏分类详情 this.active=index; this.detialtext=index; } }, created() { // mockjs模拟数据 // this.$http.get("/detial").then(res => { // this.detialList=res.data.detials // }); }, mounted() { this.$nextTick(() => { this.scroll = new BScroll(this.$refs.wrapper, { //better-scroll初始化 scrollY, //竖向滚动 click:true //滚动区域可触发点击事件 }); }); } }; </script> <style lang="scss" scoped> .class { height: 100%; .head { position: fixed; z-index: 999; top: 0; left: 0; height: 44px; width: 100%; line-height: 44px; text-align: center; color: #fff; background-color: #ff8c3c; i { position: absolute; left: 10px; } } .main { display: flex; height: 100%; .wrapper { overflow: hidden; width: 80px; height: 100%; background-color: #fff; .content { padding-top: 40px; padding-bottom: 80px; li { height: 40px; width: 80px; line-height: 40px; padding-left: 10px; text-align: left; background-color: #fff; border: 1px solid #efeff4; } .active { background-color: #efeff4; border-left: 2px solid #ff0000; } } } .detialList_box { flex: 1; overflow: hidden; margin: 0 8px; background-color: #fff; .detialList { padding-bottom: 20px; li { float: left; width: 33.3333333%; img { width: 100%; } } .detial_title{ height: 40px; width: 100%; line-height: 40px; margin-top: 40px; background-color: #efeff4; } } .padding_color { background-color: #efeff4; height: 100%; } } } } </style>
关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。
上一篇: 微信小程序用户盒子、宫格列表的实现
下一篇: JS常见错误(Error)及处理方案详解
相关文章
- 这篇文章主要介绍了vue中activated的用法,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下...2021-01-03
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
这篇文章主要介绍了基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23- 这篇文章主要介绍了Vue基于localStorage存储信息代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-16
Antd-vue Table组件添加Click事件,实现点击某行数据教程
这篇文章主要介绍了Antd-vue Table组件添加Click事件,实现点击某行数据教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-17- 这篇文章主要介绍了vue 监听 Treeselect 选择项的改变操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-01
- 这篇文章主要介绍了vue 实现动态路由的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-06
- 这篇文章主要介绍了Vue组件跨层级获取组件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-28
- 这篇文章主要介绍了vue 获取到数据但却渲染不到页面上的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-19
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
这篇文章主要介绍了antdesign-vue结合sortablejs实现两个table相互拖拽排序功能,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-09vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
这篇文章主要介绍了vuejs element table 表格添加行,修改,单独删除行,批量删除行操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-18- 这篇文章主要介绍了vue treeselect获取当前选中项的label实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-01
- 这篇文章主要给大家介绍了关于Vue中slot-scope的深入理解,这个教程非常适合初学者,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-17
- 这篇文章主要介绍了Vue 3.0 中 jsx 语法使用,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下...2020-11-13
- 最常见的多环境配置,就是开发环境配置,和生产环境配置,本文主要介绍了vue项目多环境配置的实现,感兴趣的可以了解一下...2021-07-20
vue项目页面嵌入代码块vue-prism-editor的实现
这篇文章主要介绍了vue项目页面嵌入代码块vue-prism-editor的实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-30vue Treeselect下拉树只能选择第N级元素实现代码
这篇文章主要介绍了vue Treeselect下拉树只能选择第N级元素实现代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-01- 这篇文章主要为大家详细介绍了vue实现同时设置多个倒计时,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-05-20
解决vue的router组件component在import时不能使用变量问题
这篇文章主要介绍了解决vue的router组件component在import时不能使用变量问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27Ant design vue table 单击行选中 勾选checkbox教程
这篇文章主要介绍了Ant design vue table 单击行选中 勾选checkbox教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-25- 这篇文章主要为大家详细介绍了vue实现div单选多选功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-07-16