이 기사의 예에서는 가로로 늘이는 동적 텔레스코픽 메뉴 효과를 구현하는 JS 코드를 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.
세로 늘이기에서 가로 늘이기, 동적 텔레스코픽 메뉴, 촘촘하게 배열된 CSS 메뉴를 JS로 구현한 것입니다. 블로그 등 중요한 위치에서 메뉴로 사용할 수도 있습니다. JavaScript 프론트엔드 디자인을 배우고 있습니다.
런닝 효과 스크린샷은 다음과 같습니다.
온라인 데모 주소는 다음과 같습니다.
http://demo.jb51.net/js/2015/js-row-show-menu-style-codes/
구체적인 코드는 다음과 같습니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>有弹性的菜单</title> <style> *{ margin:0px; padding:0px;} body { background:#fff;} .naver{list-style-type: none; width:700px; overflow:hidden; margin:100px auto 0;} .naver li{ width:100px; height:50px; overflow:hidden; font-size:16px; text-align:center; cursor: pointer; } .naver li a,.naver li a:hover{display: block;width:100px; height:50px; line-height: 50px; color:#FFF; text-decoration: none; } .co1{ background:#649e37} .co2{ background:#028fbc} </style> <script type="text/javascript"> window.onload = function() { var oUl = document.getElementById("nav"); var aLi = oUl.getElementsByTagName("li"); var i = 0; for (i = 0; i < aLi.length; i++) { aLi[i].timer = null; aLi[i].speed = 0; aLi[i].onmouseover = function() { startMove(this, 250); }; aLi[i].onmouseout = function() { startMove2(this, 100); }; } }; function startMove(obj, iTarget) { if (obj.timer) { clearInterval(obj.timer); } obj.timer = setInterval(function() { doMove(obj, iTarget); }, 30) }; function doMove(obj, iTarget) { obj.speed += 3; if (Math.abs(iTarget - obj.offsetWidth) < 1 && Math.abs(obj.speed) < 1) { clearInterval(obj.timer); obj.timer = null; } else { if (obj.offsetWidth + obj.speed >= iTarget) { obj.speed *= -0.7; obj.style.width = iTarget + "px"; } else { obj.style.width = obj.offsetWidth + obj.speed + "px"; } } }; function startMove2(obj, iTarget) { if (obj.timer) { clearInterval(obj.timer); } obj.timer = setInterval(function() { doMove2(obj, iTarget); }, 30) }; function doMove2(obj, iTarget) { obj.speed -= 3; if (Math.abs(iTarget - obj.offsetWidth) < 1 && Math.abs(obj.speed) < 1) { clearInterval(obj.timer); obj.timer = null; } else { if (obj.offsetWidth + obj.speed <= iTarget) { obj.speed *= -0.7; obj.style.width = iTarget + "px"; } else { obj.style.width = obj.offsetWidth + obj.speed + "px"; } } }; </script> </head> <body> <ul id="nav" class="naver"> <li class="co1"> <a href="#">首页</a> </li> <li class="co2"> <a href="#">爱好</a> </li> <li class="co1"> <a href="#">作品</a> </li> <li class="co2"> <a href="#">联系</a> </li> <li class="co1"> <a href="#">博客</a> </li> </ul> </body> </html>
이 기사가 모든 사람의 JavaScript 프로그래밍 설계에 도움이 되기를 바랍니다.