HTML Canvas 线条透明度不适用于移动 Safari

Posted

技术标签:

【中文标题】HTML Canvas 线条透明度不适用于移动 Safari【英文标题】:HTML Canvas lines transparency not working on mobile safari 【发布时间】:2019-07-19 06:24:16 【问题描述】:

我在我的网站 (https://framedthread.com) 上使用画布绘制线条,它们是具有透明度的线条,它们在 android 和 windows 上显示良好,但在移动 safari 上却没有。线条被绘制,但没有应用透明度,这导致线条完全变暗,最终图像过暗。

这是我用来绘制线条的代码:

var canvas_string = document.getElementById('homepage_portrait_string');
var ctx_string = canvas_string.getContext('2d');
canvas_string.width=601;
canvas_string.height=751;

var i=0;
var number_of_lines= lines_instructions.length;
setTimeout(function()

    window.draw_function_interval=setInterval(function() 

        //Draw best line in string model
        ctx_string.beginPath();
        ctx_string.lineWidth = 0.2;
        ctx_string.strokeStyle = 'rgba(0,0,0,50)';
        ctx_string.moveTo(nail_x_coordinates[lines_instructions[i]], nail_y_coordinates[lines_instructions[i]]);
        ctx_string.lineTo(nail_x_coordinates[lines_instructions[i+1]], nail_y_coordinates[lines_instructions[i+1]]);
        ctx_string.stroke();
        ctx_string.closePath();
        i++;
        if(i==number_of_lines)
            clearInterval(window.draw_function_interval);
        

      , 6);

, 1350);

画布的定位是 position:absolute,但我认为这并不重要。非常感谢您的帮助。我真的没有想法。

【问题讨论】:

【参考方案1】:

rgba 中的 alpha 值介于 0(完全透明)和 1(不透明)之间。如果您想要 50% 的透明度,请尝试将 rgba 更改为 rgba(0,0,0,0.5)。

但即便如此,根据这个post rgba 在浏览器上的呈现方式也不同。

【讨论】:

以上是关于HTML Canvas 线条透明度不适用于移动 Safari的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 Canvas基本绘制线条教程

为啥我的 HTML5 画布边缘的线条变得不那么不透明?

html2canvas,样式不适用于画布?

在 HTML5 画布中绘制鼠标移动的半透明线

Canvas--线条

HTML5自学笔记[ 15 ]canvas绘图基础6