所以,到目前为止,我已经构建了这个导航栏,我很好奇是否有可能实现我的想法。 目前,当您将鼠标悬停在每个链接上时,它们会下拉(填充增加)。
现在,我好奇的是,如果你将鼠标悬停在说“test1”上,test2-4也随之下降,但在从下拉列表创建的填充中,“test1”信息显示出来。允许用户单击或读取其中的任何信息。此外,如果用户愿意,他们可以将鼠标移动到test2,并且所有内容都会动画(不透明度,我可以这么认为),以及test2字段中的任何内容,test3执行相同操作等等。
我没有取得多大成功,之前我已经创建了一个完全独立的面板,但这并没有完全奏效,或者我没有正确地做到这一点。
以下是我一直致力于此的任何帮助,我们将不胜感激!谢谢!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function() {
$("#nav li > a").hover(function() {
$(this).stop().animate({paddingTop: "100px"}, 100);
},
function() {
$(this).stop().animate({paddingTop: "10px"}, 200);
});
});
</script>
<style type="text/css">
#nav
{
position: absolute;
top: 0;
left: 60px;
padding: 0;
margin: 0;
list-style: none;
}
#nav li
{
display: inline;
}
#nav li a
{
float: left;
display: block;
color: #555;
text-decoration: none;
padding: 10px 30px;
background-color: #d1d1d1;
border-top: none;
}
</style>
</head>
<body>
<div id="wrap">
<ul id="nav">
<li><a href="">test1</a></li>
<li><a href="">test2</a></li>
<li><a href="">test3</a></li>
<li><a href="">test4</a></li>
</ul>
</div>
</body>
</html>
答案 0 :(得分:0)
我把你的代码搞砸了一些,但没有得到完整的答案,但我想我会发布我所拥有的。此代码将在菜单上方添加div,并使用它来显示<a>
特定内容。我在您的<a>
标记中添加了ids,因为在确定要显示的内容时,您需要某种方法来识别它们。我不认为你应该在div
中添加ul
标记,所以这并不完美。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$('#content').height(0);
$("#nav li > a").hover(function() {
var id = $(this)[0].id;
var content = 'Default content';
if (id == '1')
content = 'Test 1 content';
else if (id == '2')
content = 'Test 2 content';
else if (id == '3')
content = 'Test 3 content';
else if (id == '4')
content = 'Test 4 content';
$('#content').html(content);
},
function() { }
);
$("#nav").hover(function() {
$('#content').stop().animate({height: "100px"}, 100);
},
function() {
$('#content').html('').stop().animate({height: "0"}, 200);
}
);
});
</script>
<style type="text/css">
#nav
{
position: absolute;
top: 0;
left: 60px;
padding: 0;
margin: 0;
list-style: none;
}
#nav li
{
display: inline;
}
#nav li a
{
float: left;
display: block;
color: #555;
text-decoration: none;
padding: 10px 30px;
background-color: #d1d1d1;
border-top: none;
}
div#content
{
border: 1px solid red;
background-color: #d1d1d1;
width: 355px;
}
</style>
</head>
<body>
<div id="wrap">
<ul id="nav">
<div id="content"></div>
<li><a id="1" href="">test1</a></li>
<li><a id="2" href="">test2</a></li>
<li><a id="3" href="">test3</a></li>
<li><a id="4" href="">test4</a></li>
</ul>
</div>
</body>
</html>
然后我认为您的意思是,当您悬停时,您希望链接特定内容直接显示在您的链接上,并提出了不同的内容。您可以使用jQuery的prepend将特定内容添加到“填充”区域。使用此解决方案,您不需要a
标记中的ID,但整个菜单不会在悬停时下拉(但它可能会以某种方式,我有点卡在那里,可能会在以后再回来) 。要查看它只是将您的jQuery代码更改为:
$(function() {
$("#nav li > a").hover(function() {
$(this).stop().animate({paddingTop: "100px"}, 100);
$(this).prepend('<div id="paddingMenu"><p>test1 link</p><p>test1 link2</p></div>');
},
function() {
$(this).stop().animate({paddingTop: "10px"}, 200);
$('#paddingMenu').remove();
});
});
我希望这能提供一些帮助。祝你好运!
编辑:当然,jQuery的html方法将设置从其选择器返回的元素的innerHTML。因此,在第一个示例中,content
变量可以包含您要用作链接的任何a
标记。这是一个示例,显示为test1的内容创建几个链接:
$("#nav li > a").hover(function() {
var id = $(this)[0].id;
var content = 'Default content';
if (id == '1')
content = '<a href="http://google.com">Google<a><br />' +
'<a href="http://stackoverflow.com/">Stackoverflow</a>';
else if (id == '2')
content = 'Test 2 content';
else if (id == '3')
content = 'Test 3 content';
else if (id == '4')
content = 'Test 4 content';
$('#content').html(content);
},
function() { }
);