利用JavaScript實現(xiàn)創(chuàng)建虛擬鍵盤的示例代碼
前言

項目基本結(jié)構(gòu)
目錄結(jié)構(gòu)如下:

這是一個簡單的 JavaScript 教程,教你如何創(chuàng)建JavaScript 虛擬鍵盤。虛擬鍵盤是一種屏幕輸入法,如果你使用的是 Windows 操作系統(tǒng),我相信你應(yīng)該也使用過 Windows 中的默認(rèn)虛擬鍵盤。
首先,我創(chuàng)建了一個可以看到輸入字符的結(jié)果框,也就是我們可以在其中看到所有信息的顯示器。此虛擬鍵盤上還有另一個包含許多按鈕的框。包括有許多字母按鈕、一個空格和一個退格。
這個現(xiàn)代 Javascript 虛擬鍵盤非常容易創(chuàng)建。但是為此,你需要對 HTML、CSS 和 javascript 有一個基本的了解。
JavaScript 虛擬鍵盤的顯示
現(xiàn)在我已經(jīng)創(chuàng)建了顯示,這個 javascript 數(shù)字小鍵盤的顯示寬度是 500px。由于這里使用了Neumorphism 設(shè)計,因此在顯示器周圍使用了陰影。
HTML
<p id="ip"></p>
CSS
*{
padding: 0;
margin: 0;
box-sizing: border-box;
}
body{
background-color: rgb(26, 26, 26);
font-family: sans-serif;
}
#ip{
width: 500px;
min-height: 30px;
box-shadow: -3px -3px 5px rgb(63, 63, 63) , 3px 3px 5px black;
text-align: center;
color: white;
letter-spacing: 1px;
position: absolute;
top: 165px;
left: 50%;
margin: -50px auto;
transform:translateX(-50%) ;
font-size: 18px;
text-transform: capitalize;
}
顯示效果

虛擬鍵盤的按鈕
現(xiàn)在必須將所有按鈕添加到虛擬鍵盤。在這里,我根據(jù)我的要求添加了一些按鈕。
<div class="keybord">
<div class="row row1">
<button>Q</button>
<button>W</button>
<button>E</button>
<button>R</button>
<button>T</button>
<button>Y</button>
<button>U</button>
<button>I</button>
<button>O</button>
<button>P</button>
</div>
<div class="row row2">
<button>A</button>
<button>S</button>
<button>D</button>
<button>F</button>
<button>G</button>
<button>H</button>
<button>J</button>
<button>K</button>
<button>L</button>
</div>
<div class="row row3">
<button>Z</button>
<button>X</button>
<button>C</button>
<button>V</button>
<button>B</button>
<button>N</button>
<button>M</button>
</div>
<div class="row row4">
<div class="space" id="space">space</div>
<div class="backspace" id="backspace">Backspace</div>
</div>
</div>
顯示效果

CSS的鍵盤按鈕設(shè)計
首先,按鈕的背景被賦予一個盒子的形狀寬度:680 像素,每個按鈕的寬度:50px,高度:50 像素.
CSS
.keybord{
box-shadow: -3px -3px 5px rgb(63, 63, 63) , 3px 3px 5px black;
width: 680px;
margin:200px auto 50px;
display: flex;
flex-direction: column;
align-items: center;
padding:20px 20px;
border-radius: 10px;
}
.row{
margin:5px ;
user-select: none;
}
button{
width: 50px;
height: 50px;
font-weight: bold;
margin: 0 4px;
border: none;
background-color: transparent;
color:white;
box-shadow: -2px -2px 4px rgb(63, 63, 63) , 2px 2px 4px black;
border-radius: 5px;
cursor: pointer;
}
顯示效果

該 javascript 移動鍵盤 中尚未設(shè)計空格和退格按鈕。我使用以下 CSS 設(shè)計了這些按鈕。
.row4 , .backspace , .space{
display: flex;
align-items: center;
justify-content: center;
}
.keybord .backspace , .space{
color: white;
font-weight: bold;
cursor: pointer;
/* user-select: none; */
}
.backspace , .space{
border-radius: 5px;
box-shadow: -2px -2px 4px rgb(63, 63, 63) , 2px 2px 4px black;
}
.keybord .space{
width: 300px;
height: 50px;
}
.keybord .backspace {
width: 100px;
height: 50px;
margin-left: 15px;
}

