国产探花免费观看_亚洲丰满少妇自慰呻吟_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);       }        // ...     });   }); }

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 普兰店市| 平邑县| 太仓市| 泾源县| 大化| 南汇区| 娱乐| 同德县| 彭山县| 吴江市| 宜兰市| 青冈县| 新沂市| 萝北县| 同心县| 内乡县| 北碚区| 华宁县| 博罗县| 万安县| 三亚市| 清水河县| 阿拉善右旗| 伊宁县| 玉溪市| 镇原县| 孝义市| 松原市| 江安县| 泌阳县| 广安市| 华容县| 赤水市| 光山县| 九江市| 阿鲁科尔沁旗| 区。| 霞浦县| 荆州市| 深圳市| 荆州市|