vue基于better-scroll仿京东分类列表


Posted in Javascript onJune 30, 2020

本文实例为大家分享了vue基于better-scroll仿京东分类列表的具体代码,供大家参考,具体内容如下

效果图目录结构

vue基于better-scroll仿京东分类列表

vue基于better-scroll仿京东分类列表

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组件学习教程进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 面向对象全新理练之数据的封装
Dec 03 Javascript
jquery $.each()使用探讨
Sep 23 Javascript
javascript使用location.search的示例
Nov 05 Javascript
javascript中expression的用法整理
May 13 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
Jun 17 Javascript
jQuery中常用的遍历函数用法实例总结
Sep 01 Javascript
完美实现八种js焦点轮播图(下篇)
Apr 20 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
Aug 28 Javascript
微信小程序 跳转传递数据的实例
Jul 06 Javascript
input输入框内容实时监测(附代码)
Aug 15 Javascript
Node如何后台数据库使用增删改查功能
Nov 21 Javascript
js实现石头剪刀布游戏
Oct 11 Javascript
vue使用better-scroll实现滑动以及左右联动
Jun 30 #Javascript
vue基于better-scroll实现左右联动滑动页面
Jun 30 #Javascript
Postman动态获取返回值过程详解
Jun 30 #Javascript
JS简易计算器实例讲解
Jun 30 #Javascript
如何在postman中添加cookie信息步骤解析
Jun 30 #Javascript
JSON获取属性值方法代码实例
Jun 30 #Javascript
JS猜数字游戏实例讲解
Jun 30 #Javascript
You might like
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
PHP 在线翻译函数代码
2009/05/07 PHP
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
javascript globalStorage类代码
2009/06/04 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
浅谈vue-cli 3.0.x 初体验
2018/04/11 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
小学岗位竞聘方案
2014/01/22 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
市场专员岗位职责
2014/02/14 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
公司2015年终工作总结
2015/05/26 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
学校隐患排查制度
2015/08/05 职场文书