슬라이더로 (의) 내비게이션 바 --- jQuery를 적용 슬라이딩 달성

머리말

   이 섹션에서는 궁극적 jQuery를 적용 슬라이딩. 문서 다음 샘플 코드 다운로드 링크.

페이지 코드

  navigator2.html

  

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>导航栏</title>
		<script type="text/javascript" src="js/jquery.js"></script>
		<script type="text/javascript">
	
		(function ($) {
			$(function () {
				nav();
			});
			
			function nav() {
				var $liCur = $(".nav-box ul li.cur"),
				curP = $liCur.position().left,
				curW = $liCur.outerWidth(true),
				$slider = $(".nav-line"),
				$targetEle = $(".nav-box ul li a"),
				$navBox = $(".nav-box");
				$slider.stop(true, true).animate({
					"left":curP,
					"width":curW
				});
				$targetEle.mouseenter(function () {
					var $_parent = $(this).parent(),
					_width = $_parent.outerWidth(true),
					posL = $_parent.position().left;
					$slider.stop(true, true).animate({
						"left":posL,
						"width":_width
					}, "fast");
				});
				$navBox.mouseleave(function (cur, wid) {
					cur = curP;
					wid = curW;
					$slider.stop(true, true).animate({
						"left":cur,
						"width":wid
					}, "fast");
				});
			};
		
		})(jQuery);

		</script>
		<style type="text/css">
			body{margin: 0; }
			ul, li{margin: 0; padding: 0;}
			a{text-decoration: none;}
	
			.banner{
				width: 100%;
				height: 70px;
				
				/*background-color: yellow;*/
				}
			.nav-box{
				width: 50%;
				float: right;
				position: relative;
				top: 35px;
			/*	background-color: darkgray;*/
			}
			.nav-box ul{
				list-style: none;
						
			}
			.nav-box ul li{
				float: left;
				font-size: 14px;
				font-family: "微软雅黑";
				
				height: 30px;
				line-height: 30px;
				padding: 0 12px;
			/*	background-color: #F5F5F5;*/
			}
			.nav-box .nav-line {
			    background: none repeat scroll 0 0 #35C4FD;
			    bottom: 0;
			    font-size: 0;
			    height: 2px;
			    left: 0;
			    line-height: 2px;
			    position: absolute;
			    width: 52px;
			}	
			
		</style>
	</head>
	<body>
		<div class="banner" >
			<div class="nav-box">
				<ul>
					<li class="cur"><a href="#">首页</a></li>
					<li><a href="#">论坛</a></li>
					<li><a href="#">商务合作</a></li>
					<li><a href="#">下载专区</a></li>
					<li><a href="#">关于我们</a></li>
				</ul>
				<div class="nav-line" ></div>
			</div>

		</div>


	</body>
</html>

  포함 된 코드 페이지의 다음과 같은 분석.

jQuery를 $에서 (함수 () {}) 및 (함수 ($) {}) (jQuery를) $ (문서) .ready 차 (함수 () {})의

  JS 코드 구조 navigator2.html에서 먼저보기 :

  (함수 ($) {

      () {(기능 $

          () 없음;

      });

      탐색 함수 () {/ * 내용 * /};

  }) (jQuery를);

  (1)에서 (기능 ($) {}) (jQuery를)

   원리 :

       이것은 오퍼레이터 때문에 실제로 기능은 브래킷과 인수에 기입 된 후, 익명 함수, 인수의 파라미터 함수 호출을 정의 익명 함수와 같은 함수 (ARG) {...}이고 우선 함수 자체, 즉, 괄호 필요 (함수 (ARG) {...}) 파라미터 익명 함수, 인수 정의 파라미터에 동등한 (PARAM), 및 호출이 PARAM을 익명 함수입니다.

    이 섹션에서 사용 이러한 (함수 ($) {...}) (jQuery를) 이유를 이해하기 어렵지 않다 왜 다른 라이브러리와 충돌 위해 단지 $ 매개 변수의 사용, jQuery로 인수에 대응

    함수 출력 (들) {...};

    출력 (jQuery를);

   역할 :

       이러한 방식의 가장 큰 장점은 마개의 형성이다 (함수 ($) {...}의 ) 기능과, 전용 기능 전용 변수의 개념을 형성하는 경우, 상기 범위 내에서만 유효 내에 정의 된 변수 (JQuery와) . 예를 들면 :

      

      

   2, $ (함수 () {...}); jQuery를 (함수 ($) {...}); $ (문서) .ready (함수 () {...})

    사실,이 세 가지의 역할은 동일하지만 표현은 다르다.

    참조 소스 입력하려면 여기를 클릭

