HTML CSS 进度条

1 原生HTML标签

  • <meter>:显示已知范围的标量值或者分数值
  • <progress>:显示一项任务的完成进度,通常情况下,该元素都显示为一个进度条

1.1 <meter>

<html><head><style>meter{width:200px;}</style></head><body><div> <span>进度:</span><meter min="0" max="200" value="150"></meter></div></body>
</html>

minmaxvalue 分别表示最大值,最小值与当前值。

1.2 <progress>

<html><head><style>progress{width:200px;}</style></head><body><div> <span>进度:</span><progress max="200" value="150"></progress></div></body>
</html>

max 描述 progress 元素所表示的任务一共需要完成多少工作量,value 属性用来指定该进度条已完成的工作量。

1.3 区别

主要是语义上的差别。

  • <meter>:表示已知范围内的标量测量值或分数值
  • <progress>:表示任务的完成进度

比如,一个需求当前的完成度,应该使用 <progress>,而如果要展示汽车仪表盘当前的速度值,应该使用 meter

1.4 存在问题

  • 无法有效的修改 <meter> 和 <progress> 标签的样式,比如背景色,进度前景色等。并且,默认样式在不同浏览器之间不一致。
  • 无法添加动画效果、交互效果
<html><head><style>meter{width:200px;}</style></head><body><div> <span>进度:</span><meter min="0" max="200" value="150"></meter></div></body>
</html>

chrome:

<html><head><style>progress{width:200px;color:red;background-color: blue;}</style></head><body><div> <span>进度:</span><progress max="200" value="150"></progress></div></body>
</html>

chrome:

2 HTML标签+CSS

思路:使用背景色配合百分比

2.1 双标签

