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下高效拼装字符串的几种方法比较与测试代码
Apr 15 Javascript
jQuery Tools tab(幻灯片)
Jul 14 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
Apr 30 Javascript
Node.js中的模块机制学习笔记
Nov 04 Javascript
常见的jQuery选择器汇总
Nov 24 Javascript
JavaScript中的Truthy和Falsy介绍
Jan 01 Javascript
javascript笛卡尔积算法实现方法
Apr 08 Javascript
vue.js评论发布信息可插入QQ表情功能
Aug 08 Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 Javascript
JavaScript中常见内置函数用法示例
May 14 Javascript
微信小程序非跳转式组件授权登录的方法示例
May 22 Javascript
react ant Design手动设置表单的值操作
Oct 31 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
使用Thinkphp框架开发移动端接口
2015/08/05 PHP
js文件中调用js的实现方法小结
2009/10/23 Javascript
date.parse在IE和FF中的区别
2010/07/29 Javascript
jquery对表单操作2
2011/04/06 Javascript
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
2020/12/30 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
Python处理字符串之isspace()方法的使用
2015/05/19 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
python定时关机小脚本
2018/06/20 Python
Django中使用CORS实现跨域请求过程解析
2019/08/05 Python
Python简单实现区域生长方式
2020/01/16 Python
PyTorch笔记之scatter()函数的使用
2020/02/12 Python
Python实现对adb命令封装
2020/03/06 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
电大自我鉴定
2013/10/27 职场文书
法律专业实习鉴定
2013/12/22 职场文书
迟到检讨书5000字
2014/01/31 职场文书
用Python爬虫破解滑动验证码的案例解析
2021/05/06 Python
详解MySQL的Seconds_Behind_Master
2021/05/18 MySQL