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

sxkk20082年前知识分享207
目录

前言

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

实现逻辑

  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识图:让图像智能化改变我们的生活

  在当今数字化时代,人工智能(Artificial Intelligence,简称AI)技术正不断演进和应用于各个领域。其中,AI识图技术以其强大的图像分析和识别能力成...

小米 智能家居:亲民价格深受消费者的喜爱

小米 智能家居:亲民价格深受消费者的喜爱

  随着科技的发展,智能家居已经成为现代家庭装修不可或缺的一部分,也是未来家庭发展趋势之一。小米 智能家居作为国内智能家居领域的领军企业之一,凭借其先进的技术、优良的品质...

AI机器人的崛起和应用探究

AI机器人的崛起和应用探究

  随着科技的不断进步,智能机器人已经成为时代的一部分。AI机器人是一种可编程的智能机器人,能够通过模拟人类的行为、感官和思维等方面的活动,完成人类所需的工作和任务。在未来,...

发表评论    

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