滚动翻页效果

效果:
在这里插入图片描述
代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      html {
        text-align: center;
      }
      .container {
        position: relative;
        width: 300px;
        height: 130px;
        margin: 50px auto;
        background-color: pink;
        overflow: hidden;
      }
      .book-parent {
        position: absolute;
      }
      .book {
        animation: book 0.2s ease-in;
      }
      .bookClone {
        animation: bookClone 0.2s ease-in;
      }
      .bookReverse {
        animation: bookReverse 0.2s ease-in;
      }
      .bookCloneReverse {
        animation: bookCloneReverse 0.2s ease-in;
      }
      @keyframes book {
        from {
          transform: translate(300px);
          opacity: 0;
        }
        to {
          transform: translate(0);
          opacity: 1;
        }
      }
      @keyframes bookClone {
        from {
          transform: translate(0);
          opacity: 1;
        }
        to {
          transform: translate(-300px);
          opacity: 0;
        }
      }
      @keyframes bookReverse {
        from {
          transform: translate(-300px);
        }
        to {
          transform: translate(0);
        }
      }
      @keyframes bookCloneReverse {
        from {
          transform: translate(0);
        }
        to {
          transform: translate(300px);
        }
      }
    </style>
  </head>
  <body>
    <h1>滕王阁序</h1>
    <div id="container" class="container">
      <div id="book-parent" class="book-parent"></div>
    </div>
    <button id="prev">上一页</button>
    <button id="next">下一页</button>
  </body>

  <script>
    let str = `豫章故郡,洪都新府。星分翼轸,地接衡庐。襟三江而带五湖,控蛮荆而引瓯越。物华天宝,龙光射牛斗之墟;人杰地灵,徐孺下陈蕃之榻。雄州雾列,俊采星驰。台隍枕夷夏之交,宾主尽东南之美。都督阎公之雅望,棨戟遥临;宇文新州之懿范,襜帷暂驻。十旬休假,胜友如云;千里逢迎,高朋满座。腾蛟起凤,孟学士之词宗;紫电青霜,王将军之武库。家君作宰,路出名区;童子何知,躬逢胜饯。

时维九月,序属三秋。潦水尽而寒潭清,烟光凝而暮山紫。俨骖騑于上路,访风景于崇阿;临帝子之长洲,得天人之旧馆。层峦耸翠,上出重霄;飞阁流丹,下临无地。鹤汀凫渚,穷岛屿之萦回;桂殿兰宫,即冈峦之体势。

披绣闼,俯雕甍,山原旷其盈视,川泽纡其骇瞩。闾阎扑地,钟鸣鼎食之家;舸舰弥津,青雀黄龙之舳。云销雨霁,彩彻区明。落霞与孤鹜齐飞,秋水共长天一色。渔舟唱晚,响穷彭蠡之滨;雁阵惊寒,声断衡阳之浦。

遥襟甫畅,逸兴遄飞。爽籁发而清风生,纤歌凝而白云遏。睢园绿竹,气凌彭泽之樽;邺水朱华,光照临川之笔。四美具,二难并。穷睇眄于中天,极娱游于暇日。天高地迥,觉宇宙之无穷;兴尽悲来,识盈虚之有数。望长安于日下,目吴会于云间。地势极而南溟深,天柱高而北辰远。关山难越,谁悲失路之人?萍水相逢,尽是他乡之客。怀帝阍而不见,奉宣室以何年?

嗟乎!时运不齐,命途多舛。冯唐易老,李广难封。屈贾谊于长沙,非无圣主;窜梁鸿于海曲,岂乏明时?所赖君子见机,达人知命。老当益壮,宁移白首之心?穷且益坚,不坠青云之志。酌贪泉而觉爽,处涸辙以犹欢。北海虽赊,扶摇可接;东隅已逝,桑榆非晚。孟尝高洁,空余报国之情;阮籍猖狂,岂效穷途之哭!

勃,三尺微命,一介书生。无路请缨,等终军之弱冠;有怀投笔,慕宗悫之长风。舍簪笏于百龄,奉晨昏于万里。非谢家之宝树,接孟氏之芳邻。他日趋庭,叨陪鲤对;今兹捧袂,喜托龙门。杨意不逢,抚凌云而自惜;钟期既遇,奏流水以何惭?

呜乎!胜地不常,盛筵难再;兰亭已矣,梓泽丘墟。临别赠言,幸承恩于伟饯;登高作赋,是所望于群公。敢竭鄙怀,恭疏短引;一言均赋,四韵俱成。请洒潘江,各倾陆海云尔:

滕王高阁临江渚,佩玉鸣鸾罢歌舞。

画栋朝飞南浦云,珠帘暮卷西山雨。

闲云潭影日悠悠,物换星移几度秋。

阁中帝子今何在?槛外长江空自流。`;

    let index = 0;
    const book = document.querySelector("#book-parent");
    const container = document.querySelector("#container");
    const maxIndex = ~~(str.length / 70);
    book.innerText = str.substring(index * 70, (index + 1) * 70);
    let bookClone = null;
    //上一页
    document.querySelector("#prev").addEventListener("click", () => {
      if (book.classList.contains("bookReverse") || index === 0) return;
      bookClone = book.cloneNode(true);
      container.appendChild(bookClone);
      index--;
      book.innerText = str.substring(index * 70, (index + 1) * 70);

      book.classList.add("bookReverse");
      bookClone.classList.add("bookCloneReverse");
    });
    //下一页
    document.querySelector("#next").addEventListener("click", () => {
      if (book.classList.contains("book") || index === maxIndex) return;
      bookClone = book.cloneNode(true);
      container.appendChild(bookClone);
      index++;
      book.innerText = str.substring(index * 70, (index + 1) * 70);

      book.classList.add("book");
      bookClone.classList.add("bookClone");
    });
    //监听动画结束
    book.addEventListener("animationend", () => {
      book.classList.remove("book");
      book.classList.remove("bookReverse");
      container.removeChild(bookClone);
    });
  </script>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

