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 相关文章推荐
Ext JS 4官方文档之三 -- 类体系概述与实践
Dec 16 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
Nov 29 Javascript
使用jquery 简单实现下拉菜单
Jan 14 Javascript
javascript实现当前页导航激活的方法
Feb 27 Javascript
JS中获取函数调用链所有参数的方法
May 07 Javascript
详解Javascript中的Object对象
Feb 28 Javascript
JS实现的判断方法、变量是否存在功能示例
Mar 28 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
Dec 25 Javascript
Angular(5.2-&gt;6.1)升级小结
Dec 27 Javascript
深入解析koa之中间件流程控制
Jun 17 Javascript
webpack中的模式(mode)使用详解
Feb 20 Javascript
vue+node 实现视频在线播放的实例代码
Oct 19 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 mkdir()定义和用法
2009/01/14 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
PHP页面实现定时跳转的方法
2014/10/31 PHP
浅谈PHP中try{}catch{}的使用方法
2016/12/09 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
php桥接模式应用案例分析
2019/10/23 PHP
javascript &amp;&amp;和||运算法的另类使用技巧
2009/11/28 Javascript
Extjs学习笔记之八 继承和事件基础
2010/01/08 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
js操作table元素实现表格行列新增、删除技巧总结
2015/11/18 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
详解AngularJS验证、过滤器、指令
2017/01/04 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python数据结构之列表和元组的详解
2017/09/23 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
2020/06/02 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
产品销售员岗位职责
2013/12/18 职场文书
大学自我鉴定
2013/12/20 职场文书
培训专员岗位职责
2014/02/26 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
2014年手术室工作总结
2014/11/26 职场文书
详解Python类和对象内容
2021/06/22 Python
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
js前端图片加载异常兜底方案
2022/06/21 Javascript