jQuery + CSS 图库悬停效果

标签 jquery css fancybox gallery jquery-hover

我在使用图片库时遇到了一些问题。为了实现翻转效果,我有这个 jQuery 脚本:

var gallery=$("#galeria .one-third.column");

        var thumbs = $("#galeria .one-third.column a.fancybox img");        

        for (var c = 0, count = gallery.length; c < count; c++)
        {
            for (var i = 0, ii = thumbs.length; i < ii; i++)
            {
                if (thumbs[i].title && thumbs[i].title.length > 0)
                {   
                    var imgtitle = thumbs[i].title;
                    $(thumbs[i]).wrap('<div id="wrapperGal" />').after('<div class=\'caption\'><span class="title">' + imgtitle + '</span></div>').removeAttr('title');
                }                   
            }
        }
        $('#wrapperGal').hover(

            function()
            {
                $(this).find('img').toggleClass("galGrey");
                $(this).find('.caption').animate({opacity: "1"}, 300);
            },

            function()
            {
                $(this).find('img').removeClass("galGrey");
                $(this).find('.caption').animate({opacity: "0"}, 300);
            }       
        );

它所做的是找到画廊,在画廊图像周围应用包装器,当将鼠标悬停在元素上时,它会变为灰度,并且您会在现有画廊拇指顶部获得一个标题 div(带有 .caption 类)。 图库包含 9 个缩略图,脚本将包装器和标题应用于所有现有的图库元素,但我只在第一个缩略图上获得悬停效果。

这是图库 HTML 的示例:

<div class="one-third column alpha">
        <a title="t1" class="fancybox" rel="group" href="../img/galeria/big1.jpg"><img src="../img/galeria/thumb1.jpg" title="t1"/></a>
        </div>

        <div class="one-third column">
        <a class="fancybox" rel="group" href="../img/galeria/big2.jpg"><img src="../img/galeria/thumb2.jpg" title="t2"/></a>
        </div>

        <div class="one-third column omega">
        <a class="fancybox" rel="group" href="../img/galeria/big3.jpg"><img src="../img/galeria/thumb3.jpg" title="t3"/></a>
        </div>

这是我得到的 CSS:

    #wrapperGal{
    width:288px; 
    height:210px; 
    position:relative;
}

#wrapperGal img{
    -webkit-transition: 0.5s;  
    -moz-transition: 0.5s;  
    -o-transition: 0.5s;
    transition: 0.5s;
}

.galGrey{
    -webkit-filter: grayscale(100%);
}

.caption{
    height:190px;
    position:relative;
    top:20px;
    opacity:0;
    background-image:url(../img/galeria/thumbRoll.png);
}

.caption span.title{
    width:288px;
    height:190px;
    padding-top:157px;
    overflow:hidden;
    position:absolute;
    text-align:center;
}

知道为什么会这样吗?

最佳答案

因为您使用 id 作为包装器的选择器。相同的 ID 不能应用于不同的元素。

工作演示:http://jsfiddle.net/indream/QxuPm/

    for (var c = 0, count = gallery.length; c < count; c++)
    {
        for (var i = 0, ii = thumbs.length; i < ii; i++)
        {
            if (thumbs[i].title && thumbs[i].title.length > 0)
            {   
                var imgtitle = thumbs[i].title;
                $(thumbs[i]).wrap('<div class="wrapperGal" />').after('<div class=\'caption\'><span class="title">' + imgtitle + '</span></div>').removeAttr('title');
            }                   
        }
    }
    $('.wrapperGal').hover(

        function()
        {
            $(this).find('img').toggleClass("galGrey");
            $(this).find('.caption').animate({opacity: "1"}, 300);
        },

        function()
        {
            $(this).find('img').removeClass("galGrey");
            $(this).find('.caption').animate({opacity: "0"}, 300);
        }       
    );

关于jQuery + CSS 图库悬停效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15095873/

相关文章:

html - Bootstrap 标题在弹回之前会崩溃一秒钟?

html - 为什么这个modal的透明背景只在ie8中被子元素继承?

html - 列表项之间不需要的边距或填充

jquery - 通过 Ajax 加载下一张图像并添加到 Fancybox

javascript - 滚动浏览所有 fancyBox 画廊

javascript - 基于 CheckBox 启用或禁用按钮

jquery - 使 JqGrid 宽度变得流畅

javascript - Jquery 类选择器无法选择使用 .append() 添加的新类实例

php - 在 fancybox 中预览 php/jquery 表单,然后提交或返回表单

Firefox 无法理解 JavaScript 代码,但可以在所有其他浏览器中使用