js自定义实现类似锚点(内容部分滚动)

场景: 

效果图如上,类似锚点,但是屏幕不滚动。高度计算我不是很熟练。for循环写的比较麻烦。element plus 和Ant Design有类似组件效果。

html: 
<template><div><div style="height: 400px;" class="header"></div><div class="contain"><div class="left"><button @click="oneClick(0)">111</button><button @click="oneClick(1)">222</button><button@click="oneClick(2)">333</button><button @click="oneClick(3)">444</button><button@click="oneClick(4)">555</button></div><div class="right"><div class="one item">100px</div><div class="two item">200px</div><div class="three item">300px</div><div class="four item">400px</div><div class="five item">500px</div></div></div><div class="footer"></div></div>
</template>
css:
<style>
.header {z-index: 999;position: relative;background: red;
}.footer {background: yellow;height: 400px;
}.contain {width: 80vw;position: relative;display: flex;
}.left {width: 200px;height: 300px;background: rgb(102, 214, 180);}.right {/* position: absolute; */left: 200px;
}.one {background: rgb(96, 96, 177);width: 400px;height: 100px;position: relative;z-index: 99;transition: all 0.3s ease;
}.two {background: rgb(218, 96, 207);height: 200px;transition: all 0.3s ease;
}.three {background: royalblue;height: 300px;transition: all 0.3s ease;
}.four {background: rgb(31, 151, 27);height: 400px;transition: all 0.3s ease;
}.five {background: rgb(233, 94, 52);height: 500px;transition: all 0.3s ease;
}
</style>
js:
<script>
export default {data() {return {height: 0,//需要偏移的高度nowIndex: 0,//现在选的indexchoosePre: 0,//上一次选的indexgoHeight: 0,//向上时已经滚动的高度containHeight: 0, //中间contain的高度}},methods: {oneClick(nowIndex) {let contain = document.getElementsByClassName('contain')[0]let items = document.getElementsByClassName('item');this.containHeight = 0//之前选的4 现在选的2for (let i = nowIndex; i < items.length; i++) {this.containHeight += items[i].offsetHeight}contain.style.height = this.containHeight + 'px'if (this.choosePre > nowIndex) {this.goHeight = 0for (let i = nowIndex; i < this.choosePre; i++) {this.goHeight += items[i].offsetHeight}this.height = Number(this.height) - Number(this.goHeight)for (let i = 0; i < items.length; i++) {if (nowIndex == 0) {items[i].style.transform = `translateY(0px)`;} else {items[i].style.transform = `translateY(-${this.height}px)`;}}this.choosePre = nowIndex}//之前选的2 现在选的3else if (this.choosePre < nowIndex) {this.height = 0for (let i = 0; i < nowIndex; i++) {this.height += items[i].offsetHeight}this.choosePre = nowIndexfor (let i = 0; i < items.length; i++) {if (nowIndex == 0) {items[i].style.transform = `translateY(0px)`;} else {items[i].style.transform = `translateY(-${this.height}px)`;}}}}}
}
</script>
 
 

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

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

相关文章

入门视频剪辑:视频合并不再难,批量嵌套合并的简单步骤

在数字媒体时代&#xff0c;视频剪辑已成为一项基本技能。无论是制作家庭电影、公司宣传片还是在线教育内容&#xff0c;视频剪辑都扮演着重要角色。对于初学者来说&#xff0c;视频剪辑可能看起来有些复杂&#xff0c;但掌握了正确的步骤和技巧后&#xff0c;你会发现它其实并…

共享WiFi项目加盟骗局:共享WiFi贴码收益真的月入过万?

如今每个人的手机都是智能手机&#xff0c;我们几乎随时随地都需要网络的陪伴。而随着共享经济的概念深入人心&#xff0c;一种名为“共享WiFi贴码”的新兴事物逐渐走入了我们的视线。据说通过这种方式&#xff0c;人们可以实现轻资产创业&#xff0c;甚至有人声称能借此达到月…

HTTPS对于网站到底价值几何?

现在HTTPS基本上已经是网站的标配了&#xff0c;很少会遇到单纯使用HTTP的网站。但是十年前这还是另一番景象&#xff0c;当时只有几家大型互联网公司的网站会使用HTTPS&#xff0c;大部分使用的都还是简单的HTTP&#xff0c;这一切是怎么发生的呢&#xff1f; 为什么要把网站…

crossover不能生成容器 无法创建容器怎么办

CrossOver不能生成容器&#xff0c;我们应该先了解什么是容器&#xff0c;容器是盛放类虚拟机——CrossOver在macOS系统和Linux系统下载的win版软件的器皿。无法创建容器怎么办&#xff1f;无法创建多数情况是macOS系统与CrossOver不兼容所造成的。 首先&#xff0c;我们将介绍…

【Web前端】表单

1.表单简介 表单主要是让用户输入信息&#xff0c;用来收集用户信息&#xff0c;并且提交给后台做处理。表单包含了一些表单域元素&#xff0c;包括文本框、密码框、单选按钮、复选按钮、下拉列表等等例如:百度、邮箱登录 2.表单标签 2.1 form表签 与用户进行交互&#xff0…

Elasticsearch中对文章进行索引和查重

解决思路 要在Elasticsearch中对文章进行索引和查重&#xff0c;可以按照以下步骤操作&#xff1a; 安装Elasticsearch并启动服务。 安装Python的Elasticsearch客户端库&#xff0c;可以使用pip install elasticsearch命令进行安装。 编写Python代码&#xff0c;使用Elastic…

WebDAV之π-Disk派盘 + 溯记

“溯记”是一款提供丰富功能的时间轴日记应用,旨在帮助用户记录生活中的碎片化想法和事件,并提供便捷的回顾和管理功能。根据您提供的描述,这款应用具有丰富的特性,包括时间轴浏览、多媒体支持、实时存储、模糊搜索、日历视图、故事关联和随机回溯。这些功能将帮助用户记录…

【如何在本地安装Llama 3,坐好30秒!稳的很!!】

如何在本地安装Llama 3&#xff0c;30秒闪速教程 点击 Ollama官网 点击对应系统内容进行下载 解压后打开文件: 双击后打开 复制 打开CMD 窗口终端 复制黏贴 ollama run llama3 等下载完成 OK&#xff0c;安装完成&#xff01; 输入问题&#xff0c;愉快玩耍&#xff01; …

阿里一面——struct和class的区别|基类指针与派生类指针的强转

阿里一面——struct和class的区别|基类指针与派生类指针的强转 1.struct和class的区别1.1. 成员1.2. 函数 2. 基类指针与派生类指针的强转 1.struct和class的区别 1.1. 成员 struct的默认访问权限为public, 而class的默认访问权限为private成员的权限设置&#xff1a;可以使用…

俄罗斯副总理暗示欧佩克+或增加原油产量,亚洲早盘油价小幅下跌

在俄罗斯副总理亚历山大诺瓦克暗示欧佩克可能采取行动增加原油产量后&#xff0c;亚洲早盘的油价出现小幅下跌。这一消息引起了市场对原油供给增加的担忧&#xff0c;导致油价走低。 City Index和FOREX.com的市场分析师Fawad Razaqzada表示&#xff0c;虽然原油价格在技术上尚…

IDEA远程连接docker服务,windows版docker desktop

1.windows上安装docker desktop docker desktop下载地址&#xff1a;Docker Desktop: The #1 Containerization Tool for Developers | Docker 有的windows系统不支持安装docker desktop 安装完之后我们可以直接打开&#xff0c;可以选择不登录使用 我们用IDEA连接到docker …

SystemVerilog/Verilog中的仿真延时建模之模块路径延时

一 概要 模块路径延迟,描述的是模块中信号从源端到目的端传输的延迟。 路径以及对应的延迟是在模块中的specify块中指定的,其中信号源端一般为input或者inout,而目的端则只能为output或者inout.在specify中指定的模块路径,常见的形式主要三种,分别是: 简单路径(Simple Path…

Pikachu 靶场 CSRF 通关解析

前言 Pikachu靶场是一种常见的网络安全训练平台&#xff0c;用于模拟真实世界中的网络攻击和防御场景。它提供了一系列的实验室环境&#xff0c;供安全专业人士、学生和爱好者练习和测试他们的技能。 Pikachu靶场的目的是帮助用户了解和掌握网络攻击的原理和技术&#xff0c;…

Day64|代码随想录二刷总结

大体感受 去年暑假跟着&#xff0c;回想起来半年多的时间内经历了不少变故&#xff0c; 更多的是心态上的变化。之前的一刷更多的是缓解没啥事做的焦虑&#xff0c;而二刷是在实习期间抽时间刷的&#xff0c;能做出来的题更多了&#xff0c;刷题的效果也更好。 刷题变化 最明…

如何通过二手机店ERP软件实现店铺经营效率最大化?

2024年&#xff0c;在科技高速发展的今天&#xff0c;手机批发和零售行业正在经历前所未有的改革。为了抓住这次机遇&#xff0c;提高竞争力&#xff0c;二手手机店需要找到一种全面、高效、智能的管理工具。鉴于此&#xff0c;超机商城为众多二手手机店的商家量身定制了一款专…

嵌入式C语言高级教程:实现基于STM32的面部识别系统

面部识别技术在安全和自动化领域越来越受到重视。本教程将指导您如何在STM32微控制器上使用OpenMV实现基本的面部识别功能。 一、开发环境准备 硬件要求 微控制器&#xff1a;STM32H743II&#xff0c;具备高性能处理能力和充足的存储资源。开发板&#xff1a;STM32H7 Discov…

恢复数据,电脑数据恢复详细操作指南(4个方法)

“我经常会把很多重要的文件都保存在电脑上&#xff0c;但今天在清理电脑时好像误删了一些数据&#xff0c;有没有比较好用的数据恢复方法可以分享一下呢&#xff1f;请大家给我推荐几个吧&#xff01;” 随着电脑的普及&#xff0c;我们越来越多地将重要数据存储在电脑中。然而…

Window安装OpenSSH客户端及服务

文章目录 引言I 给windows安装一个ssh服务1.1 下载对应的OpenSSH1.2 安装sshd服务1.3 开放22端口1.4 配置sshd服务自动启动1.5 验证ssh是否可用II 服务部署III 公钥登录 Windows OpenSSH Server3.1 生成公钥-私钥对,把公钥复制到目标机器的3.2 授予对AuthorizedKeysFile权限3.…

pdf2htmlEX:pdf 转 html,医学指南精细化处理

pdf2htmlEX&#xff1a;pdf 转 html&#xff0c;医学指南精细化处理 单文件转换多文件转换 代码&#xff1a;https://github.com/coolwanglu/pdf2htmlEX 拉取pdf2htmlEX 的 Docker&#xff1a; docker pull bwits/pdf2htmlex # 拉取 bwits/pdf2htmlex不用进入容器&#xff0c…

富格林:学习辨别虚假预防欺诈亏空

富格林悉知&#xff0c;对于市场发布的虚假欺诈案例&#xff0c;投资者可注意了解其中受骗原因&#xff0c;总结因对的策略应对避免受害亏损。市场是多变复杂的&#xff0c;如果只是学习刻板的套路方法&#xff0c;只能应对正常交易&#xff0c;对于一些诱导虚假便可能无法避免…