vue3 点击字母 滚动到对应城市首字母

这里只放核心代码,用原生Js实现,其它的看了都太花俏,难用

citys 放的是所有城市数据  太长了,这里随便放几个

<template>

// 左边滚动区域
    <div class="listtest"  id="mTab">

        <div class="area" v-for="(item, key) of citys" :key="key"  :id="key" style="height: 100px;">
            <div class="title border-topbottom">{{ key }}</div>
        </div>
    </div>
// 右边字母点击
    <div class="letter">
        <div class="item" v-for="item of letters" :key="item" @click="handleLetterClick">
            {{ item }}
        </div>
    </div>
</template>
<script setup>
const citys = {
    "A": [{
        "id": 56,
        "spell": "aba",
        "name": "阿坝"
    }],
    "B": [{
        "id": 1,
        "spell": "beijing",
        "name": "北京"
    },],
    "C": [{
        "id": 2,
        "spell": "chongqing",
        "name": "重庆"
    }],
    "D": [{
        "id": 9,
        "spell": "dalian",
        "name": "大连"
    }],
    "E": [{
        "id": 111,
        "spell": "eerduosi",
        "name": "鄂尔多斯"
    }],
    "F": [{
        "id": 11,
        "spell": "foshan",
        "name": "佛山"
    }],
    "G": [{
        "id": 13,
        "spell": "guangzhou",
        "name": "广州"
    }],
    "H": [{
        "id": 15,
        "spell": "haerbin",
        "name": "哈尔滨"
    }],
}
let letters = computed(() => Object.keys(citys))



const handleLetterClick = (e) => {
    e.stopPropagation();
    document.getElementById('mTab').scrollTo({ top: document.getElementById(e.target.innerText).offsetTop - 100, behavior: 'smooth' });
}
</script>
<style lang="less" scoped>
.listtest {
    height: 400px;
    width: 440px;
    overflow-y: scroll;
}

.letter {
    position: absolute;
    background-color: red;
    top: 0;
    z-index: 999;
    right: 40px;
}
</style>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值