微信小程序实现全国机场索引列表

前端之家收集整理的这篇文章主要介绍了微信小程序实现全国机场索引列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文为大家分享微信小程序实现MUI索引列表的具体代码,供大家参考,具体内容如下

效果展示图

这里写图片描述

实现的原理

  • ‘当前选择机场'和右侧的导航栏采用的是固定定位;
  • 左侧的展示窗口的滚动采用的是scroll-view组件;
  • 选择中的字母提示是自己WXSS样式制作。
  • @H_502_21@

    WXML

    <view class="city-layer {{isShowLayer ? '' : 'layer-hide'}}">
    {[code]}

    <view class="current-choose-city">当前选择机场:{{chooseCity}}
    <scroll-view class="city-scroll" scroll-y="true" style="height:{{cityHeight}}px" bindscroll="scroll" scroll-top="{{scrollTop}}">
    <view class="city-Box" wx:for="{{cityList}}" wx:key="{{item.code}}">
    <view class="city-code">{{item.code}}
    <view class="city-list" wx:for="{{item.cityList}}" wx:for-item="city" bindtap="getChooseCity" data-city="{{city}}">
    {{city}}

    WXSS

    /提示点击的字母 /
    .city-layer{
    width: 70px;
    height: 70px;
    line-height: 70px;
    text-align: center;
    border-radius: 50%;
    color: #fff;
    background-color: rgba(0,.7);
    position: fixed;
    top: calc(50% - 35px);
    left:calc(50% - 35px);
    z-index: 11;
    }
    .layer-hide{display: none;}

    JS

    Page({
    data: {
    cityList: city_list.city,chooseCity: '您还未选择机场!',isShowLayer: false,chooseIndex: 0,len: [],code: null,codeHeight: null,cityHeight:null,scrollTop: 0
    },onLoad (options) {
    var windowHeight = wx.getSystemInfoSync().windowHeight;
    var arr = [];

    this.data.cityList.forEach(current => arr.push(current.cityList.length + 1));
    this.setData({
    codeHeight: (windowHeight - 50) / this.data.cityList.length,cityHeight: windowHeight - 50,len: arr
    });
    },getCurrentCode(e){
    var index = 0,sum = 0,self = this;

    for (var i = 0; i < this.data.cityList.length;i++){
    if (this.data.cityList[i].code === e.target.dataset.code){
    index = i
    break;
    }
    }
    for (var j = 0; j < index; j++) {
    sum += this.data.len[j];
    }

    this.setData({
    code: e.target.dataset.code,scrollTop: sum * 40,chooseIndex: index,isShowLayer: true
    });

    setTimeout(() => {
    self.setData({ isShowLayer: false })
    },500);
    },getChooseCity(e){
    this.setData({ chooseCity: e.target.dataset.city });
    }
    })

    总结:

    在onLoad函数中设置左侧的展示高度和右侧导航每一个字母所在盒子的高度; getCurrentCode函数获取点击字母的index,然后进行提示以及500ms后关闭提示; getChooseCity函数获取选择的机场,对chooseCity进行赋值。

    代码简化:

    简化为:

    添加data-index="{{index}}",减少循环的消耗:

    DEMO

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

    原文链接:https://www.f2er.com/weapp/33927.html

猜你在找的微信小程序相关文章