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

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

该文本描述了一个动态键盘的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>
复制全文 生成海报 网页设计 前端开发 交互设计

推荐文章

JS中 `sleep` 方法的实现
2024-11-19 08:10:32 +0800 CST
PHP 代码功能与使用说明
2024-11-18 23:08:44 +0800 CST
pip安装到指定目录上
2024-11-17 16:17:25 +0800 CST
在 Rust 生产项目中存储数据
2024-11-19 02:35:11 +0800 CST
MySQL设置和开启慢查询
2024-11-19 03:09:43 +0800 CST
`Blob` 与 `File` 的关系
2025-05-11 23:45:58 +0800 CST
Nginx 状态监控与日志分析
2024-11-19 09:36:18 +0800 CST
Python Invoke:强大的自动化任务库
2024-11-18 14:05:40 +0800 CST
robots.txt 的写法及用法
2024-11-19 01:44:21 +0800 CST
宝塔面板 Nginx 服务管理命令
2024-11-18 17:26:26 +0800 CST
MyLib5,一个Python中非常有用的库
2024-11-18 12:50:13 +0800 CST
H5抖音商城小黄车购物系统
2024-11-19 08:04:29 +0800 CST
Go配置镜像源代理
2024-11-19 09:10:35 +0800 CST
Nginx 如何防止 DDoS 攻击
2024-11-18 21:51:48 +0800 CST
php微信文章推广管理系统
2024-11-19 00:50:36 +0800 CST
在JavaScript中实现队列
2024-11-19 01:38:36 +0800 CST
Vue3中如何实现国际化(i18n)?
2024-11-19 06:35:21 +0800 CST
FastAPI 入门指南
2024-11-19 08:51:54 +0800 CST
Manticore Search:高性能的搜索引擎
2024-11-19 03:43:32 +0800 CST
程序员茄子在线接单