<script type="text/javascript">
var span = document.getElementsByClassName("menuSpan");
var openDiv = span[0].parentElement;
for(var i=0 ; i<span.length ; i++){
span[i].onclick = function(){
var parentDiv = this.parentElement;
toggleMove(parentDiv);
if(openDiv != parentDiv && !hasClass(openDiv,"collapsed")){
toggleMove(openDiv);
}
openDiv = parentDiv;
}
}
function toggleMove(obj){
var begin = obj.offsetHeight;
toggleClass(obj,"collapsed");
var end = obj.offsetHeight;
obj.style.height = begin + "px";
move(obj,"height",end,20,function(){
obj.style.height = "";
});
}
function hasClass(obj,cn){
var reg = new RegExp("\\b" + cn + "\\b");
return reg.test(obj.className);
};
function addClass(obj,cn){
if(!hasClass(obj,cn)){
obj.className += " " + cn;
};
};
function removeClass(obj,cn){
var reg = new RegExp("\\b" + cn + "\\b");
obj.className = obj.className.replace(reg," ");
};
function toggleClass(obj,cn){
if(hasClass(obj,cn)){
removeClass(obj,cn)
}else{
addClass(obj,cn);
};
};
function move(obj,attr,target,speed,callback){
clearInterval(obj.timer);
var current = parseInt(getStyle(obj,attr));
if(current > target){
speed = - speed;
}
obj.timer = setInterval(function(){
var oldValue = parseInt(getStyle(obj,attr));
var newValue = oldValue + speed;
if((speed < 0 && newValue < target) || (speed > 0 && newValue > target)){
newValue = target;
}
obj.style[attr] = newValue + "px";
if(newValue == target){
clearInterval(obj.timer);
callback && callback();
}
},30);
};
function getStyle(obj,name){
if(window.getComputedStyle){
return getComputedStyle(obj,null)[name];
}else{
return obj.currentStyle[name];
};
}
</script>
<style>
*{
margin: 0;
padding: 0;
}
.collapsed{
height: 35px;
overflow: hidden;
}
.box{
margin: 0px auto;
width: 200px;
}
.menuSpan{
height: 35px;
box-sizing: border-box;
color: #fff;
background-color: brown;
opacity: 0.8;
padding: 0px 15px;
display: block;
border: 1px solid #eee;
line-height: 35px;
font-size: 22px;
}
.menuSpan:hover{
opacity: 0.6;
}
.box a{
color: burlywood;
background-color: #f7f7f7;
display: block;
border: 1px solid #eee;
line-height: 35px;
padding: 0 20px;
font-size: 16px;
}
.box a:hover{
opacity: 0.6;
}
</style>
<div>
<div class="box">
<span class="menuSpan">傻瓜</span>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
</div>
<div class="collapsed box">
<span class="menuSpan">傻瓜</span>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
</div>
<div class="collapsed box">
<span class="menuSpan">傻瓜</span>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
</div>
<div class="collapsed box">
<span class="menuSpan">傻瓜</span>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
<a href="#">南瓜</a>
</div>
</div>