我有以下代码,它试图将垂直镜像图像与透明背景颜色渐变相结合。当组合这两种效果失败时,是否需要在画布上叠加PNG渐变而不是试图让画布执行这两种操作?使用HTML画布创建反射图像?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<style type="text/css">
body {
background-color: #eee;
text-align: center;
padding-top: 150px;
}
</style>
<script type="text/javascript">
var img = new Image();
img.onload = function() {
var ctx = document.getElementById("output").getContext("2d");
// reflect image
ctx.translate(0, 75);
ctx.scale(1, -1);
ctx.drawImage(img, 0, 0, 75, 75);
// add gradient
var grad = ctx.createLinearGradient(0, 0, 0, 20);
grad.addColorStop(0, 'transparent');
grad.addColorStop(1, '#eeeeee');
ctx.fillStyle = grad;
ctx.fillRect(0, 0, 75, 20);
};
img.src = "test.jpg";
</script>
</head>
<body>
<div><img src="test.jpg" height="75" width="75" /></div>
<canvas id="output" width="75" height="20"></canvas>
</body>
</html>
的链接试图透明之前停止。我可以仅应用渐变,或者仅应用反射图像,但不能同时应用两者。 – 2009-11-07 15:08:30
如果您的浏览器支持画布,则可能也会支持一些CSS3 ......您可以使用CSS3创建反射(iTunes样式) - 无需使用JavaScript。 http://s3.amazonaws.com/nettuts/704_cssReflections/index.html – Greg 2011-06-03 08:03:19