다음의 분석 함수 NAV () 콘텐츠

    

  15 행 내지 20 행 선언하고 변수를 정의

  15 행 : 가져 오기 요소, 즉 클래스 리튬 요소 CUR의

  라인 16 : $ (선택기) .position ()는 현재 페이지의 요소 선택기 절대 위치 정보를 취득

  행 17 : outerWidth (참) 방법 (여백, 테두리와 패딩 포함) 요소의 폭을 돌려줍니다.

  행 18 : 기사의 감소를 가져옵니다

  행 19 : 레이어 탐색 박스 UL 리튬의 모든 요소를 ​​가져옵니다

  행 20 : 계층 탐색 박스를 가져옵니다 

  라인 21 ~ 24 : $ 약 (선택) .stop (는 stopAll, goToEnd) 사용 설명, 제발 입력하려면 여기를 클릭하여 페이지가로드되면 기능을 달성하기 위해 전환, 아래 현재 $의 liCur 요소 및과의 계층 탐색 줄 정지 넓은 동일한 길이의 $ liCur.

  라인 25-33 :이 정의 $ targetEle 마우스가 현재 레이어의 탐색 줄 탐색 제목을 배치 마우스를 이동하는 경우에도, 이벤트를 이동했다.

  라인 34 ~ 41 : 동일한 기능과 21-24 라인을 완성 이벤트 중이 정의 $ navBox 마우스.


별도의 저장 JS

  슬라이딩 효과를 달성 할 수 있지만 당신은 내용 navigator2.html으로 볼 수 있지만 우리가 aboutus.html 경우 우리는 추가 할 경우, 인 download.html 다른 페이지, 또는 코드에 대한 필요성이 동일한 코드가 너무 중복, 지금 것 다음과 같이 코드은 .js 파일로 구성되는

  

  내용 web.js

   

(function($) {
			$(function () {
				nav();
			});
			
			function nav() {
				var $liCur = $(".nav-box ul li.cur"),
				curP = $liCur.position().left,
				curW = $liCur.outerWidth(true),
				$slider = $(".nav-line"),
				$targetEle = $(".nav-box ul li a"),
				$navBox = $(".nav-box");
				$slider.stop(true, true).animate({
					"left":curP,
					"width":curW
				});
				$targetEle.mouseenter(function () {
					var $_parent = $(this).parent(),
					_width = $_parent.outerWidth(true),
					posL = $_parent.position().left;
					$slider.stop(true, true).animate({
						"left":posL,
						"width":_width
					}, "fast");
				});
				$navBox.mouseleave(function (cur, wid) {
					cur = curP;
					wid = curW;
					$slider.stop(true, true).animate({
						"left":cur,
						"width":wid
					}, "fast");
				});
			};
		
		})(jQuery);

  navigator3.html 내부에 혼입되어이 때에서

  

콘텐츠 및 navigator2.html 나머지 마찬가지로 슬라이딩 효과를 완료 할 수있다. 우리는 다른 인터페이스가있는 경우, 같은 about.html 기본으로, 단순히 클래스 = "똥개"위치의 변화는 같은 다음

  

  다음과 같은 효과가 있습니다 :

   

 축제 엔지니어링 코드를 다운로드하려면 여기를 클릭하십시오

발문

  원래, 다음 섹션 반복을 완료,하지만 문제를 발견 탐색 모음.

게시 된 143 개 원래 기사 · 원의 찬양 (161) · 조회수 1,210,000 +

추천

출처blog.csdn.net/mybelief321/article/details/50321323