【发布时间】:2014-01-08 02:41:47
【问题描述】:
我一直在试图弄清楚如何编写一个菜单,就像你在 Playstation 网站上看到的那样:http://us.playstation.com/
编辑:小提琴:http://jsfiddle.net/jjcarlson/7q64A/
到目前为止,我有很多问题。首先是我无法创建 100% 的宽度,因为我假设是父/子关系。
我遇到的第二个问题是我的 Timeout 适用于所有类元素,而不仅仅是当前悬停的元素。换句话说,如果所有元素都向下滑动并且一个悬停在上面,它们都将保持打开状态,直到它们都没有悬停 1.5 秒。我承认我无法提出解决方案可能是由于我对这门语言的经验有限。下面是 CSS:
.accordion-container {
width: 90%;
padding-bottom: 5px;
margin: 20px 0 0 20px;
}
.accordion {
width: 40%;
padding: 20px;
margin: 0 15px 35px;
position: relative;
float: left;
display: inline-block;
}
.accordion-question {
margin: 0;
padding: 0 0 5px 20px;
display: inline-block;
color: #06F;
background-color: #9F0;
cursor: pointer;
}
.accordion-answer-container {
padding: 0 20px;
overflow: hidden;
color: #999;
background: #F00;
}
.accordion-answer {
margin: 0;
padding: 0;
color: #0C0;
}
然后,JQuery:
$(document).ready(function () {
var menu = $('.accordion-answer')
var timeout = 0;
var hovering = false;
menu.hide();
$('.accordion-question').hover(function () {
hovering = true;
// Open the menu
$(this).closest('.accordion').find('.accordion-answer')
.stop(true, true)
.delay(400).slideDown(600);
if (timeout > 0) {
clearTimeout(timeout);
}
})
.on("mouseleave", function () {
resetHover();
});
$('.accordion-answer').hover(function () {
hovering = true;
startTimeout();
})
.on("mouseleave", function () {
resetHover();
});
function startTimeout() {
timeout = setTimeout(function () {
closeMenu();
}, 1500);
};
function closeMenu() {
if (!hovering) {
$('.accordion-answer').stop(true, true).slideUp(400);
}
};
function resetHover() {
hovering = false;
startTimeout();
};
});
最后是 HTML:
<div class="accordion-container">
<div class="accordion">
<div class="accordion-question">
<h2>Is this a question?</h2>
</div>
<div class="accordion-answer-container">
<div class="accordion-answer">
<p>To be honest, I am not sure</p>
<ul>
<li>List item one</li>
<li>List item two</li>
</ul>
<p>That is all.</p>
</div>
</div>
</div><!-- /accordion -->
<div class="accordion" id="testanchor">
<div class="accordion-question">
<h2>What would be a good second question?</h2>
</div>
<div class="accordion-answer-container">
<div class="accordion-answer">
<p>I don’t know, man!</p>
<p>That is all.</p>
</div>
</div>
</div><!-- /accordion -->
</div>
样式现在很少(抱歉),因为我只是想弄清楚这一点。感谢您提供的任何帮助。
【问题讨论】:
-
制作小提琴:jsfiddle.net
-
小提琴制作。见编辑。
标签: javascript jquery html css jquery-hover