>  기사  >  웹 프론트엔드  >  jQuery는 전환 페이지 전환 애니메이션 효과를 구현합니다.

jQuery는 전환 페이지 전환 애니메이션 효과를 구현합니다.

不言
不言원래의
2018-06-28 14:21:594707검색

이 글은 페이지 전환의 전환 애니메이션 효과를 구현하기 위해 주로 jQuery를 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 공유합니다.

효과 AJAX 호출을 통한 매우 멋진 jQuery 및 CSS3 전환 페이지 전환 애니메이션 특수 효과 플러그인입니다. 이 페이지 전환 효과는 AJAX를 사용하여 링크 콘텐츠를 동적으로 로드합니다. 페이지가 로드되면 CSS3를 사용하여 매우 멋진 페이지 전환 애니메이션 효과를 만듭니다. pushState 메소드는 브라우저의 검색 기록을 관리하기 위해 사용됩니다. 필요한 친구들은

을 참조하여 직접 제작 과정을 소개할 수 있습니다.

HTML 구조

페이지 전환 효과의 HTML 구조는 페이지의 래핑 요소인 p를 사용합니다. .cd -cover-layer는 페이지 전환 시 마스크 레이어를 생성하는 데 사용되며, p.cd-loading-bar는 ajax 로딩 시 로딩 진행률 표시줄입니다.

<main>
 <p class="cd-index cd-main-content">
  <p>
   <h1>Page Transition</h1>
   <!-- your content here -->
  </p>
 </p>
</main>
 
<p class="cd-cover-layer"></p> <!-- this is the cover layer -->
 
<p class="cd-loading-bar"></p> <!-- this is the loading bar -->

CSS 스타일

이 페이지로 전환됩니다 body::before 및 body::after 의사 요소는 특수 효과에 사용되어 페이지 전환 프로세스 중에 페이지 콘텐츠를 덮는 두 개의 마스크 레이어를 만듭니다. 위치는 높이가 50vh이고 너비가 100%로 고정되어 있습니다. 기본적으로 CSS 변환 속성(translateY(-100%)/translateY(100%))을 사용하여 숨겨집니다. 사용자가 페이지를 전환하면 이러한 요소는 .page-is-changing 클래스를 6c04bd5ca3fcae76e30b72ad730ca86d 요소에 추가하여 뷰포트로 다시 이동됩니다. 아래 그림은 이 과정을 보여줍니다. #

body::after, body::before {
 /* these are the 2 half blocks which cover the content once the animation is triggered */
 height: 50vh;
 width: 100%;
 position: fixed;
 left: 0;
}
body::before {
 top: 0;
 transform: translateY(-100%);
}
body::after {
 bottom: 0;
 transform: translateY(100%);
}
body.page-is-changing::after, body.page-is-changing::before {
 transform: translateY(0);
}

페이지가 전환될 때 p.cd의 투명도를 변경하여 페이지 콘텐츠의 페이드 인 및 페이드 아웃 효과를 얻습니다. -커버 레이어. .cd-main-content 요소를 동일한 배경색으로 오버레이한 다음 6c04bd5ca3fcae76e30b72ad730ca86d에 .page-is-changing 클래스를 추가하면 투명도가 0에서 1로 변경됩니다. 로드 진행률 표시줄은 .cd-loading-bar::before 의사 요소를 사용하여 만들어집니다. 기본적으로 축소(scaleX(0))되고 변형 원본: 왼쪽 중앙입니다. 페이지 전환이 시작되면 scaleX(1)을 사용하여 원래 크기로 확대됩니다.


.cd-loading-bar {
 /* this is the loading bar - visible while switching from one page to the following one */
 position: fixed;
 height: 2px;
 width: 90%;
}
.cd-loading-bar::before {
 /* this is the progress bar inside the loading bar */
 position: absolute;
 left: 0;
 top: 0;
 height: 100%;
 width: 100%;
 transform: scaleX(0);
 transform-origin: left center;
}
.page-is-changing .cd-loading-bar::before {
 transform: scaleX(1);
}

특수 효과의 부드러운 전환 효과는 CSS 전환을 사용하여 구현됩니다. 다양한 요소 애니메이션 시퀀스를 달성하기 위해 각 애니메이션 요소에 다양한 전환 지연이 추가됩니다.

JAVASCRIPT

The data-type="page-transition" 속성은 페이지 전환 이벤트를 트리거하기 위해 이 페이지 전환 효과의 링크에 사용됩니다. 플러그인이 사용자 클릭 이벤트를 감지하면 ChangePage() 메서드가 실행됩니다.

$(&#39;main&#39;).on(&#39;click&#39;, &#39;[data-type="page-transition"]&#39;, function(event){
  event.preventDefault();
  //detect which page has been selected
  var newPage = $(this).attr(&#39;href&#39;);
  //if the page is not animating - trigger animation
  if( !isAnimating ) changePage(newPage, true);
});


이 메서드는 페이지 전환 애니메이션을 트리거하고 loadNewContent() 메서드를 통해 새 콘텐츠를 로드합니다.


function changePage(url, bool) {
  isAnimating = true;
  // trigger page animation
  $(&#39;body&#39;).addClass(&#39;page-is-changing&#39;);
  //...
  loadNewContent(url, bool);
  //...
}

새 콘텐츠가 로드되면 원본 61b85035edf2b42260fdb5632dc5728a 요소의 콘텐츠가 대체됩니다. .page-is-changing 클래스가 본문에서 제거되고 새로 로드된 콘텐츠가 window.history에 추가됩니다(pushState() 메서드 사용).


function loadNewContent(url, bool) {
  var newSectionName = &#39;cd-&#39;+url.replace(&#39;.html&#39;, &#39;&#39;),
   section = $(&#39;<p class="cd-main-content &#39;+newSectionName+&#39;"></p>&#39;);
    
  section.load(url+&#39; .cd-main-content > *&#39;, function(event){
   // load new content and replace <main> content with the new one
    $(&#39;main&#39;).html(section);
    //...
    $(&#39;body&#39;).removeClass(&#39;page-is-changing&#39;);
    //...
 
    if(url != window.location){
     //add the new page to the window.history
     window.history.pushState({path: url},&#39;&#39;,url);
    }
 });
}

사용자가 브라우저의 뒤로 버튼을 클릭할 때 동일한 페이지 전환 애니메이션 효과를 실행하려면 플러그를 -in popstate 이벤트를 수신하고 트리거될 때changePage() 함수를 실행합니다.


$(window).on(&#39;popstate&#39;, function() {
  var newPageArray = location.pathname.split(&#39;/&#39;),
    //this is the url of the page to be loaded 
    newPage = newPageArray[newPageArray.length - 1];
  if( !isAnimating ) changePage(newPage);
});

위 내용은 모두의 학습에 도움이 되기를 바랍니다. PHP 중국어 웹사이트!

관련 권장사항:

jQuery 및 CSS3에서는 플로팅 효과가 있는 모방 꽃잎 네트 고정 상단 위치 탐색 메뉴를 구현합니다.

#🎜🎜 #

jQuery 슬라이딩 버튼 스위치 구현 방법

타임라인 효과를 구현하는 jQuery 플러그인 Timelinr 정보 # 🎜🎜#


위 내용은 jQuery는 전환 페이지 전환 애니메이션 효과를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.