资讯专栏INFORMATION COLUMN

AlloyTouch Button插件-不再愁click延迟和点击态

dreamGong / 1373人阅读

摘要:移动端不能使用,因为会有。然后并没有解决点击态用户点击的瞬间要有及时的外观变化反馈的问题。利用伪类来设置某元素被点击时的点击态样式。需要变成按钮的的对象直接把创建的传给的不阻止默认事件。当用户传入了参数时候,分别给绑定了和事件。

移动端不能使用click,因为click会有300ms。所有有了fastclick这样的解决方案。然后fastclick并没有解决点击态(用户点击的瞬间要有及时的外观变化反馈)的问题。hover会有不消失的问题,所有大家一般用:active。利用 :active 伪类来设置某元素被点击时的点击态样式。
在IOS上使用active必须声明下面js:

document.addEventListener("touchstart", function() {},false);

CSS中记得去掉highlight color:

-webkit-tap-highlight-color: rgba(0,0,0,0);

需要注意的是:Android 2.x 仍不支持:active。

那么就 fastclick + :active + 一堆声明 + 放弃部分系统的兼容?

有没有更好的解决方案?且看AlloyTouch Button插件~~

语法
  new AlloyTouch.Button(selector, onTap [,activeClass]) 

selector:需要变成按钮的选择器

onTap: 用户点击按钮的回调函数

activeClass:可选参数,点击状态下添加的class

使用方式
new AlloyTouch.Button("#button", function () {
    console.log("You tapped me.");
}, "active");
在线演示

原理
 AlloyTouch.Button = function (selector, tap, active) {
    var element = typeof selector === "string" ? document.querySelector(selector) : selector;
    var option = {
        touch: selector,
        tap: tap,
        preventDefault: false
    };
    if (active !== undefined) {
        option.touchStart = function ( ) {
            addClass(element, active);
        };
        touchMove = function ( ) {
            removeClass(element, active);
        };
        option.touchEnd = function ( ) {
            removeClass(element, active);
        };
        option.touchCancel = function () {
            removeClass(element, active);
        };
    }

    new AlloyTouch(option);
}

在创建Button对象实例的时候,其实创建了AlloyTouch对象实例。这里分析在option。

touch: selector 需要变成按钮的的对象

tap: tap 直接把创建button的tap传给alloytouch的tap

preventDefault: false 不阻止默认事件。不然的话,手指放在button上时,页面拖不动。

当用户传入了active参数时候,分别给绑定了touchMove、toucStart、touchEnd和touchCancel事件。

touchMove、touchEnd和touchCancel均会移除active的class。

toucStart会增加active的class。

最后

更多例子演示和代码可以在Github上找到。
Github:https://github.com/AlloyTeam/AlloyTouch

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91329.html

相关文章

  • FED之必备技能

    摘要:在我们深入研究这项新鲜的技术之前,让我们先快速的复习原理的相关知识。同时,希望本文能对大家有所帮助。工欲善其事,必先利其器。 flex.css快速入门,极速布局 什么是flex.css? css3 flex 布局相信很多人已经听说过甚至已经在开发中使用过它,但是我想我们都会有一个共同的经历,面对它的各种版本,各种坑,傻傻的分不清楚,flex.css就是对flex布局的一种封装,通过简洁...

    Zachary 评论0 收藏0
  • FED之必备技能

    摘要:在我们深入研究这项新鲜的技术之前,让我们先快速的复习原理的相关知识。同时,希望本文能对大家有所帮助。工欲善其事,必先利其器。 flex.css快速入门,极速布局 什么是flex.css? css3 flex 布局相信很多人已经听说过甚至已经在开发中使用过它,但是我想我们都会有一个共同的经历,面对它的各种版本,各种坑,傻傻的分不清楚,flex.css就是对flex布局的一种封装,通过简洁...

    williamwen1986 评论0 收藏0

发表评论

0条评论

dreamGong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<