Taro 滚动切换tab页
import React, { Component } from 'react'
import { View, Text, ScrollView } from '@tarojs/components'
import { createSelectorQuery } from '@tarojs/taro'
import './index.scss' const tabList = [{name: '头', value: 'header'},{name: '内容',value: 'content'},{name: '底部', value: 'footer'}]
export default class Index extends Component {
state ={
activeStatus: 'header',
heightArr: [],
activeIndex:0
}
handleTab(value, index) {
this.setState({
activeStatus: value,
activeIndex: index
})
}
handleScroll({detail}) {
let heightArr = []
let number = 0
// 获取节点距离容器顶部的高度
tabList.map(item => {
createSelectorQuery().select(`#${item.value}`).boundingClientRect(res => {
number = res.height + number
heightArr.push(number)
this.setState({
heightArr: heightArr
})
}).exec()
}) // 根据滚动定位节点
const scrollTop = Math.ceil(detail.scrollTop)
const { heightArr:scrollArr } = this.state
this.state.heightArr.map((item, index) => {
if(scrollTop >= 0 && scrollTop < scrollArr[0]) {
// 第一个
this.setState({activeIndex: 0})
}
if(scrollTop >= scrollArr[index - 1] && scrollTop <= scrollArr[index]) {
// 第N个
this.setState({activeIndex: index})
}
}) }
render () {
const { activeStatus,activeIndex } = this.state
return (
<View className='index'>
<View className='tabList'>
{tabList.map((item, index) => (
<View onClick={this.handleTab.bind(this, item.value, index)} key={item.value} className={`tab-item ${index===activeIndex && 'active'}`}>{item.name}</View>
))}
</View>
<ScrollView style={{height: '400px'}} scrollY scrollWithAnimation scrollIntoView={activeStatus} onScroll={this.handleScroll.bind(this)}>
<View id='header'>
<View style={{height: '600px'}}>头</View>
</View>
<View id='content'>
<View style={{height: '150px'}}>内容</View>
</View>
<View id='footer'>
<View style={{height: '3000px'}}>底部</View>
</View>
</ScrollView>
</View>
)
}
}
Taro 滚动切换tab页的更多相关文章
- 切换tab页
//切换Tab页 $('#tt').tabs({ border:false, onSelect:function(title){ ...
- 切换tab页时,tab页中的echart变形问题
本文为博主原创,未经允许,不得转载: 在两个tab页中,分别展现了两个echart图表,同样的格式与写法,但只有在默认选中的tab页中的图表显示的是正常的, 但进入另一个tab页中时,图表则产生了变形 ...
- angularjs 切换tab页的一个方法
tab条的 css: .floor-tab-li { float: left; padding: 6px 12px; font-size: 14px; font-weight: normal; lin ...
- 防止tab页重复的去请求服务端
直接看图吧. 左边是企业树,右边是依据企业变化的一个tab页 实现功能:1.我们希望假设选中的企业不变,我们在切换旁边五个tab页的时候,仅仅是第一次进去的时候请求server端.以下来回切换tab页 ...
- 用CSS实现Tab页切换效果
用CSS实现Tab切换效果 最近切一个页面的时候涉及到了一个tab切换的部分,因为不想用js想着能不能用纯CSS的选择器来实现切换效果.搜了一下大致有下面三种写法. 利用:hover选择器 缺点:只有 ...
- jquery实现tab页切换显示div
1.jQuery实现tab切换显示代码实现 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" &q ...
- ECSHOP:首页实现显示子分类商品,并实现点击Tab页切换分类商品
例子:首页实现显示子分类商品,并实现点击Tab页切换分类商品(非AJAX) 开始: 1. 打开调试开关 文件地址:include/cls_template.php 找到 : functi ...
- Tab页签切换
js之tab页签切换效果 现在web网站,很多地都需要用到tab页签. 示例: $(document).ready(function(){ va ...
- tab页切换
做了一个tab页切换.点击不同tab,显示对应的内容信息 如图 =================HTML===================== <!doctype html public ...
- 小技巧之Selenium如何切换到弹出的Tab页中
今天群里讨论了一个问题,如何将selenium的操作焦点切换到浏览器中新弹出来的Tab页中,正好对应到了昨天的那篇文章“小技巧之在浏览器中打开新的页签”.今天就带大家来解决这个问题: 先封装一个Tab ...
随机推荐
- 飞桨动态图PyLayer机制
一.主要用法 如下是官方文档上的使用样例: import paddle from paddle.autograd import PyLayer # Inherit from PyLayer class ...
- python教程6.3-time模块datetime模块
由于time是基于Unix Timestamp,所以其所能表述的日期范围被限定在 1970 – 2038 之间.因此2038年后就不能用time了,建议使用datetime. time模块 有下面几 ...
- JavaScript的数学计算库:decimal.js
An arbitrary-precision Decimal type for JavaScript. 功能 整数和浮点数 简单但功能齐全的 API 复制 JavaScript 和对象的许多方法Num ...
- k8s多集群切换:使用kubeconfig文件管理多套kubernetes(k8s)集群
目录 一.系统环境 二.前言 三.kubeconfig文件 四.kubernetes(k8s)多集群切换 一.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux rele ...
- pyinstaller 打包无窗口python http.server无法启动
最近在写一个简单的文件服务器用来访问静态文件,遇到在pyinstaller无窗口模式下无法启动的问题,记录一下解决方案. 原因:http.server需要将记录输出到窗口,而pyinstaller打包 ...
- ABP邮件发送
ABP Vnext发邮件要使用AbpMailKitModule的实现IEmailSender,要检查添加了Volo.Abp.MailKit,其dependon 要添加typeof() 它使用Sett ...
- windows下IPv6通信(C++、MFC)
Server #include <stdio.h> #include <Ws2tcpip.h> #include <winsock2.h> #define HELL ...
- C#笔记 picturebox功能实现(滚动放大,拖动)
代码链接 1. picturebox上的坐标与原图中坐标的转换 (1) 由于图片的长宽比例和picturebox的长宽比例不同,所以图片不想拉伸的话,左右或者上下会有留白.将picturebox的si ...
- 深度学习论文翻译解析(二十二):Uniformed Students Student-Teacher Anomaly Detection With Discriminative Latent Embbeddings
论文标题:Uniformed Students Student-Teacher Anomaly Detection With Discriminative Latent Embbeddings 论文作 ...
- Linux 提权-Cron Jobs
本文通过 Google 翻译 Cron Jobs – Linux Privilege Escalation - Juggernaut-Sec 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行 ...