下面的 CSS 已將 onclick 效果添加到按鈕中。也就是說,當(dāng)您單擊按鈕時,按鈕會發(fā)生變化。
CSS
.keybord .active{
box-shadow:inset -2px -2px 4px rgb(63, 63, 63) ,
inset 2px 2px 4px black;
color: yellow;
}
使用 JavaScript 激活虛擬鍵盤
創(chuàng)建了上面的屏幕虛擬鍵盤的設(shè)計,但是它還沒有生效。首先我們確定一些 HTML 元素的常量。正如我們所知,我們不能直接在 JavaScript 中使用任何 HTML 元素。
在實現(xiàn)這個虛擬鍵盤 HTML 和 CSS 之前,讓我來給大家一些信息。我們將以三種方式激活這些按鈕。這意味著這個虛擬鍵盤可以通過鼠標(biāo)、外接鍵盤和觸摸三種方式進(jìn)行控制。
let button = document.getElementsByTagName('button')
let p = document.getElementById('ip');
let space =document.getElementById('space')
let Backspace = document.getElementById('backspace')
我已安排使用下面的 JavaScript 使用外部鍵盤激活此虛擬鍵盤。這使您可以使用計算機(jī)的鍵盤來控制這個 javascript 虛擬鍵盤。
document.body.addEventListener('keydown' , function(index){
for (let i=0 ; i <button.length ; i++) {
//UpperCase() 方法返回轉(zhuǎn)換為大寫的字符串的值
if(button[i].innerHTML==index.key.toUpperCase()){
button[i].classList.add('active')
};
}
//innerHTML 屬性是文檔對象模型的一部分
p.innerHTML+=index.key
if(index.key=='Backspace'){
p.innerHTML=p.innerHTML.slice(0 , -10)
}
})
document.body.addEventListener('keyup' , function(index){
for(let j=0 ; j<button.length ; j++){
if(button[j].innerHTML == index.key.toUpperCase()){
button[j].classList.remove('active')
}
}
})
現(xiàn)在您必須用鼠標(biāo)執(zhí)行按鈕。這意味著您可以使用鼠標(biāo)手動單擊這些按鈕,并且可以在信息結(jié)果框中找到該按鈕。
for(let x of button){
//當(dāng)用戶按下鼠標(biāo)按鈕時發(fā)生 MouseDown
x.addEventListener('mousedown' , function(){
x.className='active'
p.innerHTML+=x.innerHTML
})
}
//MouseUp 在用戶釋放鼠標(biāo)按鈕時發(fā)生
for(let y of button){
y.addEventListener('mouseup' , function(){
y.className=''
})
}
space.addEventListener('mousedown',function(){
space.classList.add('active')
p.innerHTML+=" "
})
space.addEventListener('mouseup',function(){
space.classList.remove('active')
})
function back(){
Backspace.className+=' active'
p.innerHTML=p.innerHTML.slice(0 , -1)
}
//onmousedown 屬性在元素上按下鼠標(biāo)按鈕時觸發(fā)
Backspace.onmousedown=back
//當(dāng)用戶在元素上釋放鼠標(biāo)按鈕時發(fā)生 onmouseup 事件
Backspace.onmouseup=function(){
Backspace.classList.remove('active')
}
現(xiàn)在是時候為觸摸屏實現(xiàn)這個簡單的虛擬鍵盤了。這使您可以通過移動設(shè)備控制此數(shù)字鍵盤。
for(let x of button){
//touchstart 事件在用戶觸摸元素時發(fā)生
x.addEventListener('touchstart' , function(){
x.className='active'
})
}
for(let y of button){
//當(dāng)用戶將手指從元素上移開時發(fā)生 touchend 事件
y.addEventListener('touchend' , function(){
space.classList.remove('active')
})
}
space.addEventListener('touchstart',function(){
space.classList.add('active')
})
space.addEventListener('touchend',function(){
space.classList.remove('active')
})
Backspace.addEventListener('touchstart',function(){
Backspace.className+=' active'
})
Backspace.addEventListener('touchend',function(){
Backspace.classList.remove('active')
})
上面我們以三種方式激活了這個虛擬屏幕鍵盤。請評論您如何喜歡這個虛擬鍵盤組件??梢栽谖哪┑南螺d按鈕獲取 JavaScript 虛擬鍵盤的源碼。

以上就是利用JavaScript實現(xiàn)創(chuàng)建虛擬鍵盤的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于JavaScript虛擬鍵盤的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Javascript實現(xiàn)文件實時加載進(jìn)度的方法
不知道大家有沒有發(fā)現(xiàn)在現(xiàn)在的移動頁面上,有很多情況需要加載大量的資源。但是移動端的訪問速度和pc還是有很大的差距,有些時候需要一些取巧的方式來提升用戶體驗,而實時顯示加載進(jìn)度就是其中一種。這篇文章就給大家分享了Javascript實現(xiàn)文件實時加載進(jìn)度的方法。2016-10-10
js 獲取json數(shù)組里面數(shù)組的長度實例
下面小編就為大家?guī)硪黄猨s 獲取json數(shù)組里面數(shù)組的長度實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10
如何用uni-app實現(xiàn)頂部導(dǎo)航欄顯示按鈕和搜索框
本文介紹了如何用uni-app實現(xiàn)頂部導(dǎo)航欄顯示按鈕和搜索框,感興趣的同學(xué),可以參考下,并且試驗一下。2021-06-06

