现在在含有图片较多的页面上,我们会以缩略图的形式展示图片,当用户将鼠标移动到缩略图上时,我们就会按原图大小显示出来。这种应用已经很普遍,尤其在商品展示和用户头像场景中。
写之前发现网上的都不是很理想,兼容性一般。再看了《超越CSS》之后,觉得上面的想法不错,这次和大家分享一下。大致思路就是:通过绝对定位把缩略图图排列好,然后通过css的hover伪类属性来实现图片尺寸放大。具体如下:
CSS文件如下:
Html文件如下:
鼠标移上去之后实现了图片放大,其中要注意的是IE6的hover属性,
IE6处理CSS伪类:hover存在一个Bug.就是一旦 a与 a:hover 的CSS属性是一样的,也就是说a:hover中没有任何样式的改变,hover状态就不会被触发。但是只要在a:hover增加某些特定的属性变化,本例中是“border:none;”,就可以触发这个事件了。这里的特定属性有:direction/text-align/text-indent/float/overflow/position,但是font属性无效。
好了,这样我们就可以实现兼容性很好的鼠标触发图片放大效果,而且是纯CSS实现。不过有同事说这样的效率未必好,建议用两组图片,只有用户触发了某一张小图时候再载入大图,这在缩略图很多的时候可以尝试,具体做法不再阐述。
也许有人说这里的缩略图排列一定要用绝对定位么?答案是不一定。一种方法是用传统的ul,li依靠浮动排列,然后去掉a的样式定义,直接在a:hover上加载。这样还可以避免了IE6的hover的Bug,但是在做demo的时候发现之后会出现:只要鼠标移动上去之后动一下,原来的缩略图就出现跳动。
希望大家一起来讨论,还有哪些问题和改进的建议。