news 2026/10/28 1:57:07

微信小程序 scroll-view 滚动组件实战:色彩主题滚动卡片

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
微信小程序 scroll-view 滚动组件实战:色彩主题滚动卡片

一、实验简介

本项目使用微信小程序scroll-view滚动视图组件,分别实现纵向滚动与横向滚动效果。
一共准备 4 张色彩卡片,卡片文字分别为:薄荷绿、冰晶蓝、葡萄紫、羽奕燃橙。
纵向区域放置前 3 张卡片,横向区域放置全部 4 张卡片,打开页面时纵向视图默认定位到第二张「冰晶蓝」卡片,同时监听滚动相关事件,在控制台打印滚动日志。

核心知识点:

  1. scroll-view组件,scroll-y开启纵向滚动、scroll-x开启横向滚动
  2. scroll-into-view打开页面自动滚动到指定 id 元素
  3. 滚动事件:bindscrolltoupper滚到顶部、bindscrolltolower滚到底部、bindscroll滚动持续触发
  4. CSS 伪元素::before实现卡片文字居中展示
  5. white-space: nowrap禁止文字换行,保证文字在同一行展示
  6. 横向滚动布局技巧:inline-block+white-space:nowrap实现横向并排滑动

二、项目新建步骤

打开微信开发者工具新建小程序项目:

  • 项目名称:scroll-view 色彩滚动卡片
  • 后端服务:不使用云服务
  • 模板:不使用模板

⚠️ 重要:app.json 需要配置渲染器renderer":"webview"

三、完整源代码

1. pages/index/index.wxml

<!--index.wxml--> <scroll-view class="scrollarea" scroll-y type="list"> <view class="box"> <view class="title">滚动视图示例</view> <view class="page-section-title"> <text>Vertical Scroll\n纵向滚动</text> </view> <!--纵向滚动:默认定位到page2,绑定滚动事件--> <scroll-view scroll-y="true" style="height: 300rpx;" class="sheet" scroll-into-view="page2" bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll_y"> <view id="page1" class="scroll-view-item-y page1"></view> <view id="page2" class="scroll-view-item-y page2"></view> <view id="page3" class="scroll-view-item-y page3"></view> </scroll-view> <view class="page-section-title"> <text>Horizontal Scroll\n横向滚动</text> </view> <!--横向滚动 scroll‑x开启横向,scroll‑left初始偏移50px --> <scroll-view scroll-x="true" style="height:300rpx;" class="scroll-view-x sheet" scroll-left="50" bindscroll="scroll_x"> <view class="scroll-view-item-x page1"></view> <view class="scroll-view-item-x page2"></view> <view class="scroll-view-item-x page3"></view> <!--作业新增第四张卡片:羽奕燃橙--> <view class="scroll-view-item-x page4"></view> </scroll-view> </view> </scroll-view>

2. pages/index/index.wxss(已替换为你提供版本)

