Homework
Flexbox keyboard
Style this HTML keyboard using flexboxes.
Ensure the following:
the keys are square
the keys shrink as the width of the browser window is changed
the spacebar is long
the rows roughly line up with a real keyboard (e.g., the Q is leftmost, the A is slightly to the right, the Z is slightly more to the right)
Optional extensions (pick and choose your favourites):
style the keyboard to look like your keyboard
add in a number row
generate the key HTML dynamically using JavaScript
show your own custom keyboard layout
add in shift keys
make them work
highlight keys (e.g., make them green) which have not appeared in the output textarea yet
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Flexbox Keyboard</title>
<link rel="stylesheet" href="keyboard.css">
</head>
<body>
<textarea id="output"></textarea>
<div class="keyboard">
<div class="row" id="row-0">
<button class="key">q</button>
<button class="key">w</button>
<button class="key">e</button>
<button class="key">r</button>
<button class="key">t</button>
<button class="key">y</button>
<button class="key">u</button>
<button class="key">i</button>
<button class="key">o</button>
<button class="key">p</button>
</div>
<div class="row" id="row-1">
<button class="key">a</button>
<button class="key">s</button>
<button class="key">d</button>
<button class="key">f</button>
<button class="key">g</button>
<button class="key">h</button>
<button class="key">j</button>
<button class="key">k</button>
<button class="key">l</button>
</div>
<div class="row" id="row-2">
<button class="key">z</button>
<button class="key">x</button>
<button class="key">c</button>
<button class="key">v</button>
<button class="key">b</button>
<button class="key">n</button>
<button class="key">m</button>
</div>
<div class="row" id="row-3">
<button class="key">␡</button>
<button class="key" id="spacebar"> </button>
<button class="key">␡ all</button>
</div>
</div>
<script>
let output = document.getElementById('output');
let keys = document.getElementsByClassName('key');
for (let keyElement of keys) {
let key = keyElement.textContent;
keyElement.addEventListener('click', function() {
switch (key) {
case '␡':
output.textContent = output.textContent.slice(0, output.textContent.length-1);
break;
case '␡ all':
output.textContent = '';
break;
default:
output.textContent += key;
}
});
}
</script>
</body>
</html>
Last updated
Was this helpful?