<html>
<head><style>.wrapper {width: 220px;height: 30px;border-radius: 30px;background: #8d8d8d;}.progress {width: 70%;height: inherit;border-radius: 30px 0 0 30px;background: #e1e43a;text-align: center;line-height: 30px;}</style>
</head>
<body><div><span>进度:</span><div class="wrapper"><div class="progress">70%</div></div></div>
</body>
</html>

优点:

  • 进度具体数值可以直接传参给width属性
  • 可以自定义样式,比如前景色,背景色,渐变
  • 可以自定义动画和交互效果

2.2 单标签

使用渐变属性

<html>
<head><style>.progress {width: 200px;height: 30px;border-radius: 30px;background: linear-gradient(90deg, #e1e43a, #00ff00 70%, transparent 0);border: 1px solid #eee;text-align: center;line-height: 30px;}</style>
</head><body><div><span>进度:</span><div class="progress">70%</div></div>
</body>
</html>

如果不需要进度条渐变,只需要指定渐变颜色为同一颜色即可

<html>
<head><style>.progress {width: 200px;height: 30px;border-radius: 30px;background: linear-gradient(90deg, #e1e43a, #e1e43a 70%, transparent 0);border: 1px solid #eee;text-align: center;line-height: 30px;}</style>
</head><body><div><span>进度:</span><div class="progress">70%</div></div>
</body>
</html>

使用变量:

<html>
<head><style>.progress {width: 200px;height: 30px;border-radius: 30px;background: linear-gradient(90deg, #e1e43a, #e1e43a var(--progress), transparent 0);border: 1px solid #eee;text-align: center;line-height: 30px;}</style>
</head><body><div><span>进度:</span><div class="progress" `style=``"--progress: 70%"`>70%</div></div>
</body>
</html>

存在问题:CSS中,渐变(比如 linear-gradinetradial-gradientconic-gradient)不支持过渡变换的,因此.progress增加transition,不会有过渡动画效果。

解决方案:使用CSS@property

<html>
<head><style>@property --progress {syntax: '<percentage>';inherits: false;initial-value: 0%;}.progress {width: 200px;height: 30px;border-radius: 30px;background: linear-gradient(90deg, #e1e43a, #e1e43a var(--progress), transparent 0);border: 1px solid #eee;text-align: center;line-height: 30px;transition: 0.5s --progress;}</style>
</head><body><div><span>进度:</span><div class="progress" `style=``"--progress: 70%"`>70%</div></div>
</body>
</html>

优点:

  • 进度具体数值可以直接传参给--progress变量
  • 可以自定义样式,比如前景色,背景色,渐变
  • 可以自定义动画和交互效果

2.3 圆弧进度条

思路:圆锥渐变 conic-gradient()

<html>
<head><style>.progress {width: 200px;height: 200px;border-radius: 50%;background: conic-gradient(#e1e43a 0, #e1e43a 25%, #83b596 25%, #83b596);text-align: center;line-height: 200px;}</style>
</head>
<body><div><span>进度:</span><div class="progress">70%</div></div>
</body>
</html>

中间增加mask: 方法一(仅适用纯色背景):

<html>
<head><style>.progress {width: 200px;height: 200px;border-radius: 50%;background: conic-gradient(#e1e43a 0, #e1e43a 25%, #83b596 25%, #83b596);display:flex;justify-content: center;align-items: center;}.mask{width:170px;height: 170px;border-radius: 50%;background-color: #fff;display:flex;justify-content: center;align-items: center;}</style>
</head>
<body><div><span>进度:</span><div class="progress"><div class="mask">70%</div></div></div>
</body>
</html>
<html>
<head><style>.progress {width: 200px;height: 200px;border-radius: 50%;background: conic-gradient(#e1e43a 0, #e1e43a 25%, #83b596 25%, #83b596);position:relative;}.progress::after{content:'70%';width: 170px;height: 170px;border-radius: 50%;position:absolute;bottom:15px;left:15px;background-color: #fff;display:flex;justify-content: center;align-items: center;}</style>
</head>
<body><div><span>进度:</span><div class="progress"></div></div>
</body>
</html>

方法二(可适用渐变背景):

<html>
<head><style>.box{width:300px;height: 300px;display:flex;justify-content: center;align-items: center;background: linear-gradient(90deg, #fff, #0400ff 100%);}.progress {width: 200px;height: 200px;border-radius: 50%;background: conic-gradient(#e1e43a 0, #e1e43a 25%, #83b596 25%, #83b596);mask: radial-gradient(transparent, transparent 50%, #000 50%);-webkit-mask: radial-gradient(transparent, transparent 50%, #000 50%);}</style>
</head>
<body><div class="box"><span>进度:</span><div class="progress"></div></div>
</body>
</html>

存在问题:
进度百分比不是类似于 0°、90°、180°、270°、360° 这类数字时,使用圆锥渐变时,不同颜色间的衔接处会有明显的锯齿。

解决办法:
在衔接处空余出一些距离让其应用渐变

<html>
<head><style>.box{width:300px;height: 300px;display:flex;justify-content: center;align-items: center;background: linear-gradient(90deg, #fff, #0400ff 100%);}.progress {width: 200px;height: 200px;border-radius: 50%;background: conic-gradient(#e1e43a 0, #e1e43a 25%, #83b596 25.3%, #83b596);mask: radial-gradient(transparent, transparent 50%, #000 50%);-webkit-mask: radial-gradient(transparent, transparent 50%, #000 50%);}</style>
</head>
<body><div class="box"><span>进度:</span><div class="progress"></div></div>
</body>
</html>

注意对比内圈和上图的不同,颗粒感降低,可以根据需要继续调整

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/221393.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

飞天使-k8s知识点1-kubernetes架构简述

文章目录 名词功能要点 k8s核心要素CNCF 云原生框架简介k8s组建介绍 名词 CI 持续集成, 自动化构建和测试&#xff1a;通过使用自动化构建工具和自动化测试套件&#xff0c;持续集成可以帮助开发人员自动构建和测试他们的代码。这样可以快速检测到潜在的问题&#xff0c;并及早…

解决 Hbuilder打包 Apk pad 无法横屏 以及 H5 直接打包 成Apk

解决 Hbuilder打包 Apk pad 无法横屏 前言云打包配置 前言 利用VUE 写了一套H5 想着 做一个APP壳 然后把 H5 直接嵌进去 客户要求 在pad 端 能够操作 然后页面风格 也需要pad 横屏展示 云打包 配置 下面是manifest.json 配置文件 {"platforms": ["iPad"…

Axure中如何使用交互样式交互事件交互动作情形

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、Axure中交互样式 1、什么是交互样式&#xff1f; 2、交互样式的作用&#xff1f; 3、Axure中如何…

Postman使用总结--生成测试报告

1.执行生成的命令格式 newman run 用例集文件 .json -e 环境文件 .json -d 数据文件 .json/.csv -r htmlextra --reporter- htmlextra-export 测试报告名 .html -e 和 -d 是 非必须的。 如果没有使用 环境&#xff0c;不需要指定 -e 如果没有使用 数据…

Educational Codeforces Round 160 (Div. 2) A~E

A.Rating Increase&#xff08;思维&#xff09; 题意&#xff1a; 给出一个仅包含数字的字符串 s s s&#xff0c;要求将该字符串按以下要求分成左右两部分 a , b a,b a,b&#xff1a; 两个数字均不包含前导 0 0 0 两个数字均大于 0 0 0 b > a b > a b>a 如果…

董宇辉“回归”成为东方甄选高级合伙人,尘埃落地后是谁赢了?

董宇辉“回归”成为东方甄选高级合伙人&#xff0c;尘埃落地后是谁赢了&#xff1f; 董宇辉的“小作文事件”“CEO摔手机事件”迎来大结局了&#xff01; 就在12月18日&#xff0c;董宇辉被任命为新东方教育科技集团董事长文化助理&#xff0c;兼任新东方文旅集团副总裁。有朋…

java中常用的加密算法总结

目前在工作中常用到加密的一些场景&#xff0c;比如密码加密&#xff0c;数据加密&#xff0c;接口参数加密等&#xff0c;故通过本文总结以下常见的加密算法。 1. 对称加密算法 对称加密算法使用相同的密钥进行加密和解密。在Java中&#xff0c;常见的对称加密算法包括&…

网络基础介绍

1.网线制作 1.1 网线制作需要的工具 网线 网线钳 水晶头 测试仪 ​编辑 1.2 网线的标准 1.3 网线的做法 2.集线器&交换机&路由器的介绍 3.OSI七层模型 4.路由器的设置 4.1 常见的路由器设置地址 4.2 常见的路由器账号密码 4.3 登录路由器 设置访客网…

【Axure RP9】中继器应用及相关案例

一 中继器简介 1.1 中继器是什么 中继器&#xff08;Repeater&#xff09;是一种高级的组件&#xff08;Widget&#xff09;&#xff0c;用于显示文本、图像和其他元素的重复集合。它是一个容器&#xff0c;容器中的每一个项目称作“item”&#xff0c;由于“item”中的数据由…

【Spark精讲】Spark五种JOIN策略

目录 三种通用JOIN策略原理 Hash Join 散列连接 原理详解 Sort Merge Join 排序合并连接 Nested Loop 嵌套循环连接 影响JOIN操作的因素 数据集的大小 JOIN的条件 JOIN的类型 Spark中JOIN执行的5种策略 Shuffle Hash Join Broadcast Hash Join Sort Merge Join C…

【面试】Java最新面试题资深开发-微服务篇(1)

问题九&#xff1a;微服务 什么是微服务架构&#xff1f;它与单体架构相比有哪些优势和劣势&#xff1f;解释一下服务发现和服务注册是什么&#xff0c;它们在微服务中的作用是什么&#xff1f;什么是API网关&#xff08;API Gateway&#xff09;&#xff1f;在微服务中它有何…

issue阶段的选择电路的实现

1-of-M的仲裁电路 为什么要实现oldest-first 功能的仲裁呢&#xff1f; 这是考虑到越是旧的指令&#xff0c;和它存在相关性的指令也就越多&#xff0c;因此优先执行最旧的指令&#xff0c;则可以唤醒更多的指令&#xff0c;能够有效地提高处理器执行指令的并行度,而且最旧的指…

德人合科技 | 公司电脑文件加密系统

公司电脑文件加密系统是一种可以对电脑文件进行加密的保护机制。它使用驱动层透明加密技术&#xff0c;能够在用户无感知的情况下对文件进行加密&#xff0c;从源头上保障数据安全和使用安全。 PC端访问地址&#xff1a; www.drhchina.com 此类系统主要有以下几个特点和功能&a…

免 费 搭 建 小程序商城,打造多商家入驻的b2b2c、o2o、直播带货商城

在数字化时代&#xff0c;电商行业正经历着前所未有的变革。鸿鹄云商的saas云平台以其独特的架构和先进的理念&#xff0c;为电商行业带来了全新的商业模式和营销策略。该平台涉及多个平台端&#xff0c;包括平台管理、商家端、买家平台、微服务平台等&#xff0c;涵盖了pc端、…

基于RocketMQ实现分布式事务

前言 在上一篇文章Spring Boot自动装配原理以及实践我们完成了服务通用日志监控组件的开发&#xff0c;确保每个服务都可以基于一个注解实现业务功能的监控。 而本文我们尝试基于RocketMQ实现下单的分布式的事务。可能会有读者会有疑问&#xff0c;之前我们不是基于Seata完成了…

【K8S基础】-k8s的核心概念pod

一、Pod 是什么 1.1 Pod 的定义和概念 在Kubernetes中&#xff0c;Pod是创建或部署的最小/最简单的基本单位。一个Pod代表着集群上正在运行的一个进程&#xff0c;它封装了一个或多个应用容器&#xff0c;并且提供了一些共享资源&#xff0c;如网络和存储&#xff0c;每个Pod…

nbcio-boot的flowable流程模型查询修正为按发布时间倒序

更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/nbcio-boot 前端代码&#xff1a;https://gitee.com/nbacheng/nbcio-vue.git 在线演示&#xff08;包括H5&#xff09; &#xff1a; http://122.227.135.243:9888 之前…

部署智能合约以及 javascript 调用合约函数(Web3项目二实战之三)

在上一篇 智能合约是Web3项目的核心要务(Web3项目二实战之二) ,我们已然为项目编写了智能合约,在攥写完智能合约后,该项目将完成了一大部分,剩下无非就是用户界面交互的内容。 然而,在码完了智能合约代码后,起着承前启后关键性的便是,前端界面与智能合约的交互。 智能…

机器学习---聚类(原型聚类、密度聚类、层次聚类)

1. 原型聚类 原型聚类也称为“基于原型的聚类” (prototype-based clustering)&#xff0c;此类算法假设聚类结构能通过一 组原型刻画。算法过程&#xff1a;通常情况下&#xff0c;算法先对原型进行初始化&#xff0c;再对原型进行迭代更新求解。著 名的原型聚类算法&#…

服务器数据恢复-EMC存储raid5磁盘物理故障离线的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 一台emc某型号存储服务器&#xff0c;存储服务器上组建了一组raid5磁盘阵列&#xff0c;阵列中有两块磁盘作为热备盘使用。存储服务器在运行过程中有两块磁盘出现故障离线&#xff0c;但是只有一块热备盘激活&#xff0c;最终导致该ra…