【问题标题】:Images Not Showing Up in HTML5 Canvas图像未显示在 HTML5 画布中
【发布时间】:2012-03-21 19:21:38
【问题描述】:

我正在尝试使用画布为我的网站制作背景。代码在这里:http://jsfiddle.net/uXJMA/。渐变出现了,但重复的图像没有出现。谁能帮我弄清楚为什么图像不起作用?

【问题讨论】:

    标签: javascript html css html5-canvas


    【解决方案1】:

    原创 --------- 这没有回答问题

    老实说,我对画布知之甚少,但假设您添加的图像看起来像静态的,请尝试添加 document.body.appendChild(canvas);

    http://jsfiddle.net/hyperthalamus/sWYHM/

    从未见过该对象被添加到 DOM,所以值得一试吗?


    修改

    你需要的是-webkit-canvas(mycanvas);

    这里有一个例子: http://www.webkit.org/blog/176/css-canvas-drawing/

    我在这里做了一个工作版本:

    http://jsfiddle.net/hyperthalamus/vwRyt/

    【讨论】:

    • 是的,这就是我要说的。
    • 这将显示画布,但不会真正作为<body> 的“背景”。我猜它可能是绝对定位的,但如果页面被调整大小它不会适应。 (话又说回来,如果要在背景图像时重复,不清楚为什么无论如何都要通过画布显示图像!)
    • 是的,在操作的问题中错过了这一点。你能做一些事情,比如将 z-index 设置为一个荒谬的负数并破解它吗?
    • 编辑了我的答案(我认为是正确的),留下了原来的评论,所以 Pointy 的评论是有意义的。
    【解决方案2】:

    两个问题:

    1. 您需要将画布放在图像“onload”处理程序内的页面上。目前,您正在加载图像之前执行此操作。换句话说,在设置后台的代码运行之前,不会调用处理程序。
    2. 但是,即使您这样做了,它也不会起作用,因为浏览器会认为访问从不同域获取的图像位是安全错误。

    【讨论】:

    • 图片实际上是本地的。我刚刚上传了它,所以它可以在 jsfiddle 上运行。
    • 啊。好吧,如果图像在您的域中,那么它将(可能)工作。只需将设置图像源之后的代码放入“onload”处理程序即可。
    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2012-12-28
    相关资源
    最近更新 更多