博客
关于我
微信小程序——漂亮的步骤条(好看)
阅读量:760 次
发布时间:2019-03-23

本文共 2539 字,大约阅读时间需要 8 分钟。

安卓 movableview 小程序的步骤条实现代码解析

最近在开发一个安卓移动应用的过程中遇到了一个有趣的UI组件需求,想详细写下解决这个问题的过程。需求是一个动态步骤条状的UI布局,每一步都带有图标和文字,用户点击下一步可以跳转到下一个步骤。在此过程中,我对小程序的代码优化和布局改造进行了深入研究。这次写作主要聚焦于代码实现的逻辑分析和优化。

JS 代码核心逻辑解析

小程序的逻辑主要集中在 page 钩子和 numSteps 方法中。首先看 page 的定义部分:

Page({  data: {    stepList: [      { name: '开始' },      { name: '扫描' },      { name: '付款' },      { name: '完成' }    ],    stepNum: 1  },  onLoad: function () {      },  numSteps: function () {    this.setData({      stepNum: this.data.stepNum == this.data.stepList.length ? 1 : this.data.stepNum + 1    })  }})

这里的关键点在于:

  • 数据定义stepList 提供了所有步骤的名字,数量共4个;stepNum 用于追踪当前的步骤位置。

  • 初始数据加载onLoad 钩子其实并没有用到,初始数据已经通过 stepNum 设置为 1 开始。

  • 步骤跳转逻辑numSteps 方法是关键,它根据当前步骤数是否达到最末步来决定是否循环到第一步,否则加 1

  • WXSS 样式优化

    对于样式优化,WXSS 提供了丰富的工具支持。主要基础样式如下:

    page {  width: 100%;  height: 100%;}.steps_box {  width: 100%;  display: flex;  align-items: center;  justify-content: center;}.block-step {  display: flex;  flex-direction: row;  align-items: center;  justify-content: center;}.view_item {  display: flex;  align-items: center;  justify-content: center;  flex-direction: column;}.view_item text {  font-size: 30rpx;  margin-top: 20rpx;  color: #909090;}.view_item view {  width: 45rpx;  height: 45rpx;  border: 3rpx solid #909090;  border-radius: 50%;  display: flex;  align-items: center;  justify-content: center;  color: #909090;  font-size: 30rpx;  content: "\e732";}.view_line {  width: 15%;  height: 5rpx;  margin: 0rpx 2% 40rpx 2%;  background: linear-gradient(to right, #eadee0, #a0f1ea);}

    主要注意点包括:

  • Flexbox 布局:采用了 flexalign-items 实现横向布局,保证各步骤对齐。

  • 嵌套结构:使用多层嵌套实现了步骤的视觉效果,包括换行和图标展示。

  • 适配性设计:圆形图标和字体大小都做了相应适配,确保在不同屏幕尺寸下显示正常。

  • WXML 模板结构分析

    所谓的步骤条其实主要包含三个部分:

  • 步骤统计图标:使用自定义图标来体现完成度,图标和文字交替使用。

  • 步骤名称与进度条:每个步骤都有明确的名称和对应的图标提示。

  • 动态布局:通过 WX:FOR 实现了循环步骤显示,结合 STEPNUM 动态判断。

  • 具体面的 WXML 结构是这样写的:

    index+1
    #{item.name}

    核心实现细节:

  • 循环实现wx:for 用于遍历到每个步骤单元。

  • 条件判断:使用 stepNumindex 关联式判断当前步骤是否达标。

  • 渐变线方式:动态改变线条颜色,配合不同步骤的显示。

  • 绑定点击numSteps 方法通过 bindtap 实现联动性。

  • 功能测试与调试优化

    在实际运行中遇到的一些问题包括:

  • 图标显示异常:开始时图标未显示,后来发现是 view 标签里缺少 content 属性,导致图标无法显示。

  • 动态线条颜色刷新不及时:原代码导致线条颜色无法实时动态更新,经优化将 set-data 放在前面解决。

  • 点击事件绑定问题numSteps 方法一开始用 bindtap 直接引用 button 标签,后来改用 view 标签绑定更灵活。

  • 通过反复测试和调试,将函数优化得更加流畅统一。

    总结

    通过以上对代码实现的深入分析,总结出几个关键优化点:

    • 在保持 WXML 结构不变的情况下,遵循 DRY 原则减少冗余代码。
    • 通过合理使用 Flexbox 简化布局实现。
    • 优化数据结构使得 stepNum 能够实时更新。
    • 尽量减少样式嵌套层级,提升界面渲染效率。
    • 注意性质的脆性,防止跨步时输出错误。

    这些小细节的处理,最终确保了界面不仅有良好的外观效果,还具备良好的运行性和可维护性。

    转载地址:http://ugvzk.baihongyu.com/

    你可能感兴趣的文章
    Mysql8在Windows上离线安装时忘记root密码
    查看>>
    MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
    查看>>
    mysql8的安装与卸载
    查看>>
    MySQL8,体验不一样的安装方式!
    查看>>
    MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
    查看>>
    Mysql: 对换(替换)两条记录的同一个字段值
    查看>>
    mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
    查看>>
    MYSQL:基础——3N范式的表结构设计
    查看>>
    MYSQL:基础——触发器
    查看>>
    Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
    查看>>
    mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
    查看>>
    mysqldump 参数--lock-tables浅析
    查看>>
    mysqldump 导出中文乱码
    查看>>
    mysqldump 导出数据库中每张表的前n条
    查看>>
    mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
    查看>>
    Mysqldump参数大全(参数来源于mysql5.5.19源码)
    查看>>
    mysqldump备份时忽略某些表
    查看>>
    mysqldump实现数据备份及灾难恢复
    查看>>
    mysqldump数据库备份无法进行操作只能查询 --single-transaction
    查看>>
    mysqldump的一些用法
    查看>>