首页 > 代码库 > 响应式手风琴效果导航
响应式手风琴效果导航
此处代码为了实现手风琴效果,效果实现为,鼠标移动每一个组件上,背景(并不是真的背景)也会移动到当前组件上,鼠标离开后,再回到起始位置点,若点击,停留在当前位置。此单航是响应式的,设置最小宽度为400px,可根据自己情况调节。效果图如下
html代码如下:关于布局,不多说。唯一注意点是span需要放在ul之前
<nav id="nav"> <span class="active"></span> <ul> <li><a href="http://www.mamicode.com/#">Home</a></li> <li><a href="http://www.mamicode.com/#">About</a></li> <li><a href="http://www.mamicode.com/#">Shop</a></li> <li><a href="http://www.mamicode.com/#">Contact</a></li> <li><a href="http://www.mamicode.com/#">comment</a></li> </ul> </nav>
/*层级并不能解决背景遮住导航区域,因此将用定位,在布局中,span先定位在nav上,再将ul定位上去,因为span在ul之前,所以ul会覆盖在span上,如果布局中span放在ul后面,则会遮住ul
*/
<style>
*{
margin: 0;
padding: 0;
}
#nav {
height:60px;
position: relative;
background: rgba(119, 131, 147, 0.24);
min-width: 400px;
}
#nav ul{
width: 100%;
position: absolute;
top: 0;
left: 0;
}
/*层级并不能解决背景遮住导航区域,因此将用定位解决。在布局中,span先定位在nav上,再将ul定位上去,因为span在ul之前,所以ul会覆盖在span上,如果布局中span放在ul后面,则会遮住ul
*/
.active{
display:block;
height: 60px;
width:14%;
background: #287cb3;
position: absolute;
top: 0;
left: 0;
}
#nav ul li{
display: inline-block;
list-style: none;
width: 14%;
height: 60px;
line-height: 60px;
text-align: center;
margin-right: 2%;
}
#nav ul li a{
text-decoration: none;
color: #fff;
}
</style>
下面用js实现动画效果
<script>
var active = document.querySelector(".active"); var lis = document.querySelectorAll("li");
//初始化请给目标位置,速度,当前位置设置为0,不设的话,下面记录不到开始做动画的位置,导致target没变化 var target =0,leader= 0,current =0; for(var i=0;i<lis.length;i++){ lis[i].onmouseover = function(){
target = this.offsetLeft; } lis[i].onmouseout = function(){ target =current ; } lis[i].onclick = function(){ current = this.offsetLeft; } }
//设置缓动动画 function donghua(){
//速度 leader =leader+ (target-leader)/10;
//谁做动画就写谁 active.style.left =leader + "px"; }
//启动动画 setInterval(donghua,10); </script>
响应式手风琴效果导航
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。