小程序实现点击右侧字母跳至城市列表(类似通讯录效果)

微信小程序之滑动右侧字母索引 微信和通讯录经常看到这种,那么在小程序如何实现呢(等下我们需要用到小程序的一个官方组件),这个功能可以拆分两块,一个是滚动区域,一个是滑动定位区域。 实现 滚动区域 小程序里面实现滚动到指定位置,可以用 scroll-view 组件. (点击我即可查看小程序文档) <scroll-view class="goup_list" scroll-with-animation="true" scroll-y="true" style="height: 300rpx;" scroll-into-view= 阅读详情

在这里插入图片描述

代码:

*.wxml

<!--index.wxml-->
<view class="page">
    <view class="content">
        <!-- 左侧内容区 -->
        <scroll-view class="person-list" enable-back-to-top style="height: {{oHeight}}px" scroll-into-view="{{toView}}" scroll-y="true" scroll-top="{{sctop}}" scroll-with-animation="true">
            <view class="hotList">
                <view class="hotList-tit">热门城市</view>
                <view class="hotList-cont">
                    <view>盐湖区</view>
                </view>
            </view>
            <view class="person" wx:for="{{personList}}" wx:key="index" id="{{ 'inToView'+item.id}}">
                <view class="person-sign">{{item.sign}}</view>
                <view class="person-content">
                    <view class="person-cont {{item.name.length > 1 ? 'border' : ''}}" bindtap="choose" data-item="{{it}}" wx:for="{{item.name}}" wx:key="id" wx:for-item="it">
                        <!-- <image class="person-head" src="{{it.head_img ? it.head_img : default_img}}"></image> -->
                        <text class="person-name">{{it.name}}</text>
                    </view>
                </view>
            </view>
        </scroll-view>
        <!-- 左侧字母栏 -->
        <scroll-view class="letter-list">
            <view class="letter"style="color:red;" bindtap="clickHot">热</view>
            <view class="letter" wx:for="{{personList}}" wx:key="index" catchtap="chooseLetter" data-item="{{item}}">{{item.sign}}</view>
        </scroll-view>
    </view>
</view>

*.wxss

/**index.wxss**/

.page .content .person-list .person {
  margin-bottom: 18rpx;
  background: #fff;
  /* display: flex; */
}

.page .content .person-list .person .person-sign {
  /* width: 80rpx; */
  width: 100%;
  /* text-align: center; */
  /* margin-top: 46rpx; */
  font-size: 32rpx;
  font-family: Arial;
  color: #313133;
  padding: 20rpx 30rpx;
  background: #f2f2f2;
}

.page .content .person-list .person .person-content {
  width: calc(100% - 80rpx);
  padding: 0 30rpx;
}

.page .content .person-list .person .person-content .person-cont {
  display: flex;
  align-items: center;
  padding: 20rpx 0;
}

.page .content .person-list .person .person-content .person-cont .person-head {
  width: 80rpx;
  height: 80rpx;
  background: #f7f7f7;
  border-radius: 50%;
  margin-right: 40rpx;
}

.page .content .person-list .person .person-content .person-cont .person-name {
  font-size: 32rpx;
  color: #313133;
}

.page .content .person-list .person .person-content .border {
  border-bottom: 1rpx solid #f7f7f7;
}

.page .content .letter-list {
  position: fixed;
  top: 80rpx;
  right: 0;
  z-index: 999;
  width: 90rpx;
  font-family: Arial;
  font-size: 26rpx;
  text-align: center;
}

.page .content .letter-list .letter {
  margin-bottom: 10rpx;
  padding: 10rpx 20rpx;
}
/* 热门城市 */
.hotList-tit{
  width: 100%;
  padding: 20rpx 30rpx;
  background: #f2f2f2;
}
.hotList-cont{
  padding: 10rpx 30rpx;
}
.hotList-cont view{
  display: inline-block;
  padding: 10rpx;
  text-align: center;
  font-size: 32rpx;
  border:1px solid #f3f3f3;
  margin-left: 5px;
}

