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模拟弹出效果代码修正版
Aug 07 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
May 04 Javascript
谈谈JavaScript类型系统之Math
Jan 06 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
Dec 23 Javascript
原生JS控制多个滚动条同步跟随滚动效果
Dec 22 Javascript
Element-UI踩坑之Pagination组件的使用
Oct 29 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
Jun 10 Javascript
探索JavaScript中私有成员的相关知识
Jun 13 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 Javascript
Vue v-text指令简单使用方法示例
Sep 19 Javascript
微信小程序多列表渲染数据开关互不影响的实现
Jun 05 Javascript
vue-i18n实现中英文切换的方法
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
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
PHP 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
JavaScript中操作字符串小结
2015/05/04 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
在JavaScript中使用严格模式(Strict Mode)
2019/06/13 Javascript
一次微信小程序内地图的使用实战记录
2019/09/09 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
python中的__slots__使用示例
2015/02/26 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
django修改models重建数据库的操作
2020/03/31 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
歌唱比赛获奖感言
2014/01/21 职场文书
试用期员工考核制度
2014/01/22 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
求职教师自荐书
2014/06/19 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
实用求职信模板范文
2019/05/13 职场文书
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript