使用scroll-view实现tabs(增加动画过渡效果)

2023-11-12

前情提要

组件:scroll-view

scroll-view可实现一个可滚动的视图区域。

scroll-view 组件有很多属性,常用的有:

  • enable-flex,是否启用flex布局,只有启用,display:flex才会生效。布尔值,默认是false,即默认不启用flex布局。
  • scroll-x,是否允许横向滚动。布尔值,默认是false,即默认不允许横向滚动。
  • scroll-into-view,自动滚动到指定元素的位置上。它的值是scroll-view的子元素的idid为字符串类型,且不能以数字开头。
  • scroll-with-animation,滚动条滚动时是否使用动画过渡。布尔值,默认值是false,即滚动时默认不使用动画过渡。

小程序项目

代码涉及的主要文件有:

  1. app.json
  2. pages/index/index.wxml
  3. pages/index/index.wxss
  4. pages/index/index.js

在这里插入图片描述

app.json

{
  "pages": [
    "pages/index/index"
  ],
  "window": {
    "navigationBarBackgroundColor": "#0149af",
    "navigationBarTitleText": "首页",
    "navigationBarTextStyle": "white"
  },
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

pages/index/index.wxml

<view class="cameraContainer">
  <view class="header">
    <input type="text" class="search" placeholder="搜一搜 这里啥都有"/>
    <image src="/static/images/search.png"></image>
  </view>
  <view class="tabContainer">
    <scroll-view class="tabs" enable-flex scroll-x scroll-into-view="{{tabId}}" scroll-with-animation>
      <view class="tab {{item.id===tabId?'active':''}}" wx:for="{{tabList}}" wx:key="id" 
            id="{{item.id}}" bindtap="changeTab">
        {{item.name}}
      </view>
    </scroll-view>
  </view>
  <view class="contentContainer">
    <view class="content">{{content}}</view>
  </view>
</view>

pages/index/index.wxss

.cameraContainer{
  padding: 10rpx;
}
.header{
  display: flex;
  align-items: center;
  border: 1rpx solid #aaa;
  border-radius: 6rpx;
  padding: 6rpx 10rpx;
}
.header image{
  width: 36rpx;
  height: 36rpx;
  padding: 0 10rpx;
}
.header .search{
  flex: 1;
  height: 36rpx;
  line-height: 36rpx;
  font-size: 26rpx;
}
.tabContainer{
  margin-top: 20rpx;
}
.tabs{
  display: flex;
  height: 50rpx;
}
.tab{
  height: 40rpx;
  line-height: 40rpx;
  margin-right: 30rpx;
  white-space: nowrap;
  font-size: 28rpx;
}
.active{
  border-bottom: 4rpx solid #1a74f1;
}
.content{
  width: 100%;
  height: 600rpx;
  line-height: 600rpx;
  text-align: center;
  background:#eee;
  color: #1a74f1;
  font-size: 64rpx;
  border-radius: 10rpx;
}

pages/index/index.js

Page({
  data:{
    tabList:[],
    tabId:'',
    content:''
  },
  onLoad(){
    this.getDataFromServer();
  },
  changeTab(e){
    const tabId = e.target.id;
    const tabObj = this.data.tabList.length && this.data.tabList.find(item => item.id === tabId) || {name:""}
     this.setData({tabId,content:tabObj.name})
  },
  getDataFromServer(){
    let result = [
      {"id": "tab_1","name": "美食"},
      {"id": "tab_2","name": "健身"},
      {"id": "tab_3","name": "电影"},
      {"id": "tab_4","name": "酒店"},
      {"id": "tab_5","name": "景点"},
      {"id": "tab_6","name": "超市",},
      {"id": "tab_7","name": "水果"},
      {"id": "tab_8","name": "生鲜"},
      {"id": "tab_9","name": "烟酒"},
      {"id": "tab_10","name": "买药",},
      {"id": "tab_11","name": "培训"},
      {"id": "tab_12","name": "养车"},
      {"id": "tab_13","name": "家居"},
      {"id": "tab_14","name": "宠物"},
      {"id": "tab_15","name": "游戏"}
    ]
    this.setData({
      tabList:result,
      tabId:result.length && result[0].id || '',
      content:result.length && result[0].name || ''
    })
  }
})

相关链接

  1. 使用scroll-view实现tabs
  2. 滑块视图的实现
  3. 使用scroll-view实现滑块视图可能遇到的问题及其解决方法
  4. 微信小程序中给event对象传递数据
  5. flex布局:flex-basic flex-grow flex-basis
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用scroll-view实现tabs(增加动画过渡效果) 的相关文章

  • 如何使水平ScrollView的内容水平居中?

    我有一个水平 ScrollView 其中有一个 HStack 如下所示 ScrollView horizontal HStack Circle frame width 60 height 60 使用此代码 HStack 的内容与屏幕左侧对齐
  • iOS:UIScrollView 以编程方式缩放不起作用

    我有一个可分页的 UIScrollView 其中包含不同类型的信息 例如 UITables 但也包含可缩放图像 因此 我设置了一个可分页的主滚动视图 并作为子视图添加了可缩放的图像滚动视图 其中图像作为内容 一切正常 只是我无法设置 ima
  • 在 ScrollView 中滚动 EditText

    我有一个讨厌的问题 我有EditText 8行 内ScrollView 当我尝试滚动文本时EditText它的行为并不稳定 有时它会滚动 有时它不会获得焦点 这是我的布局文件 为了让我的问题更清楚
  • 是否可以在 ScrollView 中添加 ViewPager?

    我正在尝试使用ViewPager里面的一个ScrollView 但是ViewPager没有出现 如果我删除ScrollView the ViewPager看起来不错 我创建了一个简单的测试项目 内容如下 main xml布局
  • 操纵事件和平移模式

    我正在开发一个用于触摸设备的 WPF 我面临一个奇怪的问题 我的 XAML 结构是
  • 在 for 循环内动态创建按钮以在滚动视图中使用

    我在动态创建按钮时遇到问题 我使用了提供的帮助如何在 Android 中动态创建按钮 https stackoverflow com questions 3011092 how can i dynamically create a butt
  • 检索 ImageView 的坐标

    我想知道是否可以获取 ImageView 的左侧和顶部坐标 我在 ScrollView 内的相对布局内有 2 个 ImageView 我尝试检索 ImageView 的矩阵matrix iv getImageMatrix 但这没有帮助Mat
  • 如何在另一个滚动视图中滚动ListView

    我有个问题 我有一个布局 其滚动视图位于三个列表视图 A B C 上 我想要滚动孔布局以及滚动每个列表视图 Problem 当布局滚动时 列表视图不会滚动 如果我删除滚动布局 则列表会滚动 但布局不会滚动 可能的解决方案是什么 使用以下方法
  • Swift 使滚动视图内容居中

    当用户当前位置移至屏幕框架之外时 我尝试将滚动视图视图居中并移动框架 目前我有一个 PDF 正在显示用户的当前位置 我正在计算框架和滚动视图的 ZoomScale 以在 PDF 视图上显示当前位置 我已经实现了这个功能 它运行完美 当用户移
  • ScrollView > LinearLayout > PreferenceFragment 的高度为零

    我有一个具有 ScrollView 和垂直 LinearLayout 的活动 该 Activity 有两个片段 它们是 PreferenceFragment 实例 如以下布局文件所示
  • 如何始终显示滚动条

    滚动视图中的滚动条仅在我开始滚动时才可见 我怎样才能始终显示它 目前最好的方法是使用android fadeScrollbars false 在 xml 中相当于ScrollView setScrollbarFadingEnabled fa
  • 使子视图与父滚动视图的宽度匹配

    我有一个带有许多 EditText 子项的水平滚动视图 我希望这些子级中的每一个都与父级滚动视图的可见区域具有相同的宽度 这在 XML 中可能吗 您可以编写一个小辅助类来做到这一点 我们正在创建一个非常小的类来扩展EditText call
  • 布局底部有两个按钮的滚动视图

    我想创建一个具有滚动视图的布局 在布局顶部的滚动视图内将有两个 Textview 在中心将有两个 Edittexts 在布局的底部将有两个按钮 但一切都将在主滚动视图下 我的要求的直观描述 我已经完成了一些编码 可以滚动顶部内容 但将底部的
  • 在 Android 中向下滚动列表视图时强制关闭

    当我尝试在片段活动中向下滚动列表视图时 出现强制关闭错误 其中有 1 个图像视图和 2 个文本视图 我是android的初学者 所以除了android最常用组件的基本场景之外没有太多的知识 没有位图 OOM 错误 因为我也没有使用图像进行了
  • android中ScrollView中的图像

    在我的应用程序中 我想放置一个 png 文件 并且希望它在横向和纵向模式下都被视为滚动图像 请建议代码或示例 要使您的 Imageview 在高度不适合时滚动 您可以在 xml 中的 ScrollView 内添加一个 ImageView 并
  • SwiftUI ScrollView 只向一个方向滚动

    尝试使用视图作为列表行样式来创建自定义列表 以摆脱默认情况下列表中难看的分隔线 但是 一旦我将 ZStack 行放入滚动视图中 滚动视图就会在两个方向上滚动 而不仅仅是垂直滚动 这是内容视图 NavigationView ScrollVie
  • Android - 材料设计 - NavigationView - 如何放置垂直滚动?

    我正在使用 NavigationViewcompile com android support design 22 2 1 嗯 一切都很好 除非它没有垂直滚动 如何通过xml设置呢 xml
  • SwiftUI ScrollView 无法禁用垂直弹跳?

    初始化程序中有一个带有 ScrollView alwaysBounceVertical false 的属性 但我似乎找不到它了 有谁知道如何禁用 SwiftUI ScrollView 上的垂直弹跳 过度滚动 是的 它已从 ScrollVie
  • 当键盘出现时滚动布局

    当键盘出现并隐藏工具栏 FrameLayout 时 我的屏幕大小调整到顶部 我只需将聊天项目滚动到顶部并将框架布局保持在顶部 我尝试了谷歌和SO的一些例子 但对我没有任何帮助
  • 检查android滚动视图是否可以滚动

    你知道是否可以知道 Android Widget ScrollView 是否可以滚动吗 如果它有足够的空间 则不需要滚动 但一旦尺寸超过最大值 小部件就可以滚动 我在参考文献中没有看到可以提供此信息的方法 也许可以对滚动视图内的线性布局的大

随机推荐

  • 产品经理入门——必备技能之【产品运营】

    文章目录 一 基础介绍 1 1 用户生命周期 产品生命周期 1 2 运营的目的 1 3 运营的阶段 1 4 运营的主要工作 海盗模型 二 AARRR模型 2 1 Acquisition 拉新 2 2 Activision 促活 2 3 Re
  • 让所有GUI都自动化-PyAutoGUI(GUI自动化工具)

    目录 1 前言 2 简介 3 安装 4 常用函数 5 保护措施 6 鼠标函数 7 键盘函数 8 消息弹窗函数 9 截屏函数 10 示例 1 前言 在使用 Selenium 进行自动化测试时 鼠标事件可以用 ActionChains 类 键盘
  • 深度学习三:分类问题之概率生成模型

    分类问题 概率生成模型 课程例子 通过宝可梦的一些属性能不能预测出这个宝可梦属于哪个类型 用于分类的训练集数据 一直宝可梦的属性和他所属于的种类 如果考虑用线性回归的方式来做这件事情 如果输入数据 通过函数得到的值接近1 我们就说这只宝可梦
  • 自定义类型<结构体>

    目录 1 结构的基础知识 2 结构的声明 3 特殊的声明 4 结构的自引用 5 结构体变量的定义和初始化 6 结构体内存对齐 7 修改默认对齐数 8 结构体传参 1 结构的基础知识 我们之前简单介绍过结构体 可以保存不同数据类型 我们基本数
  • 模拟电路设计(34)---脉宽调制型开关电路

    在开关稳压电源中 直流变换器中的功率晶体管工作在开关状态 目前开关电源的工作频率在几百kHz 有些甚至已经到了MHz量级 如下图所示是DC DC开关变换器的原理框图 DC DC开关变换器的原理框图 开关电源的实现方式有很多种 如最传统的脉宽
  • N32应用笔记1:keil新建工程,编译与烧录

    N32应用笔记1 keil新建工程 编译与烧录 本文目的 前置准备 N32简介 N32G452VEL7简介 我的印象 工程建立流程 1 固件包下载和安装 2 新建工程文件的文件夹 3 keil MDK新建工程 4 向工程分组添加必要的文件
  • windows网络编程-结构体说明

    1 sockaddr in struct sockaddr in short sin family u short sin port 端口 struct in addr sin addr IP地址 long类型 4字节 char sin z
  • 7 SpringBoot整合RocketMQ发送单向消息

    发送单向消息是指producer向 broker 发送消息 执行 API 时直接返回 不等待broker 服务器的结果 这种方式主要用在不特别关心发送结果的场景 举例 日志发送 RocketMQTemplate给我们提供了sendOneWa
  • 通过Hyperic-hq产品的基础包sigar.jar来实现服务器状态数据的获取

    通过Hyperic hq产品的基础包sigar jar来实现服务器状态数据的获取 Sigar jar包是通过本地方法来调用操作系统API来获取系统相关数据 Windows操作系统下Sigar jar依赖sigar amd64 winnt d
  • 安卓培训开发!通宵都要看完这个Android关键技术点,看这一篇就够了!

    前言 上回承诺过大家 一定会出 HTTP 的系列文章 今天终于整理完成了 作为一个 web 开发 HTTP 几乎是天天要打交道的东西 但我发现大部分人对 HTTP 只是浅尝辄止 对更多的细节及原理就了解不深了 在面试的时候感觉非常吃力 这篇
  • C/C++文件操作、输入输出备忘

    1 C 文件操作 1 1 普通ascii字符 1 cin gt gt 结束条件 Enter Space Tab键 读取结束条件 while cin gt gt value cin gt gt 后便可以跟整型 浮点型 字符串 string c
  • TensorFlow中读取图像数据的三种方式

    Update on 2019 06 18 从tesorflow1 11之后 大概是这个版本号 谷歌推出了tf data模块来读取数据 甚至在tensorflow2 0中 取消了数据队列管道 所以我建议大家学习tf data模块 未来我也会做
  • JavaWeb——Servlet详解

    文章目录 什么是Servlet Servlet及其子类 Servlet中常用方法 init service distory Servlet的生命周期 Servlet初始化时机 钝化和活化 Http协议 Session 会话跟踪技术 常用AP
  • Content-encoding: gzip 请求接口响应结果带有乱码解决办法

    问题 在请求接口时 接口响应结果乱码 通过平常的编码格式转化来解码不能解决 观察接口的响应内容编码为Content encoding gzip 解决办法 public static String uncompressString Strin
  • PostgreSQL 系统参数调整及并行设置(转)

    转自 https yq aliyun com teams 5 OS 准备 yum y install coreutils glib2 lrzsz sysstat e4fsprogs xfsprogs ntp readline devel z
  • 如何写好代码?

    想要的都拥有 失去的都释怀 2020鼠于你 文章目录 1 写代码容易吗 2 设计模式 3 软件生命周期 4 技术业务架构 5 轮子 6 开源 7 真相 1 写代码容易吗 代码容易写 也不容易写 但做人不能一直太中立 那我选择好代码不容易写吧
  • 【Linux】make和makefile详解

    在linux系统上编译大一点的项目时 会用到make makefile文件 1 make与makefile 利用make工具 我们可以将大型的开发项目分解成为多个更易于管理的模块 对于一个包括几百个源文件的应用程序 使用make和makef
  • 卷积神经网络之计算机视觉

    深度学习给机器视觉带来了巨大的进步 深度学习和机器视觉能够帮助机器分清汽车和周围的行人 并且帮助汽车避开他们 机器视觉而且能够使得人脸识别更加高效和精准 计算机视觉标志着新兴应用的产生 通过这些工具 你能产生新的产品和应用 其次即使你未在机
  • 区块链技术栈-脚本系统

    脚本系统 脚本系统在区块链中是个比较抽象的概念 也是其中一个很重要的功能 可以说区块链系统之所以能形成一个有价值的网络 依靠的就是脚本系统 他就像是一个发动机一样 驱动着区块链系统不断进行着各种数据的收发 所谓脚本 就是指一组程序规则 在区
  • 使用scroll-view实现tabs(增加动画过渡效果)

    文章目录 前情提要 组件 scroll view 小程序项目 app json pages index index wxml pages index index wxss pages index index js 相关链接 前情提要 组件