使用ngRoute和ngAnimate配合使用,可以实现页面切换的效果。

如果有使用过swiper,就知道这个效果是怎么样的。

代码:

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="http://cdn.bootcss.com/angular.js/1.3.0/angular.min.js"></script>
<script src="http://cdn.bootcss.com/angular.js/1.3.0/angular-route.min.js"></script>
<script src="http://cdn.bootcss.com/angular.js/1.3.0/angular-animate.js"></script>
<style>
body{
margin:0;
padding:0;
position: relative;
width: 100%;
height: 100%;
overflow: hidden;
} #p01{
width: 100%;
height: 100%;
background: red;
}
#p02{
width: 100%;
height: 100%;
background: green;
}
#p03{
width: 100%;
height: 100%;
background: blue;
}
#p04{
width: 100%;
height: 100%;
background: pink;
}
#p05{
width: 100%;
height: 100%;
background: skyblue;
}
/*以下的ngAniamte插件的关键,因为它靠css来实现动画,
可以不编写js代码;
流程:
为动画的容器添加选择器:如.container
然后再这个选择器上实现动画
.ng-enter出现时的样式->>
(它们之间动画效果,需要自己去编写如添加过渡效果transition,在选择器上编写)
->>.ng-enter-active出现后的样式
.ng-leave离开时的样式-->>.ng-leave-active离开后的样式

这里ng-show无效 
       ng-if会移除dom,生成dom,而ng-show只是改变其display属性。 
       display来实现显示隐藏,在渲染过程中会对动画效果无效化

        而它和ng-view,就无需添加这个指令,因为这个页面的切换也是动态删除和添加
*/
.container{
width: 100%;
height: 100%;
transition: 1s all;
position: absolute;
overflow: hidden;
}
.container.ng-enter{
left: 100%;
}
.container.ng-enter-active{
left:0%;
}
.container.ng-leave{
left: 0%;
}
.container.ng-leave-active{
left: -100%;
}
</style>
<script>
window.onload=function(){
document.body.style.width=view().w+"px";
document.body.style.height=view().h+"px";
}
// 全屏可视区的宽高
function view(){
return {w:document.documentElement.clientWidth,
h:document.documentElement.clientHeight};
}
</script>
</head>
<body>
<div ng-controller="myCon" class="wrap">
<!-- 使用锚点实现路径变换,哈希值 -->
<a href="#shouye">首页</a>
<a href="#ziyemian01">子页面01</a>
<a href="#ziyemian02">子页面02</a>
<a href="#ziyemian03">子页面03</a>
<a href="#ziyemian04">子页面04</a>
<!-- ng-view配合ngRoute一起使用,实现单页面效果 -->
<div class="container" ng-view ></div>
</div>
<script>
// 依赖注入插件ngAnimate,ngRoute
var myApp=angular.module("myApp",["ngAnimate","ngRoute"])
// 在配置中规定路由规则
.config(['$routeProvider',function($routeProvider){ $routeProvider
.when('/shouye',{
template : '<p id="p01">首页的内容</p>'
})
// 路由路径
.when('/ziyemian01',{
template : '<p id="p02">子页面01</p>'
})
// 路由路径
.when('/ziyemian02',{
template : '<p id="p03">子页面02</p>'
})
// 路由路径
.when('/ziyemian03',{
template : '<p id="p04">子页面03</p>'
})
// 路由路径
.when('/ziyemian04',{
template : '<p id="p05">子页面04</p>'
})
// 重定向路径,就是默认路径
.otherwise({
redirectTo : '/shouye'
}); }])
.controller("myCon",["$scope",function($scope){ }])
</script>
</body>
</html>

ngRoute方面的使用:传送门

ngAnimate和ng-repeat配合:

代码:

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="http://cdn.bootcss.com/angular.js/1.3.0/angular.min.js"></script>
<script src="http://cdn.bootcss.com/angular.js/1.3.0/angular-animate.js"></script>
<style>
.listBox{
transition: all 1s;
}
.listBox.ng-enter{
opacity: 0;
}
.listBox.ng-enter-active{
opacity: 1;
}
.listBox.ng-leave{
display: none;
}
/*对所有元素同时应用,可能实际运用中需要有一个先后的渐变出现的效果,这时候可以设置ng-enter-stagger来实现.
*/
.listBox.ng-enter-stagger{
animation-delay:100ms;
}
</style>
</head>
<body>
<div ng-controller="myCon">
<!-- ng-keyup事件指令 -->
<input type="text" ng-model="text" ng-keyup="change(text)">
<ul>
<li class="listBox" ng-repeat="k in dataArr">{{k}}</li>
</ul>
</div>
<script>
var myApp=angular.module("myApp",["ngAnimate"])
.controller("myCon",["$scope","$http",function($scope,$http){
$scope.change=function(val){
// $http和JQ里的$.ajax()工具使用方式类似
$http({
// 跨域请求方式
method:"JSONP",
// 百度搜索,数据接口
url:"https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd="+val+"&cb=JSON_CALLBACK"
// 成功接受数据,第一个参数是数据(json格式)
// 这个函数可以接受四个参数,具体查看手册
}).success(function(data){
$scope.dataArr=data.s;
});
}
}])
</script>
</body>
</html>

ngAnimate简单的使用方式:

