国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - vue.js - vue實現一個獲取按鍵展示快捷鍵效果的Input組件

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

2021-12-31 16:22LnEoi vue.js

這篇文章主要介紹了vue如何實現一個獲取按鍵展示快捷鍵效果的Input組件,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下

遇到一個需求,頁面內要自定義快捷鍵,這就需要可以有地方設置和展示快捷鍵,找了一圈Element UI發現沒有能稍微改改就能用的組件,所以自己動手寫了一個。
這個只有快捷鍵展示功能,快捷鍵實際綁定生效的話是依賴傳回的快捷鍵數據,由另外的組件處理的。目前只測試了Chrome的環境。

效果如下:

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

關鍵點

雖然看起來像是一個Input但在組件內實際上是展示一個標簽效果,還需要有刪除按鈕。這就得在輸入框內放下html代碼,瀏覽器的Input組件顯然不適合,這就只能自己仿一個類Input組件效果了。

focus、blur、選中高亮效果

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

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

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

?
1
2
3
4
5
6
7
8
.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的動畫,就有光標閃動的效果了。

?
1
2
3
4
5
6
7
8
9
10
11
12
@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)等信息,所以做組合按鍵依賴此信息就可以實現。
因為每次按鍵都會觸發事件,所以要屏蔽掉功能鍵的事件。代碼只實現了一個非功能鍵的組合,需要多功能鍵可以另外建立變量判斷連續按鍵的情況然后處理。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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接口,可以限制每個組件的快捷鍵個數。

?
1
2
3
4
5
6
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);
}

在線預覽

https://codesandbox.io/s/vue-hotkeyinput-90m2k

以上就是vue實現一個獲取按鍵展示快捷鍵效果的Input組件的詳細內容,更多關于vue 展示快捷鍵的資料請關注服務器之家其它相關文章!

原文鏈接:https://segmentfault.com/a/1190000038955504

延伸 · 閱讀

精彩推薦
  • vue.js梳理一下vue中的生命周期

    梳理一下vue中的生命周期

    看過很多人講vue的生命周期,但總是被繞的云里霧里,尤其是自學的同學,可能js的基礎也不是太牢固,聽起來更是吃力,那我就已個人之淺見,以大白話...

    CRMEB技術團隊7992021-12-22
  • vue.jsVue項目中實現帶參跳轉功能

    Vue項目中實現帶參跳轉功能

    最近做了一個手機端系統,其中遇到了父頁面需要攜帶參數跳轉至子頁面的問題,現已解決,下面分享一下實現過程,感興趣的朋友一起看看吧...

    YiluRen丶4302022-03-03
  • vue.js詳解vue 表單綁定與組件

    詳解vue 表單綁定與組件

    這篇文章主要介紹了vue 表單綁定與組件的相關資料,幫助大家更好的理解和學習使用vue框架,感興趣的朋友可以了解下...

    Latteitcjz6432022-02-12
  • vue.js用vite搭建vue3應用的實現方法

    用vite搭建vue3應用的實現方法

    這篇文章主要介紹了用vite搭建vue3應用的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下...

    Asiter7912022-01-22
  • vue.jsVue多選列表組件深入詳解

    Vue多選列表組件深入詳解

    這篇文章主要介紹了Vue多選列表組件深入詳解,這個是vue的基本組件,有需要的同學可以研究下...

    yukiwu6752022-01-25
  • vue.jsVue2.x-使用防抖以及節流的示例

    Vue2.x-使用防抖以及節流的示例

    這篇文章主要介紹了Vue2.x-使用防抖以及節流的示例,幫助大家更好的理解和學習使用vue框架,感興趣的朋友可以了解下...

    Kyara6372022-01-25
  • vue.jsVue中引入svg圖標的兩種方式

    Vue中引入svg圖標的兩種方式

    這篇文章主要給大家介紹了關于Vue中引入svg圖標的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    十里不故夢10222021-12-31
  • vue.jsVue2.x 項目性能優化之代碼優化的實現

    Vue2.x 項目性能優化之代碼優化的實現

    這篇文章主要介紹了Vue2.x 項目性能優化之代碼優化的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋...

    優小U9632022-02-21
主站蜘蛛池模板: 亚洲综合射 | 开心久久婷婷综合中文字幕 | 午夜影晥 | 精品久久久久久亚洲精品 | 人人射人人舔 | 国产一区二区三区在线免费观看 | 亚洲国产网站 | 国产精品一区电影 | 国产精品久久久久久久久久三级 | 国产免费一区二区三区 | 欧美成年网站 | 日本一区二区三区视频免费看 | 国产精品久久久久精 | 亚洲午夜电影在线 | 色婷婷综合在线 | 欧美日韩一区二区三区不卡视频 | 中文字幕成人 | 久久久久久亚洲一区二区三区蜜臀 | 精品96久久久久久中文字幕无 | 日韩毛片| 国产视频亚洲 | 天天操人人干 | 久久久免费 | 夜色影院在线观看 | 午夜社区 | 韩日一区 | 成人综合视频网 | 亚洲一区在线观看视频 | 亚洲伊人久久综合 | 国产一级片 | 最色网 | 在线观看成人小视频 | 另类一区 | 亚洲午夜电影 | 中文字幕成人av | 不用播放器的av | 精品久久99 | 欧美精品一区二区三区四区 | 中文字幕在线观看免费 | 精品久久久久久久久久 | 亚洲精品无码专区在线播放 |