1、写在前面的废话

最近接触在开发企业微信应用的时候,接触到了weui。用到了其中的slider功能。不知道是不是我用法有误,发现slider存在一定的兼容问题---在pc端和移动端不能很好的兼容。所以在此写个文档,做个小笔记,以后备用。

2、slider的使用

在weui.js中slider的一种用法如下:

[options.step] number   slider的step,每次移动的百分比,取值范围 [0-100]
[options.defaultValue] number 0 slider的默认百分比值,取值范围 [0-100]
[options.onChange] function   slider发生改变时返回对应的百分比,取值范围 [0-100]

html

<div class="weui-slider-box"><div id="slider" class="weui-slider"><div class="weui-slider__inner"><div class="weui-slider__track"></div><div class="weui-slider__handler"></div></div></div><div id="sliderValue" class="weui-slider-box__value"></div>
</div>

js

weui.slider('#slider', {step: 10,defaultValue: 40,onChange: function(percent){console.log(percent);}
});

这种写法我发现在移动端的slider拖拉效果也不是很好,而且我的项目,得对三个事件作不同的操作(touchstart, touchmove,touchend),所以用到以下方法。

这是一种原生的写法,html和上面的一样,区别就在js上面:

<script type="text/javascript">$(function(){var $sliderTrack = $('#sliderTrack'),$sliderHandler = $('#sliderHandler'),$sliderValue = $('#sliderValue');var totalLen = $('#sliderInner').width(),startLeft = 0,startX = 0;$sliderHandler.on('touchstart', function (e) {startLeft = parseInt($sliderHandler.css('left')) * totalLen / 100;startX = e.originalEvent.changedTouches[0].clientX; //移动端
//pc端:e.originalEvent.clientX;
}).on('touchmove', function(e){var dist = startLeft + e.originalEvent.changedTouches[0].clientX - startX,
//pc端:e.originalEvent.clientX;
percent;dist = dist < 0 ? 0 : dist > totalLen ? totalLen : dist;percent =  parseInt(dist / totalLen * 100);$sliderTrack.css('width', percent + '%');$sliderHandler.css('left', percent + '%');$sliderValue.text(percent);e.preventDefault();})
.on('touchend',function(e){
//代码
});
});
</script>

以上的js代码就是slider的一种原生的写法,但是由于touchstart,touchmove,touchend是移动端事件,所以在pc端这段代码是用不了的。网上有很多的说法:用mousedown,mousemove,mouseon来代替上面三个事件,但是个人觉得并不是那么好用。在这里推荐两种pc端的代替写法:

2.1、用h5的drag和drog

对应的将touchstart,touchmove,touchend换成dragstart,drag,dragend。分别表示用户开始拖动元素时触发,用户开始拖动元素时触发,用户完成元素拖动后触发。当然它还有别的一些事件,如:

在拖动目标上触发事件 (源元素):ondragstart - 用户开始拖动元素时触发ondrag - 元素正在拖动时触发ondragend - 用户完成元素拖动后触发释放目标时触发的事件:ondragenter - 当被鼠标拖动的对象进入其容器范围内时触发此事件ondragover - 当某被拖动的对象在另一对象容器范围内拖动时触发此事件ondragleave - 当被鼠标拖动的对象离开其容器范围内时触发此事件ondrop - 在一个拖动过程中,释放鼠标键时触发此事件

有兴趣可以研究一下

2.2、jquery ui draggable

这种要引入jquery-ui对应的css和js文件,但是个人觉得这种挺好用,因为它的api很完善,所以在项目中也是用的这种。

用法如下:

$sliderHandlersubTask.draggable({axis: "x",//沿x轴拖动// containment:强制draggable只允许在指定元素或区域的范围内移动,可选值:'parent', 'document', 'window', [x1, y1, x2, y2].   containment:'parent' ,start: function(e,v) {},drag: function(e,v) {},stop: function(e,v) {}
});

其实他有很多的参数,在网上能查到,比如:draggable中文文档  以及 英文文档

禁止拖拽事件的方法为:

