用canvas画一个水滴形状的渐变进度条、控制条

不知道该如何形容这东西,有点像水滴又不是很像,如下图

滑动条
滑动条

进度条
进度条

我是通过canvas 画出来的,如果你有更好的方法,欢迎交流。
代码如下:

<!DOCTYPE html>
<html lang="ch">
<head>
    <title>hahaha </title>
    <style>
        .back{
            background-image: linear-gradient(to right, #50d991 , #92e059);
            width: 500px ;
            height: 500px;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        .div1{
            width: 400px;
            height: 16px;
            border-radius: 8px;
            background-color: #9be8bb;
            display: flex;
            align-items: center;
        }
    </style>
</head>

<body>
    <div class="back">
        <div style="height: 50px;">
        </div>
        <div class="div1">
            <canvas id="myCanvas" width="160" height="20">
                您的浏览器不支持 HTML5 canvas 标签。
            </canvas>
        </div>
    </div>

    <script>
        var c=document.getElementById("myCanvas");

        var myCanvas_rect = c.getBoundingClientRect();
        var width = parseInt(myCanvas_rect.width);
        var height = parseInt(myCanvas_rect.height);

        var ctx=c.getContext("2d");
       
        // 开始画圆 arc(x,y,r,start,stop)
        ctx.arc(width-0.5*height,0.5*height,0.45*height,0.5*Math.PI, 1.5*Math.PI,true);
        // 0.5*Math.PI 到 1.5*Math.PI 就是画 圆的右半边
        ctx.arc(0.5*height,0.5*height,0.05*height,1.5*Math.PI, 2.5*Math.PI,true);
		// 1.5*Math.PI 到 2.5*Math.PI 就是画 圆的左半边
		// 画完两个半圆他会自动连上?
        //设置渐变
        var grd=ctx.createLinearGradient(0,0,200,0);
        grd.addColorStop(0,"#9be8bb");
        grd.addColorStop(1,"#fff");

        // Fill with gradient
        ctx.fillStyle=grd;
        ctx.fill();
    </script>
</body>

</html>

最后的效果就是这样啦
滑动条/进度条

参考资源链接:[Vue实现半圆形进度条组件与绘制方法](https://wenku.youkuaiyun.com/doc/64531fbbea0840391e76ea6e?utm_source=wenku_answer2doc_content) 为了实现一个颜色渐变的半圆形进度条,首先需要在Vue组件的`mounted`生命周期钩子中初始化canvas环境,然后定义绘制进度条和颜色渐变的方法。具体步骤如下: 1. 初始化canvas元素和绘图上下文: 在`mounted`钩子中,首先获取canvas元素,并设置其尺寸以适应父容器。然后创建绘图上下文context,并设置绘制参数,如`lineWidth`和`lineCap`。 2. 绘制半圆形背景: 使用`circle`方法绘制半圆形的背景,它应该在进度条之前绘制,以作为进度条的可视边界。可以根据需要设置背景颜色。 3. 绘制进度条: 使用`sector`方法绘制进度条。该方法应接受圆心坐标、半径、起始角度和结束角度作为参数。为了实现半圆形,起始角度设置为180度(或π弧度),结束角度为`180 + (360 * percent / 100)`度。这可以通过计算当前进度百分比得出。 4. 添加颜色渐变效果: 使用Canvas的`createLinearGradient`方法创建一个渐变对象。在渐变对象中定义至少两个颜色点,分别对应进度条的起始和结束位置。然后将这个渐变对象赋给`strokeStyle`属性,最后使用`stroke`方法绘制弧线,这样弧线就会具有渐变效果。 5. 添加文本显示: 在进度条中显示当前百分比,可以在半圆形内部或旁边添加文本。可以使用`fillText`方法在指定位置绘制文本。 示例代码如下(示例代码、mermaid流程图、扩展内容略): 通过以上步骤,你可以在Vue项目中实现一个具有颜色渐变效果的半圆形进度条。为了获得更深入的理解和掌握更多的细节,可以参阅《Vue实现半圆形进度条组件与绘制方法》。这份文档不仅提供了实际操作的示例代码,还详细解释了每个步骤背后的原理,帮助开发者在前端开发中实现更丰富的视觉效果。 参考资源链接:[Vue实现半圆形进度条组件与绘制方法](https://wenku.youkuaiyun.com/doc/64531fbbea0840391e76ea6e?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值