【问题标题】:Responsive jQuery canvas, canvas background disappears on window resize响应式 jQuery 画布,画布背景在窗口调整大小时消失
【发布时间】:2015-12-17 13:48:00
【问题描述】:

我正在尝试创建一个具有背景图像的响应式画布。我在这里创建了一个有问题的代码笔:http://codepen.io/eternalminerals/pen/avZBOr

我正在尝试使此画布具有响应性,这意味着当我调整窗口大小时,背景中的图像也会调整大小,但当您调整窗口大小时,图像会完全消失。

任何帮助将不胜感激! codepen 有问题。谢谢。

这里是javascript:

$(document).ready(function( $ ) {
var canvas = document.getElementById("canvas"),
    ctx = canvas.getContext("2d");

canvas.width = 934;
canvas.height = 622;


var background = new Image();
var width = 200;
var height = 137;
background.src = "http://eternalminerals.com/wp-content/uploads/2014/03/mg-balance2.gif";

background.onload = function(){
    ctx.drawImage(background,0,0,canvas.width, canvas.height);   
}
});

$(document).ready(function( $ ) {
    //Get the canvas &
    var c = $('#canvas');
    var ct = c.get(0).getContext('2d');
    var container = $(c).parent();

    //Run function when browser resizes
    $(window).resize( respondCanvas );

    function respondCanvas(){ 
        c.attr('width', $(container).width() ); //max width
        c.attr('height', $(container).height() ); //max height

        //Call a function to redraw other content (texts, images etc)
    }

    //Initial call 
    respondCanvas();

}); 

【问题讨论】:

    标签: javascript jquery html css canvas


    【解决方案1】:

    看起来您可能需要在调整窗口大小时重新绘制图像。

    ct.drawImage(background, 0, 0, $(container).width(), $(container).height());
    

    我有一个示例可以让您的图像保持可见: http://codepen.io/anon/pen/XmKNXG

    但是,还有一个问题是容器高度不断增加。我不知道为什么。

    【讨论】:

    • 非常感谢,Hieu Le,我也看到了问题,但这绝对对我有很大帮助!将继续修补它
    • 我想我已经解决了:codepen.io/eternalminerals/pen/avZBOr 我使用了 $(window).width() 和 $(window).height() 而不是 $(container).width()/height()
    • 干得好!祝你好运!
    猜你喜欢
    • 2017-12-04
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 2013-04-14
    • 2010-12-12
    • 1970-01-01
    • 2012-06-26
    相关资源
    最近更新 更多