上篇,我们实现了城市列表的样式,屏蔽了浏览器的滑动,同时,在子元素中没有设置滑动。本篇我们来设置一个友好的滑动与字母表的布局。
我们使用第三方包 BetterScroll
地址:https://github.com/ustbhuangyi/better-scroll
先,在项目里下载进来
npm install better-scroll --save
然后可以重启服务器使用了
根据官网给出的介绍,如下。
我们要调整一下我们的元素结构,加一层 content 类。
然后,使用这个插件,官方示例
借助 ref ,我们可以获得dom 元素.
<template> 与 <script>代码
<template>
<div class="list" ref="wrapper">
<div>
<div class="area">
<div class="title border-topbottom">当前城市</div>
<div class="button-list">
<div class="button-wraper">
<div class="button">北京</div>
</div>
</div>
</div>
<div class="area">
<div class="title border-topbottom">热门城市</div>
<div class="button-list">
<div class="button-wraper">
<div class="button">北京</div>
</div>
<div class="button-wraper">
<div class="button">北京</div>
</div>
<div class="button-wraper">
<div class="button">北京</div>
</div>
<div class="button-wraper">
<div class="button">北京</div>
</div>
<div class="button-wraper">
<div class="button">北京</div>
</div>
</div>
</div>
<div class="area">
<div class="title border-topbottom">A</div>
<div class="item-list">
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
</div>
</div>
<div class="area">
<div class="title border-topbottom">A</div>
<div class="item-list">
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
</div>
</div>
<div class="area">
<div class="title border-topbottom">A</div>
<div class="item-list">
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
<div class="item border-bottom">阿拉尔</div>
</div>
</div>
</div>
</div>
</template>
<script>
import Bscroll from 'better-scroll'
export default {
name: 'CityList',
mounted () {
this.scroll = new Bscroll(this.$refs.wrapper)
}
}
</script>
可以啦。
下面我们来创建右侧字母表。
这是一个新组件。在city/components 中新建一个组件 Alphabet.vue
初始化代码如下。
<template>
<ul class="list">
<li class="item">A</li>
<li class="item">A</li>
<li class="item">A</li>
<li class="item">A</li>
<li class="item">A</li>
<li class="item">A</li>
</ul>
</template>
<script>
import Bscroll from 'better-scroll'
export default {
name: 'CityAlphabet'
}
</script>
<style lang="stylus" scoped>
@import '~styles/variables.styl'
</style>
然后,在 City.vue 中引入。
最终,Alphabet.vue 代码,如下。
<template>
<ul class="list">
<li class="item">A</li>
<li class="item">A</li>
<li class="item">A</li>
<li class="item">A</li>
<li class="item">A</li>
<li class="item">A</li>
</ul>
</template>
<script>
import Bscroll from 'better-scroll'
export default {
name: 'CityAlphabet'
}
</script>
<style lang="stylus" scoped>
@import '~styles/variables.styl'
.list
display: flex
flex-direction: column
justify-content: center
position: absolute
top: 1.5rem
right: 0
bottom: 0
width: .4rem
.item
line-height: .4rem
text-align: center
color: $bgColor
</style>
好啦,可以提交合并啦。