【发布时间】:2016-10-05 16:23:38
【问题描述】:
我正在使用画布渲染图像,但有时会遇到这个奇怪的图形错误,当我滚动时它会消失。
这是反应组件的一部分,you can see the code for it here.
在渲染过程中滚动或触发某种更新后,它看起来应该是这样的:
这是我图片的 CSS 的样子:
.async-image {
position: relative;
z-index: 1;
background: black;
overflow: hidden;
transform: translateZ(0)
}
.async-image canvas {
pointer-events: none;
opacity: 0;
transform: translateZ(0)
}
.async-image .preload {
position: absolute;
transform: scale(1.2);
}
.async-image .preload.ready {
opacity: 1;
}
.async-image .src {
position: absolute;
transform: scale(1.1);
}
.async-image .src.ready {
opacity: 1;
transform: scale(1);
}
.async-image img {
opacity: 0;
}
不确定是什么原因造成的,但在主画布下方和顶部都有一个底层画布,用于显示源图像的 10x10 模糊图像,作为预加载器。图像准备好后会稍微放大。
当我切换到另一个选项卡然后又返回时,似乎会触发此错误。
【问题讨论】:
-
看起来您正在一遍又一遍地渲染图像的顶部。也许你在渲染之前忘记调用
ctx.beginPath(),或者你在再次渲染之前没有清除画布。但是没有代码我们只能猜测出什么问题了.. -
这不是真的,不。我正在渲染一次。图像实际上是一个反应组件,仅在挂载和源更改时渲染。而且我在再次渲染之前清除画布,即使那样,这如何解释滚动时消失的问题?
-
能否发个网站链接查看一下?
-
@divix 不幸的是,没有。这是我的一个项目,它在我的机器上。我没有主机。
-
您应该发布一个展示实际问题的演示。 CSS看起来很奇怪。您是否尝试删除测试的所有转换属性?
标签: css google-chrome canvas