推荐6款本周 火火火火 的开源项目

本周 GitHub项目圈选 节选自微博、知乎、掘金等社区。 &#x1f525;&#x1f525;&#x1f525;本周推荐的开源项目是&#xff1a; kopia 日常备份工具 screenshot-to-code 截屏生成代码 MiniSearch 全文搜索 clone-voice 声音克隆 NvChad 高颜值终端 DB-GPT-Hub 文本到…

什么是美颜sdk?美颜sdk对比评测、技术评估

为了满足用户对于更美好画面的需求&#xff0c;各种美颜sdk应运而生。本文将深入探讨美颜sdk的概念&#xff0c;进行对比评测&#xff0c;并对其技术进行综合评估。 一、什么是美颜sdk&#xff1f; 美颜sdk使开发者们可以方便地在自己的应用中集成美颜功能&#xff0c;从而提…

【GPU】linux 安装、卸载 nvidia 显卡驱动、cuda 的官方文档、推荐方式(runfile)

文章目录 1. 显卡驱动1.1. 各版本下载地址1.2. 各版本文档地址1.3. 安装、卸载方式 2. CUDA2.1. 各版本下载地址2.2. 各版本文档地址2.3. 安装、卸载方式2.4. 多版本 CUDA 切换方式 1. 显卡驱动 1.1. 各版本下载地址 https://www.nvidia.com/Download/Find.aspx?langzh-cn 1…

odoo15关于tree视图添加按钮说明

1、odoo15的tree已经可以像form一样直接添加header标签 2、选取具体数据后&#xff0c;按钮出现&#xff0c;只需要在按钮中添加具体功能即可&#xff0c;下面是一个继承 3、效果&#xff1a;

量化学习笔记——入门与基本概念

基本概念 量化投资 投资的核心是大数定律。 量化投资就是以数据为基础&#xff0c;以策略模型为核心&#xff0c;以程序化交易为手段&#xff0c;以 追求绝对收益为目标 的投资方法。 用数学表示金融市场&#xff0c;其数学定义&#xff1a; Y F ( x 1 , x 2 , . . . . .…

CeresPCL 曲线拟合之三阶多项式(二)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 之前我们讨论过使用Ceres拟合一条三阶多项式曲线,但是它存在一个问题,这个问题其实也是最小二乘法的通病,即对噪声比较敏感,造成拟合曲线的时候总让人心里没底,结果容易“飘”。而一般对于这种情况,一个通用的…

tmux简单使用

它允许你在一个终端窗口中创建多个终端会话&#xff0c;并在它们之间进行切换。以下是tmux的一些主要用途和功能&#xff1a; 多窗口&#xff1a; Tmux允许你在一个终端中创建多个窗口。每个窗口可以包含一个或多个终端会话&#xff0c;你可以轻松地在这些窗口之间切换。面板分…

3DSEE:AI驱动的3D模型语义搜索引擎

3DSEE &#xff08;3D SEmantic Engine&#xff09;是基于 AI 技术的 3D 模型语义搜索引擎&#xff0c;可以自动提取 3D 模型内涵的语义信息并存储入库&#xff0c;以帮助用户使用自然语言或关键字高效地检索 3D 模型。3DSEE 提供完善的二次开发 API&#xff0c;无论使用Java、…

