Angular.js通过自定义指令directive实现滑块滑动效果


Posted in Javascript onOctober 13, 2017

前言

最近因为工作需要让我一个效果实现在页面某一部分内滑块随着滚动条上下滑动,说明一下我们项目使用技术angularJs.大家都知道,使用jquery很好实现。

那么angular如何实现呢,我用的是自定义指令(directive)。

方法如下

1.下面是我html部分代码,detail-scroll是我自定义的标签

...............
<div id="time" style="position: relative;">
 <div ng-style="maskStyle" detail-scroll style="transition: all linear 0.5s;-moz-transition:all linear 0.5s;-webkit-transition: all linear 0.5s;-o-transition: all linear 0.5s;">
 <div ng-click="maskTimeDetail()">
  <i class="zmdi zmdi-zoom-in" style="font-size: 22px;color: #fff;padding: 5px;"></i>
 </div>
 </div>

<div class="tl-item alt" ng-repeat="time in timeList">



//.....................


</div> 
</div>

2.开始写js代码

这里假设我们在某一个module下,控制器叫做AppCtrl

angular.module('xxxx',[ ])
.controller('AppCtrl', ['$scope',AppCtrl])
.directive('detailScroll',function(){
// 返回一个函数
 return{
 link : function($scope,element,attr){
 var container = angular.element(window);
 var timeH = $('#time').offset().top;//获取该部分距离页面顶部距离
 container.on('scroll', function() {
 if(container.scrollTop()>timeH){
  $scope.maskStyle.top = container.scrollTop()-timeH+$('#time .alt').eq(0).height()/2+'px';
 }
 });
 },
 restrict:'A', //ECMA E元素 C类名 M注释 A属性
 };
});
function AppCtrl($scope) {
 //这是我给这个滑块定义的样式,一定要记住你要相对应你的父级元素相对定位,
 //因为我们要改变是它的top值
 $scope.maskStyle={
 width: '30px',height: '30px',
 'background-color': '#ea1c0d',
 'z-index': 999,
 position: 'absolute',
 top:0,left:0,
 opacity:'0.8',
 'text-align':'center'
 };
}

detailScroll是 angular命名规范,驼峰式,一定要这样写,angular只有用自定义指令,才可以用jquery的一些方法。。
以上只是个简单的例子来演示一下,如果滑块移动的top值不准确,可以自行计算。

这只是简单的自定义指令写法,还有一个是可以引入模板

 angular.module('app', [])

.directive('myDirective', function() {


function appCtrl($scope){



//处理逻辑


}


   return {



 restrict: 'EA',



 replace: true,


scope:{



//想要从父级controller传到这里的函数,对象,变量,分别用(&,=,@),具体怎么用大家可以参考angular官网详解


}


templateUrl:'路径或是html拼接的字符串',



 controller: function($scope, $element, $attrs, $transclude) { // 控制器逻辑 }


//controller这样写也可以,还有一种直接写controller名,通过注入的方法,比如


controller:['$scope',appCtrl]


} })

可以参考这个https://3water.com/article/107045.htm,很详细~~~

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript 常用方法总结
Jun 03 Javascript
JavaScript 保存数组到Cookie的代码
Apr 14 Javascript
如何防止JavaScript自动插入分号
Nov 05 Javascript
Spring mvc 接收json对象
Dec 10 Javascript
JavaScript 中有关数组对象的方法(详解)
Aug 15 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
Feb 15 Javascript
微信小程序 新建登录页并实现tabBar隐藏
Jun 13 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
Aug 16 Javascript
JS+jQuery实现注册信息的验证功能
Sep 26 jQuery
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
Feb 27 jQuery
对vuex中getters计算过滤操作详解
Nov 06 Javascript
通过Kettle自定义jar包供javascript使用
Jan 29 Javascript
捕获未处理的Promise错误方法
Oct 13 #Javascript
解决ie img标签内存泄漏的问题
Oct 13 #Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 #jQuery
vue2组件之select2调用的示例代码
Oct 12 #Javascript
vue2.x select2 指令封装详解
Oct 12 #Javascript
一个简易时钟效果js实现代码
Mar 25 #Javascript
微信小程序实现页面跳转传值的方法
Oct 12 #Javascript
You might like
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
Javascript中For In语句用法实例
2015/05/14 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
vue2.0 中使用transition实现动画效果使用心得
2018/08/13 Javascript
深入koa-bodyparser原理解析
2019/01/16 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
vuex实现购物车功能
2020/06/28 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
python脚本设置系统时间的两种方法
2016/02/21 Python
python:接口间数据传递与调用方法
2018/12/17 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
通过实例简单了解Python sys.argv[]使用方法
2020/08/04 Python
Jdbc数据访问技术面试题
2012/03/30 面试题
自荐信的禁忌和要点
2013/10/15 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
Python列表的索引与切片
2022/04/07 Python