在我的网页上,我试图让它在用户按下" Link 1"它会触发div #section1
的动画扩展。如果有任何先前打开的div,他们会隐藏,先关闭然后展开#section1
。
当展开的#section1
处于打开状态时,点击"链接1"可以隐藏#section1。
同样的一致行为适用于" Link 2"与#section2
和" Link3"与#section3
请参阅animated gif of desired behavior。
有人可以帮我吗?
HTML:
<div id="navbar">
<ul>
<li><a href="#section1">Link 1</a></li>
<li><a href="#section2">Link 2</a></li>
<li><a href="#section3">Link 3</a></li>
</ul>
</div>
<div class="container">
<div id="section1"></div>
<div id="section2"></div>
<div id="section3"></div>
</div>
&#13;
答案 0 :(得分:0)
<script type="text/javascript">
$('#navbar a').bind('click', function(){
var href = $(this).attr('href');
$('.container div').removeClass('active');
$('.container '+ href).addClass('active');
});
</script>
答案 1 :(得分:0)
1st:不要忘记包含Jquery
第二:只需使用此代码
<script>
$('#navbar > ul > li > a').on('click', function(e){
e.preventDefault();
var href = $(this).attr('href');
$('.container div[id^="section"]:not('+href+')').slideUp();
$('.container '+ href).slideToggle();
});
</script>
答案 2 :(得分:0)
嗯,您需要完成3项任务:
让我们开始更改内容部分。我建议你添加类似.section的类。最简单的方法是使用display属性:
.section {display: none}
.section.active {display: block}
然后你需要一些JS来点击导航项目:
$("#navbar").on("click", "a", function(e) {
// cross browser href parsing
var $tab = $("#" + e.currentTarget.href.split("#")[1]);
// toggle one tab's visibility and close others if need
$tab.toggleClass("active").siblings().removeClass("active");
// prevent default
return !1
})
最后一部分是动画效果。你需要使用css过渡:
.section {transition: all 0.5s}
这是一个非常简单的示例 - http://codepen.io/korzhik/pen/epwaEJ
顺便说一下,您可以使用CSS转换属性来设置“幻灯片”效果。它有更好的表现。
答案 3 :(得分:0)
你不需要JQuery
var links = document.querySelectorAll('#navbar a');
links.forEach(function(link){
var sectionId = link.href;
var section = document.querySelector(sectionId)
section.addEventListner('click', function(){
var isOpen = this.classList.contains('slide-in');
this.setAttribute('class', isOpen ? 'slide-out' : 'slide-in');
})
})
.container > div{
position: absolute;
width: 100px;
height: 100px;
background: blue;
transform: translateX(-100%);
-webkit-transform: translateX(-100%);
}
.slide-in {
animation: slide-in 0.5s forwards;
-webkit-animation: slide-in 0.5s forwards;
}
.slide-out {
animation: slide-out 0.5s forwards;
-webkit-animation: slide-out 0.5s forwards;
}
@keyframes slide-in {
100% { transform: translateX(0%); }
}
@-webkit-keyframes slide-in {
100% { -webkit-transform: translateX(0%); }
}
@keyframes slide-out {
0% { transform: translateX(0%); }
100% { transform: translateX(-100%); }
}
@-webkit-keyframes slide-out {
0% { -webkit-transform: translateX(0%); }
100% { -webkit-transform: translateX(-100%); }
}