*.js

const app = getApp();
var pinyin = require("../../utils/pinyin.js")
Page({
    data: {
        list: [
            { name: "a阿拉善盟" }, { name: "白山" }, { name: "保定" }, { name: "保安" }, { name: "保护" }, { name: "朝阳" }, { name: "晨光" }, { name: "城管" }, { name: "东光" }, { name: "导师" }, { name: "导员" }, { name: "鄂州" }, { name: "额贼" }, { name: "儿科" }, { name: "二哈" }, { name: "丰台" }, { name: "方言" }, { name: "房子" }, { name: "广州" }, { name: "广西" }, { name: "滚蛋" }, { name: "海-南" }, { name: "哈哈" }, { name: "哈士奇" }, { name: "河北" }, { name: "江苏" }, { name: "唧-唧" }, { name: "济南" }, { name: "矿-山" }, { name: "困难" }, { name: "抠门" }, { name: "兰花" }, { name: "篮子" }, { name: "芒果" }, { name: "妈的" },
            { name: "mongo" }, { name: "牛奶" }, { name: "南京" }, { name: "欧豪" }, { name: "派南" }, { name: "帕萨特" }, { name: "奇步" }, { name: "全部" }, { name: "人类" }, { name: "然而" }, { name: "孙尚香" }, { name: "送礼" }, { name: "通州" }, { name: "特别" }, { name: "unix" }, { name: "vv" }, { name: "外滩" }, { name: "网吧" },
            { name: "西西里" }, { name: "熊大" }, { name: "云南" }, { name: "有道" }, { name: "周公" }, { name: "这里" },
            { name: "apple" }, { name: "apply" }, { name: "back" }, { name: "cookie" }, { name: "dom" }, { name: "document" }, { name: "element" }, { name: "fuck" }, { name: "good" }, { name: "hello" }, { name: "hi" }, { name: "job" },
            { name: "just" }, { name: "keep" }, { name: "loop" }, { name: "look" }, { name: "moon" }, { name: "monkey" }, { name: "node" }, { name: "nice" }, { name: "opera" }, { name: "past" }, { name: "pass" }, { name: "question" }, { name: "red" },
            { name: "store" }, { name: "token" }, { name: "uni-app" }, { name: "version" }, { name: "work" }, { name: "x-ray" }, { name: "yellow" }, { name: "zoom" }, { name: "i拼音" }
            , { name: "123" }
        ],
        personList:[],
        oHeight:'',
        sctop:'',
    },
    onLoad: function () {
        // 获取设备高度
        wx.getSystemInfo({
            success: (res) => {
                this.setData({
                    oHeight: res.windowHeight
                })
            }
        })
        
        this.list()
    },
   
    // 数据处理函数
    list(){
        let personList = this.data.personList
        let i = 0
        /**
         * 1、调用外部js的方法ChineseToPinYin对数据进行分组
         * 2、分组的结果存在排序有误的情况,例如I组,V组等没有汉字的分组
         */
        this.data.list.forEach((item, index) => {
            let bool = personList.some(ite => {
                return ite.sign == pinyin.ChineseToPinYin(item.name).substr(0, 1)
            })
            if (personList.length == 0 || !bool) {
                personList.push({
                    id: i,
                    sign: pinyin.ChineseToPinYin(item.name).substr(0, 1),
                    name: [item]
                })
                i++
            } else if (bool) {
                let a = pinyin.ChineseToPinYin(item.name).substr(0, 1)
                for (let s in personList) {
                    if (a == personList[s].sign) {
                        personList[s].name.push(item)
                    }
                }
            }
        })
        this.setData({
            personList,
        })
        /**
         * 3、对分组好的数据进行排序
         * 4、根据标志sign的ASCII码进行初次排序筛选
         * 5、如果标志sign不在A到Z之间,则添加到#分组中
         */
        this.data.personList.forEach((item, index) => {
            if ((item.sign.charCodeAt() < 65 || item.sign.charCodeAt() > 90) && item.sign.charCodeAt() != 35) {
                this.data.personList.splice(index, 1, "")
                // 注:此处为防止splice分割后,数组索引index发生变化,故将需要剔除的元素替换为“”,后再将其剔除
                let i = this.data.personList.findIndex(item => {
                    return item.sign == '#'
                })
                if (i != -1) {
                    item.name.forEach(it => {
                        this.data.personList[i].name.push(it)
                    })

                } else {
                    this.data.personList.push({
                        id: 99,
                        sign: '#',
                        name: item.name
                    })
                }
            }
        })
        // 利用filter方法,剔除之前存在的空元素
        personList = this.data.personList.filter(function (s) {
            return s != ''; // 注:IE9(不包含IE9)以下的版本没有trim()方法
        });
        this.setData({
            personList
        })
        // 利用sort方法进行排序
        this.data.personList.sort(this.listSort('sign'))
        // 一般情况下#分组在最下面,在此做以处理
        if (this.data.personList[0].sign == '#') {
            this.data.personList.splice(0, 1).forEach(item => {
                this.data.personList.push(item)
            })
        }
        this.setData({
            personList
        })
        // console.log(personList)
    },
    // 排序
    listSort(prop) {
        return function (a, b) {
            var value1 = a[prop].charCodeAt();
            var value2 = b[prop].charCodeAt();
            return value1 - value2
        }
    },
    // 点击列表中的人员
    choose(e){
        console.log(e.currentTarget.dataset.item)
        let name = e.currentTarget.dataset.item.name
        wx.showToast({
            title: name,
            icon: 'none'
        })
    },
    /**
     * 点击右侧字母
     * 这里使用的是scroll-view中的自身方法,在scroll-view中添加以下属性
     * 1、enable-back-to-top,点击标题回弹
     * 2、scroll-into-view="{{toView}}",滚动到id为toView的位置,动态设置该id即起到切换的左右
     * 3、scroll-y="true",y轴方向滚动
     * 4、scroll-with-animation="true",滚动动画
     * 注:在使用scroll-view时:必须给当前盒子设置固定的高度,否则无法生效
     */
    chooseLetter(e){
        let currentItem = e.currentTarget.dataset.item;
        console.log(currentItem);
        this.data.personList.forEach(item => {
            if (item.sign == currentItem.sign) {
                this.setData({
                    toView: 'inToView' + currentItem.id //滚动条to指定view
                })
            }
        })
    },
    // 点击回到顶部
    clickHot: function(e){
        this.setData({
            sctop: 0
        })
    }
})

