摘要:移動(dòng)端不能使用,因?yàn)闀?huì)有。然后并沒(méi)有解決點(diǎn)擊態(tài)用戶(hù)點(diǎn)擊的瞬間要有及時(shí)的外觀變化反饋的問(wèn)題。利用偽類(lèi)來(lái)設(shè)置某元素被點(diǎn)擊時(shí)的點(diǎn)擊態(tài)樣式。需要變成按鈕的的對(duì)象直接把創(chuàng)建的傳給的不阻止默認(rèn)事件。當(dāng)用戶(hù)傳入了參數(shù)時(shí)候,分別給綁定了和事件。
移動(dòng)端不能使用click,因?yàn)閏lick會(huì)有300ms。所有有了fastclick這樣的解決方案。然后fastclick并沒(méi)有解決點(diǎn)擊態(tài)(用戶(hù)點(diǎn)擊的瞬間要有及時(shí)的外觀變化反饋)的問(wèn)題。hover會(huì)有不消失的問(wèn)題,所有大家一般用:active。利用 :active 偽類(lèi)來(lái)設(shè)置某元素被點(diǎn)擊時(shí)的點(diǎn)擊態(tài)樣式。
在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 + 一堆聲明 + 放棄部分系統(tǒng)的兼容?
有沒(méi)有更好的解決方案?且看AlloyTouch Button插件~~
語(yǔ)法new AlloyTouch.Button(selector, onTap [,activeClass])
selector:需要變成按鈕的選擇器
onTap: 用戶(hù)點(diǎn)擊按鈕的回調(diào)函數(shù)
activeClass:可選參數(shù),點(diǎn)擊狀態(tài)下添加的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); }
在創(chuàng)建Button對(duì)象實(shí)例的時(shí)候,其實(shí)創(chuàng)建了AlloyTouch對(duì)象實(shí)例。這里分析在option。
touch: selector 需要變成按鈕的的對(duì)象
tap: tap 直接把創(chuàng)建button的tap傳給alloytouch的tap
preventDefault: false 不阻止默認(rèn)事件。不然的話(huà),手指放在button上時(shí),頁(yè)面拖不動(dòng)。
當(dāng)用戶(hù)傳入了active參數(shù)時(shí)候,分別給綁定了touchMove、toucStart、touchEnd和touchCancel事件。
touchMove、touchEnd和touchCancel均會(huì)移除active的class。
toucStart會(huì)增加active的class。
最后更多例子演示和代碼可以在Github上找到。
Github:https://github.com/AlloyTeam/AlloyTouch
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91329.html
摘要:在我們深入研究這項(xiàng)新鮮的技術(shù)之前,讓我們先快速的復(fù)習(xí)原理的相關(guān)知識(shí)。同時(shí),希望本文能對(duì)大家有所幫助。工欲善其事,必先利其器。 flex.css快速入門(mén),極速布局 什么是flex.css? css3 flex 布局相信很多人已經(jīng)聽(tīng)說(shuō)過(guò)甚至已經(jīng)在開(kāi)發(fā)中使用過(guò)它,但是我想我們都會(huì)有一個(gè)共同的經(jīng)歷,面對(duì)它的各種版本,各種坑,傻傻的分不清楚,flex.css就是對(duì)flex布局的一種封裝,通過(guò)簡(jiǎn)潔...
摘要:在我們深入研究這項(xiàng)新鮮的技術(shù)之前,讓我們先快速的復(fù)習(xí)原理的相關(guān)知識(shí)。同時(shí),希望本文能對(duì)大家有所幫助。工欲善其事,必先利其器。 flex.css快速入門(mén),極速布局 什么是flex.css? css3 flex 布局相信很多人已經(jīng)聽(tīng)說(shuō)過(guò)甚至已經(jīng)在開(kāi)發(fā)中使用過(guò)它,但是我想我們都會(huì)有一個(gè)共同的經(jīng)歷,面對(duì)它的各種版本,各種坑,傻傻的分不清楚,flex.css就是對(duì)flex布局的一種封裝,通過(guò)簡(jiǎn)潔...
閱讀 797·2021-08-23 09:46
閱讀 946·2019-08-30 15:44
閱讀 2604·2019-08-30 13:53
閱讀 3050·2019-08-29 12:48
閱讀 3873·2019-08-26 13:46
閱讀 1807·2019-08-26 13:36
閱讀 3520·2019-08-26 11:46
閱讀 1419·2019-08-26 10:48