实现栅格形式的进度条+奇特的渐变边框效果

news2024/11/19 23:23:10

介绍

  1. 效果图展示:(颜色自定义哦~js控制
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 实现逻辑介绍:
    (1)主要实现方案就是使用css渐变背景实现的。(linear-gradient)
    (2)因为需要js控制颜色,所有边框渐变分了2个盒子,一个盒子控制左、右边框线的实现,一个盒子控制上下边框线的实现。就如解释说的一样,上图的边框为拼接出来的
    (3)内部进度条实现原理是使用背景渐变然后使用 background-size设置大小控制无限渲染。(background-size这个可以控制每一个的大小,也可以使用linear-gradient去控制每一个的大小)

  3. 组件功能介绍
    (1)进度条功能,可设置百分比(0~100)进行百分比分割展示。
    (2)可自定义颜色(边框色、四个角的颜色、进度条背景色)

实现

  1. react实现:
    (1) Line/index.tsx
    import styles from './index.less';
    
    const linerGradient = ({ direction, width, color }: any) => {
      const _width = width || '10px';
      return `linear-gradient(${direction}, ${color} ${_width},transparent ${_width}, transparent calc(100% - ${_width}), ${color} calc(100% - ${_width}), ${color}) 4`
    }
    
    const ContentFill = (props: any) => {
      const { begin, end, percentage } = props;
      return <div className={styles['contentFill-bg']} style={{
        background: `linear-gradient(90deg, ${begin},${end})`,
        width: `${percentage}%`
      }}>
        <div className={styles['contentFill']} style={{
          background: `linear-gradient(90deg, 
          transparent 36%,
          #071353 0%,
          #071353 50%,
          transparent 0%, 
          transparent 86%, 
          #071353 0%,
          #071353 100%
      )`,
          backgroundSize: '16px 16px'
        }}></div>
      </div>
    }
    
    const Line = (props: any) => {
      const { color: { begin, end, border }, percentage } = props;
      return <div className={styles['lh-line']}  style={{borderColor: border}}>
        <div className={[styles['top'], styles['content']].join(' ')} style={{
          borderImage: linerGradient({ direction: 'to right', color: begin, width: '10px' })
        }}>
        </div>
        <div className={[styles['left'], styles['content']].join(' ')} style={{
          borderImage: linerGradient({ direction: 'to bottom', color: begin, width: '8px' })
        }}></div>
        <ContentFill begin={begin} end={end} percentage={percentage}></ContentFill>
      </div>
    }
    export default Line;
    
    (2)index.less
    .contentFill-bg {
      .contentFill {
        height: 12px;
        width: 100%;
      }
    }
    
    .lh-line {
      border: 1px solid #071358;
      position: relative;
      padding: 4px;
    
      &>.content {
        border: 1px solid;
        width: calc(100% + 2px);
        height: calc(100% + 2px);
        position: absolute;
        top: -1px;
        left: -1px;
        right: 0;
        bottom: 0;
      }
    
      .top {
        border-left: none;
        border-right: none;
      }
    
      .left {
        border-top: none;
        border-bottom: none;
      }
    }
    
  2. vue 实现待定(实现逻辑差不多,本文react示例并不涉及react的api那些,如果实现起来有问题可以询问我)

使用

  1. react使用
const page = () => {
	return <>
		<Line color={{
	      begin: '#0167EB',
	      end: '#00BFFA',
	      border: 'rgb(1, 103, 235, .3)'
	    }} percentage={100}></Line>
	    <Line color={{
	      begin: '#00CCAA',
	      end: '#65FFE5',
	      border: 'rgb(0, 204, 170, .3)'
	    }} percentage={50}></Line>
	</>
} 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DDD领域驱动设计:支付系统中的应用一

文章目录 前言一、DDD意义1 为什么需要DDD2 DDD的价值 二、DDD设计流程1 战略设计2 战术设计 三、DDD代码落地四、参考文献总结 前言 DDD作为一种优秀的设计思想&#xff0c;为复杂业务治理带来了曙光。然而又因为DDD本身难以掌握&#xff0c;很容易造成DDD从理论到工程落地之…

V4L2系列 之 V4L2驱动框架(1)

目录 前言一、V4L2驱动框架概览1、应用层 -》中间层-》驱动层2、主要代码文件(Linux 4.19版本内核) 二、怎么写V4L2驱动1、如何写一个设备的驱动&#xff1f;2、Video设备主要结构体3、怎么写V4L2驱动 三、V4L2的调试工具1、v4l2-ctl2、dev_debug3、v4l2-compliance 前言 本篇文…

00后卷王的自述,我真有同事口中说的那么卷?

前言 前段时间去面试了一个公司&#xff0c;成功拿到了offer&#xff0c;薪资也从14k涨到了20k&#xff0c;对于工作都还没几年的我来说&#xff0c;还是比较满意的&#xff0c;毕竟一些工作5、6年的可能还没我高。 我可能就是大家口中的卷王&#xff0c;感觉自己年轻&#xf…

一文读懂Redis哨兵

Redis哨兵&#xff08;sentinel&#xff09; 哨兵是什么&#xff1f; 吹哨人巡查监控后台master主机是否故障&#xff0c;如果故障了根据投票数自动将某一个从库转换为新主库&#xff0c;继续对外服务。 俗称&#xff0c;无人值守运维。 干什么&#xff1f; 主从监控&…

Win10系统下VS2019编译Qt的Ribbon控件 -- SARibbon

Win10系统下VS2019编译Qt的Ribbon控件 -- SARibbon 一、源码下载二、源码编译三、封装成库四、Qt配库五、运行测试 原文链接&#xff1a;https://blog.csdn.net/m0_51204289/article/details/126431338 一、源码下载 【1】https://gitee.com/czyt1988/SARibbon/tree/master/s…

Python开发工具PyCharm v2023.1正式发布——推出全新的用户界面

JetBrains PyCharm是一种Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外&#xff0c;该IDE提供了一些高级功能&#xff0c;以用于Django框架下的专业Web开发。 PyCharm v2023.1正式版下载 更新日志如下&#xff1a; 推出新的…

【UE】三步创建自动追踪自爆可造成伤害的敌人

效果 可以看到造成伤害时在右上角打印玩家当前的生命值 步骤 1. 首先拖入导航网格体边界体积 2. 首先复制一份“ThirdPersonCharacter”&#xff0c;命名为“ExplodingAI” 打开“ExplodingAI”&#xff0c;删除事件图表中所有节点 添加一个panw感应组件 在事件图表中添加如…

机器学习实战:Python基于PCA主成分分析进行降维分类(七)

文章目录 1 前言1.1 主成分分析的介绍1.2 主成分分析的应用[](https://chat.openai.com/ "openai") 2 Mushroom分类数据演示2.1 导入函数2.2 导入数据2.3 PCA可视化2.4 PCA散点图2.5 PCA散点图 3 讨论 1 前言 1.1 主成分分析的介绍 主成分分析&#xff08;Principa…

Consistency Models

Consistency Models- 理解 问题定义研究动机本文中心论点 相关工作和进展Consistency Models创新点review扩散模型 Consistency Model-Definition一致性模型的定义一致性模型参数化一致性模型采样 Training Consistency Models via DistillationTraining Consistency Models in…

ChatGPT on Notes/Domino

大家好&#xff0c;才是真的好。 随着春节过去&#xff0c;小盆友也开始陆续到幼儿园报到&#xff0c;我们又回来和大家一起继续Notes/Domino传奇之旅。 去年年底ChatGPT横空出世&#xff0c;让大家震惊了一把。 可能有些老Notes/Domino人&#xff0c;还不知道ChatGPT是什么…

MySQL_第11章_数据处理之增删改

第11章_数据处理之增删改 讲师&#xff1a;尚硅谷 - 宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a; http://www.atguigu.com 1. 插入数据 1.1 实际问题 解决方式&#xff1a;使用 INSERT 语句向表中插入数据。 1.2 方式1&#xff1a;VA…

在OpenHarmony 开发者大会2023,听见百业同鸣

加强开源&#xff0c;助推中国科技强国战略&#xff0c;已经成为中国科技繁荣的必要条件&#xff0c;“十四五”规划中首次提到了“开源”两个字&#xff0c;并明确指出&#xff0c;支持数字技术开源社区等创新联合体的发展。 在中国发展开源&#xff0c;有着拓荒的色彩&#x…

Springsecurity笔记14-18章JWT+Spring Security+redis+mysql 实现认证【动力节点】

15 SpringSecurity 集成thymeleaf 此项目是在springsecurity-12-database-authorization-method 的基础上进行 复制springsecurity-12-database-authorization-method 并重命名为springsecurity-13-thymeleaf 15.1 添加thymeleaf依赖 | <groupId>org.springframewor…

西门子s7-300/400PLC-MMC密码解密

西门子s7-300/400-MMC密码解密 简介西门子加密工具及操作密码验证 简介 目前&#xff0c;市面上或网络上有很多针对s7-200&#xff0c;300&#xff0c;400&#xff0c;1200&#xff0c;1500的密码解密破解软件&#xff0c;但很多时候只能解数字或英文密码&#xff0c;对设置了…

Linux-初学者系列——篇幅5_系统目录相关命令

系统目录相关命令-目录 一、系统目录层级1、目录绝对路径2、目录相对路径3、目录层级结构查看-tree不带任何参数获取目录结构数据信息以树形结构显示目录下的所有内容&#xff08;包含隐藏信息&#xff09;只列出根目录下第一层的目录结构信息只显示目录结构信息中的所有目录信…

ThingsBoard如何自定义topic

1、背景 业务需要,mqtt设备,他们协议和topic都定义好了,想使用tb的mqtt直接接入设备,但是设备的topic和tb规定的不一致,该如何解决呢? 2、要求 设备的topic要求规则是这样的 首先第二点是满足的,网关的发布主题是可以通过tb的设备配置来自定义遥测和属性的topic,问题…

qiankun应用级缓存-多页签缓存

需求&#xff1a; A&#xff1a;主应用 B&#xff1a;子应用 项目框架&#xff1a;vue2 全家桶 qiankun 应用间切换需要保存页面缓存&#xff08;多页签缓存&#xff09;&#xff0c;通过vue keep-alive只能实现页面级缓存&#xff0c;在单独打开的应用里能实现缓存&#xf…

德国申请专利,发明,实用,外观专利申请详细步骤

一、德国专利申请途径 申请人可以向德国专利商标局直接递交申请。要求优先权的情况下根据《保护工业产权巴黎公约》需要在递交中国在先申请的12个月之内向德国专利商标局递交申请。 另外&#xff0c;通过PCT&#xff08;“Patent Cooperation Treaty”&#xff0c;即《专利合作…

【分享】免费的AI绘画网站(5个)

哈喽&#xff0c;大家好&#xff0c;我是木易巷~ 随着人工智能技术的不断发展&#xff0c;越来越多的AI绘画软件开始涌现&#xff0c;如果你想要免费享受AI绘画的乐趣&#xff0c;那你可要好好看下面的内容~ Vega AI创作平台 入口&#xff1a;https://rightbrain.art 一款专业的…

AIGC+RPA丨大语言模型赋能实在智能数字员工“超进化”

前不久&#xff0c;全球最大上市咨询公司埃森哲发布2023年技术愿景《When Atoms meet Bits》报告&#xff0c;并在当中深度解析到&#xff1a;生成式AI成为2023年四大技术发展趋势之一。 大型语言模型&#xff08;Large Language Model, LLM&#xff09;领域的研发和布局在国内…