$sliderHandlersubTask.draggable({
//true:禁止,false:允许disabled: true});

但是以上的一切发生的基础都是要在索要拖动的元素上加上属性 ”ui-draggable ui-widget-content“

3、总结

以上就是最近的一些总结,希望以后用到的时候自己能有所明白,也希望有需要的朋友可以给你们提供一些参考,初学者,有错的地方还请指教

weui.js slider的使用笔记相关推荐

  1. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3

    技术非常多,样例非常多.仅仅好慢慢学,慢慢实践!!如今学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQ ...

  2. elementui el-from 怎样显示图片_vue2.0使用weui.js的uploader组件上传图片(兼容移动端)...

    本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. 最近在使用 vue2.0开 ...

  3. Node.js: 深入浅出Nodejs读书笔记

    今天终于把朴灵老师写的<深入浅出Node.js>给学习 完了, 这本书不是一本简单的Node入门书籍,它没有停留在Node介绍或者框架.库的使用层面上,而是从不同的视角来揭示Node自己内 ...

  4. html怎样使用ui套件,weui框架组件小白入门指南:如何安装使用weui.js?

    本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规.大家都是程序员,不要闹得不开心. 苏南大叔在本文中说说腾讯的weui这个前端框架的基本使用方法.这款框架已经问世有几年的时间了,因为其可以把微信 ...

  5. css+js+jq实训笔记

    css+js+jq实训笔记 css第一天 css第二天 css第三天 css第四天 css第五天 css第六天 js第一天 js第二天 js第三天 js第四天 js第五天 js第六天 jq第一天 jq ...

  6. weui.js中的picker自定义实现移动端联动

    实现weui中的picker联动,效果图如下: 代码如下 <html lang="en"><head><meta charset="UTF- ...

  7. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记2

    技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...

  8. JS数据结构与算法 笔记

    JS数据结构与算法笔记 前言:不定时更新说明 1. 栈(Stack) 1.1 基于数组实现栈 1.2 基于对象实现栈 1.3 基于链表实现栈 1.4 栈的简单应用 1.4.1 字符串中的括号匹配问题 ...

  9. weui.js 的使用

    基本上是 weui 的 css 样式: npm install weui -save weui 配套的 js 代码: install weui.js --save 在要用的 vue 文件里加上: im ...

最新文章

  1. “因人脸识别错误,我被捕了!”
  2. python fileinput_python fileinput模块
  3. python免费自学网站-python免费么
  4. Twitter的系统编程
  5. Flink从入门到精通100篇(二十一)-万字长文详解 Flink 中的 CopyOnWriteStateTable
  6. 【Tiny4412】Tiny4412烧写uboot脚本分析
  7. 我在德国做SAP CRM One Order redesign工作的心得
  8. 如何在Windows 8.1中获取Windows 10样式的开始菜单
  9. “约见”面试官系列之常见面试题之第九十三篇之vue获取数据在哪个周期函数(建议收藏)
  10. Specification for springger thesis Writing
  11. 放弃 Python 2 之后,这家公司写了 50 万行的 Go 代码来迁移!
  12. 企业信息管理- 近期功能改善
  13. matplotlib实现数据的可视化
  14. 第九章:第九章:XML文档集成---Axd向导
  15. 并发编程学习之Condition和顺序访问
  16. 浅谈歌词文件(LRC、QRC、KRC)
  17. 四处收集拼接的html学习笔记
  18. 蓝牙学习笔记之LMP协议(十二)
  19. 计算机服务器属无形资产吗,服务器属于固定资产还是无形资产
  20. [CocosCreator]热更新插件使用心得以及注意事项

热门文章

  1. 11岁的Tumblr:开启艰难禁黄之路
  2. oracle 有iif么,ORACLE IIF声明
  3. Wifi网络共享----Wifi共享精灵
  4. 东东在用计算机计算一道题时 把被除数的前,北师大二年级数学下册期末试卷...
  5. 安卓手机便签怎么快速修改重复提醒设置?
  6. 软件集成测试采用,集成测试的组成以及流程
  7. onedrive已停止工作_4、工作簿的基本操作
  8. 5月2日云栖精选夜读:DT科技评论第35期:可以解锁任何手机的万能指纹
  9. 英仕曼235年传奇之路从CTA策略鼻祖到全球最大上市对冲基金
  10. div设置为可获取焦点并且判断是否已获取焦点的方法