/**index.wxss**/ page { height: 100vh; /* flex布局 */ display: flex; /* 按纵向排列 */ flex-direction: column; } .scrollarea { flex: 1; overflow-y: hidden; } .page-section-title { font-size: 40rpx; text-align: center; margin-top: 40rpx; margin-bottom: 20rpx; } .scroll-view-item-y { height: 300rpx; } .scroll-view-item-x { /* 创建了一个内联级块容器 */ display: inline-block; width: 100%; height: 300rpx; } .sheet { font-size: 50rpx; /* 字符间距 */ letter-spacing: 1.2em; } /* page1 绿色 */ .page1 { position: relative; background-color: #1AAD19; color: #FFFFFF; } .page1::before { content: '薄荷绿'; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } /* page2 蓝色 */ .page2 { position: relative; background-color: #2782D7; color: #FFFFFF; } .page2::before { content: '冰晶蓝'; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } /* page3 紫色 */ .page3 { position: relative; background-color: purple; color: #FFFFFF; } .page3::before { content: '葡萄紫'; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } /* page4 橙色 作业新增 */ .page4 { position: relative; background-color: #d27822; color: #ffffff; } .page4::before { content: '羽奕燃橙'; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .scroll-view-x { /* 不换行 */ white-space: nowrap; }

3. app.wxss

/**app.wxss**/ .box { margin: 20rpx; padding: 20rpx; border: 2rpx solid silver; } .title { font-size: 40rpx; font-weight: bolder; text-align: center; margin-bottom: 30rpx; color: red; }

4. pages/index/index.js

// index.js Page({ /** * 滚动到顶部触发 */ upper(e) { console.log('滚动到达顶部'); }, /** * 滚动到底部触发 */ lower(e) { console.log('滚动到达底部'); }, /** * 纵向滚动持续触发 */ scroll_y(e) { console.log('纵向滚动中'); }, /** * 横向滚动持续触发 */ scroll_x(e) { console.log('横向滚动中'); } })

5. app.json

{ "pages": [ "pages/index/index" ], "window": { "navigationBarTextStyle": "black", "navigationBarTitleText": "scroll‑view组件" }, "style": "v2", "renderer": "webview", "sitemapLocation": "sitemap.json" }

四、运行操作说明

  1. 将上述代码依次复制粘贴到对应文件,覆盖原有内容;
  2. 点击「清除缓存」,重新编译项目;
  3. 纵向滚动区域:打开自动定位到冰晶蓝卡片,上下滑动切换薄荷绿、冰晶蓝、葡萄紫;
  4. 横向滚动区域:可以左右滑动,依次查看薄荷绿、冰晶蓝、葡萄紫、羽奕燃橙四张卡片;
  5. 打开调试器,滑动卡片时,可以在 Console 控制台看到滚动打印信息。

五、重点代码解析

  1. scroll-into-view="page2"
    页面加载完成,自动滚动到 id 等于 page2 的元素,也就是冰晶蓝卡片。

注意:目标元素必须设置 id 属性,不能使用 class。

  1. letter-spacing: 1.2em;
    设置文字字符间距,拉开每个文字之间的距离,实现文字分散排布的效果。
  2. CSS 伪元素::before
    不需要在 wxml 里面写文字,直接通过 css 的 content 属性设置卡片文字,配合绝对定位top:50%;left:50%;transform:translate(-50%,-50%)实现文字完美居中。
  3. 横向滚动必备布局
  • 父容器 scroll-view 开启 scroll-x=“true”,加上 white-space:nowrap
  • 子卡片设置 display:inline-block,卡片才能横向并排摆放
  1. 滚动事件区别
  • bindscrolltoupper:滚到最顶端才触发一次
  • bindscrolltolower:滚到最底端才触发一次
  • bindscroll:只要拖动滚动,就会持续不断触发

六、实验总结

本次作业使用 scroll-view 组件完成纵向、横向两种滚动效果,新增第四张羽奕燃橙卡片。
通过 css 控制卡片样式与文字排版,利用letter-spacing拉开文字间距,实现分散文字效果。
同时学会监听滚动系列事件,理解小程序中滚动组件的布局规则,横向滚动和纵向滚动的布局方式有明显区别,横向滚动需要开启不换行样式才能正常滑动。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 1:55:28

新手/程序员必看:轻松入门大模型记忆机制,提升AI应用开发技能

本文深入浅出地介绍了大模型记忆系统的分层架构&#xff0c;包括工作记忆、短期记忆、长期记忆与外部记忆的职责划分。文章详细解析了上下文窗口、滑动窗口和摘要压缩技术&#xff0c;梳理了情景、语义、程序记忆的编码与混合存储方法。此外&#xff0c;还探讨了召回排序、冲突…

作者头像 李华
网站建设 2026/10/28 1:54:54

RAG 检索策略详解:关键词检索、语义检索、混合检索与 Top-K

在 RAG&#xff08;检索增强生成&#xff09;系统中&#xff0c;大语言模型并不是每次都直接从整个知识库中寻找答案。通常&#xff0c;系统会先从大量文档中检索出一部分相关内容&#xff0c;再将这些内容交给大语言模型生成回答。 因此&#xff0c;RAG 的回答质量不仅取决于…

作者头像 李华
网站建设 2026/10/28 1:53:58

C语言基础语法介绍

C 语言简介 C 是一种&#xff1a; 面向过程&#xff08;Procedure-Oriented&#xff09;编译型&#xff08;Compiled&#xff09;静态类型&#xff08;Static Typed&#xff09;接近底层&#xff08;Low-level&#xff09;高性能 的编程语言。 由 Dennis Ritchie 在贝尔实验室开…

作者头像 李华
网站建设 2026/10/28 1:53:46

TongWeb8生产环境配置规范之三:优化TongWeb启动速度

除硬件资源本身的性能外&#xff0c;通过优化TongWeb8.0相关参数&#xff0c;也可以提高TongWeb和应用的启动速度。主要参数如下&#xff1a;1. 全局配置->轻量模式说明&#xff1a;以轻量模式运行 TongWeb&#xff0c;此模式会在原版本的基础上关闭 EJB、JCA 等服务&#x…

作者头像 李华