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 相关文章推荐
js二级地域选择的实现方法
Jun 17 Javascript
jquery弹出关闭遮罩层实例
Aug 06 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
Jan 28 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
Mar 03 Javascript
JavaScript实现级联菜单的方法
Jun 29 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
Aug 28 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
Dec 02 Javascript
jQuery验证插件validate使用详解
May 11 Javascript
JavaScript实现自动切换图片代码
Oct 11 Javascript
bootstrapValidator.min.js表单验证插件
Feb 09 Javascript
详解Vue组件实现tips的总结
Nov 01 Javascript
Vue3.0数据响应式原理详解
Oct 09 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简单处理XML数据的方法示例
2017/05/19 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
2016/07/22 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
js如何验证密码强度
2020/03/18 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
python共享引用(多个变量引用)示例代码
2013/12/04 Python
粗略分析Python中的内存泄漏
2015/04/23 Python
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
用Python遍历C盘dll文件的方法
2015/05/06 Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
2017/11/02 Python
scrapy爬虫实例分享
2017/12/28 Python
Python3数字求和的实例
2019/02/19 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
wxPython实现文本框基础组件
2019/11/18 Python
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
教师节主题班会方案
2015/08/17 职场文书
教师岗位说明书
2015/09/30 职场文书
文艺部部长竞选稿
2015/11/21 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python