地址:https://github.com/Only0129/address-book.git

原文作者:https://www.jianshu.com/p/c5bff09ae89b

微信小程序,字母索引滑动定位-仿通讯录 废话不多说,直接贴代码。。。 <scroll-view scroll-y style="height: {{windowHeight}}" scroll-into-view="{{alpha}}"> <view class="alphabet"> <view id="Top" class="header"> <view class="h-city"> <text>北京</text> & 阅读详情

相关推荐

uniapp|实现手机通讯录、首字母快捷导航功能、多端兼容(H5、微信小程序、APP)

基于uniapp实现带首字母快捷导航的通讯录功能,通过拼音转换库实现汉字姓名首字母提取与分类,结合uniapp的scroll-view组件与pageScrollTo API完成滚动定位交互,并引入uni-indexed-list插件优化索引栏性能。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 9061

微信小程序地址,右侧边栏带字母滑动

预览效果如下图:app.js文件内容App({ globalData: { trainCity: '杭州' } })app.json文件内容{ "pages": [ "pages/index/index", "pages/citys/citys" ], "window": { "backgroundTextStyle": "light",

weixin_42262436的博客 6496

微信小程序双列表城市选择组件实战项目

在移动应用开发中,城市选择器是用户注册、定位服务、地址填写等场景中的核心交互组件之一。随着用户体验要求的不断提升,传统的单列滚动选择已无法满足高效定位的需求。为此,基于微信小程序平台实现的“双列表城市选择功能”应运而生——通过左侧省份城市列表与右侧拼音首字母索引栏的联动设计,极大提升了用户查找目标城市的效率。本章系统阐述该功能的核心价值与技术架构思路,重点分析其相较于传统选择方式的优势:支持快速跳转、视觉引导清晰、操作符合移动端手势习惯。

weixin_33759613的博客 1271

微信小程序手把手教你实现带字母索引的城市选择列表

微信小程序手把手教你实现带字母索引的城市选择列表前言需求分析左边可滑动列表滑动列表UI实现item点击事件右边带字母的索引条索引条从上到下分别是定位和26个大写字母索引条响应触摸和点击事件索引和列表联动尾巴 前言 在做Android和iOS应用开发的时候,我们经常在app中要用到带字母索引的城市选择功能,他们功能基本都大同小异,大概长下面的样子: 那么在微信小程序(文章后面统称小程序)中我们要怎...

abs625的博客 1万+

android城市列表,右侧字母点击,按字母排序

android城市列表,右侧字母点击,按字母排序,顶部有当前城市,热门城市等布局,试用性强。

小程序组件之仿微信通讯录的实现代码

最近模仿微信通信录做了个小程序组件,分享给大家,具体如下: 效果图 因为是使用的手机录屏,视频格式为MP4,上传到文章时发现只支持图片,还好电脑自动录屏功能,所以简单的录制了一下,完后又提示只能4M,只能再去压缩图片,所以画质略渣,各位客官讲究的看看吧。 特色功能介绍 用户只需按照格式传入参数,组件能够自动将参数按首字母分组,简单方便; 组件右侧首字母导航无需另外传值,并且根据参数具体有哪些首字母显示(没有的咱就不要); 用户进行上下滑动时,左右相互联动; 点击右侧导航,组件会相应的上下滚动。  实现基础 本组件只使用了小程序基础组件中的scroll-view,不用那么麻烦

Android开发--全国各城市列表并按首字母排序加快速定位

在很多商业的App中都需要进行城市的选择,一般我们会对城市按首字母进行排序,以前的项目中也曾经遇到,今天拿来复习一下。思路如下:       1.首先我们需要一个包含全国各城市的数据库文件或Json,Xml文件都可以,我从网络上搜到了一个数据库.db的文件,该数据库包含了中国各城市的中文名称以及首字母。首先将该数据库文件拷贝到我们的工程目录的res/raw文件夹之下(该文件夹不会被Android

Joe_c 的专栏 1万+

一文读懂水利无人机AI识别算法,概念、需求、解决方案

复亚智能的水利无人机AI识别算法通过先进的技术手段,为水利管理提供了高效、精准的解决方案。随着技术的不断进步和应用的深入,复亚智能的解决方案将在更多水利场景中发挥重要作用,助力智慧水利管理的全面升级。该系统通过搭载在无人机上的传感器和摄像头,结合先进的AI识别算法,实现对河道淤积、漂浮物、船只和水质污染等问题的自动检测和监控。基于大量实飞采集的数据,复亚智能的算法经过严格的训练,能够准确识别各种水利问题。复亚智能的系统具有高度的开放性和兼容性,能够与第三方平台和算法无缝对接,满足不同客户的多样化需求。

foiadrone的博客 1197

选择城市,左边是按字母顺序的城市排列,右边是26个字母

在Android系统的输入框右边加入一个"X"小图标,点击"X"可以清除输入框里面的内容

jeanalx的博客 6425

从零到一:如何用YOLOv8和PyQt5打造你的第一个花卉识别桌面应用

本文详细介绍了如何使用YOLOv8和PyQt5从零开始构建一个花卉识别桌面应用。涵盖环境搭建、数据准备、模型训练、界面设计、模型集成与性能优化等全流程,帮助开发者快速掌握深度学习目标识别技术的实际应用。

weixin_29048775的博客 454

VMD分子可视化实战:5个隐藏技巧让你的科研图像秒变顶刊级别

本文深入探讨了VMD分子可视化软件在科研图像美化中的5个高阶技巧,旨在帮助研究者将分子结构图提升至顶刊级别。内容涵盖原子色彩与材质的艺术化定制、沉浸式分子环境构建、专业构图与视角控制、数据驱动的动态可视化以及自动化工作流建立,通过精细的色彩映射、光照调整、周期性边界展示和脚本自动化,显著增强图像的科学叙事性与视觉冲击力。

weixin_29240343的博客 421

微信小程序--根据首字母选择城市

前言 首先看一下项目截图 业务场景:项目中有时会遇到根据首字母选择城市,或者根据首字母选择通讯录姓名等等,那如果按照以前的思路需要用判断滚动条的位置,才能滑动到哪个地方。小程序官方有提供scroll-into-view属性,可以更快的解决这个场景。 小程序官方提供的属性描述。小程序文档 代码实现 wxml代码片段 <scroll-view scroll-y scroll-int...

weixin_34080571的博客 1243

告别混乱!在Unity中为Best MQTT v3设计清晰的服务层:配置、连接、订阅发布模块拆分指南

本文详细介绍了如何在Unity中使用Best MQTT v3插件构建清晰的服务层架构,包括配置管理、连接服务、订阅管理和发布服务的模块化拆分。通过解耦设计、事件驱动和接口抽象,提升代码可维护性和可测试性,适用于物联网和实时通信开发场景。

weixin_30576827的博客 358

android通讯录首字母分类,通讯录获取首字母并以首字母归类返回

通讯录获取首字母并以首字母归类返回效果1 - 返回首字母效果2 - 返回拼音代码package com.dt.wx.miniprogram.app.util;import lombok.extern.slf4j.Slf4j;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.Hany...

weixin_33327330的博客 570

YOLOv8改进策略【卷积层】| GnConv:一种通过门控卷积和递归设计来实现高效、可扩展、平移等变的高阶空间交互操作

HorNet: 利用递归门控卷积实现高效高阶空间交互GnConv(Recursive Gated Convolution,递归门控卷积)

Limiiiing的博客 324

浏览器缓存导致代码不更新?一招解决部署后用户仍看到旧页面的问题

方案效果适用场景文件名哈希永久解决前端工程化项目HTTP缓存头控制精准控制需服务器权限Meta标签部分生效临时补救方案最佳实践:入口HTML禁用缓存,静态资源使用哈希文件名 + 长期缓存,达到「秒级更新」+「高性能」的平衡!

江拥羡橙的博客 810

小程序城市按首字母排序(如同苹果手机通讯录一样得效果)

如图    代码    1 <view class="input"> 2 <input bindinput="bindKeyInput" bindblur="bindBlur" placeholder="输入城市名或拼音查询" placeholder-style="font-size: 30rpx" value="{{inputName}}"&gt...

weixin_30835649的博客 3187

倾斜摄影数据转换为3DTile格式的方法:基于CesiumLab GIS

通过使用CesiumLab GIS,倾斜摄影数据可以方便地转换为3DTile格式,并在CesiumJS等3D地理信息可视化工具中进行展示和分析。一旦成功导入3DTile数据,就可以在CesiumLab GIS中利用其强大的可视化和分析功能进行进一步的处理。转换完成后,可以将生成的3DTile数据导入到CesiumLab GIS中进行可视化和分析。启动CesiumLab GIS应用程序,并按照界面上的指导导入转换后的3DTile数据。脚本将开始执行,并将倾斜摄影数据转换为3DTile格式。

ObDjango的博客 1076

uniapp+vue2 城市索引列表(含:滑动)

本文介绍了使用UniApp实现城市索引列表功能的开发过程。首先通过json获取城市数据,使用js-pinyin库对中文名称进行拼音转换和字母分组。关键步骤包括:数据预处理(添加拼音字段)、按首字母分组(A-Z及特殊#组)、过滤空数据组。最终生成的结构包含字母索引和对应城市列表,支持右侧字母导航快速定位。文章提供了完整的HTML模板和JavaScript数据处理代码,适用于需要实现城市选择或通讯录功能的UniApp项目开发。

X0923aini的博客 1088

[3.4]【机器人运动学MATLAB实战分析】PUMA560机器人逆运动学MATLAB计算

PUMA560是六自由度关节型机器人,其6个关节都是转动副,属于6R型操作臂。各连杆坐标系如图1,连杆参数如表1所示。本文对PUMA560机器人逆运动学进行分析并MATLAB计算

m0_72676510的博客 1947

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

微信小程序虚拟滚动技术深度解析:iView-Weapp长列表性能优化实践

还在为微信小程序中渲染大量数据时的卡顿问题而困扰吗?当列表项达到数百甚至上千时,传统的渲染方式往往导致页面响应缓慢,用户体验大打折扣。iView-Weapp作为专业的微信小程序UI组件库,其索引列表组件通过创新的虚拟滚动技术,为大数据量渲染提供了优雅的解决方案。 ## 问题根源:传统渲染的性能瓶颈 在传统的小程序列表渲染中,当数据量超过一定阈值时,主要面临以下挑战: - **DOM节点过多*

gitblog_00967的博客 1027

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Vant IndexBar 在小程序中的简单使用

这篇文章是老王的朋友超超提供的,上午已经更新到原创微信公众号「软件老王」,链接,欢迎各位朋友关注老王的原创公号! 先看下最终效果图,主要是渲染一个A - Z 的 通讯录。同样的,如果你要做的是城市列表,也可以参考一下。 这边是 Vant IndexBar 官方文档 方便你查阅。 之前的通讯录只是一个列表,名字没有顺序,查找起来不太方便,正好看到Vant组件库里有IndexBar这个组件,所以就立马换掉了,总的来说有以下两个步骤。 1. 格式化数据 一开始,后台给我的数据是这样的,而我只想要一个包含名字

软件老王 2049

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

从零到一:盘点那些让uniapp开发事半功倍的官方UI组件

本文详细介绍了uniapp官方UI组件库如何显著提升开发效率,涵盖表单类、导航类、反馈类等实用组件。通过智能日期选择器、商品导航、评分组件等案例,展示这些开箱即用组件在多端兼容性和设计一致性上的优势,帮助开发者快速构建专业级应用界面。

weixin_28691003的博客 323

AI对话数据留痕真相:你的每句话都可能被永久记录

AI对话并非私密聊天,而是一次结构化数据生成过程。从输入文本到模型响应,全程涉及前端缓存、服务端推理日志与潜在训练语料入库,形成可追溯、可检索、难清除的数据流。其底层原理基于分布式日志系统、权限分级访问机制及模糊化‘匿名处理’实践,技术价值在于保障系统稳定性与服务迭代,但客观上带来隐私暴露风险。典型应用场景包括用户日常咨询、创作者内容辅助、企业内部知识管理等,而高危行为如输入PII组合、金融细节或商业原型,极易触发跨系统关联识别。本文聚焦AI对话中的数据留存机制与实操防护逻辑。

cuanmo8775的博客 589

城市选择-移动端-点击首字母定位到当前城市

一、html代码 城市选择 body,div,dl,dt,dd,ul,li,form,input,button,h1,h2,h3,h4,h5,h6,p{margin: 0 auto;padding:0;font-family:"微软雅黑";color:#00C7C7} ul,li,dl,dt,dd{display:block;list-styl

小胡谈前 6687

小程序锚点跳转(字母滚动到相关城市楼层)

城市快捷导航,可以点击触发,也可以触摸(手指在快捷导航从上往下连着往下触摸移动,导航跟着变动) 1.util.js var cityObj = [{ "id": "35", "provincecode": "150000", "city": "\u963f\u62c9\u5584\u76df", "code": "152900", "initial": "A" }, { "id": "38", "provincecode": "210000", "city": "\u978d\u5c71\u5e02"

hangGe0111的博客 1653
上一篇: 微信小程序实现拍照或在相册中选择图片功能
下一篇: 微信小程序实现字幕上下滚动
if时光重来
博客等级 码龄8年 248粉丝 217原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值