Kampfer的记事本

新blog:www.kampfer-lw.com

导航

简易放大镜效果

Posted on 2010-07-27 17:02  Kamfper  阅读(270)  评论(0编辑  收藏  举报

此效果来自蓝色理想,这里我只是放个Demo,方便自己以后研究。

我已在代码中添加了比较详细的注释,在这里我只提几点:

1.

ie =!+'\v1' //号称史上最短的IE判断,的确够短的!!

 

2.

var b = el.getBoundingClientRect();

这里的getBoundingClinetRect()方法以前是IE Only的,但是现在FF3.0+和Opera9.5+已经支持了该方法。该方法获得页面中某个元素的左,上,右和下便边框分别相对浏览器视窗的位置。看图就直观点:

 

注意第二张图移动了scroll!!

更多可以看:http://www.cnblogs.com/qieqing/archive/2008/10/06/1304399.html

 

3.Demo中运用了下面方式:

 

var tmp = d.createElement(t||'div');
var e = e || event,x=e.pageX||e.clientX+dd.scrollLeft,y=e.pageY||e.clientY+dd.scrollTop;

说明下这是种简写的方式吧,具体就是||的运算顺序和机制吧。||首先会计算左边的表达式,如果为真那么就会忽略右边的表达式,因为||只要是一个表达式为真那么整个式子必为真,既然左边的已经为真了,右边的就无关紧要了。这是我的理解。&&也是类似的。

 

 

4.关于条件运算符

举例说明,如下面的代码

 

scrolly = y - divup.offsetHeight/2 < top ? 0 : y + divup.offsetHeight/2>img.height+top ? img.height - divup.offsetHeight : scrolly;

很长,它的作用是判断zoomup是否高过了父元素的上边或者低过了父元素的下边。

 

y - divup.offsetHeight/2 <top如果为真,说明zoomup的已经高出了父元素的上边,就将0赋给scrolly,忽略后面的;否则开始计算后面的式子,判断zomup是否过高。就是相当于

scrolly = y - divup.offsetHeight/2 < top ? 0 : (y + divup.offsetHeight/2>img.height+top ?( img.height - divup.offsetHeight ) : scrolly;)