vue实现城市左右联动

 我们先来看一下整体布局效果:

city

 首先,我们想要实现城市左右布局可以滚动需要下载一个插件 betterScroll

然后引入插件,如下所示:

npm i better-scroll
import BScroll from 'better-scroll'
initScroll () {
      this.$nextTick(() => {
        if (!this.Scroll) {
          this.Scroll = new BScroll(this.$refs.body, {
            click: true, // 配置允许点击事件
            scrollY: true, // 可以开启纵向滚动
            probeType: 3, // 开启滚动监听
            bounce: false // 关闭弹性效果
          })
          //Scroll这个对象监听事件,实时获取位置pos.y
          this.Scroll.on('scroll', (pos) => {
            // console.log(pos);
            this.scrollY = Math.abs(Math.round(pos.y))
          })
        } else {
          // 重新计算 better-scroll,当 页面大小发生变化的时候务必要调用确保滚动的效果正常
          this.Scroll.refresh() 
        }
      })
    },

重点:

getCity () {
      var that=this
      axios.get('/city.json').then(function (res){
        that.cityList=res.data.data.cities
        that.$nextTick(()=>{
          that.initScroll()
          that.calculateHeight()
        })
      })
    },

这里的代码一定要在获取数据里面写nextTick()回调里面写代码,因为需要等待数据加载再去初始化scroll和获取右边每一个盒子的高度。

下面我们说一说高度如何获取

calculateHeight () {
      let flagList = this.$refs.body.getElementsByClassName('flag')
      console.log(flagList);
      //每个盒子的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值