实现仿ChatGPT光标跟随效果

news2024/9/24 18:09:11

先看效果

实现效果

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>光标闪烁效果</title>
    <style>
      .text-container {
        position: relative;
        margin: 200px;
        padding: 30px;
        min-height: 300px;
        border: 1px solid #000;
        overflow: auto;
      }
      .text {
        position: absolute;
      }
      .cursor {
        position: absolute;
        left: 10px;
        top: 10px;
        display: inline-block;
        width: 20px;
        height: 20px;
        background-color: #000;
        border-radius: 10px;
        animation: cursorBlink 0.5s infinite;
      }
      /* 实现一个闪烁效果的动画 */
      @keyframes cursorBlink {
        0% {
          opacity: 0;
        }
        50% {
          opacity: 1;
        }
        100% {
          opacity: 0;
        }
      }
    </style>
  </head>
  <body>
    <div class="text-container">
      <div class="text"></div>
      <div class="cursor"></div>
    </div>
  </body>

  <script>
    const textContainer = document.querySelector(".text-container");
    const textElement = document.querySelector(".text");
    const cursor = document.querySelector(".cursor");

    async function autoAppend() {
      function delay(time) {
        return new Promise((resolve) => setTimeout(resolve, time));
      }

      function transfer(text) {
        const paragraphs = text
          .split(" ")
          .filter(Boolean)
          .map((word) => `<p>${word}</p>`);
        return paragraphs.join("");
      }

      const content = `

        1.全球沟通:英文是国际通用语言,能够让你更容易与世界各地的人交流。无论是商务、旅行还是跨文化交流,具备良好的英文能力都能极大地扩展你的沟通范围。

        2.职业机会:许多国际公司和组织使用英文作为工作语言。掌握英文可以为你在职场上提供更广泛的职业机会,使你在全球范围内更具竞争力。

        3.学术研究:英文是许多学术领域的主要语言。如果你有意进行深入的学术研究或参与国际性的学术合作,良好的英文能力将是必不可少的。

        4.文化理解:学习英文也是一种了解英语国家文化的途径。通过阅读英文文学、观看英语电影和了解英语国家的历史,你可以更好地理解这些文化,增强跨文化交流的能力。

        5.个人发展:学习一门外语对大脑的发展有益。掌握英文可以提升你的思维能力、解决问题的能力以及跨学科的理解,对个人发展和学习其他技能也会产生积极的影响。
        
        `;

      for (let i = 0; i < content.length; i++) {
        let text = content.slice(0, i);
        let result = transfer(text);
        textElement.innerHTML = result;
        updateCursor();
        await delay(100);
      }
    }

    autoAppend();

    // 获取最后一节文本节点
    function getLastTextNode(node) {
      if (node.nodeType === Node.TEXT_NODE) {
        return node;
      }
      for (let i = node.childNodes.length - 1; i >= 0; i--) {
        let result = getLastTextNode(node.childNodes[i]);
        if (result) {
          return result;
        }
      }
      return null;
    }

    function updateCursor() {
      // 获取最后一个文本元素
      let lastTextNode = getLastTextNode(textElement);
      // 创建一个临时的文本节点,以便选中最后一个文字
      let tempText = document.createTextNode(".");
      if (lastTextNode) {
        lastTextNode.parentNode.appendChild(tempText);
      } else {
        textElement.appendChild(tempText);
      }

      // 选中最后一个文字
      const range = document.createRange();
      range.setStart(tempText, 0);
      range.setEnd(tempText, 0);

      // 这个文字是相对于浏览器
      const rect = range.getBoundingClientRect();
      const textRect = textContainer.getBoundingClientRect();

      const x = rect.left - textRect.left;
      const y = rect.top - textRect.top - 10; // 10 是光标高度的一半,为了居中显示光标

      cursor.style.transform = `translate(${x}px,${y}px)`;

      tempText.remove();
    }
  </script>
</html>

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

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

相关文章

