整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          javascript實(shí)現(xiàn)的提示浮層跟隨鼠標(biāo)移動(dòng)

          些網(wǎng)站要實(shí)現(xiàn)一些彈層效果,經(jīng)常會(huì)有鼠標(biāo)跟著移動(dòng)彈層也隨之移動(dòng)的特效,下面來說說這種效果的實(shí)現(xiàn)方法!

          實(shí)現(xiàn)的效果:

          下面來看看代碼:

          html:

          css:

          js:

          門的HTML - tabindex 的作用

          HTML 的 tabindex 屬性開發(fā)過程中一般不會(huì)使用到,最近開發(fā)中有個(gè)需求兼顧富交互,便總結(jié)了一下。本篇文章同時(shí)收錄在我的【前端知識(shí)點(diǎn)】中,Github鏈接請(qǐng)點(diǎn)擊閱讀原文直達(dá),歡迎 Star

          兼容性:Safari不支持!

          閱讀本文您將收獲

          • tabindex的作用
          • tabindex的使用
          • 如何利用 tabindex 創(chuàng)造更好的用戶體驗(yàn)

          前言

          在我們?nèi)粘J褂镁W(wǎng)頁的過程中,可以通過鍵盤控制一些元素的聚焦,從而達(dá)到便捷訪問的目的

          element 分為 focusable 和 非focusable ,如果使用了tabindex就可以改變相關(guān)的行為

          在HTML中有6個(gè)元素默認(rèn)支持聚焦:

          • 帶 href 屬性的 <a> 標(biāo)簽
          • 帶 href 屬性的 <link> 標(biāo)簽
          • <button></button> 標(biāo)簽
          • <input /> 標(biāo)簽 (排除帶有 type="hidden" 屬性的)
          • <select></select> 標(biāo)簽
          • <textarea></textarea> 標(biāo)簽

          以上的元素默認(rèn)都可以使用 Tab 鍵,以及 JS focus() 方法聚焦

          document.querySelector("a").focus();

          使用 tab鍵 進(jìn)行聚焦元素時(shí),聚焦的順序等于元素在代碼中的出現(xiàn)先后順序,當(dāng)我們進(jìn)行富交互優(yōu)化時(shí),就需要用到 tabindex 這個(gè)屬性來幫助我們進(jìn)行更好用戶體驗(yàn)的優(yōu)化了

          tabindex的作用

          ①元素是否能聚焦:通過鍵盤這類輸入設(shè)備,或者通過 JS focus() 方法

          ②元素什么時(shí)候能聚焦:在用戶通過鍵盤與頁面交互時(shí)

          通俗來說:就是當(dāng)用戶使用鍵盤時(shí),tabindex用來定位html元素,即使用tab鍵時(shí)焦點(diǎn)的順序。

          tabindex的范圍

          tabindex理論上可以使用在幾乎所有元素上

          • tabindex 理論上可以用在幾乎所有元素上,不管這個(gè)元素默認(rèn)是否支持聚焦

          tabindex 有三個(gè)值:0,-N(通常是-1),N(正值)

          • tabindex=0,該元素可以用tab鍵獲取焦點(diǎn)
            • 且訪問的順序是按照元素在文檔中的順序來focus,即使采用了浮動(dòng)改變了頁面中顯示的順序,依然是按照html文檔中的順序來定位
          • tabindex<=-1,該元素用tab鍵獲取不到焦點(diǎn),但是可以通過js獲取
            • 這樣就便于我們通過js設(shè)置上下左右鍵的響應(yīng)事件來focus
            • 取值 -1~-999 之間沒有區(qū)別,但為了可讀性和一致性考慮,推薦使用 -1
          • tabindex>=1,該元素可以用tab鍵獲取焦點(diǎn),而且優(yōu)先級(jí)大于tabindex=0
            • 不過在tabindex>=1時(shí),數(shù)字越小,越先定位到;
            • 如果多個(gè)元素?fù)碛邢嗤?tabindex ,他們的相對(duì)順序按照他們?cè)诋?dāng)前DOM中的先后順序決定

          tabindex的使用

          tabindex 決定聚焦順序

          • 可聚焦元素中,正整數(shù)數(shù)值越大,順序越往后,正整數(shù)數(shù)值的節(jié)點(diǎn)順序比0值的節(jié)點(diǎn)靠前
          • 代碼:
          // HTML
          <button type="button" tabindex="1">tabindex === 1</button>
          <button type="button" tabindex="999">tabindex === 999</button>
          <button type="button" tabindex="0">tabindex === 0</button>
          • 效果:
          • 可聚焦元素中,相同 tabindex 數(shù)值的節(jié)點(diǎn),根據(jù) DOM節(jié)點(diǎn) 先后順序決定聚焦順序
          • 代碼:
          // HTML
          <button type="button" tabindex="0">tabindex === 0</button>
          <button type="button" tabindex="1">tabindex === 1</button>
          <button type="button" tabindex="999">tabindex === 999</button>
          <button type="button" tabindex="0">tabindex === 0</button>
          • 效果:

          tabindex 決定是否聚焦

          • 節(jié)點(diǎn)的 tabindex 設(shè)置為 -1 時(shí),當(dāng)前節(jié)點(diǎn)使用 tab鍵 不能聚焦
          • 代碼:
          // HTML
          <button type="button">未設(shè)置tabindex</button>
          <button type="button" tabindex="-1">tabindex === -1</button>
          <button type="button" tabindex="0">tabindex === 0</button>
          <button type="button" tabindex="1">tabindex === 1</button>
          • 效果:

          tabindex 與JS編程聚焦

          • 通過 tabindex 結(jié)合JS可以讓默認(rèn)不支持聚焦的節(jié)點(diǎn)進(jìn)行聚焦,tabindex 為不超出范圍的任何整數(shù)值都可以
          • 代碼:
          // HTML
          <button type="button" @click="clickBtn()">點(diǎn)擊讓DIV聚焦</button>
          <div id="FocusDiv" ref="FocusDiv" tabindex="-1">這是一個(gè)div</div>
          
          // JS
          clickBtn: function() {
              document.getElementById('FocusDiv').focus();
          }
          • 效果:

          如何利用 tabindex 創(chuàng)造更好的用戶體驗(yàn)

          針對(duì)自定義標(biāo)簽進(jìn)行富交互優(yōu)化

          • 我們?cè)趧?chuàng)建一個(gè)自定義的標(biāo)簽時(shí),如果默認(rèn)行為中不包含聚焦事件,我們可以使用 tabindex 為它增加聚焦功能,從而可以像很多可聚焦節(jié)點(diǎn)一樣進(jìn)行順次焦點(diǎn)聚焦了

          針對(duì)特定節(jié)點(diǎn)禁止聚焦操作

          • 某些浮層及上層節(jié)點(diǎn),如 toast組件、模態(tài)框、側(cè)邊彈出信息等,我們不希望節(jié)點(diǎn)被用戶聚焦捕獲,可以將節(jié)點(diǎn)的 tabindex 設(shè)置為 -1,就能避免這一問題

          復(fù)雜列表控制聚焦順序

          • 一些復(fù)雜的樹形結(jié)構(gòu)或者列式結(jié)構(gòu),如果需要用戶操作順序按照我們預(yù)想的書序進(jìn)行聚焦,可以利用tabindex 值的大小來進(jìn)行處理。

          現(xiàn)效果:

          <script src="https://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>

          實(shí)現(xiàn)代碼:


          主站蜘蛛池模板: 色精品一区二区三区| 无码一区二区三区AV免费| 亚洲一区二区影院| 3d动漫精品一区视频在线观看 | 视频一区二区精品的福利| 国产人妖视频一区二区| 亚洲AⅤ无码一区二区三区在线| 亚洲综合av一区二区三区| 亚洲乱码一区av春药高潮| 久久中文字幕一区二区| 综合久久一区二区三区| 精品少妇一区二区三区在线 | 亚洲欧洲一区二区| 国产成人无码AV一区二区在线观看 | 日本一道高清一区二区三区| 色偷偷久久一区二区三区| 无码人妻精品一区二区三区99仓本| 久久精品一区二区影院 | 色窝窝无码一区二区三区| 伊人色综合一区二区三区 | 久久免费区一区二区三波多野| 久久久久人妻一区精品果冻| 一级毛片完整版免费播放一区| 成人毛片一区二区| 在线一区二区三区| 无码av不卡一区二区三区| av在线亚洲欧洲日产一区二区| 亚洲毛片不卡av在线播放一区| 日韩一区二区在线观看| 久久精品国产一区二区三区不卡| 亚洲国产一区二区三区| 日本一区二区三区高清| 久久久精品人妻一区二区三区 | 亚洲国产情侣一区二区三区| 精品熟人妻一区二区三区四区不卡| 亚洲国产美女福利直播秀一区二区| 亚洲国产高清在线精品一区| 韩国精品一区视频在线播放| 美女视频黄a视频全免费网站一区 美女免费视频一区二区 | 国模大胆一区二区三区| 亚洲午夜精品第一区二区8050|