91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用vue怎么實現一個獲取按鍵展示快捷鍵效果的Input組件

發布時間:2021-01-13 14:19:37 來源:億速云 閱讀:282 作者:Leah 欄目:開發技術

利用vue怎么實現一個獲取按鍵展示快捷鍵效果的Input組件?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

focus、blur、選中高亮效果

非Input這類組件是沒有focus、blur、選中高亮效果這些效果的,還好瀏覽器有預留實現方式,網上也早已有網友提供方案,在div里加上tabindex="0"屬性,就能讓div獲得這些效果。

tabindex屬性規定了Tab按鍵的順序,寫0的話是會按組件默認順序被選中的,如果寫-1則始終無法被選中。因為本身是仿Input組件形式,能被Tab獲取也剛好很合理。

然后加上CSS的獲取焦點的邊框效果、鼠標移動到此顯示文本類型指針

.shortcut-key-input {
 cursor: text;
 transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
}
.shortcut-key-input:focus {
 border-color: #188cff;
 box-shadow: 0 0 4px rgba(24, 140, 255, 0.38);
}

文本提示

當沒有內容時需要跟Input一樣,可以默認顯示文本提示。這也是放一個div在里面,用Vue控制,如果輸出的標簽變量有數據時,就不讓此元素顯示。

光標閃動效果

這個比較好處理,在類Input里面放一個偽元素,當獲取焦點的時候添加此偽元素,然后再給此元素一個CSS3的動畫,就有光標閃動的效果了。

@keyframes Blink {
 0% { opacity: 0; }
 100% { opacity: 1; }
}
.shortcut-key-input.cursor::after {
 content: "|";
 animation: Blink 1.2s ease 0s infinite;
 font-size: 18px;
 position: absolute;
 top: 1px;
 left: 8px;
}

按鍵捕獲

按鍵捕獲主要靠keydown事件,其中傳回的event里會標記是否按下alt、ctrl(control)等信息,所以做組合按鍵依賴此信息就可以實現。
因為每次按鍵都會觸發事件,所以要屏蔽掉功能鍵的事件。代碼只實現了一個非功能鍵的組合,需要多功能鍵可以另外建立變量判斷連續按鍵的情況然后處理。

  handleKeydown(e) {
   const { altKey, ctrlKey, shiftKey, key, code } = e;
   if (!CODE_CONTROL.includes(key)) {
    if (!this.keyRange.includes(code)) return;
    let controlKey = "";
    [
     { key: altKey, text: "Alt" },
     { key: ctrlKey, text: "Ctrl" },
     { key: shiftKey, text: "Shift" }
    ].forEach(curKey => {
     if (curKey.key) {
      if (controlKey) controlKey += "+";
      controlKey += curKey.text;
     }
    });
    if (key) {
     if (controlKey) controlKey += "+";
     controlKey += key.toUpperCase();
    }
    this.addHotkey({ text: controlKey, controlKey: { altKey, ctrlKey, shiftKey, key, code } });
   }
   e.preventDefault();
  },

CODE_CONTROL是另外預設的按鍵code碼集合,方便處理。本來用的是keyCode的,但keyCode已經被廢棄了,推薦的是code。
addHotkey就是添加到相應變量的函數,其中主要出判斷一下是否有重復的快捷鍵。
然后預留了一個外部驗證的接口,為了多快捷鍵的時候可以判斷是否有重復。
還有一個max接口,可以限制每個組件的快捷鍵個數。

  addHotkey(data) {
   if (this.list.length && this.list.some(item => data.text === item.text)) return;
   if (this.list.length && this.list.length.toString() === this.max.toString()) return;
   if (!this.verify(data)) return;
   this.list.push(data);
  }

看完上述內容,你們掌握利用vue怎么實現一個獲取按鍵展示快捷鍵效果的Input組件的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

收藏| 绵竹市| 秦安县| 盐山县| 永修县| 兴国县| 金堂县| 郁南县| 武陟县| 永泰县| 四子王旗| 梓潼县| 长泰县| 呼和浩特市| 永新县| 石嘴山市| 石泉县| 勃利县| 湾仔区| 北票市| 镇平县| 望城县| 博客| 治多县| 辽宁省| 阳信县| 永川市| 博客| 平塘县| 余干县| 大石桥市| 龙胜| 江油市| 扎鲁特旗| 襄垣县| 扶风县| 金川县| 伊川县| 崇信县| 上饶市| 墨竹工卡县|