使用 MinIO 和 PostgreSQL 简化数据事件

本教程将教您如何使用 Docker 和 Docker Compose 在 MinIO 和 PostgreSQL 之间设置和管理数据事件&#xff0c;也称为存储桶或对象事件。 您可能已经在利用 MinIO 事件与外部服务进行通信&#xff0c;现在您将通过使用 PostgreSQL 自动化和简化数据事件管理来增强数据处理能力…

机器人导纳控制实现框架

Safe, Stable and Intuitive Control for Physical Human-Robot Interaction - 知乎关于文章《Safe, Stable and Intuitive Control for Physical Human-Robot Interactio》的简记。 Safe, Stable and Intuitive Control for Physical Human-Robot Interaction目的根据力导数作…

设计一个网页爬虫

定义 User Case 和 约束 注意&#xff1a;没有一个面试官会阐述清楚问题&#xff0c;我们需要定义Use case和约束 Use cases 我们的作用域只是处理以下Use Case&#xff1a; Service 爬取一批 url 生成包含搜索词的单词到页面的反向索引给页面生成标题和片段– 标题和片段是…

ptrade 通过mysql的链接开发一个量化管理平台。

这里只写一下界面及想法。不进行代码的实现。因为对流程不是很熟 ###界面 数据库的链接&#xff1a; ptrade USER 可转债量化分析 PASSWORD 123456 MYSQL_HOST mysql.sqlpub.com MYSQL_PORT 3306 MYSQL_DB ptradedef get_mysql_conn():import pymysqltry:conn pym…

maven编译时依赖报错 Caused by: java.util.zip.ZipException: zip file is empty 错误。

出现这种报错时&#xff0c;可能是maven仓库下对应的依赖出现了问题&#xff0c;需要讲报错依赖位置的依赖进行删除&#xff0c;在编译的时候就会重新下载&#xff0c;就不会出现错误了。 rm -rf /Applications/software/env/repository/org/apache/orc/orc-core/1.9.1/

Yield Guild Games 宣布与区块链游戏中心 Iskra 建立战略合作伙伴关系

Yield Guild Games (YGG) 宣布将向 Iskra 引入其任务系统&#xff0c;Iskra 是一个 Web3 游戏中心和发布平台&#xff0c;拥有超过 400 万注册钱包和 10 万月度活跃用户 (MAU)。在 LINE、Kakao、Wemade 和 Netmarble 等公司的支持下&#xff0c;Iskra 将游戏玩家和游戏工作室聚…

验收测试的重要性:确保交付高质量产品

在软件开发生命周期中&#xff0c;验收测试扮演着至关重要的角色&#xff0c;它不仅是项目的最后一道关卡&#xff0c;更是确保交付高质量产品的关键步骤。本文将介绍验收测试的重要性&#xff0c;以及它在软件开发过程中的作用。 1. 确认功能符合需求 验收测试的首要任务是验证…

逆向思维,去重Cube计算优化新技巧

场景描述 在做数据汇总计算和统计分析时&#xff0c;最头疼的就是去重类指标计算&#xff08;比如用户数、商家数等&#xff09;&#xff0c;尤其还要带多种维度的下钻分析&#xff0c;由于其不可累加的特性&#xff0c;几乎每换一种统计维度组合&#xff0c;都得重新计算。数…

匿名发送短信

匿名发送短信 匿名发送短信啦&#xff01;不用程序猿&#xff0c;也能定制专属推送消息&#xff01;每日小惊喜&#xff01; 还可以领取课程资料&#xff01;软考中级软件设计师&#xff0c;高级信息系统项目管理师&#xff01; 先说在哪里 微信搜公众号&#xff1a;暮看云 微…

人工智能 | 自然语言处理的发展历程

github&#xff1a;https://github.com/MichaelBeechan CSDN&#xff1a;https://blog.csdn.net/u011344545 自然语言处理的发展 方向一&#xff1a;技术进步1. 基于规则的语法&#xff08;1950-1990&#xff09;2. 统计语言处理&#xff08;1990-2010&#xff09;3. 基于深度学…

