Custom Element´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù.
JavascriptÀÇ Class ŸÀÔÀ» ÀÌ¿ëÇؼ new·Î »ý¼º ÇÒ°ÍÀÌ´Ù.
JavascriptÀÇ Class ŸÀÔ°ú ÅÛÇø´ ¹®ÀÚ¿À» »ç¿ëÇؼ UI¸¦ ¸ðµâÈ Çغ¸ÀÚ.
1.ÅÛÇø´ ¹®ÀÚ¿ º¯¼ö¸¦ Çì´õ¿Í Body¿¡ Ãß°¡
ÅÛÇø´ ¹®ÀÚ¿¿¡ CSS, HTMLÀÇ ³»¿ëÀ» Ãß°¡ÇÑÈÄ °¢°¢ Çì´õ¿Í Body¿¡ Ãß°¡ÇÑ´Ù.
½ºÅ¸ÀÏÀ» Çì´õ¿¡ Ãß°¡
virtualKeyboardStyle ÅÛÇø´ ¹®ÀÚ¿À» writeStyle ÇÔ¼ö·Î Çì´õ¿¡ Ãß°¡ÇÑ´Ù.
const virtualKeyboardStyle = `
html, body {
overflow: hidden;
}
.virtual-keyboard {
position: absolute;
display: block;
left: 0px;
top: 100%;
width: 100%;
height: 100%;
background-color: rgb(33, 47, 61);
margin: 0px;
padding: 0px;
transition: top 2s ease .5s;
}
.virtual-keyboard-move {
top: 0px;
}
`;
function writeStyle(styleNameId, cssText) {
var styleElement = document.getElementById(styleNameId);
if (styleElement)
document.getElementsByTagName('head')[0].removeChild(styleElement);
styleElement = document.createElement('style');
styleElement.type = 'text/css';
styleElement.id = styleNameId;
styleElement.innerHTML = cssText;
document.getElementsByTagName('head')[0].appendChild(styleElement);
}
writeStyle('virtualKeyboard_Style', virtualKeyboardStyle);
body¿¡ HTML Ãß°¡
const virtualKeyboardHtml = `
<div class="virtual-keyboard" id="Virtual_Keyboard"></div>
`;
function writeBodyHTML(htmlCode) {
document.body.innerHTML = document.body.innerHTML + htmlCode;
}
writeBodyHTML(virtualKeyboardHtml);
body¿¡ HTMLÀ» Ãß°¡ÇÒ¶§´Â ±âÁ¸ ³»¿ëÀ» À¯ÁöÇϱâ À§ÇØ ¾Æ·¡¿Í °°ÀÌ ÇÑ´Ù.
document.body.innerHTML = document.body.innerHTML + htmlCode;
¿¤¸®¸ÕÆ®¿¡ HTML Ãß°¡
ºÎ¸ð HTML
<div id='Test_Id'>aaaaaaaaaaaaaaaaaaaaaaaa</div>
repalce °ªÀÌ trueÀÌ¸é ±âÁ¸ immerHTML ³»¿ë ´ëÄ¡
repalce °ªÀÌ falseÀÌ¸é ±âÁ¸ immerHTML ³»¿ë À¯Áö
const virtualKeyboardHtml = `
<div class="virtual-keyboard" id="Virtual_Keyboard"></div>
`;
function writeHTML(elementName, htmlCode, replace) {
let element = document.getElementById(elementName);
if(element) {
if(replace)
element.innerHTML = htmlCode;
else
element.innerHTML = element.innerHTML + htmlCode;
};
}
replace°¡ trueÀ϶§ writeHTML('Test_Id', virtualKeyboardHtml, true);
°á°ú)
<div id="Test_Id">
<div class="virtual-keyboard" id="Virtual_Keyboard">
</div>
</div>
replace°¡ falseÀ϶§ writeHTML('Test_Id', virtualKeyboardHtml, false) ;
°á°ú)
<div id="Test_Id">aaaaaaaaaaaaaaaaaaaaaaaa
<div class="virtual-keyboard" id="Virtual_Keyboard">/div>
</div>
2. Ŭ·¡½º¸¦ ¸¸µéÀÚ
¿ì¸®°¡ ¸¸µé Ŭ·¡½ºÀÇ ±â´ÉÀ» Á¤ÇÏÀÚ.
¿£ÅÍÅ°¸¦ Ä¡¸é ȸéÀÌ À§·Î ¿Ã¶ó¿Â´Ù. ´Ù½Ã ¿£ÅÍÅ°¸¦ Ä¡¸é ȸéÀÌ ³»·Á°£´Ù.
Ŭ·¡½ºÀÇ ÇÔ¼ö¸¦ ½ÇÇà ¼ø¼´ë·Î µû¶ó °¡¸é¼ ¼³¸íÇÑ´Ù.
»ý¼ºÀÚ ÃʱâÈ
»ý¼ºÀÚ¿¡¼ °¢Á¾ Ãʱâȸ¦ ÇÑ´Ù.
this.element : ÀÚÁÖ »ç¿ëµÇ´Â ¿ä¼ÒµéÀÇ °ªÀ» ÀúÀåÇϱâ À§ÇÑ ÇÁ·ÎÆÛƼ °´Ã¼ÀÌ´Ù.
this.build( ) ÇÔ¼ö : ¼±Çà ½ÇÇàµÇ¾î¾ß ÇÒ°ÍÀ» ½ÇÇàÇÑ´Ù.
this.activate : È°¼ºÈ ºñÈ°¼ºÈ »óŸ¦ ³ªÅ¸³½´Ù.
class VirtualKeyboard {
constructor(){
this.element = {};
this.build();
this.activate = false;
}
}
VirtualKeyboard ¸Þ¼Òµå ¼³¸í
build ÇÔ¼ö:
- writeStyle ÇÔ¼ö: ½ºÅ¸ÀÏÀ» Çì´õ¿¡ Ãß°¡ÇÑ´Ù.
- writeBodyHTML ÇÔ¼ö: HTMLÀ» body¿¡ Ãß°¡ÇÑ´Ù.
- this.element¿¡ ÀÚÁÖ »ç¿ëµÇ´Â ¿ä¼ÒµéÀ» ¹Ì¸® ÀúÀåÇÑ´Ù.
- transitionend À̺¥Æ®: Æ®·£Áö¼Ç ¾Ö´Ï¸ÞÀ̼ÇÀÌ ³¡³µÀ»¶§ À̺¥Æ®¸¦ µî·ÏÇÑ´Ù.
"transitionend" À̺¥Æ®¸¦ µî·ÏÇÒ¶§ this ¹ÙÀεùÀ» ÇØ¾ß endMoveUpWindow ÇÔ¼ö¿¡¼ thisÀÇ °ªÀÌ VirtualKeyboardÀÇ ÀνºÅϽº°¡ µÈ´Ù.
el.addEventListener("transitionend", this.endMoveUpWindow.bind(this));
build() {
writeStyle('virtualKeyboard_Style', virtualKeyboardStyle);
writeBodyHTML(virtualKeyboardHtml);
this.element.virtualKeyboard = document.getElementById("Virtual_Keyboard");
let el = this.element.virtualKeyboard;
el.addEventListener("transitionend",
this.endMoveUpWindow.bind(this));
}
endMoveUpWindow ÇÔ¼ö:
- "virtual-keyboard-move" Ŭ·¡½º°¡ Ãß°¡ µÇ¾î ¾Ö´Ï¸ÞÀÌ¼Ç ÇÒ¶§ÀÌ´Ù.
- ¾Ö´Ï¸ÞÀ̼ÇÀÌ ³¡³ª¸é activate Ç÷¡±×¸¦ true·Î ¼³Á¤ÇÑ´Ù.
endMoveUpWindow() {
var el = this.element.virtualKeyboard;
if(el.classList.contains('virtual-keyboard-move')) {
this.activate = true;
}
}
isActivate ÇÔ¼ö:
- activate Ç÷¡±× °ªÀ» ¹ÝȯÇÑ.
isActivate() {
return this.activate;
}
moveUpWindow ÇÔ¼ö:
- "virtual-keyboard-move" Ŭ·¡½º°¡ ÀÖÀ¸¸é Æ®·£Áö¼Ç ¾Ö´Ï¸ÞÀ̼ÇÀÌ ½ÃÀ۵ȴÙ.
- "virtual-keyboard-move" Ŭ·¡½º¸¦ Ãß°¡ÇÑ´Ù.
moveUpWindow() {
var el = this.element.virtualKeyboard;
el.classList.add('virtual-keyboard-move');
}
moveDownWindow ÇÔ¼ö:
- ¿ä¼Ò°¡ È¸é ¾Æ·¡·Î ³»·Á °¥¶§ activate °ªÀ» false·Î ¼³Á¤ÇÑ´Ù.
- "virtual-keyboard-move" Á¦°Å ÇÒ ¶§ ¾Ö´Ï¸ÞÀ̼ÇÀÌ ¿ª ¹æÇâÀ¸·Î ÀÚµ¿À¸·Î ½ÇÇàµÈ´Ù.
- "virtual-keyboard-move" Ŭ·¡½º¸¦ Á¦°ÅÇÑ´Ù.
moveDownWindow() {
this.activate = false;
var el = this.element.virtualKeyboard;
el.classList.remove('virtual-keyboard-move');
}
onKeyDown ÇÔ¼ö:
Å°º¸µå À̺¥Æ®¸¦ ó¸®ÇÏ´Â ÇÔ¼öÀÌ´Ù.
¿£ÅÍÅ°(13)¸¦ ´©¸£¸é moveDownWindow ÇÔ¼ö·Î ȸéÀ» ½ºÅ©·Ñ ÇÑ´Ù.
onKeyDown(e) {
if(e.keyCode === 13) {
this.moveDownWindow();
return true;
}
return false;
}
HTML¿¡¼ script:
- VirtualKeyboard °´Ã¼¸¦ new·Î »ý¼º ÇÑ´Ù.
- Å°º¸µå À̺¥Æ®¸¦ VirtualKeyboard Ŭ·¡½ºÀÇ onKeyDown¿¡ Àü´ÞÇÑ´Ù.
- VirtualKeyboard°¡ ºñÈ°¼ºÈ »óÅÂÀ̸é ȸéÀ» À§·Î ½ºÅ©·Ñ ÇÑ´Ù.
<script>
let virtualKeyboard = new VirtualKeyboard();
document.addEventListener("keydown", onKeyDown);
function onKeyDown(e) {
if(virtualKeyboard.isActivate()) {
virtualKeyboard.onKeyDown(e);
return;
}
else if(e.keyCode === 13)
virtualKeyboard.moveUpWindow();
}
</script>
Å×½ºÆ® ÆÄÀÏ :
vkeyboard_test.html
vkeyboard.js
|