springcloud整合Oauth2自定义登录/登出接口

我使用的是password模式&#xff0c;并配置了token模式 一、登录 (这里我使用的示例是用户名密码认证方式) 1. Oath2提供默认登录授权接口 org.springframework.security.oauth2.provider.endpoint.postAccess; Tokenpublic ResponseEntity<OAuth2AccessToken> pos…

OSPF浅析

一、预习&#xff1a; 1、优点&#xff1a; 是一种典型的链路状态路由协议&#xff0c;协议号89&#xff0c;把大型网络分隔为多个较小、可管理的单元&#xff1a;Area a.减少LSA泛洪范围&#xff0c;有效地把拓朴变化 控制在区域内&#xff0c;达到网络优化的目的…

老师怎样避免精神内耗?

在老师的职业生涯中&#xff0c;遇到的挑战和压力可能会导致精神内耗&#xff0c;这会影响到心理和身体健康&#xff0c;更进一步影响到工作成果和个人生活。为了避免精神内耗&#xff0c;老师可以尝试以下方法&#xff1a; 1. 建立正面的心态&#xff1a;老师需要学会积极思考…

揭秘接口测试的必备基础知识!

这一篇讲接口测试的基础&#xff0c;如果你还在做手工测试&#xff0c;你可以从这里开始入门&#xff0c;做接口测试是最容易的一种自动化测试。 一、接口测试是什么 首先要理解接口测试就是测接口&#xff0c;如图所示&#xff1a; 让我们以数据驱动的视角来看接口测试&#…

Python网络爬虫环境的安装指南

网络爬虫是一种自动化的网页数据抓取技术&#xff0c;广泛用于数据挖掘、信息搜集和互联网研究等领域。Python作为一种强大的编程语言&#xff0c;拥有丰富的库支持网络爬虫的开发。本文将为你详细介绍如何在你的计算机上安装Python网络爬虫环境。 一、安装python开发环境 进…

常见的DOS命令、Java开发环境搭建、配置Path环境变量

目录 一、常见的DOS&#xff08;Disk Operating System、磁盘操作系统&#xff09;命令 二、Java开发环境搭建 1、什么是JDK、JRE 2、JDK版本选择 3、JDK的下载 三、配置Path环境变量 1、理解path环境变量 2、为什么配置path 3、如何配置 一、常见的DOS&#xff08;Dis…

OCP Java17 SE Developers 复习题08

答案 答案 答案 A. This code is correct. Line 8 creates a lambda expression that checks whether the age is less than 5, making option A correct. Since there is only one parameter and it does not specify a type, the parentheses around the parameter are …

【上海大学《面向对象程序设计A》课程小项目报告】抽象向量类模板及其派生类

1 项目内容及要求 本项目通过设计一个抽象向量类模板&#xff0c;以及一个通用的向量类模板和一个字符串类作为其派生类&#xff0c;以满足各种应用场景中的数据存储和处理需求。 项目内容&#xff1a; 抽象向量类模板。派生向量类。派生字符串类。测试及异常处理。联合测试…

顶级资源!五个免费图标素材网站

图片太花哨了&#xff0c;纯文本太单调了&#xff1f;别忘了设计师的魔法武器——图标&#xff01;图标材料是UI设计师不可缺少的一部分。优秀的图标设计不仅可以提高界面美感&#xff0c;还可以提高用户的互动体验&#xff0c;帮助用户更好地了解应用程序的功能和信息。在本文…

SpringBoot+SSM项目实战 苍穹外卖(3)

继续上一节的内容&#xff0c;本节完成菜品管理功能&#xff0c;包括公共字段自动填充、新增菜品、菜品分页查询、删除菜品、修改菜品。 目录 公共字段自动填充新增菜品文件上传实现新增菜品实现 useGeneratedKeys 菜品分页查询删除菜品修改菜品根据id查询菜品实现修改菜品实现…

【unity3D】Transform组件(如何访问和获取Transform组件)

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的学习笔记 &#x1f236;本篇是unity的Transform组件 Transform组件 基础知识介绍三个成员变量常用属性扩展 Transform的相关查找方法静态方法 基础知识 介绍 在Unit…

在线网页视频提取工具哪个好用?建议收藏!

随着短视频的崛起&#xff0c;很多人都喜欢将视频下载到手机中慢慢观看&#xff0c;这样可以避免在线播放的卡顿问题&#xff0c;但是会遇到一个问题就是在线网页视频提取工具哪个好用&#xff0c;有的可以提取但是画质太差模糊&#xff0c;有的自带水印飞来飞去。今天小编给大…