画布的 HTML 属性(宽度、高度)独立变化

Posted

技术标签:

【中文标题】画布的 HTML 属性(宽度、高度)独立变化【英文标题】:HTML attributes (width, height) of canvas change independently 【发布时间】:2017-03-13 05:22:22 【问题描述】:

我在 JS 上有一些脚本,它改变了画布元素的宽度和高度:

 function RefreshSizes (canvas) 
        var temp_width = 320;
        var temp_height = 240;

        document.getElementById(canvas).setAttribute('width', temp_width);
        document.getElementById(canvas).setAttribute('height', temp_height);
    

此函数在画布初始化后立即调用。 它在 Chrome 上运行良好。

但在 FireFox 49 中我看到:

会是什么?

UPD#1 BukkitmanPlays MCPE 的测试代码

UPD#2 画布的完整 CSS:

    element 
        width: 320px;
        height: 240px;
    
    .canvas 
        border: 3px solid #E0E0E0;
        z-index: 0;
        position: relative;
    
    html 
        font: 10px/10px arial;
    

【问题讨论】:

顺便说一句,它不依赖于在 HTML 中初始化: 请考虑提供一个***.com/help/mcve 来证明您的问题。 您没有向RefreshSizes() 传递任何参数。什么都不会发生。 对不起萨尔曼,但我认为你现在不是,第一个例子需要参数,但第二个例子不需要 【参考方案1】:

一个浏览器上的一些代码在另一个浏览器上是不一样的,所以在这种情况下,我会做什么:

function RefreshSizes (canv) 
    var temp_width = 320;
    var temp_height = 240;

    var canvas = canv;
    canvas.width = temp_width;
    canvas.height = temp_height;

我相信这会奏效

【讨论】:

以上是关于画布的 HTML 属性(宽度、高度)独立变化的主要内容,如果未能解决你的问题,请参考以下文章

使用 CSS 时画布会被拉伸,但“宽度”/“高度”属性正常

使用 CSS 时画布会被拉伸,但使用“宽度”/“高度”属性是正常的

Html Canvas:宽度/高度属性和宽度/高度样式之间的区别[重复]

裁剪画布/导出具有特定宽度和高度的 html5 画布

从移相器画布获取高度和宽度

生成许多​​随机宽度和高度块,并使其适合 HTML5 画布的全宽 - EaselJS