代码 动态键盘的HTML页面,包含CSS样式和JavaScript代码

2024-11-18 18:19:31 +0800 CST views 419

该文本描述了一个动态键盘的HTML页面,包含CSS样式和JavaScript代码。页面展示了一个可交互的键盘,用户可以通过键盘输入来触发动画效果。JavaScript部分处理键盘事件,随机选择一个键并在用户按下时进行动画反馈。整体设计旨在提供一个有趣的用户体验。

!<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title></title>
 </head>
 <style>
  body{background-color:black;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;display:flex;flex-direction:column;justify-content:center;align-items:center;height:100vh;}.title{color:mintcream;text-transform:uppercase;margin-top:3em;margin-bottom:3em;font-size:1em;letter-spacing:0.3em;}.keyboard{display:flex;flex-direction:column;}.row{list-style:none;display:flex;}li{height:3em;width:3em;color:rgba(0,0,0,0.7);border-radius:0.4em;line-height:3em;letter-spacing:1px;margin:0.4em;transition:0.3s;text-align:center;font-size:1em;}#tab{width:5em;}#caps{width:6em;}#left-shift{width:8em;}#enter{width:6em;}#right-shift{width:8em;}#back{width:5em;}.pinky{background-color:crimson;border:2px solid crimson;}.pinky.selected{color:crimson;}.ring{background-color:coral;border:2px solid coral;}.ring.selected{color:coral;}.middle{background-color:darkorange;border:2px solid darkorange;}.middle.selected{color:darkorange;}.pointer1st{background-color:gold;border:2px solid gold;}.pointer1st.selected{color:gold;}.pointer2nd{background-color:khaki;border:2px solid khaki;}.pointer2nd.selected{color:khaki;}.fill-out-key{background-color:slategrey;border:2px solid slategrey;}.selected{background-color:transparent;-webkit-animation:vibrate-1 0.3s linear infinite both;animation:vibrate-1 0.3s linear infinite both;}.hit{-webkit-animation:hit 0.3s cubic-bezier(0.390,0.575,0.565,1.000) both;animation:hit 0.3s cubic-bezier(0.390,0.575,0.565,1.000) both;}@-webkit-keyframes hit{0%{-webkit-transform:scale(1.2);transform:scale(1.2);}100%{-webkit-transform:scale(1);transform:scale(1);}}@keyframes hit{0%{-webkit-transform:scale(1.2);transform:scale(1.2);}100%{-webkit-transform:scale(1);transform:scale(1);}}@-webkit-keyframes vibrate-1{0%{-webkit-transform:translate(0);transform:translate(0);}20%{-webkit-transform:translate(-2px,2px);transform:translate(-2px,2px);}40%{-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px);}60%{-webkit-transform:translate(2px,2px);transform:translate(2px,2px);}80%{-webkit-transform:translate(2px,-2px);transform:translate(2px,-2px);}100%{-webkit-transform:translate(0);transform:translate(0);}}@keyframes vibrate-1{0%{-webkit-transform:translate(0);transform:translate(0);}20%{-webkit-transform:translate(-2px,2px);transform:translate(-2px,2px);}40%{-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px);}60%{-webkit-transform:translate(2px,2px);transform:translate(2px,2px);}80%{-webkit-transform:translate(2px,-2px);transform:translate(2px,-2px);}100%{-webkit-transform:translate(0);transform:translate(0);}}
 </style>
 <body>
  <h1 class=title>会跳动的键盘</h1><div class=keyboard><ul class="row row-0"><li class=pinky id=esc>ESC<li class=pinky id=1>1<li class=ring id=2>2<li class=middle id=3>3<li class=pointer1st id=4>4<li class=pointer2nd id=5>5<li class=pointer2nd id=6>6<li class=pointer1st id=7>7<li class=middle id=8>8<li class=ring id=9>9<li class=pinky id=10>0<li class=pinky>-<li class=pinky>+<li class=pinky id=back>BACK</ul><ul class="row row-1"><li class=pinky id=tab>TAB<li class=pinky id=Q>Q<li class=ring id=W>W<li class=middle id=E>E<li class=pointer1st id=R>R<li class=pointer2nd id=T>T<li class=pointer2nd id=Y>Y<li class=pointer1st id=U>U<li class=middle id=I>I<li class=ring id=O>O<li class=pinky id=P>P<li class=pinky>[<li class=pinky>]<li class=pinky>\</ul><ul class="row row-2"><li class=pinky id=caps>CAPS<li class=pinky id=A>A<li class=ring id=S>S<li class=middle id=D>D<li class=pointer1st id=F>F<li class=pointer2nd id=G>G<li class=pointer2nd id=H>H<li class=pointer1st id=J>J<li class=middle id=K>K<li class=ring id=L>L<li class=pinky>:<li class=pinky>''<li class=pinky id=enter>ENTER</ul><ul class="row row-3"><li class=pinky id=left-shift>SHIFT<li class=pinky id=Z>Z<li class=ring id=X>X<li class=middle id=C>C<li class=pointer1st id=V>V<li class=pointer2nd id=B>B<li class=pointer2nd id=N>N<li class=pointer1st id=M>M<li class=middle>,<li class=ring>.<li class=pinky>;<li class=pinky id=right-shift>SHIFT</ul></div><h1 class=title>点击键盘上对应的字母按键</h1>
  <script>
   const keys = [..."ABCDEFGHIJKLMNOPQRSTUVWXYZ"]; const timestamps = []; timestamps.unshift(getTimestamp()); function getRandomNumber(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1)) + min; } function getRandomKey() { return keys[getRandomNumber(0, keys.length-1)] }; function targetRandomKey() { const key = document.getElementById(getRandomKey()); key.classList.add("selected"); let start = Date.now() } function getTimestamp() { return Math.floor(Date.now() / 1000) } document.addEventListener("keyup", event => { const keyPressed = String.fromCharCode(event.keyCode); const keyElement = document.getElementById(keyPressed); const highlightedKey = document.querySelector(".selected"); keyElement.classList.add("hit"); keyElement.addEventListener('animationend', () => { keyElement.classList.remove("hit") }); if (keyPressed === highlightedKey.innerHTML) { timestamps.unshift(getTimestamp()); const elapsedTime = timestamps[0] - timestamps[1]; highlightedKey.classList.remove("selected"); targetRandomKey(); } }); targetRandomKey();
  </script>
 </body>
