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页的更多相关文章

  1. 切换tab页

    //切换Tab页        $('#tt').tabs({               border:false,               onSelect:function(title){ ...

  2. 切换tab页时,tab页中的echart变形问题

    本文为博主原创,未经允许,不得转载: 在两个tab页中,分别展现了两个echart图表,同样的格式与写法,但只有在默认选中的tab页中的图表显示的是正常的, 但进入另一个tab页中时,图表则产生了变形 ...

  3. angularjs 切换tab页的一个方法

    tab条的 css: .floor-tab-li { float: left; padding: 6px 12px; font-size: 14px; font-weight: normal; lin ...

  4. 防止tab页重复的去请求服务端

    直接看图吧. 左边是企业树,右边是依据企业变化的一个tab页 实现功能:1.我们希望假设选中的企业不变,我们在切换旁边五个tab页的时候,仅仅是第一次进去的时候请求server端.以下来回切换tab页 ...

  5. 用CSS实现Tab页切换效果

    用CSS实现Tab切换效果 最近切一个页面的时候涉及到了一个tab切换的部分,因为不想用js想着能不能用纯CSS的选择器来实现切换效果.搜了一下大致有下面三种写法. 利用:hover选择器 缺点:只有 ...

  6. jquery实现tab页切换显示div

    1.jQuery实现tab切换显示代码实现 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" &q ...

  7. ECSHOP:首页实现显示子分类商品,并实现点击Tab页切换分类商品

    例子:首页实现显示子分类商品,并实现点击Tab页切换分类商品(非AJAX) 开始:    1. 打开调试开关     文件地址:include/cls_template.php 找到 : functi ...

  8. Tab页签切换

    js之tab页签切换效果       现在web网站,很多地都需要用到tab页签. 示例:         $(document).ready(function(){               va ...

  9. tab页切换

    做了一个tab页切换.点击不同tab,显示对应的内容信息 如图 =================HTML===================== <!doctype html public ...

  10. 小技巧之Selenium如何切换到弹出的Tab页中

    今天群里讨论了一个问题,如何将selenium的操作焦点切换到浏览器中新弹出来的Tab页中,正好对应到了昨天的那篇文章“小技巧之在浏览器中打开新的页签”.今天就带大家来解决这个问题: 先封装一个Tab ...

随机推荐

  1. MySQL优化方向

    MySQL优化手段 数据库设计层面 范式设计 减少数据冗余 提高数据一致性 索引策略 选择合适的索引类型 (BTREE, HASH) 覆盖索引 索引选择性 表结构优化 使用合适的数据类型 避免使用NU ...

  2. 预见预判_AIRIOT智慧交通管理解决方案

    随着机动车保有量的逐步增加,城市交通压力日益增大.同时,新能源车辆的快速发展虽然带来了环保效益,但也因不限号政策而进一步加剧了道路拥堵问题.此外,各类赛事和重大活动的交通管制措施也时常导致交通状况复杂 ...

  3. 【winform】 WeifenLuo.WinFormsUI.Docking.dll 组件学习

    这个组件是用来 对窗体的布局用的,可搭建一个管理系统的ui框架. 使用例子:https://blog.csdn.net/zzzzzzzert/article/details/80791554

  4. Android 12(S) Binder(三)

    学以致用,这一节来native binder实战! android 12中的service用到的Bp.Bn文件多由aidl生成,所以实战中也用aidl来生成. 1.文件目录结构 文件目录结构如上,偷懒 ...

  5. 一款功能强大的Python工具,一键打包神器,一次编写、多平台运行!

    1.项目介绍 Briefcase是一个功能强大的工具,主要用于将Python项目转化为多种平台的独立本地应用.它支持多种安装格式,使得Python项目能够轻松打包并部署到不同的操作系统和设备上,如ma ...

  6. this,构造器,static,final,单例模式

    this关键字 在java中this是一个引用变量,即指向当前对象地址的引用(指针),→可以把this当作当前对象,便于更好的索引. this() 实际是调用了当前对象的构造器 1. 引用当前对象的属 ...

  7. Bi-encoder vs Cross encoder?

    本文永久地址:https://wanger-sjtu.github.io/encoder-cross-bi/ Bi-encoder和Cross-encoder是在自然语言理解任务模型的两种不同方法,在 ...

  8. MySQL学习笔记-多表查询(上)

    多表查询(上) 一. 多表关系 在实际应用中,根据需求,设计的表结构之间存在联系,联系一般分为以下三种 一对多(多对一) 多对多 一对一 1. 一对多(多对一) 案例:部门与员工的关系,一个部门对应多 ...

  9. 生成树协议(STP)基本知识及实验(使用eNSP)

    1.基本知识--摘至<网络之路--交换专题> (1)生成树的作用:在链路层消除环路上可能出现的广播风暴. (2)生成树的工作由三部分组成:选举过程.拓扑计算.端口行为确定. 选举过程:在二 ...

  10. 新手入门html

    网页的组成:结构 表现 行为 Web标准: 结构  表现 行为 Html  css  js Html和css 是w3c制定标准  js是ECMA制定标准 HTML:指的是超文本标记语言 文件命名的规范 ...