【发布时间】:2012-09-23 13:19:31
【问题描述】:
我正在创建图像悬停效果,但我遇到了问题。当我将鼠标悬停在某些图像上时,滚动条 会出现,我想避免但不知道该怎么做。我相信它与视口和计算有关,但不确定是如何完成的。
代码如下:
$('.simplehover').each(function(){
var $this = $(this);
var isrc = $this[0].src, dv = null;
$this.mouseenter(function(e){
dv = $('<div />')
.attr('class', '__shidivbox__')
.css({
display: 'none',
zIndex : 9999,
position: 'absolute',
top: e.pageY + 20,
left: e.pageX + 20
})
.html('<img alt="" src="' + isrc + '" />')
.appendTo(document.body);
dv.fadeIn('fast');
})
.mouseleave(function(){
dv.fadeOut('fast');
});
});
任何人都可以帮助我如何使悬停的图像出现在滚动条不出现的地方吗? (当然,如果图像尺寸非常大,我们不能避免滚动条)
我只想在缩放时显示原始图像,同时尽可能避免滚动条。
请注意,我计划将其转换为 jQuery 插件,因此我不能强制插件用户将 overflow 设置为 hidden。解决方案与 viewport、left、top、scroll width 和 height 有关, window width/height 属性,我可以稍后将其合并到插件中。
更新:
我想出了这个:
但是,它非常非常 hacky,并不是 100% 完美的。我正在寻找更好的算法/解决方案。我见过很多悬停插件可以很好地做到这一点,但由于我不擅长这个,所以我不能做得很好。例如,Hover Zoom Chrome Plugin 在根据大小在适当位置显示悬停图像方面做得很好。
【问题讨论】:
-
滚动条是什么意思?你是说窗口的滚动条吗?在您的示例中,我没有看到任何滚动条。
-
-
您可以隐藏滚动条.. 但这不是所需的输出。如果图像真的很大,你希望它是怎样的?
-
就个人而言,我会检查视口宽度并根据该值更改较大图像的大小。如果某人的屏幕很窄(例如上网本、纵向模式下的宽屏显示器等),无论您如何放置它们,图像都可能会离开页面的一侧。您可能希望它们出现在缩略图行之间(或在它们之前)......或使用灯箱方法。
-
这里有一个解决方案:jsbin.com/upuref/4 但是它不是 100% 完美的。需要更好的计算算法。
标签: javascript jquery css