</html>
复制全文 生成海报 网页设计 前端开发 交互设计

推荐文章

PHP 微信红包算法
2024-11-17 22:45:34 +0800 CST
Vue 3 中的 Watch 实现及最佳实践
2024-11-18 22:18:40 +0800 CST
2025年,小程序开发到底多少钱?
2025-01-20 10:59:05 +0800 CST
html流光登陆页面
2024-11-18 15:36:18 +0800 CST
SQL常用优化的技巧
2024-11-18 15:56:06 +0800 CST
18个实用的 JavaScript 函数
2024-11-17 18:10:35 +0800 CST
JavaScript 实现访问本地文件夹
2024-11-18 23:12:47 +0800 CST
纯CSS实现3D云动画效果
2024-11-18 18:48:05 +0800 CST
在 Vue 3 中如何创建和使用插件?
2024-11-18 13:42:12 +0800 CST
Vue 3 路由守卫详解与实战
2024-11-17 04:39:17 +0800 CST
2024年微信小程序开发价格概览
2024-11-19 06:40:52 +0800 CST
Vue3中如何处理WebSocket通信?
2024-11-19 09:50:58 +0800 CST
Vue3中的组件通信方式有哪些?
2024-11-17 04:17:57 +0800 CST
Rust开发笔记 | Rust的交互式Shell
2024-11-18 19:55:44 +0800 CST
Vue3的虚拟DOM是如何提高性能的?
2024-11-18 22:12:20 +0800 CST
使用xshell上传和下载文件
2024-11-18 12:55:11 +0800 CST
#免密码登录服务器
2024-11-19 04:29:52 +0800 CST
Go语言中的mysql数据库操作指南
2024-11-19 03:00:22 +0800 CST
页面不存在404
2024-11-19 02:13:01 +0800 CST
程序员茄子在线接单