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 相关文章推荐
不要在cookie中使用特殊字符的原因分析
Jul 13 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
Jan 08 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
Jan 11 Javascript
js 获取元素下面所有li的两种方法
Apr 14 Javascript
jquery显示隐藏元素的实现代码
May 19 Javascript
jQuery表单事件实例代码分享
Aug 18 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
Dec 16 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
Mar 26 Javascript
Jqprint实现页面打印
Jan 06 Javascript
jQuery快速实现商品数量加减的方法
Feb 06 Javascript
vue+element+Java实现批量删除功能
Apr 08 Javascript
vue 实现动态路由的方法
Jul 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实现验证码功能
2006/10/09 PHP
PHP 时间转换Unix时间戳代码
2010/01/22 PHP
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
php微信开发接入
2016/08/27 PHP
Javascript 复制数组实现代码
2009/11/26 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
js面向对象设计用{}好还是function(){}好(构造函数)
2011/10/23 Javascript
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
2013/03/19 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
python实现计算倒数的方法
2015/07/11 Python
python文件与目录操作实例详解
2016/02/22 Python
Python切片操作实例分析
2018/03/16 Python
从DataFrame中提取出Series或DataFrame对象的方法
2018/11/10 Python
python读取图片任意范围区域
2019/01/23 Python
python递归法解决棋盘分割问题
2019/07/17 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
大学生简单自荐信
2013/11/10 职场文书
公关活动策划方案
2014/05/25 职场文书
求职教师自荐书
2014/06/19 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
2015小学师德工作总结
2015/07/21 职场文书
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电