仅用 CSS 实现网页阅读进度条

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

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

从本质上讲,一个名为 animation-timeline[1] 的新实验性 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% }
}

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

图片图片

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

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

图片图片

参考资料

[1]animation-timeline: https://developer.mozilla.org/en-US/docs/Web/CSS/animation-timeline

[2]浏览器的兼容性: https://developer.mozilla.org/en-US/docs/Web/CSS/animation-timeline#browser_compatibility

责任编辑:武晓燕 来源: 独立开发者张张
相关推荐

2024-08-06 14:29:37

2013-03-12 10:35:06

CSS 3

2024-12-02 09:37:51

2023-12-11 17:15:05

应用开发波纹进度条ArkUI

2015-07-31 11:19:43

数字进度条源码

2021-11-02 07:44:36

CSS 技巧进度条

2024-06-13 08:15:00

2009-08-17 14:41:47

C#进度条实现

2009-08-17 15:48:47

C# WinForm进

2023-07-18 15:49:22

HTMLCSS

2009-07-21 14:49:55

XmlHttpRequ文件上传进度条

2011-07-05 15:16:00

QT 进度条

2024-07-25 08:55:47

进度条水缸进度动画效果

2009-11-24 15:23:50

PHP文件上传进度条

2009-08-17 17:15:48

C# 进度条效果

2012-07-13 13:52:54

Canvas

2024-04-01 08:18:52

CSSHTMLWeb

2009-08-17 14:36:15

C#进度条实现

2009-06-06 18:54:02

JSP编程进度条

2012-01-17 13:58:17

JavaSwing
点赞
收藏

51CTO技术栈公众号