a:active加動畫點擊無效的解決方案
我們常常會遇到一個問題,a:active加動畫點擊無效,今天給大家看一下我的程式碼以及的解決方案,順便給大家分享一個如何不記錄url跳轉歷史的方法。
a標籤:active加動畫點擊無效
我的css程式碼如下:
.haorooms{ -webkit-animation: jpyd 1.5s cubic-bezier(0,.98,.44,1) both; animation: jpyd 1.5s cubic-bezier(0,.98,.44,1) both;} .haorooms:active{ -webkit-animation: zoomOuts 1s ; animation: zoomOuts 1s; }
html程式碼如下:
<a class="haorooms delay3 " href="/jingpin/" ></a>
蘋果手機中,a標籤點選無效。經查驗,a標籤並沒有遮擋,這是什麼原因?如何解決?
造成這種情況的原因是active有個1秒鐘的動畫,假如你長按按鈕,也是沒有辦法跳轉的。
a標籤:active加動畫點擊無效解決方案
其實這個解決方案是蠻多的,因為我們是在手機中展現,期望效果是在動畫播放結束之後跳轉,我們可以加入ontouchend事件,touchend之後跳到某個地址。
ontouchend="window.location.href='/jingpin/'"
加了這個之後,不管是長按,還是點擊,按結束之後,都是可以跳到指定位址的。
頁面跳轉歷史返回中不記錄
關於儲存瀏覽歷史,我之前文章中有提及過:SPA單頁web應用的一些簡介以及ajax無刷新頁面切換,歷史記錄後退前進解決方案
我們可以透過
history.replaceState history.pushState(state, title, url)
對瀏覽器歷史進行操作。
但是實際情況中,也有我們無需記錄瀏覽歷史的情況,例如“一個頁面中有2個tab切換標籤,tab切換是修改了瀏覽器地址”,tab切換是預設記錄到歷史的。因此我們點擊返回按鈕的時候,不停的在2個tab中切換,但是,實際我們是想回到上一頁的,不是在2個tab中切換。那麼這種情況該如何解決呢?
這個我們想到了
location.replace(newURL)
#replace() 方法不會在 History 物件中產生一個新的記錄。當使用該方法時,新的 URL 將覆寫 History 物件中的目前記錄。
因此程式碼我們可以如下寫:
<ul id="haorooms"> <li><a href="http://www.haorooms.com/archives">标签一</a></li> <li><a href="http://www.haorooms.com/tools/index">标签二</a></li> </ul> $('#haorooms li a').on('click', function (event) { //tab中a标签点击 event.preventDefault(); location.replace(this.href); })
上面程式碼在某些手機中傳回無效,因此方案失敗!
history.replaceState()和location.replace()方法
上面方法失敗了,我就得轉換思路了,看到張鑫旭大神前段時間也有一個類似的案例解決方案,因此我借鏡了一下!
解決方案如下:
$('#haorooms li a').on('click', function (event) { event.preventDefault(); history.replaceState(null, document.title, this.href.split('#')[0] + '#'); location.replace(''); })
首先透過HTML5 history.replaceState()方法把目前URL位址替換成以個井號#結尾的目前連結位址;
#執行location.replace('')刷新目前位址(此時#會忽略);
透過這個方案,我們再怎麼切換tab,點擊返回之後,照常回到進入頁面的前一頁。不會再在tab中切換了!
因為history.replaceState從IE10才開始支持,假如要相容於更早的瀏覽器,或在PC端使用。看到張大神也封裝了一個函數,這裡我借用一下:
var fnUrlReplace = function (eleLink) { if (!eleLink) { return; } var href = eleLink.href; if (href && /^#|javasc/.test(href) === false) { if (history.replaceState) { history.replaceState(null, document.title, href.split('#')[0] + '#'); location.replace(''); } else { location.replace(href); } } };
上面函數可以如下應用
$('#haorooms li a').on('click', function (event) { if (event && event.preventDefault) { event.preventDefault(); } fnUrlReplace(this); return false; })
相信看了這些案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
相關閱讀:
#以上是a:active加動畫點擊無效的解決方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Win11是微軟推出的最新作業系統,相較於先前的版本,Win11在介面設計和使用者體驗上有了很大的提升。然而,一些用戶反映他們在安裝Win11後遇到了無法安裝中文語言套件的問題,這就給他們在系統中使用中文帶來了困擾。本文將針對Win11無法安裝中文語言套件的問題提供一些解決方案,幫助使用者順利使用中文。首先,我們要明白為什麼無法安裝中文語言包。一般來說,Win11

scipy庫安裝失敗的原因及解決方案,需要具體程式碼範例在進行Python科學計算時,scipy是一個非常常用的函式庫,它提供了許多用於數值計算、最佳化、統計和訊號處理的功能。然而,在安裝scipy庫時,有時會遇到一些問題,導致安裝失敗。本文將探討scipy庫安裝失敗的主要原因,並提供對應的解決方案。安裝依賴套件失敗scipy庫依賴一些其他的Python庫,例如nu

標題:解決Oracle字元集修改造成亂碼問題的有效方案在Oracle資料庫中,當字元集被修改後,往往會因為資料中存在不相容的字元而導致亂碼問題的出現。為了解決這個問題,我們需要採取一些有效的方案來處理。本文將介紹一些解決Oracle字元集修改引起亂碼問題的具體方案和程式碼範例。一、匯出資料並重新設定字元集首先,我們可以透過使用expdp指令將資料庫中的資料匯出

OracleNVL函數常見問題及解決方案Oracle資料庫是廣泛使用的關係型資料庫系統,在資料處理過程中經常需要處理空值的情況。為了因應空值所帶來的問題,Oracle提供了NVL函數來處理空值。本文將介紹NVL函數的常見問題及解決方案,並提供具體的程式碼範例。問題一:NVL函式用法不當NVL函式的基本語法為:NVL(expr1,default_value)其

PyCharm是一款功能強大的Python整合開發環境,廣受開發者喜愛。然而,有時候我們在使用PyCharm時可能會遇到金鑰失效的問題,導致無法正常使用軟體。本文將為大家揭秘PyCharm密鑰失效的解決方案,並提供具體的程式碼範例,幫助讀者快速解決這個問題。在開始解決問題之前,我們首先要了解密鑰失效的原因。 PyCharm的金鑰失效通常是由於網路問題或軟體本身

C++中機器學習演算法面臨的常見挑戰包括記憶體管理、多執行緒、效能最佳化和可維護性。解決方案包括使用智慧指標、現代線程庫、SIMD指令和第三方庫,並遵循程式碼風格指南和使用自動化工具。實作案例展示如何利用Eigen函式庫實現線性迴歸演算法,有效地管理記憶體和使用高效能矩陣操作。

MySQL安裝中文亂碼的常見原因及解決方案MySQL是一種常用的關係型資料庫管理系統,但在使用過程中可能會遇到中文亂碼的問題,這給開發者和系統管理員帶來了困擾。中文亂碼問題的出現主要是因為字元集設定不正確、資料庫伺服器和客戶端字元集不一致等原因導致的。本文將詳細介紹MySQL安裝中文亂碼的常見原因及解決方案,幫助大家更能解決這個問題。一、常見原因:字元集設

無法正常啟動0xc000007b怎麼解決在使用電腦時,我們有時會遇到各種錯誤代碼,其中最常見的之一就是0xc000007b。當我們嘗試運行某些應用程式或遊戲時,突然出現這個錯誤代碼,使我們無法正常啟動。那麼,我們該如何解決這個問題呢?首先,我們要先了解錯誤代碼0xc000007b的意思。這個錯誤代碼通常指示一個或多個關鍵的系統檔案或庫檔案缺失、損壞或不
