基于javascript实现漂亮的页面过渡动画效果附源码下载


Posted in Javascript onOctober 26, 2015

用户通过点击页面左侧的菜单,对应的页面加载时伴随着滑动过滤动画,并带有进度条效果。当然页面的加载是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); 
      } 
 
      // ... 
    }); 
  }); 
}

通过异步加载的页面要返回上一页历史浏览记录的话,可以点击浏览器上的返回即可。返回上一页同样有过渡动画效果。

Javascript 相关文章推荐
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
Nov 06 Javascript
用AJAX返回HTML片段中的JavaScript脚本
Jan 04 Javascript
Javascript通过overflow控制列表闭合与展开的方法
May 15 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
Aug 31 Javascript
javascript与jquery中的this关键字用法实例分析
Dec 24 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
Apr 03 Javascript
基于JS+Canves实现点击按钮水波纹效果
Sep 15 Javascript
JS中使用 after 伪类清除浮动实例
Mar 01 Javascript
layui之select的option叠加问题的解决方法
Mar 08 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
Sep 04 Javascript
vue实现二级导航栏效果
Oct 19 Javascript
JavaScript Html实现移动端红包雨功能页面
Jan 10 Javascript
JS实现的页面自定义滚动条效果
Oct 26 #Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
Oct 26 #Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
Oct 26 #Javascript
javaScript实现可缩放的显示区效果代码
Oct 26 #Javascript
JS基于VML技术实现的五角星礼花效果代码
Oct 26 #Javascript
jquery获取url参数及url加参数的方法
Oct 26 #Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
Oct 26 #Javascript
You might like
PHP脚本的10个技巧(5)
2006/10/09 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
Javascript String.replace的妙用
2009/09/08 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
extjs简介_动力节点Java学院整理
2017/07/17 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
2019/04/25 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
Python 编码处理-str与Unicode的区别
2016/09/06 Python
浅谈Python peewee 使用经验
2017/10/20 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
Python如何使用字符打印照片
2020/01/03 Python
python软件都是免费的吗
2020/06/18 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
JAVA中运算符的分类及举例
2015/09/12 面试题
销售副总经理岗位职责
2013/12/11 职场文书
会计专业个人求职信范文
2014/01/08 职场文书
丧事主持词大全
2014/04/02 职场文书
跳槽求职信范文
2014/05/26 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
公司的力量观后感
2015/06/05 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书