ChatGPT正确打开方式与GPT-4.5的key最新获取方式

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言4.5key价格泄漏ChatGPT4.0使用地址ChatGPT正确打开方式最新功能语音助手存档…

计算机网络-标准化工作及相关组织与性能指标(标准分类 标准化工作 RFC 速率 带宽 吞吐量 时延 时延带宽积 RTT 利用率)

文章目录 标准化工作及相关组织标准化工作标准分类RFC流程标准化的相关组织小结 性能指标速率带宽吞吐量时延发送时延传播时延排队时延与处理时延补充 高速链路 时延带宽积往返时间RTT利用率小结 标准化工作及相关组织 标准化工作 即需要统一标准&#xff0c;这样才能兼容 …

Linux 时间同步 - Chrony服务

Linux 时间同步 - Chrony服务 引言一、简单使用二、详解2.1 chrony.conf2.2 chronyd2.3 chronyc 引言 为什么需要时间同步? 其意义可参考秦朝统一度量衡&#xff0c;车同轨&#xff0c;书同文。核心就是方便协同工作。 Chrony能更精确、更快的同步时钟&#xff0c;传统ntp需要…

014集:python访问互联网:网络爬虫实例—python基础入门实例

以pycharm环境为例&#xff1a; 首先需要安装各种库(urllib&#xff1a;requests&#xff1a;Openssl-python等) python爬虫中需要用到的库&#xff0c;大致可分为&#xff1a;1、实现 HTTP 请求操作的请求库&#xff1b;2、从网页中提取信息的解析库&#xff1b;3、Python与…

代码随想录算法训练营day13|239.滑动窗口最大值、347.前K个高频元素

239. 滑动窗口最大值 347.前 K 个高频元素 239. 滑动窗口最大值 &#xff08;一刷至少需要理解思路&#xff09; 之前讲的都是栈的应用&#xff0c;这次该是队列的应用了。 本题算比较有难度的&#xff0c;需要自己去构造单调队列&#xff0c;建议先看视频来理解。 题目链接/文…

css3轮播图案例

轮播图案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>…

HTML111111111

在线编辑器 在线 HTML 空元素 没有内容的 HTML 元素被称为空元素。空元素是在开始标签中关闭的。 即使 在所有浏览器中都是有效的&#xff0c;但使用 其实是更长远的保障。 HTML 水平线 标签在 HTML 页面中创建水平线。 hr 元素可用于分隔内容。 HTML 折行 如果您希望…

mysql原理--事务的隔离级别与 MVCC

1.事前准备 为了故事的顺利发展&#xff0c;我们需要创建一个表&#xff1a; CREATE TABLE hero (number INT,name VARCHAR(100),country varchar(100),PRIMARY KEY (number) ) EngineInnoDB CHARSETutf8;然后向这个表里插入一条数据&#xff1a;INSERT INTO hero VALUES(1, 刘…

高效火情监测,科技助力森林防火【数字地球开放平台】

数字地球开放平台-以卫星遥感为核心的空天信息服务开放平台 (geovisearth.com) 2019年3月30日&#xff0c;四川省凉山州木里县爆发了一场森林火灾&#xff0c;火点位于海拔3800米左右&#xff0c;地形险峻、坡度陡峭、谷深难以抵挡火势。在扑救的过程中&#xff0c;27名森林消防…

扩散模型参数量降低87%,且提升生成质量;通过蒸馏实现一步采样扩散模型;VideoCrafter2视频生成;深度感知图像合成

本文首发于公众号&#xff1a;机器感知 扩散模型参数量降低87%&#xff0c;且提升生成质量&#xff1b;通过蒸馏实现一步采样扩散模型&#xff1b;VideoCrafter2视频生成&#xff1b;深度感知图像合成 One-Step Diffusion Distillation via Deep Equilibrium Models Diffusio…