试讲

课程

×
https://www.nfu.edu.cn
  • 个人简介
  • 教学提要
  • 教学实施
  • 小结讲评

[ 个人简介 ]

张树彬
软件工程 | 数字媒体 | 物联网
党员
13*0**35481
1942194789@qq.com
撸码 | 逛B站 | 运动 | 美食 | 绿植

I'm a passinate web developer and creative technologist with a keen eye form design and a loe for building innovative digital solutions. With expertise in both front-end and back-end development, I create seamless user experience that lear a lasting impression.

My approach combines technical excellenace with creative problem-solving to deliver projects that not only meet but also exceed expectations.

I have a strong understanding of the entire development process and can deliver high-quality results on time. I also have a passion for learning and staying up-to-date with the latest industry trends and technologies.

学习经历

1995.08 - 1999.06 桂林电子科技大学 通信工程 学士
2005.08 - 2008.03 上海交通大学 通信与信息系统 硕士

工作经历

1999.07 - 2018.12 中国人民解放军陆军特种作战学院 侦察系 讲师
2020.07 - 2022.01 桂林学院 软件工程 讲师
2022.03 - 2022.06 厦门工学院 物联网 讲师
2022.07 - 2023.01 广州工商学院 软件工程 | 数字媒体 讲师
2023.02 - 2023.06 海口经济学院 计算机与大数据 讲师
2023.09 - 2025.07 广州新华学院 软件工程 | 数字技术媒体 讲师

最近学术

2024 WEB开发与应用 自编讲义 第1负责人
2024 传智杯第七届全国IT技能大赛 学科竞赛 第2负责人
2024 虚拟教研室-移动应用开发虚拟教研室 校级 第3负责人
2024 专项人才培养计划-卓越网络安全人才实验班 校级 参与
2024 2024年一流本科专业建设点项目-软件工程 校级 参与

教学资源

WEB

微信小程序

微信公众号

商业项目

柯麦商城

北医大一医

[ 教学提要 ]

科目 Subject

移动WEB开发

章节 Chapter

内置组件 Built-in Component

内容 Content

滚动视图 <scroll-view>

对象 Target

23数媒1班

23数媒2班

23数媒3班

知识目标 Point

水平滚动

垂直滚动

事件

技能目标 Skill

规范开发

高效开发

自主开发

情感目标 Sentiment

发现美

欣赏美

创造美

方法 Method

理论讲解

案例分析

项目实操

学时 Duration

0.5 - 理论

0.5 - 实操

1.0 - 练习

建议 Advice

听

思

撸

[ 教学实施 ]

[ 课前准备 Preparation ]

  • 课程资源 滚动视图 <scroll-view>
  • 开发环境 微信开发者工具
  • 课堂管理 学习通、课堂派
  • 电子笔记 语雀
  • 截图工具 Snipaste

[ 内容回顾 Review ]

  • 轮播组件 <swiper> <swiper-item>

[ 理论讲解 Lecture on Theory ]

1. 概述 Overview
  • 容器组件
  • 可以容纳更多子项/内容;子项可以是任意元素;但是不能嵌套使用 <scroll-view>
  • 当子项的尺寸总和超过容器时,只显示容器区域的子项
  • 容器边缘的子项会显示部分,以便提示用户操作这里还有更多;或者使用符号提示
  • 左右或上下滑动时,可以显示更多内容/超出容器的子项
  • 可以设计为水平滚动或垂直滚动,不能兼得
  • 水平方向,需要确保所有子项在一行
  • 垂直方向,要显式的指定容器的高度
  • 移动端特有
  • 应用:图文内容展示、轮播、横向导航栏、商品、通信录和留言等长列表展示
2. 常见应用 Application
  • 常见APP的设计中,都有它的影子,如下面各图红色覆盖区域
  • 京东
    淘宝
    支付宝
    个税
    商品列表
    商品列表
    微信通信录
3. 基本使用 Usage
  • 闭合标签
  • 配合属性,可以定制功能丰富的业务模块
  • Skyline 模式支持更多属性,如滚动对齐
  • <scroll-view>
      // 子项内容
    </scroll-view>
    通用属性
    item desc
    scroll-x 允许横向滚动;布尔 ;最好也显式指定宽度;谨慎使用 % 宽度
    scroll-y 允许纵向滚动;布尔;应显式指定高度
    scroll-into-view 滚动到值为 id 的某子元素;id 不能以数字开头
    scroll-with-animation 使用动画过渡;布尔
    scroll-top 设置竖向滚动条位置
    bindscroll 滚动时触发
WebView 特有属性
item desc
enable-flex 水平方向启用 flexbox;布尔;默认 false
using-sticky 启用粘性定位 sticky;布尔;默认 false

[ 案例实操 Drill ]

案例实施导图
[] 水平滚动
1. 效果参考
水平滚动左侧
水平滚动右侧
2. 实现方案
实现1 小程序方案
  • 指定水平方向 scroll-x
  • 启用弹性盒子 enable-flex 属性
  • 直接添加子项 item
  • <scroll-view class="scroll-view" scroll-x enable-flex>
      <view class="item">Lorem.</view>
      <view class="item">Iure?</view>
      <view class="item">Ipsam.</view>
      <view class="item">Aspernatur!</view>
      <view class="item">Ipsam?</view>
    </scroll-view>
  • 并不是真正的弹性盒子
  • 需要单独给每个子项 item 增加间隔
  • .scroll-view {
      display: flex;
      gap: 20rpx;// 无效
    }
    
    .item {
      width: 40%;
      background-color: #f40;
      color: #fff;
      aspect-ratio: 16/9;
      border-radius: 20rpx;
      margin-right: 20rpx;// 额外指定间隔
    }
