使用悬停+单击图像 Sprite 的 JQuery 导航菜单

标签 jquery css image sprite fade

我正在为网站构建导航工具栏,并努力使悬停+单击起作用。我已经搜索了好几天,并使用实时站点和教程中的方法重建了几次,但我无法解决这个简单的问题。

问题: 我有一个导航工具栏 Sprite 图像,具有三种状态,被动、悬停和主动。我为所有三种状态设置了类,但只能使用 jquery 使悬停状态正确显示。

我想做的: 当光标悬停在文本上时,我希望它为在标签下运行的 Sprite 的悬停部分设置不透明度动画(它可以完美地淡入淡出)。接下来我想为 Sprite 的事件部分设置不透明度动画,以便它也从悬停 Sprite 淡入到事件 Sprite 。 该网站也将是单页导航,因此我需要主动按钮在单击另一个按钮时返回被动 sprite。

这是我目前所拥有的:

CSS:
ul#navMenu {
width:1020px;
height: 110px;
list-style:none;
margin:250px auto;
}

ul#navMenu li {
float:left;
}



ul#navMenu li a {
background: url(menu-sprite.png) no-repeat scroll top left;
display: block; 
height: 110px;
text-indent: -9999px;
position:relative;

}


ul#navMenu li a.gallery {
    width: 230px; 
    background-position: 0 0;

}

ul#navMenu li a.wip {
    width: 229px; 
    background-position: -230px 0;  
}

ul#navMenu li a.home {
    width: 103px; 
    background-position: -459px 0;  
}

ul#navMenu li a.scripts {
    width: 229px; 
    background-position: -562px 0;  
}

ul#navMenu li a.contact {
    width: 229px; 
    background-position: -791px 0;  
}

ul#navMenu li a span {
background: url(menu-sprite.png) no-repeat scroll bottom left;
display: block;
position:absolute;
top:0px;
left:0px;
height:100%;
width:100%;
z-index:75;
}
ul#navMenu li a span:hover {
    cursor:pointer;
}   
    ul#navMenu li a.gallery span{
        background-position: 0 -110px;
    }

    ul#navMenu li a.wip span{
        background-position: -230px -110px; 
    }

    ul#navMenu li a.home span{
        background-position: -459px -110px; 
    }

    ul#navMenu li a.scripts span{
        background-position: -562px -110px; 
    }

    ul#navMenu li a.contact span{
        background-position: -791px -110px; 
    }

ul#navMenu li a :active span {
background: url(menu-sprite.png) no-repeat scroll bottom left;
display: block;
position:absolute;
top:0px;
left:0px;
height:100%;
width:100%;
z-index:100;
}       
        ul#navMenu li a span:active {
            cursor:pointer;
        }   

        ul#navMenu li a .gallery:active span {
            background-position: 0 -220px;  
        }

        ul#navMenu li a .wip:active span {
            background-position: -230px -220px; 
        }

        ul#navMenu li a .home:active span {
            background-position: -459px -220px; 
        }

        ul#navMenu li a .scripts:active span {
            background-position: -562px -220px; 
        }

        ul#navMenu li a .contact:active span {
            background-position: -791px -220px; 
        }

...

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org    /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>NavMenu Test</title>

<link rel="stylesheet" href="styles.css" />

 <script src="jquery-1.8.3.min.js" type="text/javascript"></script>
 <script type="text/javascript">
$(function() {
    // set opacity to nill on page load
    $("ul#navMenu span").css("opacity","0");
    // on mouse over
    $("ul#navMenu span").mouseover (function () {
        // animate opacity to full
        $(this).stop().animate({
            opacity: 1
        }, 'slow');
    });
    // on mouse out
    $("ul#navMenu span").mouseout (function () {
        // animate opacity to nill
        $(this).stop().animate({
            opacity: 0
        }, 'slow');
    });
    // on mouse click
    $("ul#navMenu :active span").click(function () {
        // animate opacity to full
        $(this).unbind('mouseover'),
        $(this).unbind('mouseout'),
        $(this).stop().animate({
            opacity: 1
        }, 'slow');
    });
});
</script>

</head>

<body>

<ul id="navMenu">
<li><a href="#" class="gallery"><span style="opacity: 0;"></span></a></li>
<li><a href="#" class="wip"><span style="opacity: 0;"></span></a></li>
<li><a href="#" class="home"><span style="opacity: 0;"></span></a></li>
<li><a href="#" class="scripts"><span style="opacity: 0;"></span></a></li>
<li><a href="#" class="contact"><span style="opacity: 0;"></span></a></li>
</ul>


</body>
</html>

我想要的功能可以在这里找到:http://pixelpimps.net/#!/home

我正在尝试实现相同的功能(悬停动画、点击动画、点击切换动画),但图像 Sprite 除外。

在此先感谢您,如果您还需要什么,请询问。

最佳答案

我相信它是在那个网站上使用 flash 完成的。

您可以尝试在每个 span 中放置一个图像,src 悬停的机会。然后将 src 设为具有不止一帧的 gif 图像。我正在编写一些代码来执行此操作。我将编辑它并在几个小时内发布代码。不要害怕以自己的方式尝试和使用这个想法,我不是专家。

关于使用悬停+单击图像 Sprite 的 JQuery 导航菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14306599/

相关文章:

javascript - Dropzone.js 选项 - 无法让它们工作

JavaScript 相当于 CSS * (everything) 选择器

javascript - 我可以修复行的第一个 div 并滚动其他 div

javascript - 群集未出现在标记群集和 FeatureGroup.SubGroup 的传单中

javascript - 迭代 DOM 和 JSON 响应的最佳实践

javascript - 搜索数组中的值

ios - iO 上某些页面的背景图像模糊

image - 将 WebP 重命名为 JPG 或其他的缺点?

python - OpenCV 是否支持 .HEIC 图像格式?

ios - 如何使用图像和按钮调整大小和自定义 AlertView