이번에 소개할 내용은 개인화된 내비게이션 바 특수 효과를 구현하는 JavaScript입니다. 우리는 전능한 JS가 많은 특수 효과를 달성할 수 있다는 것을 알고 있습니다.
구현 원리:
재주 구름 효과는 무엇입니까:
•이 효과는 매우 간단합니다. 즉, 마우스가 다른 탐색 디렉터리로 이동하면 배경 이미지가 마우스와 함께 현재 디렉터리로 미끄러집니다.
구현 아이디어:
•마우스가 지나갈 때 offsetLeft를 사용하여 현재 상자에서 왼쪽까지의 거리를 구하고 이 값을 이징 애니메이션의 끝 값에 할당합니다.
•클릭할 때 현재 offsetLeft 값을 기억하세요. 마우스가 지나갈 때 이전에 클릭한 offsetLeft에 지금 지나갈 때 값을 부여하세요.
구현 코드:
다음은 구현 코드와 자세한 설명입니다. 핵심은 마우스 이벤트를 바인딩하여 범위의 "재주 구름" 효과를 달성하는 데 사용됩니다. .
<!DOCTYPE html> <html> <head> <title>导航栏筋斗云效果</title> <meta charset="utf-8"> <style type="text/css"> *{ padding: 0; margin: 0; } body{ background-color: rgba(0, 0, 0, 0.6); } .box{ width: 415px; height: 42px; margin: 200px auto; background-color: #fff; position: relative; } ul{ list-style: none; position: relative; } li{ float: left; width: 83px; height: 42px; text-align: center; font: 500 15px/42px "微软雅黑"; cursor: pointer; } span{ position: absolute; left: 0; top: 0; width: 83px; height: 42px; background-image: linear-gradient(to right,#03c03c 50% ,#51ee5d 100%); } </style> </head> <body> <p class="box"> <span></span> <ul> <li>菜单栏1</li> <li>菜单栏2</li> <li>菜单栏3</li> <li>菜单栏4</li> <li>菜单栏5</li> </ul> </p> <script type="text/javascript"> window.onload = function(){ // 鼠标放在哪个li上面,span对应一道到哪里,移开后回到原位置 var liArr = document.getElementsByTagName("li"); var liWidth = liArr[0].offsetWidth; var span = document.getElementsByTagName("span")[0]; // 计数器 var cnt = 0; // for循环绑定事件 for(var i=0; i<liArr.length; i++){ // 自定义属性,然后绑定index属性为索引值 liArr[i].index = i; // 鼠标进入事件 liArr[i].onmouseover = function(){ // 然span运动到该li的索引值位置 animate(span, this.index*liWidth); } // 鼠标移开 liArr[i].onmouseout = function(){ // span运动到原位置 animate(span, cnt*liWidth); } // 点击事件 liArr[i].onclick = function(){ // 计数器记录当前标签索引值 cnt = this.index; animate(span, cnt*liWidth); } } // 缓动动画封装 function animate(element, target){ // 清除间歇调用 clearInterval(element.timer); // 设置超时调用 element.timer = setInterval(function(){ // 设置步数 var step = (target - element.offsetLeft)/10; // 调整步数 step = step > 0 ? Math.ceil(step) : Math.floor(step); // 设置样式 element.style.left = element.offsetLeft + step + "px"; // console.log(1); if(Math.abs(target - element.offsetLeft) < Math.abs(step)){ element.style.left = target + "px"; clearInterval(element.timer); } }, 20); } } </script> </body> </html>
위의 소개를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
관련 읽기:
위 내용은 JavaScript는 개인화된 탐색 모음 효과를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!