热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信小程序车轮之地区选择

车轮出产地址http:www.see-source.comweixinwidgetdetail.html?wid81本文是经学习消化之后所写,功能有所改进。功能描述:

车轮出产地址 http://www.see-source.com/weixinwidget/detail.html?wid=81
本文是经学习消化之后所写,功能有所改进。
功能描述:
1.右侧字母列表点击,左侧城市列表随之滚动到对应位置。
2.右侧字母列表滑动,左侧城市列表随之滚动到对应位置。
3.左侧城市列表滚动,右侧字母列表相应显示所在位置。
4.点击城市项,顶部显示当前选择城市。
5.为右侧添加当前所选字母样式
这里写图片描述

重要代码:

onLoad: function (options) {
var searchLetter = city.searchLetter;
// 城市集合
var cityList = city.cityList();
var sysInfo = wx.getSystemInfoSync();
// 滚动层高度
var winHeight = sysInfo.windowHeight;
// 右侧每项字母的高度
var itemH = winHeight / searchLetter.length;
// 将每个letter元素的顶部,底部高度,名称作为元素对象添加到searchLetter集合中
// 首先这里没有将字母列表直接赋值给前台,而是将字母,字母顶部高度,字母底部高度整合为一个对象再赋值给前台,其实是有他的用意的。
var tempObj = [];
for (var i = 0; i var temp = {};
temp.name = searchLetter[i];
temp.topHeight = i * itemH;
temp.bottomHeight = (i + 1) * itemH;
tempObj.push(temp)
}
this.setData({
// 滚动层高度
winHeight: winHeight,
// 右侧每项字母的高度
itemH: itemH,
searchLetter: tempObj,
// 城市集合
cityList: cityList
})
},
 // 滑动(首先执行searchStart)
searchMove: function (e) {
var pageY = e.touches[0].pageY;
var startPageY = this.data.startPageY;
var topHeight = this.data.topHeight;
var bottomHeight = this.data.bottomHeight;
// 屏幕左上角是XY轴坐标的原点,向下向右,数值随之增大
if (startPageY - pageY > 0) { // 向上移动
if (pageY this.nowLetter(pageY, this);
}
} else {// 向下移动
if (pageY > bottomHeight) {
this.nowLetter(pageY, this);
}
}
},
// 根据字母滑动位置,在字母列表中遍历出当前所处位置,解证了上面tempObj的用途
nowLetter: function (pageY, that) {
var letterData = this.data.searchLetter;
var bottomHeight = 0;
var topHeight = 0;
var showLetter = "";
for (var i = 0; i if (letterData[i].topHeight <= pageY && pageY <= letterData[i].bottomHeight) {
bottomHeight = letterData[i].bottomHeight;
topHeight = letterData[i].topHeight;
showLetter = letterData[i].name;
break;
}
}
// 调整scroll位置
this.setScrollTop(that, showLetter);
// 重新修改位置
that.setData({
topHeight: topHeight, // 顶部高度
bottomHeight: bottomHeight, // 底部高度
showLetter: showLetter, // 选择字母提示框
startPageY: pageY // 当前位置
})
},
// 根据城市滚动列表‘距离顶部距离’,判断在城市列表集合中所处的位置,随之改变右侧字母列表显示
bindScroll: function (e) {
// scroll距离顶部距离
var scrollTop = e.detail.scrollTop
// 城市列表
var cityList = this.data.cityList;

var cityTopHeight = 0
var cityBottomHeight = 0
for (var i = 0; i // 城市列表高度
cityBottomHeight += (cityList[i].cityInfo.length) * 43
if (cityTopHeight console.log("cityTop + cityTopHeight)
console.log("cityBottom + cityBottomHeight)
console.log("scrollTop=========" + scrollTop)
this.setData({
letterInto: cityList[i].initial
})
break;
}
cityTopHeight = cityBottomHeight
}
},

Demo链接: http://pan.baidu.com/s/1c180a68 密码: 94vi


推荐阅读
  • 涉及的知识点-ViewGroup的测量与布局-View的测量与布局-滑动冲突的处理-VelocityTracker滑动速率跟踪-Scroller实现弹性滑动-屏幕宽高的获取等实现步 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了css回到顶部按钮相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 微信小程序导航跟随的实现方法
    本文介绍了在微信小程序中实现导航跟随的方法。通过设置导航的position属性和绑定滚动事件,可以实现页面向下滚动到导航位置时,导航固定在页面最上方;页面向上滚动到导航位置时,导航恢复到原始位置;点击导航可以平滑跳转到相应位置。代码示例也给出了具体实现方法。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • 使用Flutternewintegration_test进行示例集成测试?回答首先在dev下的p ... [详细]
author-avatar
jysghyb
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有