L'exemple de cet article décrit le code CSS JS pour implémenter une barre de navigation verticale avec effet tampon de collision. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :
Il s'agit d'une barre de navigation avec effet tampon de collision, une œuvre dédiée à tous par JavaScript Wonderful Classroom. C'est un très bon menu vertical. J'espère qu'il vous plaira. Les technologies utilisées sont JS et CSS.
La capture d'écran de l'effet en cours d'exécution est la suivante :
L'adresse de la démo en ligne est la suivante :
http://demo.jb51.net/js/2015/js-css-pzxg-r-nav-style-codes/
Le code spécifique est le suivant :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <title>碰撞缓冲效果的导航条</title> <style type="text/css"> * { padding: 0; margin: 0; } li { list-style: none; } body { background: #fff; } ul { width: 202px; margin: 40px auto 0; position: relative; } li { width: 200px; height: 30px; line-height: 30px; padding-left: 10px; border: 1px solid #ccc; border-left: 3px solid #666; font-size: 14px; color: #333; margin-bottom: 5px; position: relative; z-index: 2; } a { color: #333; text-decoration: none; } .active { font-weight: bold; background: #fff0f0; } #bar { width: 10px; padding-left: 0; background: #cc6699; border: 1px solid #cc6699; position: absolute; top: 0; left: -14px; z-index: 3; } </style> <script> var obj = null; var aLis = null; var oBar = null; var iTime = null; var iSpeed = 0; var iAcc = 3; var onOff = 0; var iPrev = 0; var iNext = 0; function goTime() { for(var i = 0; i < aLis.length; i+=1) { if(aLis[i] === this) { var iTarget = (aLis[0].offsetHeight + 5) * i; iNext = i; onOff = iNext - iPrev; if(iTime) { clearInterval(iTime); } if(onOff>=0) { iTime = setInterval("elasticity("+ iTarget +")",35); } else { iTime = setInterval("postpone("+ iTarget +")",35); } iPrev = iNext; } aLis[i].className=""; this.className="active"; } } function elasticity(target) { var top = oBar.offsetTop; iSpeed+=iAcc; top += iSpeed; if(top >= target) { iSpeed*=-0.7; if(Math.abs(iSpeed)<=iAcc) { clearInterval(iTime); iTime=null; } top=target; } oBar.style.top = top + "px"; } function postpone(target) { if(oBar.offsetTop===target) { clearInterval(iTime); iTime=null; } else { iSpeed = (target - oBar.offsetTop)/4; oBar.style.top = oBar.offsetTop + iSpeed + "px"; } } window.onload = function(){ obj = document.getElementById("nav"); aLis = obj.getElementsByTagName("li"); oBar = document.getElementById("bar"); for(var i = 0; i < aLis.length; i+=1) { if(aLis[i].id!="bar") { aLis[i].onmouseover = goTime; } } }; </script> </head> <body> <ul id="nav"> <li class="active"><a href="#">首页</a></li> <li><a href="#">脚本之家</a></li> <li><a href="#">妙味课程</a></li> <li><a href="#">联系方式</a></li> <li id="bar"> </ul> </body> </html>
J'espère que cet article sera utile à la programmation JavaScript de chacun.