2016-11-28 83 views
0

我该如何解决它,下面的div打开,3个标签总是保持在同一位置? div不应该在选项卡之间打开,但在下面。三个标签应该始终并排。这有可能吗?任何帮助将不胜感激。谢谢。浮动水平手风琴

var acc = document.getElementsByClassName("menu-tabs"); 
 
var i; 
 

 
for (i = 0; i < acc.length; i++) { 
 
    acc[i].onclick = function(){ 
 
     this.classList.toggle("active"); 
 
     this.nextElementSibling.classList.toggle("show"); 
 
    } 
 
}
button.menu-tabs { 
 
    background-color: #fff; 
 
    border-color: #EB282C; 
 
    border-bottom: 1px solid #ddd; 
 
    margin-left: 0; 
 
    list-style: none; 
 
    float: left; 
 
    margin-bottom: -1px; 
 
    position: relative; 
 
    display: block; 
 
} 
 

 
button.menu-tabs.active, button.menu-tabs:hover { 
 
    background-color: #ddd; 
 
} 
 

 
div.panel { 
 
    padding: 0 18px; 
 
    background-color: white; 
 
    max-height: 0; 
 
    overflow: hidden; 
 
    transition: 0.6s ease-in-out; 
 
    opacity: 0; 
 
    float: none; 
 
} 
 

 
div.panel.show { 
 
    opacity: 1; 
 
    max-height: 500px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="menu-tabs">tab 1</button> 
 
<div class="panel"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> 
 
</div> 
 

 
<button class="menu-tabs">tab 2</button> 
 
<div class="panel"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> 
 
</div> 
 

 
<button class="menu-tabs">tab 3</button> 
 
<div id="foo" class="panel"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> 
 
</div>

+0

你有没有尝试。 menu-tabs {float:left;}? –

+0

已经在我的例子中;) – azrm

回答

2

它会更容易通过改变你的HTML结构来解决你的问题。

下面是修改后的版本与切换基于一对按钮的ID/DIV类(我也是在CSS去掉了一些“浮码”):

var acc = document.getElementsByClassName("menu-tabs"); 
 
var i; 
 

 
for (i = 0; i < acc.length; i++) { 
 
    acc[i].onclick = function(){ 
 
    // toggle this button, make others inactive 
 
    var buttons = document.getElementsByClassName("menu-tabs"); 
 
    for (i = 0; i < buttons.length; i++) { 
 
     if (buttons[i] == this) { 
 
     buttons[i].classList.toggle("active"); 
 
     } 
 
     else { 
 
     buttons[i].classList.remove("active"); 
 
     } 
 
    } 
 
    // toggle panel associated to this, hide the others 
 
    var panels = document.getElementsByClassName("panel"); 
 
    for (i = 0; i < panels.length; i++) { 
 
     if (panels[i].classList.contains(this.id)) { 
 
     panels[i].classList.toggle("show"); 
 
     } 
 
     else { 
 
     panels[i].classList.remove("show"); 
 
     } 
 
    } 
 
    } 
 
}
button.menu-tabs { 
 
    background-color: #fff; 
 
    border-color: #EB282C; 
 
    border-bottom: 1px solid #ddd; 
 
    margin-left: 0; 
 
    list-style: none; 
 
    margin-bottom: -1px; 
 
    position: relative; 
 
    display: inline-block; 
 
} 
 

 
button.menu-tabs.active, button.menu-tabs:hover { 
 
    background-color: #ddd; 
 
} 
 

 
div.panel { 
 
    padding: 0 18px; 
 
    background-color: white; 
 
    max-height: 0; 
 
    overflow: hidden; 
 
    transition: 0.6s ease-in-out; 
 
    opacity: 0; 
 
} 
 

 
div.panel.show { 
 
    opacity: 1; 
 
    max-height: 500px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <button class="menu-tabs" id="tab1">tab 1</button> 
 
    <button class="menu-tabs" id="tab2">tab 2</button> 
 
    <button class="menu-tabs" id="tab3">tab 3</button> 
 
</div> 
 

 
<div class="panel tab1"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> 
 
</div> 
 

 
<div class="panel tab2"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> 
 
</div> 
 

 
<div id="foo" class="panel tab3"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> 
 
</div>

+0

好极了,但是一旦另一个div被打开,d​​iv也可能再次关闭?所以只显示一个,而不是当你全部点击时,全部显示? – azrm

+0

当然可以。我编辑了我的回答 – wasthishelpful

+0

谢谢你的帮助和你的时间。 – azrm