希望有人可以帮助我或指出我正确的方向。
我想显示一个图像网格,用户可以将鼠标悬停在图像上以获取更多信息,就像在这里所做的那样。
这是一件容易的事吗?我可以使用纯 CSS 还是需要使用 jQuery?如果可能的话,我只需要一个指向正确方向的指针吗?
您提供的链接似乎首先给出了背景图像的悬停状态,然后通过 timeOut 它显示了一个工具提示。我正在做一个小提琴来说明这一点。
所以,给你。这是小提琴!
最重要的是 jQuery,它包含延迟以及 CSS 中规定的图像的悬停状态。因此,当用户悬停图像时,他得到的第一件事就是另一张图像。这是通过简单的 CSS hover 和CSS sprites完成的。
.item {
background-color: white;
width: 100%;
height: 100%;
background-repeat: no-repeat;
background-position: center top;
}
.item:hover {
background-repeat: no-repeat;
background-position: center bottom;
}
#flower {
background-image: url('http://bramvanroy.be/files/images/tooltipOverlay.jpg');
}
当图像悬停在开头时,会触发一个 jQuery 函数,但它会延迟:
var tooltip = $(".item-tooltip");
tooltip.hide();
$(".item-wrapper").hover(
function() {
$(this).children(tooltip).delay(550).fadeIn("slow");
$(this).children(".item").fadeOut("slow");
},
...
当鼠标离开工具提示时,它会被隐藏并.item
再次显示:
...
function(){
$(this).children(tooltip).fadeOut("fast");
$(this).children(".item").fadeIn("fast");
}
);
改进的答案:
这是一个Showcase,这是该展示的小提琴,这是图像不变的小提琴(如您所愿)。
我使用了 jQuery 插件hoverIntent来确保不是每个悬停一毫秒的图像都显示工具提示。它所做的是检查用户是否打算将图像悬停,然后(在某个 timeOut 之后)才执行该功能。关于这个插件的更多信息在这里。您可以使用 jQuery 的标准 hover(),但我不建议这样做。
z-index 也需要更改,否则图像会出现在工具提示下方,或者其他项目的图像会与我们想要的图像的工具提示重叠。
如果您还有任何问题,请在评论中说出来。
我要做的是使用jquery。创建一个可见的 div,然后创建一个隐藏的 div,在悬停时显示您想要的信息。然后只需使用 jquery 使用 css 隐藏/显示该 div。
$(".info-class").hover(function(){
$(this).css('display', 'none');
$(".other-clas").css('display', 'block');
});
类似于上面的东西
我查看了他们在那个网站上所做的事情,对我来说它看起来过度设计了。
我要做的是我们添加
<div class="comtainer">
<div id="g11" class="square large" data-show-tooltip-in="#g12, #g12">
<div class="normal-view"><img ... ></div>
<div class="large-view"><img ... ></div>
<div class="tooltip">blah blah</div>
</div>
<div id="g12" class="square small" data-show-tooltip-in="#g13">
...
</div>
...
</div>
css
div.large-view { display : none; }
div.tooltip { display : none; }
然后javascript会做类似的事情(JQuery for speed):
$( '.square' ).on( 'mouseover', function*(e){
//hides the normal image
$( this ).find( '.normal-view' ).hide();
//shows the zoomed image
$( this ).find( '.large-view' ).show();
//stores a reference to the square where the HTML tolltip will be shown
var $tooltip = $( $( this ).attr( 'data-show-tooltip-in' ) );
//hides the original content of the tooltip square
$tooltip.find( 'div' ).hide();
//clones the tooltip to the other square and shows it
$( this ).find( '.tooltip' ).clone().qppendTo( $tooltip ).show();
})
这只是一个起点,但这就是我要做的事情。
编辑添加解释
在 HTML 中有一系列的 div 类 square (它们也可以是 ul 列表中的 li,但现在不重要了)。每个方块都有它需要的所有数据——普通图像、缩放图像和工具提示 HTML。最后两个隐藏在 CSS 中。每个方块还有一个 data- 属性 (data-show-tooltip-in) 以及将显示工具提示的选择器。
然后 JS 完成剩下的工作 - 评论应该会有所帮助。