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 相关文章推荐
jquery ready()的几种实现方法小结
Jun 18 Javascript
js实现杯子倒水问题自动求解程序
Mar 25 Javascript
JSON中双引号的轮回使用过程中一定要小心
Mar 05 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
Nov 04 Javascript
高性能JavaScript DOM编程(1)
Aug 11 Javascript
js实现浏览本地文件并显示扩展名的方法
Aug 17 Javascript
js解决movebox移动问题
Mar 29 Javascript
浅析JavaScript中的对象类型Object
May 26 Javascript
JavaScript手机振动API
Jun 11 Javascript
angular4 如何在全局设置路由跳转动画的方法
Aug 30 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
Sep 05 Javascript
Vue两种组件类型:递归组件和动态组件的用法
Aug 06 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
PHP通用分页类page.php[仿google分页]
2008/08/31 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
php内嵌函数用法实例
2015/03/20 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
不用MOUSEMOVE也能滑动啊
2007/05/23 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法
2017/11/27 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
基于node+websocket+html实现腾讯课堂聊天室聊天功能
2020/03/04 Javascript
Element PageHeader页头的使用方法
2020/07/26 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
物业管理毕业生的自我评价
2014/02/17 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
课外活动实习计划
2015/01/19 职场文书
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android
JavaScript前端面试组合函数
2022/06/21 Javascript