实现2 推荐方案
  • 结构:增加一个容器 wrap
  • <scroll-view class="scroll-view" scroll-x>
      <view class="wrap">
        <view class="item">Lorem.</view>
        <view class="item">Iure?</view>
        <view class="item">Ipsam.</view>
        <view class="item">Aspernatur!</view>
        <view class="item">Ipsam?</view>
      </view>
    </scroll-view>
  • 样式:更简单;其它UI请自行设计并完成
  • .wrap {
      display: flex;
      gap: 20rpx;
    }
    
    .item {
      width: 40%;
      background-color: #f40;
      aspect-ratio: 16/9;
      border-radius: 20rpx;
    }
实现3 行内 inline 方案
  • 自行完成并体会其特点
  • 参考结构
  • <scroll-view class="scroll-view scroll-x">
      <text class="text">Lorem.</text>
      <text class="text">Eum.</text>
      <text class="text">Rerum.</text>
      <text class="text">Blanditiis?</text>
      <text class="text">Officiis!</text>
    </scroll-view>
  • 参考样式
  • .scroll-view {
      white-space: nowrap;
    }
    
    .text {
      padding: 0 20px;
    }
实现4 行内块 inline-block 方案
  • 自行完成并体会其特点
  • 参考结构
  • <scroll-view class="scroll-view scroll-x">
      <view class="text">Lorem.</view>
      <view class="text">Eum.</view>
      <view class="text">Rerum.</view>
      <view class="text">Blanditiis?</view>
      <view class="text">Officiis!</view>
    </scroll-view>
  • 参考样式
  • .scroll-view {
      white-space: nowrap;
    }
    
    .text {
      display: inline-block;//必须
      // display: inline; //ok
      padding: 0 20px;
    }
实现5 尝试网格 grid 方案
实现6 尝试浮动 float 方案
[] 体会练习
[] 总结讲评
[] 垂直滚动
1. 效果参考
垂直滚动顶部
垂直滚动底部
2. 代码参考
  • 指定垂直方向 scroll-y
  • 可以直接使用子项 item
  • <scroll-view class="scroll-view" scroll-y>
      <view class="item">Lorem.</view>
      <view class="item">Iure?</view>
      <view class="item">Ipsam.</view>
      <view class="item">Aspernatur!</view>
      <view class="item">Ipsam?</view>
    </scroll-view>
  • 必须显式的指定容器的高度
  • 子项的高度可以由内容撑开
  • .scroll-view {
      height: 500rpx;
    }
    
    .item {
      height: 60%;
    }
[] 商品导航
  • 结构:内容区和导航区
  • 内容区:使用 <scroll-view>;每个子项分配一个 id;不能以数值开头,通常使用自定义前缀和子项序号拼接,如 id='item12' 或 id='nav2'
  • 导航区:可以使用普通元素或者使用 <scroll-view>,为每个子项添加事件,单击时,修改索引变量,触发内容区跳转到对应id的子项
  • 类似的应用还有:留言定位、通信录定位
  • 更多信息,请访问 列表渲染 wx:for、事件 Events 和 绑定 Model
1. 效果参考
商品分类导航
2. 实现方案
方案1:1个 <scroll-view>、1个普通元素实现
  • 适合导航分类少的场景
  • 详细实现,请参考学习通资料区的示例
  • 参考结构 - 内容区使用了嵌套列表渲染;导航区绑定事件,单击时,修改序号
  • <view class="wrap">
      <view class="nav">
        <view class="nav-item {{curInd==index?'active':''}}" wx:for='{{navs}}' wx:key="id" bind:tap="toView" data-ind="{{index}}">{{item.tag}}</view>
      <view>
      <scroll-view class="cont" scroll-y scroll-into-view="nav{{curInd}}" scroll-with-animation>
        <view class="cont-item" wx:for="{{products}}" wx:key='id' id='nav{{index}}'>
          <view class="cont-title">- {{item.title}} -</view>
          <view class="cont-inner-item" wx:for="{{item.lists}}" wx:key="id">{{item.title}}</view>
        </view>
      </scroll-view>
    </view>
  • 参考数据:序号、导航数据(1个示例节点)、商品数据(1个示例节点)
  • data: {
      curInd:0,
      navs: [{
        id: 0,
        tag: '匀浆',
        icon: 'icon-bread'
      }],
      products: [{
        id: 0,
        title:'匀浆',
        lists: [{
          id: 0,
          image: '',
          title: '匀浆膳',
          desc: '',
          price: ''
        }]
      }]
    }
  • 参考事件:单击导航项,获取当前序号
  • toView(e){
      let curInd=e.target.dataset.ind;
      this.setData({
        curInd
      })
    }
方案1:2个 <scroll-view> 实现
  • 适合导航分类多的场景

[ 小结讲评 ]

主要内容 Summary

  • 组件 <scroll-view> 属性
  • 组件 <scroll-view> 基本使用 - 水平滚动和垂直滚动
  • 组件 <scroll-view> 交互 - 事件响应

现场点评 Comment

  • 教学秩序
  • 教学效果

课后作业 Homework

  • 阅读:课程资料、微信官方文档
  • 练习:独立完成本节课水平滚动和垂直滚动两个案例
  • 开发:学以致用,根据所学内容,利用真实数据,设计并应用到个人小程序
  • 思考:如何使用 <scroll-view> 和 <swiper> 实现联动导航?

课后预习 Preview

  • 项目 - 婚礼邀请函

知识拓展 Extension

  • 滚动视图 <scroll-view>
  • 滚动视图 - 官方文档 <scroll-view>