我正在创建一个小工具,用于说明偏振镜的好处。基本上,用户将拖动镜片(Raphael.js路径)在令人眼花缭乱的场景(容器DIV的CSS背景)上,并“透过”镜片看到场景。以下是js代码:
var rsr = Raphael("playmask", 720,540);
// Lens path
var path_f = rsr.path("M0,73.293c0.024-39.605,17.289-53.697,35.302-61.34C53.315,4.312,99.052-0.012,119.011,0 c38.56,0.021,43.239,11.164,43.229,29.9c-0.002,3.45-0.76,28.632-16.349,58.949c-10.332,20.092-28.434,60.424-76.452,60.396 C29.821,149.223-0.022,112.898,0,73.293 M200.594,29.922c0.011-18.734,4.699-29.871,43.262-29.851 c19.96,0.013,65.691,4.39,83.695,12.052c18.005,7.662,35.254,21.772,35.231,61.379c-0.023,39.606-29.909,75.896-69.526,75.872 c-48.02-0.027-66.076-40.377-76.384-60.484C201.32,58.557,200.594,33.373,200.594,29.922");
path_f.attr({"stroke-width":2, fill:'url(img/polarized.jpg)'} );
var move = function(dx,dy){
this.translate( dx-this.ox, dy-this.oy );
this.ox = dx;
this.oy = dy;
},
start = function(){
this.ox = 0;
this.oy = 0;
},
end = function(){
};
path_f.drag(move,start,end);
#playmask
div具有以下CSS(只有“非极化”背景图像和大小):
#playmask{
height:540px;
width:720px;
background: url(img/unpolarized.jpg);
}
我所遇到的问题是:
- Chrome/Firefox一如既往地表现良好:透镜形状显示出来,填充图像在拖动透镜时看起来“固定”(见第一张图片);
- IE7、8、9版本可以工作,但(惊喜!)它们的行为方式不同:填充图像“粘”在透镜形状上(见第二张附加图片)。
Firefox 截图:
![behavior in Firefox 11.0](https://istack.dev59.com/bnBRP.webp)
![behavior in IE9](https://istack.dev59.com/pFb1g.webp)
编辑2(2012年5月21日)目前还没有解决方案:(但更准确地说,它与"no-smil"功能没有任何关系; 在IE9上重现错误的正确方法是拖动玻璃,选择页面其余部分中的一些文本,并滚动加速器图标(带箭头的蓝色图标)。眼镜的背景神奇地在正确的位置上“刷新”。
重要编辑3(2012年8月28日)
你可以在 这个 jsfiddle ( http://jsfiddle.net/q4rXm/17/ ) 中找到所有打包的内容。