写法 A
ctx.fillStyle = 'white';
ctx.fillText('分享会', 30, 60);
ctx.fillStyle = 'navy';
ctx.fillRect(0, 0, 300, 150);
A、B 依次在同一画布执行。为什么一个看不到标题?默认不透明填充、source-over 合成。
ctx.fillStyle = 'white';
ctx.fillText('分享会', 30, 60);
ctx.fillStyle = 'navy';
ctx.fillRect(0, 0, 300, 150);
ctx.fillStyle = 'navy';
ctx.fillRect(0, 0, 300, 150);
ctx.fillStyle = 'white';
ctx.fillText('分享会', 30, 60);
提问:指出关键差异,给出适用条件或反例;不要仅以代码长短判断。以上为对照片段,阅读其前提后再分析。
A 的背景后画,覆盖标题;B 先背景再文字。函数名或语句是否“正确”不足以判断,执行顺序也决定结果。