国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

基于javascript實現漂亮的頁面過渡動畫效果附源碼下載

2019-11-20 11:24:08
字體:
來源:轉載
供稿:網友

用戶通過點擊頁面左側的菜單,對應的頁面加載時伴隨著滑動過濾動畫,并帶有進度條效果。當然頁面的加載是Ajax驅動的,整個加載過渡過程非常流暢,非常好的用戶體驗。

HTML

HTML結構中,.cd-main包含頁面主體內容,.cd-side-navigation包含著側邊導航條,#cd-loading-bar則是用來做進度條動畫用的。

<nav class="cd-side-navigation">   <ul>     <li>       <a href="index.html" class="selected" data-menu="index">         <svg><!-- svg content here --></svg>         Intro       </a>     </li>     <li>       <!-- ... -->     </li>     <!-- other list items here -->   </ul> </nav> <!-- .cd-dashboard --> <main class="cd-main">   <section class="cd-section index visible">     <header>       <div class="cd-title">         <h2>Animated Page Transition #2</h2>         <span>Some text here</span>       </div>       <a href="#index-content" class="cd-scroll">Scroll Down</a>     </header>     <div class="cd-content" id="index-content">       <!-- content here -->     </div> <!-- .cd-content -->   </section> <!-- .cd-section --> </main> <!-- .cd-main --> <div id="cd-loading-bar" data-scale="1" class="index"></div> <!-- lateral loading bar --> 

CSS

我們將.cd-side-navigation固定在頁面左側,并且設置它的高度為100%,這樣左側導航菜單就始終占據左側邊欄,右側主體內容滾動時,左側導航菜單不動。

.cd-side-navigation {  position: fixed;  z-index: 3;  top: 0;  left: 0;  height: 100vh;  width: 94px;  overflow: hidden; } .cd-side-navigation ul {  height: 100%;  overflow-y: auto; } .cd-side-navigation::before {  /* background color of the side navigation */  content: '';  position: absolute;  top: 0;  left: 0;  height: 100%;  width: calc(100% - 4px);  background-color: #131519; } .cd-side-navigation li {  width: calc(100% - 4px); } .cd-side-navigation a {  display: block;  position: relative; } .cd-side-navigation a::after {  /* 4px line to the right of the item - visible on hover */  content: '';  position: absolute;  top: 0;  right: -4px;  height: 100%;  width: 4px;  background-color: #83b0b9;  opacity: 0; } .no-touch .cd-side-navigation a:hover::after {  opacity: 1; }

JavaScript

當我們點擊左側菜單時,調用triggerAnimation()函數,這個函數會觸發加載進度條動畫函數loadingBarAnimation(),接著加載頁面內容函數:loadNewContent()。

function loadingBarAnimation() {   var scaleMax = loadingBar.data('scale');   if( scaleY + 1 < scaleMax) {     newScaleValue = scaleY + 1;   }   // ...      loadingBar.velocity({     scaleY: newScaleValue   }, 100, loadingBarAnimation); }

當新頁面被選中時,一個新的元素.cd-section將會被創建并且插入到DOM中,然后load()新的url內容。

function loadNewContent(newSection) {   var section = $('<section class="cd-section overflow-hidden '+newSection+'"></section>').appendTo(mainContent);      //load the new content from the proper html file   section.load(newSection+'.html .cd-section > *', function(event){          loadingBar.velocity({       scaleY: scaleMax //this is the scaleY value to cover the entire window height (100% loaded)     }, 400, function(){              section.addClass('visible');        var url = newSection+'.html';        if(url!=window.location){         //add the new page to the window.history         window.history.pushState({path: url},'',url);       }        // ...     });   }); }

通過異步加載的頁面要返回上一頁歷史瀏覽記錄的話,可以點擊瀏覽器上的返回即可。返回上一頁同樣有過渡動畫效果。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 榆社县| 磴口县| 车险| 定兴县| 凉山| 涪陵区| 东安县| 蒙城县| 贵阳市| 虹口区| 永川市| 柳江县| 饶平县| 定陶县| 休宁县| 阳西县| 西峡县| 临朐县| 满洲里市| 介休市| 玛沁县| 织金县| 巴东县| 临猗县| 左贡县| 镇巴县| 金溪县| 喀什市| 大余县| 加查县| 平武县| 丰镇市| 阿拉善左旗| 湘潭县| 宣城市| 陇西县| 钟祥市| 楚雄市| 白山市| 城固县| 抚宁县|