
本教程详细介绍了如何利用j*ascript动态更新html `
在现代Web应用中,进度条是向用户展示操作进度的重要UI组件。原生的HTML
首先,我们需要一个基础的
<progress style="margin-top: 5px; border-radius: 9px;" class="listening-progress" id="prog" value="0" max="100"></progress>
在这个例子中,我们设置了 id="prog",初始 value="0",最大 max="100"。
为了让进度条在视觉上更加美观,并支持平滑过渡,我们需要对其进行样式设置。关键在于为进度条的填充部分(即进度值)应用 transition 属性。由于不同浏览器对
/* 进度条容器的基础样式 */
.listening-progress {
position: relative;
top: -15px;
width: 120px;
margin-left: 9px;
background-color: #2a2b2f; /* 进度条未填充部分的背景色 */
border-radius: 9px;
height: 5px;
border: none;
}
/* progress 元素本身的通用样式 */
progress {
width: 120px;
margin-right: 12px;
background-color: #2a2b2f; /* 再次设置,确保兼容性 */
border-radius: 9px;
height: 5px;
border: none;
/* 针对 progress 元素本身的过渡效果,虽然主要动画由伪元素控制,但保留以防万一 */
-webkit-transition: width 0.5s;
-moz-transition: width 0.5s;
-ms-transition: width 0.5s;
-o-transition: width 0.5s;
transition: width 0.5s;
}
/* 针对 Firefox 浏览器的进度条填充部分 */
progress::-moz-progress-bar {
background: #fff; /* 进度条填充部分的背景色 */
border-radius: 9px;
transition: width 0.5s ease; /* 关键:为 width 属性变化添加过渡动画 */
}
/* 针对 WebKit 浏览器的进度条填充部分 */
progress::-webkit-progress-value {
background: #fff;
border-radius: 9px;
transition: width 0.5s ease;
}
/* 针对 progress 元素本身的颜色和圆角,并再次强调过渡 */
progress {
color: #fff; /* 这个 color 属性通常影响文本,但在某些情况下可能影响进度条颜色 */
border-radius: 9px;
transition: width 0.5s ease; /* 再次强调过渡 */
}
/* 其他相关样式,如时间显示等 */
.prog-time {
color: #fff;
font-size: 15px;
line-height: 16px;
border-radius: 9px;
}关键点解析:
CSS3实现的动画进度条效果
CSS3实现的动画进度条效果
36
查看详情
为了使进度条动起来,我们需要使用J*aScript来周期性地更新其 value 属性。这可以通过 setInterval 函数实现。
// 获取进度条元素
let progressBar = document.getElementById("prog");
// 定义每次进度增加的步长(例如,每次增加10%)
let speed = 10;
// 定义更新间隔时间(例如,每1秒更新一次)
let iteration = 1 * 1000; // 毫秒
// 使用 setInterval 周期性更新进度条
let interval = setInterval(() => {
// 增加进度条的值
progressBar.value += speed;
// 当进度达到或超过最大值时,清除定时器
if (progressBar.value >= progressBar.max) {
clearInterval(interval);
}
}, iteration);代码说明:
将上述HTML、CSS和J*aScript代码整合,即可得到一个具有平滑动画效果的进度条。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>平滑动画进度条</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #333;
margin: 0;
flex-direction: column;
}
.listening-progress {
position: relative;
/* top: -15px; */ /* 根据实际布局调整 */
width: 200px; /* 示例中调整宽度,使其更明显 */
margin: 20px auto; /* 居中显示 */
background-color: #2a2b2f;
border-radius: 9px;
height: 10px; /* 示例中调整高度 */
border: none;
overflow: hidden; /* 确保圆角效果 */
}
progress {
width: 100%; /* 确保 progress 元素填满容器 */
/* margin-right: 12px; */ /* 根据实际布局调整 */
background-color: #2a2b2f;
border-radius: 9px;
height: 10px; /* 示例中调整高度 */
border: none;
/* 针对 progress 元素本身的过渡效果 */
-webkit-transition: width 0.5s ease-out;
-moz-transition: width 0.5s ease-out;
-ms-transition: width 0.5s ease-out;
-o-transition: width 0.5s ease-out;
transition: width 0.5s ease-out;
}
progress::-moz-progress-bar {
background: #fff;
border-radius: 9px;
transition: width 0.5s ease-out; /* 关键:为 width 属性变化添加过渡动画 */
}
progress::-webkit-progress-value {
background: #fff;
border-radius: 9px;
transition: width 0.5s ease-out;
}
progress {
color: #fff;
border-radius: 9px;
transition: width 0.5s ease-out;
}
.prog-time {
color: #fff;
font-size: 15px;
line-height: 16px;
border-radius: 9px;
margin-top: 10px;
}
</style>
</head>
<body>
<progress class="listening-progress" id="prog" value="0" max="100"></progress>
<div class="prog-time" id="progress-percentage">0%</div>
<script>
let progressBar = document.getElementById("prog");
let progressPercentage = document.getElementById("progress-percentage");
let speed = 1; // 每次增加1%
let iteration = 50; // 每50毫秒更新一次,实现更平滑的动画
let interval = setInterval(() => {
progressBar.value += speed;
progressPercentage.textContent = Math.round(progressBar.value) + '%'; // 更新百分比文本
if (progressBar.value >= progressBar.max) {
clearInterval(interval);
progressPercentage.textContent = '100%';
}
}, iteration);
</script>
</body>
</html>以上就是实现HTML进度条平滑动画效果的教程的详细内容,更多请关注其它相关文章!
# javascript
# java
# html
# 伪元素
# 浏览器
# css
# 如何实现
# 复选框
# 设置为
# 自定义
# 背景色
# 进度条
# overflow
# css样式
# safari
# 回调函数
# 回调
# 营销推广就赏云速捷
# 开发区seo排名合作
# 优秀推广案例网站模板
# 北京成都网络推广营销
# 日照全网seo产品公司
# 便捷的福州seo机构
# 网站的推广就选火1星惠
# 莱芜网站建设哪里找
# 湖南seo排名供应商
# 圆角
# 情况下
# 这是
# 吉林短视频seo
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
《大周列国志》皇帝律令功能介绍
哔哩哔哩的|直播|间怎么送礼物_哔哩哔哩|直播|送礼操作指南
支付宝登录刷脸不是本人如何解决
C++如何实现矩阵乘法_C++二维数组矩阵运算代码示例
《单词速记宝》设置学习计划方法
VBA Outlook邮件自动化:高效集成Excel数据与列标题的策略
C++怎么实现一个红黑树_C++高级数据结构与平衡二叉搜索树
Teambition网盘如何共享文件
圆通快递包裹轨迹查询 圆通速递快件实时位置跟踪
163邮箱网页版入口 163邮箱在线使用
Sublime怎么配置YAML文件格式化_Sublime YAML Formatter插件教程
使用 J*aScript 随机化 CSS Grid 布局中的元素顺序
中通快递官网指定查询 中通快递单号查询平台入口
TikTok笔记文字无法编辑如何解决 TikTok笔记文字编辑优化方法
多闪APP官方下载安装入口_多闪最新版本获取入口
雨课堂官网在线登录 网页版雨课堂登录链接
微信客户端如何找回密码_微信客户端忘记密码找回方法
研招网官方网站招生平台入口_中国研究生招生信息网官网登录
企查查官网和爱企查 企查查企业查询官网入口
《原神》月之一版本新增书籍一览
c++如何实现观察者设计模式_c++行为型设计模式实战
Python实战:高效处理实时数据流中的最小/最大值
实现可重用自定义Python Range类
键盘测试软件哪个好_键盘故障检测工具推荐
126手机126邮箱登录_126邮箱手机登录入口官网
实时数据流中高效查找最小值与最大值
《鹿路通》退余额方法
如何在CSS中实现盒模型多列间距_grid-gap与padding结合
《sketchbook》选中部分图案移动方法
海棠阅读登录教程_详细讲解海棠登录操作
J*a列表元素格式化输出教程
MySQL多重关联查询:利用别名高效获取同一表的多个关联字段
win11怎么启用或禁用休眠 Win11 powercfg命令管理休眠文件【技巧】
背部总是隐隐作痛怎么回事 背痛如何改善
Win11如何分屏操作_Win11多窗口分屏技巧
mysql镜像配置如何设置用户权限组_mysql镜像配置用户组与权限分级管理方法
CSS过渡如何实现按钮悬停效果_transition属性控制背景颜色变化
PHP魔术方法__set与__isset:设计考量、性能权衡与静态分析的视角
高德地图导航路线偏差报警频繁怎么办 高德地图路线偏差修复与优化方法
sublime怎么在文件中显示代码结构大纲_sublime符号列表功能
win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】
德邦快递收费标准详解
Python csv 模块处理非字符串数据:列表写入 CSV 文件的机制解析
Flexbox布局:实现粘性导航与底部页脚的完美结合
海棠书屋官方在线书籍入口 海棠书屋文学作品浏览官网链接
HTML中多图片上传与预览:解决ID冲突的专业指南
《跳跳舞蹈》循环播放方法
秋风萧瑟洪波涌起中的萧瑟指的是什么
智慧职教mooc平台登录网址 智慧职教mooc官网直达
路由器DNS怎么设置最快 优化DNS提升上网速度教程
2025-11-17
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。