使用 React 和 Tailwind 创建阅读进度条

sxkk20082年前知识分享132
目录

前言

我们在上网的时候经常会看到一些优秀的博客顶部有个进度条,这个进度条有助于读者衡量阅读进度,我认为这个功能可以带来良好的用户体验,所以,应该将其添加到我个人博客上的文章中。那么,一起来实现吧。

实现逻辑

  1. 获取页面可以滚动的高度.
  2. 获取页面已经滚动的高度.
  3. 阅读进度=已经滚动的高度/页面可以滚动的高度

代码

单独定义一个 react hook 来活动当前的阅读进度

import { useEffect, useState } from 'react'

export function useReadingProgress() {
  const [progress, setProgress] = useState(0)
  useEffect(() => {
    function updateScroll() {
      // 已经滚动的高度
      const currentScrollY = window.scrollY
      // 可以滚动的高度
      let scrollHeight = document.body.scrollHeight - window.innerHeight
      if (scrollHeight) {
        setProgress(Number((currentScrollY / scrollHeight).toFixed(2)) * 100)
      }
    }
    // 添加全局滚动事件的监听
    window.addEventListener('scroll', updateScroll)

    // 移除监听
    return () => {
      window.removeEventListener('scroll', updateScroll)
    }
  }, [])
  return progress
}

剩下的工作是将进度显示在页面上,为此,我在顶部的导航栏上显示一个进度条。

样式

我的博客使用了 TailwindCSS,用它制作进度条非常容易

export default function ProgressBar() {
  const progress = useReadingProgress()
  return (
    <div
      style={{
        transform: `translateX(${progress - 100}%)`,
      }}
      className="fixed top-0 left-0 h-1 w-full bg-primary-500 backdrop-blur-3xl transition-transform duration-150"
    />
  )
}

我在这里使用 transform 和 translate 属性来制作进度条.

进度为 0 向左偏移 100% ,进度为 100 偏移 0,所以使用 translateX(${progress - 100}%)

以上就是本文全部内容,希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

相关文章

AI免费版下载安装简易指南及注意事项-人工智能技术

  想要充分利用人工智能(AI)技术,AI免费版是一个理想的选择。它为用户提供了强大的功能,并且还可以免费下载和安装。本文将为您介绍AI免费版的下载和安装过程,并提供一些注意...

AI与未来——探索人工智能发展趋势与影响

AI与未来——探索人工智能发展趋势与影响

  人工智能(AI)作为当下最热门的技术领域,正在改变人类的生产方式、生活方式和认知方式。AI的发展速度迅猛,在医疗、金融、教育等各行各业中都有着广泛应用。未来,AI将会给我...

人工智能技术与应用:探索创新未来

人工智能技术与应用:探索创新未来

  随着人工智能技术的迅速发展,越来越多的领域开始应用人工智能技术,为世界带来了巨大的变革。本文将以人工智能技术与应用为中心,探讨其在各个领域的应用,并展望未来的发展趋势。 ...

AI识图:开启智能时代的图像识别新篇章

AI识图:开启智能时代的图像识别新篇章

  随着人工智能技术的不断发展,AI识图成为了智能时代的重要组成部分。AI识图借助先进的图像识别技术,实现了对物体、场景、文字等各类图像信息的准确识别和分析。这一技术的应用范...

AI识别技术:现在与未来

AI识别技术:现在与未来

  随着人工智能(AI)技术的迅猛发展,AI识别技术成为了当今社会领域的热门话题。AI识别技术利用机器学习和深度学习算法,使计算机具备了以人类智能处理信息的能力,大大提高了识...

AI绘画:如何处理版权问题?

AI绘画:如何处理版权问题?

  随着人工智能技术的不断发展,AI绘画已经成为了一个热门话题。它不仅可以为我们的生活带来更多的乐趣,还可以为商业世界带来更多的商机。然而,在使用AI绘画技术时,我们也不得不...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。