react tab选项卡吸顶实现

react  tab选项卡吸顶实现,直接上代码(代码有注释)

tsx代码

/* eslint-disable react-hooks/exhaustive-deps */
import React, { useEffect, useState } from "react";
import DocumentTitle from 'react-document-title'
import styles from './styles.module.less'// 双旦活动
const Holiday: React.FC<any> = () => {const tabList = [{label:'礼物榜单',value:0},{label:'圣诞活动',value:1},{label:'元旦活动',value:2}]const [active,setactive] = useState<number>(0)const [isFixed,setisFixed] = useState<boolean>(false)//获得页面向左、向上卷动的距离const getScroll = () => {return {left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0,top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0};}useEffect(() => {const btnList = document.getElementById('btnList')const offsetTop = btnList?.offsetTop || 0  // offsetTop:元素到offsetParent顶部的距离(当前元素顶部距离最近父元素顶部的距离)window.onscroll = function() {if(getScroll().top >= offsetTop){  // 判断滚动高度是否大于等于 btnList的offsetTopsetisFixed(true)   // 用于判断是否给btnList动态设置style}else{setisFixed(false)}}}, [])return (<DocumentTitle title='双旦活动'><div className={styles.Holiday}><div className={styles.top}><div className={styles.btnList} id="btnList" style={isFixed ? { zIndex: "999",top: "0",position: "fixed", backgroundColor: "#fff" } : {}}>{tabList.map((item:any) => (<div onClick={()=> setactive(item.value)} key={item.value}className={active === item.value ? styles.acitve : ''}>{item.label}</div>))}</div></div><div className={styles.center}><div className={styles.centerBox}><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div><div>双旦活动</div></div></div></div></DocumentTitle>)
}
export default Holiday;

less代码

.Holiday {width: 100%;height: 100%;position: relative;display: flex;flex-direction: column;.top{width: 100vw;height: 590px;background: url('../../assets/toplistbg.png') no-repeat;background-size: 100%;position: relative;.btnList{width: 100vw;padding: 20px 37px;box-sizing: border-box;position: absolute;bottom: 28px;height: 120px;display: flex;justify-content: space-between;bottom: 20px;>div{&.acitve{background: rgba(1, 50, 82, 1);color: #fff;}width: 212px;height: 80px;background: rgba(1, 50, 82, 0.1);border-radius: 40px;font-size: 30px;color: #333;display: flex;align-items: center;justify-content: center;font-family: PingFangSC-Regular, PingFang SC;font-weight: 400;}}}.center{width: 100vw;padding: 24px;box-sizing: border-box;.centerBox{width: 100%;background: #044067;border-radius: 20px;box-sizing: border-box;padding: 30px 28px;>div{color: #fff;font-size: 30px;text-align: center;line-height: 80px;}}}
}

效果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/521045.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java操作内存,简单讲解varhandle的使用

概述&#xff1a;按理说jdk8的unsafe类就够用了&#xff0c;估计是因为不安全的原因&#xff0c;到jdk9出了个varhandle类&#xff0c;到jdk21的时候出了Arena和MemorySegment,基本就可以取代unsafe类的使用了。这里我主要讲varhandle类&#xff0c;因为大部分人升级jdk顶多升到…

网页在特殊日子一键变灰

<template> <div :class"{ grayscale: isGrayscale }"> <!-- 你的页面内容放在这里 --> </div> </template> <script> export default { data() { return { // 存储哀悼日的数组 aidaoriDates:["0404", &q…

使用Pytorch导出自定义ONNX算子

在实际部署模型时有时可能会遇到想用的算子无法导出onnx&#xff0c;但实际部署的框架是支持该算子的。此时可以通过自定义onnx算子的方式导出onnx模型&#xff08;注&#xff1a;自定义onnx算子导出onnx模型后是无法使用onnxruntime推理的&#xff09;。下面给出个具体应用中的…

pytorch续写tensorboard

模型训练到一半有 bug 停了&#xff0c;可以 resume 继续炼&#xff0c;本篇给出 pytorch 在 resume 训练时续写 tensorboard 的简例&#xff0c;参考 [1-3]&#xff0c;只要保证 writer 接收的 global step 是连着的就行。 Code import numpy as np from torch.utils.tensor…

【节能减排/能耗分析/设备运维】AcrelEMS-Zone园区能源管理系统解决方案

市场规模 智慧园区市场稳步增长&#xff0c;市场规模由2019年的1191亿元增至2021年的1394亿元。智慧园区作为产业升级转型的重要载体&#xff0c;近年来受到国家政策大力支持&#xff0c;行业前景广阔&#xff0c;预计2022年智慧园区市场规模将达1543亿元&#xff0c;2024年市…

如何让JMeter也生成精美详细allure测试报告

&#xff08;全文约2000字&#xff0c;阅读约需5分钟&#xff0c;首发于公众号&#xff1a;测试开发研习社&#xff0c;欢迎关注&#xff09; 内容目录&#xff1a; 一、需求 二、思路 三、验证 四、实现 五、优化 六、彩蛋 篇幅较长&#xff0c;建议先收藏后阅读 一、需…

LCR 168. 丑数

解题思路&#xff1a; class Solution {public int nthUglyNumber(int n) {int a 0, b 0, c 0;int[] res new int[n];res[0] 1;for(int i 1; i < n; i) {int n2 res[a] * 2, n3 res[b] * 3, n5 res[c] * 5;res[i] Math.min(Math.min(n2, n3), n5);if (res[i] n2)…

345.反转字符串中的元音字母

题目&#xff1a;给你一个字符串 s &#xff0c;仅反转字符串中的所有元音字母&#xff0c;并返回结果字符串。 元音字母包括 a、e、i、o、u&#xff0c;且可能以大小写两种形式出现不止一次。 class Solution {//画图&#xff0c;好理解点public String reverseVowels(String…

kasan排查kernel内存越界示例(linux5.18.11)

参考资料&#xff1a; 1&#xff0c;内核源码目录中的Documentation\dev-tools\kasan.rst 2&#xff0c;KASAN - Kernel Address Sanitizer | Naveen Naidu (naveenaidu.dev) 一、kasan实现原理 KASAN&#xff08;Kernel Address SANitizer&#xff09;是一个动态内存非法访…

51-26 DriveMLM: 多模态大型语言模型与自动驾驶行为规划状态对齐

DriveMLM是来自上海AILab、港中文、商汤、斯坦福、南京大学和清华大学的工作。该模型使用各种传感器(如相机、激光雷达)、驾驶规则和用户指令作为输入&#xff0c;采用多模态LLM对AD系统的行为规划进行建模&#xff0c;做出驾驶决策并提供解释。该模型可以用于闭环自动驾驶&…

蓝桥杯——web(ECharts)

ECharts 初体验 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><script src"echarts.js">&l…

Docker-完整项目的部署(保姆级教学)

目录 1 手动部署(白雪版) 1.1 创建网络 1.2 MySQL的部署 1.2.1 准备 1.2.2 部署 1.3 Java项目的部署 1.3.1 准备 1.3.1.1 将Java项目打成jar包 1.3.1.2 编写Dockerfile文件 1.3.2 部署 1.3.2.1 将jar包、Dockerfile文件放在linux同一个文件夹下 1.3.2.2 构建镜像 …