当前位置: 首页 > article >正文

仅 CSS 阅读进度条

为了构建一个阅读进度条,即显示用户向下滚动时阅读文章的进度,很难不考虑 JavaScript。但是,事实证明,您也可以使用纯 CSS 构建阅读进度条。

从本质上讲,一个名为 animation-timeline 的新实验性 CSS 属性可以让你指定用于控制 CSS 动画进度的时间轴。我们将用它来创建阅读进度条。

首先,我们需要定义一个用作进度条的 div 元素。我们将使用一个固定在视口顶部的容器来包装这个 div 。这将确保用户向下滚动页面时进度条始终可见。

<div class="progress-bar-container">
    <div class="progress-bar"></div>
</div>
<div class="content">
    <!-- content goes here -->
</div>

接下来,我们将定义进度条的样式。我们将设置 progress-bar-container 固定在视口顶部并调整其背景颜色,该颜色始终对用户可见。我们还将 progress-bar 设置为 100% 宽度。

.progress-bar-container {
    position: fixed;
    top: 0px;
    width: 100%;
    background: #6c2fa2;
    z-index: 999;
}

现在,为了使进度条动画化,我们将为 progress-bar 使用不同的背景颜色,并将其高度设置为 7px 。我们还将 animation-name 设置为 width ,这实际上将进度条的宽度从 0 动画到 100%

最后,我们将 animation-timeline 设置为 scroll(y) ,将动画时间轴绑定到视口的垂直滚动位置。这将确保当用户向下滚动页面时进度条具有动画效果。

.progress-bar {
    height: 7px;
    background: #e131ff;
    animation-name: width;

    /* animation timeline is tied to vertical scroll position */
    animation-timeline: scroll(y);
}

@keyframes width {
    from { width: 0 }
    to   { width: 100% }
}

就是这样!您可以在下面看到它的实际效果。

2023-11-27 21-40-09.2023-11-27 21_40_53.gif

由于 animation-timeline 属性仍处于实验阶段,因此并非所有浏览器(准确地说是 FirefoxSafari)都支持它。

您可以检查浏览器的兼容性并据此使用。


http://www.kler.cn/a/157618.html

相关文章:

  • Triple三倍
  • Dots 常用操作
  • 重温设计模式--观察者模式
  • 前端Python应用指南(三)Django vs Flask:哪种框架适合构建你的下一个Web应用?
  • 【ES6复习笔记】Symbol 类型及其应用(9)
  • acme ssl证书自动续签 nginx
  • Spring Boot 之 ModelFactory
  • 【23-24 秋学期】NNDL 作业12 优化算法2D可视化
  • 【蓝桥杯软件赛 零基础备赛20周】第5周——高精度大数运算与队列
  • 基于Python的PyGame的俄罗斯方块游戏设计与实现
  • HostHunter虚拟主机发现
  • 12、pytest上下文友好的输出
  • 【重点】【滑动窗口】76.最小覆盖子串
  • YoloV5改进策略:Swift Parameter-free Attention,无参注意力机制,超分模型的完美迁移
  • VSCode Vue 开发环境配置
  • clip-path,css裁剪函数
  • C语言碎片知识
  • PTA 7-231 买文具
  • 陀螺仪LSM6DSV16X与AI集成(2)----姿态解算
  • 数据结构-栈和队列
  • 一键式紧急报警柱系统
  • 力扣labuladong一刷day27天数组去重
  • 4-Docker命令之docker run
  • 剑指 Offer(第2版)面试题 16:数值的整数次方
  • JAVA-作业7-画一个笑脸
  • 【算法】算法题-20231205