无限视差滚动(轮播)

无限视差滚动

无限视差滚动(轮播)可以给用户一种无限滚动的感觉,视觉效果非常的好。话不多说,先来看效果

在这里插入图片描述

这边因为得控制GIF图片大小在5MB以内,导致看着不太丝滑

这种效果在国外用得很多,不过最近几年国内也慢慢开始使用了,这只是演示效果,具体还得看实际要求。
接下来咱们来看代码部分
在这里插入图片描述
HTML结构的话 就是一个div即可

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="./src/css/视差滚动.css"><title>无限视差滚动</title>
</head>
<body><div class="container"></div>
</body>
<script src="./src/js/视察滚动.js"></script>
</html>

ok,接下来我们来看js代码部分
在这里插入图片描述

  const imgs = ['./img/11.png','./img/22.jpg','./img/33.jpg','./img/44.jpg',// './img/55.jpg',]const container = document.querySelector('.container');let currentIndex = 0;function createItem(params) {const imgUrl = imgs[params];const item = document.createElement('div');item.classList.add('item');item.innerHTML = `<img src="${imgUrl}"/>`;container.appendChild(item);return item;}function reset() {container.innerHTML = '';const previousPage = currentIndex - 1 < 0 ? imgs.length - 1 : currentIndex - 1;const nextPage = currentIndex + 1 > imgs.length - 1 ? 0 : currentIndex + 1;createItem(previousPage).classList.add('previous')createItem(currentIndex).classList.add('current')createItem(nextPage).classList.add('next')}reset()let vitality = false;container.addEventListener('wheel', (event) => {if (!event.deltaY) {return}if (vitality) {return;}vitality = true;if (event.deltaY > 0) {// 往下滑container.classList.add('scroll-down');currentIndex = currentIndex + 1 > imgs.length - 1 ? 0 : currentIndex + 1;} else {// 往上滑container.classList.add('scroll-up');currentIndex = currentIndex - 1 > imgs.length - 1 ? 0 : currentIndex - 1;}});container.addEventListener('transitionend', () => {vitality = false;container.classList.remove('scroll-down');container.classList.remove('scroll-up');reset()})

核心代码咱都写好了,现在就是css样式部分来完善咱们得无限视差滚动(轮播)

  * {margin: 0;padding: 0;box-sizing: border-box;}body {overflow: hidden;}.container {height: 100vh;position: relative;}.item {position: absolute;width: 100%;height: 100%;overflow: hidden;transition: 1s ease-in-out;}.item img {position: absolute;width: 100%;height: 100vh;object-fit: cover;transition: 1s;}.item.previous,.item.next {z-index: 1;height: 0;}.item.next {bottom: 0;}.item.next img {bottom: 0;transform: translateY(10%);}.item.item.previous img {transform: translateY(-10%);}.scroll-up .item.previous {height: 100%;}.scroll-up .item.previous img {transform: translateY(0%);}.scroll-up .item.current img {transform: translateY(10%);}.scroll-down .item.next {height: 100%;}.scroll-down .item.next img {transform: translateY(0%);}.scroll-down .item.current img {transform: translateY(-10%);}

这样下来,无限视差滚动(轮播)就已经完成了,是不是挺简单的。
希望这个小示列能帮助到你们。
在这里插入图片描述


  • 失联

最后编辑时间 2024,05,11;17:38

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

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

相关文章

Linux技术---部署PXE服务器实现批量安装操作系统

部署PXE服务器实现批量安装操作系统 部署PXE服务器实现批量安装操作系统 部署PXE服务器实现批量安装操作系统1.安装相关服务组件1.1 安装tftp和xinetd1.2 安装DHCP服务1.3 准备 Linux 内核、初始化镜像文件、 PXE 引导程序、安装FTP服务并准备安装源1.4 配置启动菜单文件1.5 验…

双轴测径仪功能多 适用于各行各业外径检测

JG02Z-DG 系列双轴测径仪是双光路外径检测设备&#xff0c;两组测头可以进行不同形式的组合&#xff0c;从而完成不同产线需求的检测&#xff0c;今天我们主要讲解45角双轴测径仪&#xff0c;该种测径仪是较为常用的检测设备&#xff0c;两组测头与水平方向垂直方向呈45度角&am…

渲染农场多少钱一个小时?

​很多第一次准备使用渲染农场的小伙伴不知道渲染农场多少钱一个小时&#xff0c;今天就给大家介绍一下渲染农场多少钱一小时。 现在渲染农场基本都有CPU渲染和GPU渲染&#xff0c;各渲染农场的服务器配置不同&#xff0c;收费也各不相同&#xff0c;不过都是按渲染时长收费&…

AngularJS基本概念

版本&#xff1a; AngularJs 1.x&#xff1a;https://angularjs.org/ AngularJs 2&#xff1a;https://angular.io/ 或 https://angular.cn/ 实现语言&#xff1a; Angular 1.x&#xff1a;使用ES(avaScript)编写&#xff0c;可直接在浏览器中运行。 Angular 2&#xff1a…

3分钟讲透服装行业数字化转型新方案!附服装数字化成功案例

前言&#xff1a; 现今&#xff0c;数字化已然成为经济发展的全新引擎。从国家的“十四五规划”&#xff0c;再到国资委的多次着重强调&#xff0c;伴随着政策体系的持续完善&#xff0c;中国的数字经济与数字化转型进程正在加速驶进快车道。 于所有企业来讲&#xff0c;数字…

1055: 邻接矩阵到邻接表

解法&#xff1a; #include<iostream> using namespace std; int arr[100][100]; int main() {int n;cin >> n;for (int i 0; i < n; i) {for (int j 0; j < n; j) {cin >> arr[i][j];}}for (int i 0; i < n; i) {for (int j 0; j < n; j) …

Vue3组件库开发项目实战——02项目搭建(配置Eslint/Prettier/Sass/Tailwind CSS/VitePress/Vitest)

摘要&#xff1a;在现代前端开发中&#xff0c;构建一个高效、可维护且易于协作的开发环境至关重要。特别是在开发Vue3组件库时&#xff0c;我们需要确保代码的质量、一致性和文档的完整性。本文将带你从0搭建vue3组件库开发环境&#xff0c;以下是配置代码规范、格式化、CSS样…

网络安全专业岗位详解+自学学习路线图

很多网安专业同学一到毕业就开始迷茫&#xff0c;不知道自己能去做哪些行业&#xff1f;其实网络安全岗位还是蛮多的&#xff0c;下面我会介绍一些网络安全岗位&#xff0c;大家可以根据自身能力与喜好决定放哪个方向发展。 渗透测试/Web安全工程师 主要是模拟黑客攻击&#…

lint 代码规范,手动修复,以及vscode的第三方插件eslint自动修复

ESlint代码规范 不是语法规范&#xff0c;是一种书写风格&#xff0c;加多少空格&#xff0c;缩进多少&#xff0c;加不加分号&#xff0c;类似于书信的写作格式 ESLint:是一个代码检查工具&#xff0c;用来检查你的代码是否符合指定的规则(你和你的团队可以自行约定一套规则)…

探索循环购模式:消费返利与积分机制的创新融合

大家好&#xff0c;我是吴军&#xff0c;今天非常荣幸能与大家分享一种别具一格的商业模式——循环购模式。这种商业模式在近年来逐渐崭露头角&#xff0c;受到了广大消费者的热烈追捧。或许您之前听说过消费满额即送现金的活动&#xff0c;但循环购模式不仅仅局限于此&#xf…

逻辑位运算符、|、^、~(接上篇二进制十进制)

上一篇中总结了二进制与十进制的转换,下面再来总结位运算,其实就是对二进制数执行的计算 逻辑位运算符 位与&#xff08;&&#xff09;、位或&#xff08;|&#xff09;、位异或&#xff08;^&#xff09;、非位&#xff08;~&#xff09; "&"运算 用于对…

泵站远程监控

在科技日新月异的今天&#xff0c;智能化管理已经成为各行业提升效率、降低成本的关键手段。特别是在水利领域&#xff0c;泵站作为水资源调配的重要节点&#xff0c;其运行效率和安全稳定性直接关系到整个供水系统的稳定。HiWoo Cloud平台凭借其强大的物联网和云计算技术&…