代码:

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="angularjs-v1.5.9.js"></script>
<script src="ngAnimate.js"></script>
<style>
.box{
width:100px;
height:100px;
background: red;
transition: 1s all;
}
.box.ng-enter{
opacity: 0;
}
.box.ng-enter-active{
opacity: 1;
}
.box.ng-leave{
opacity: 1;
}
.box.ng-leave-active{
opacity: 0;
}
</style>
</head>
<body>
<div ng-controller="myCon">
<!-- ng-model在复选框里使用时true,false值 -->
<input type="checkBox" ng-model="bTure">
<!-- 这里ng-show无效 -->
<!-- ng-if会移除dom,生成dom,而ng-show只是改变其display属性。 -->
<!-- display来实现显示隐藏,在渲染过程中会对动画效果无效化 -->
<div ng-if="bTure" class="box">{{bTure}}</div>
</div>
<script>
var myApp=angular.module("myApp",["ngAnimate"])
.controller("myCon",["$scope",function($scope){
$scope.bTure=true;
}])
</script>
</body>
</html>

其实这些都是简单的方式去使用插件,但由于他们配合起来使用就变复杂了一些。

angularjs之插件ngRoute和ngAnimate的更多相关文章

  1. AngularJS常用插件与指令收集

    angularjs 组件列表 bindonce UI-Router Angular Tree angular-ngSanitize模块-$sanitize服务详解 使用 AngularJS 开发一个大 ...

  2. angularJS 常用插件指令

    长时间没有登入博客园了,今天突然想了想,当初开这个的目的,其实就是为了记录你当下的一个状态和累计一些问题,所以记录这些还是很有意义,毕竟不是什么牛,靠脸又吃不饱的这个年代,需要留下一些东西给自己看也好 ...

  3. 转AngularJS路由插件

    AngularJS学习笔记--002--Angular JS路由插件ui.router源码解析 标签: angular源码angularjs 2016-05-04 13:14 916人阅读 评论(0) ...

  4. AngularJs练习Demo17 ngRoute

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  5. AngularJS 路由:ng-route 与 ui-router

    AngularJS的ng-route模块为控制器和视图提供了[Deep-Linking]URL. 通俗来讲,ng-route模块中的$routeService监测$location.url()的变化, ...

  6. AngularJS Best Practices: ngRoute

    app/----- components/---------- users/--------------- controllers/-------------------- users.control ...

  7. AngularJs练习Demo16 ngRoute

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. angularjs上传图片插件使用

    一. angurlajs 相关 远程 jar 包 https://code.angularjs.org/angular-1.0.1.min.js 二. 正文 1. html 部分 <!-- 需要 ...

  9. angularJS的插件使用

    $uibModal&&$uibModalInstance $uibModal和$uibModalInstance是一款angularJS的弹窗控件,github地址 http://an ...

随机推荐

  1. python学习粘贴

    1. Python通过re模块提供对正则表达式的支持.使用re的一般步骤是先使用re.compile()函数,将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得 ...

  2. (转)RHEL/CentOS 6.x使用EPEL6与remi的yum源安装MySQL 5.5.x

    PS:如果既想获得 RHEL 的高质量.高性能.高可靠性,又需要方便易用(关键是免费)的软件包更新功能,那么 Fedora Project 推出的 EPEL(Extra Packages for En ...

  3. Debian 7 安装 wireshark

    安装过程很简单: $ sudo apt-get install wireshark 其中会弹出一个对话框: ┌─────────────────────┤ Configuring wireshark- ...

  4. MFC学习随笔(2)

    在MFC中,有时需要多个类之间传递信息,一个共通的头文件是个不错的选择.如果在头文件中直接声明一个变量的话,势必会报出一个错误: error LNK2005: "struct my_glob ...

  5. 写在分类之首-----to do list!

    1.增强学习 http://www.wildml.com/2016/10/learning-reinforcement-learning/ 2.RNN 别人的博客目录: 1.学些增强学习(通过代码,练 ...

  6. 从KRE到XRE:ASP.NET 5中正在消失的那些K

    前几天写了篇博客ASP.NET 5中的那些K,刚把ASP.NET 5中的那些K搞明白了些,昨天发现微软正在让那些K消失. 首先是在 KRuntime 的git日志中发现的: * Runtime ren ...

  7. 开始VS 2012中LightSwitch系列的第3部分:我该选择哪一个屏幕模板

    [原文发表地址]  Beginning LightSwitch in VS 2012 Part 3: Screen Templates, Which One Do I Choose? [原文发表时间] ...

  8. ZeroMQ研究与应用分析

    1  ZeroMQ概述 ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型.连接处理.帧.甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字.ZeroMQ是网络通信中新的一层,介于应用 ...

  9. 团队项目——站立会议DAY14

    第十四次站立会议记录: 参会人员:张靖颜,钟灵毓秀,何玥,赵莹,王梓萱 项目进展: 1.张靖颜:修改页面,查漏补缺.进行需求分析,监督每个组员,把大家的问题都一一梳理. 2.钟灵毓秀:继续修改模块代码 ...

  10. Asp.Net MVC中使用ACE模板之Jqgrid

    第一次看到ACE模板,有种感动,有种相见恨晚的感觉,于是迅速来研究.它本身是基于bootstrap和jqueryui,但更nice,整合之后为后台开发节省了大量时间. 发现虽然不是完美,整体效果还是不 ...