jQuery和HTML5画布,主动镜像部分屏幕

时间:2012-10-09 00:26:42

标签: jquery html5 css3 canvas mirror

在照片网站上工作,这将涉及玻璃码头上的反射。它很漂亮。

我不想使用CSS3的box-reflect属性,而是想在doc中构建一个canvas层,它只是翻转它上面的任何内容并且有一个渐变蒙版。有几个原因:

  • 浏览器兼容性(Chrome有一个反映错误的盒子反射错误)
  • 挑选人工物理......当在码头的边缘,我只想要码头上的反射

我在网上浏览过并看到很多资源用于为你运行的每个图像构建一个canvas元素的插件 - 但这些都不适用于我。

理想情况下,我有一些jQuery可以复制停靠区上方区域中的所有像素并将其颠倒翻转,然后运行我预定义的某些事件(例如每当幻灯片中的图像移入时)。 / p>

有没有人见过这方面的资源?我疯了,错过了更好的方法吗?谢谢你的帮助!

这是一个小眼睛糖果的截图。除了图像之外,页面上的所有内容都是CSS。

http://cloud.dhut.ch/image/0F1i2T0p3i3M

1 个答案:

答案 0 :(得分:0)

如果你想考虑移动支持,我建议你坚持使用CSS属性,因为它们比画布绘图效果更好。另一方面,如果您想支持浏览器,则可以使用画布创建反射。

画布解决方案很难。期。从一个或一系列图像中进行反射没有捷径。以下是制作画布反射的基本步骤。

  1. 迭代您在给定时间显示的所有图像。
  2. Draw隐藏画布上的每张图片。
  3. 在同一基线处绘制所有图像后,从整个画布获取the image data
  4. 使用简单迭代和翻转图像数据进行像素迭代。
  5. 对于从顶部开始的图像数据的每个像素行,通过将每个像素的α值改变一度来降低不透明度。这将创建渐变淡出效果。
  6. 将图像数据放入反射画布。
  7. 每次从场景中更改一个图像时,都需要重绘它。每次移动(如果有滚动条),都必须更新反射。

    从性能的角度来看,这是非常昂贵的。

    拥有css反射将是硬件加速,它将开箱即用,当浏览器完全支持它时,它将非常顺利。

    在我看来,画布方法是过度的。