如果是在手機(jī)上查看投票頁(yè),沒有HOVER效果時(shí)應(yīng)該怎么辦?

今天給大家分享一下,在手機(jī)上沒有HOVER效果時(shí)應(yīng)該怎么辦?

1.背景介紹

怎么發(fā)現(xiàn)hover在手機(jī)上沒效果?

某一天夜晚,觀天象異星突現(xiàn),猛然一驚,急忙拿出手機(jī)檢查白日剛修煉到第七層的CSS功法, 想著hover光環(huán)效果乃我得意之作,可萬萬不能有事!手止不住的顫抖著,點(diǎn)擊屏幕都十分費(fèi)勁, 五分鐘后,終于運(yùn)行出了第七層功法--投票頁(yè),觸上玩家卡牌區(qū)域....

該死的!我的hover呢???

2.知識(shí)剖析

W3C定義----

:hover用于選擇鼠標(biāo)指針浮動(dòng)在上面的元素,可用于所有元素,不只是鏈接。

2.2? ? 為啥HOVER在手機(jī)上沒效果?

讓我們?cè)倩仡櫼幌耯over的定義...

:hover用于選擇鼠標(biāo)指針浮動(dòng)在上面的元素。

再想一想...

手機(jī)上哪來的鼠標(biāo)啊伙計(jì)?!

SO,手機(jī)端沒有hover特效,當(dāng)你點(diǎn)擊的時(shí)候就直接觸發(fā)click。

3.常見問題

手機(jī)上沒有HOVER效果時(shí)應(yīng)該怎么辦?

4.解決方案

首先,經(jīng)試驗(yàn)發(fā)現(xiàn),設(shè)置的:hover在Android系統(tǒng)上點(diǎn)擊會(huì)出現(xiàn), 但是需要再次點(diǎn)擊才會(huì)消失;IOS系統(tǒng)上點(diǎn)擊無法出現(xiàn);

然后來看一下解決的方法...

手機(jī)雖然沒有鼠標(biāo),但是咱有觸摸事件??!

一開始觸摸事件是ios版Safari瀏覽器為了向開發(fā)人員傳達(dá)一些信息新添加的事件。 因?yàn)閕os設(shè)備既沒有鼠標(biāo)也沒有鍵盤,所以在為移動(dòng)Safari瀏覽器開發(fā)交互性網(wǎng)頁(yè)的時(shí)候, PC端的鼠標(biāo)和鍵盤事件是不夠用的。

在iPhone 3G發(fā)布的時(shí)候,其自帶的移動(dòng)Safari瀏覽器就提供了一些與觸摸(touch)操作相關(guān)的新事件。 隨后,Android上的瀏覽器也實(shí)現(xiàn)了相同的事件。觸摸事件(touch)會(huì)在用戶手指放在屏幕上面的時(shí)候、 在屏幕上滑動(dòng)的時(shí)候或者是從屏幕上移開的時(shí)候觸發(fā)。

1.touchstart事件:當(dāng)手指觸摸屏幕時(shí)候觸發(fā),即使已經(jīng)有一個(gè)手指放在屏幕上也會(huì)觸發(fā)。

2.touchmove事件:當(dāng)手指在屏幕上滑動(dòng)的時(shí)候連續(xù)地觸發(fā)。在這個(gè)事件發(fā)生期間, 調(diào)用preventDefault()事件可以阻止?jié)L動(dòng)。

3.touchend事件:當(dāng)手指從屏幕上離開的時(shí)候觸發(fā)。

4.touchcancel事件:touchcancel,是在拖動(dòng)中斷時(shí)候觸發(fā)。

(PS:主要的是前三個(gè)觸摸事件)

5.編碼實(shí)戰(zhàn)

document.addEventListener('touchstart', touch,false);

這行代碼的意思是,添加一個(gè)一個(gè)觸摸事件,

varevent = event || window.event;

聲明event=event或window.event,因?yàn)閣indow.event只在IE下是這樣的。他并不是標(biāo)準(zhǔn),其他瀏覽器并不支持.x寫在這里是為了兼容ie瀏覽器。

.getElementById("inp");

返回id為“imp”的第一個(gè)元素。


上面是觸摸后的手機(jī)端頁(yè)面,下面的數(shù)字是他的x和y的坐標(biāo)。touch事件的一個(gè)特點(diǎn)就是可以返回touch的位置信息,且touch可以在一個(gè)觸摸事件發(fā)生的同時(shí)進(jìn)行另一次或多次觸摸(這一點(diǎn)是touch相對(duì)hover的優(yōu)點(diǎn)),

上面這個(gè)例子太過簡(jiǎn)單,只介紹了touch事件在觸摸時(shí)的幾種事件,但是不能更好的演示touch事件是怎么具體應(yīng)用手機(jī)端,達(dá)到可以替代hover效果的。我自己又做了一點(diǎn)補(bǔ)充。

在我們?nèi)蝿?wù)七的基礎(chǔ)上,為了演示方便,我們注銷掉他原本的hover事件代碼


為了演示方便,我們注銷掉他原本的hover事件代碼

/*.main-content-part-role:hover .main-content-part-icon {*/

/*opacity: 1;*/

/*}*/

因?yàn)闉g覽器的問題,我們接下來使用jquery,給.main-content-part-icon(四個(gè)小圖標(biāo)的父元素)添加這個(gè)命令

($(".main-content-part-icon"));

$(".main-content-part-icon").css("opacity","1");

break;

這樣可以在手機(jī)端實(shí)現(xiàn)了類似于hover的效果。

6.擴(kuò)展思考

手機(jī)上除了觸摸事件,還有觸摸手勢(shì),怎么用呢?

可以利用插件來實(shí)現(xiàn),比如,jQuery里有手勢(shì)的插件, 移動(dòng)端的zepto庫(kù)也有手勢(shì)插件,還有QuoJS的手勢(shì)插件(不依賴任何庫(kù))。

7.參考文獻(xiàn)

參考一:Hover手機(jī)端的實(shí)現(xiàn)

參考二:touchstart和touchend事件

參考三:HTML5實(shí)戰(zhàn)與剖析之觸摸事件(touchstart、touchmove和touchend)

參考四:HTML5觸摸事件(touchstart、touchmove和touchend)

8.更多討論

現(xiàn)在用移動(dòng)設(shè)備的越來越多,

怎么讓寫的頁(yè)面更好的適應(yīng)移動(dòng)設(shè)備呢?

鳴謝

感謝大家觀看

BY : 萬維娜,楊綱

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容