three实现三维山脊模拟骑行看日出代码
代码语言:html
所属分类:三维
代码描述:three实现三维山脊模拟骑行看日出代码,控制自行车马路骑行看风景,有天气系统和白天黑夜切换。
代码标签: three 三维 山脊 模拟 骑行 看 日出 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>山脊环线 · 盘山骑行 — Alpine Switchback Loop</title>
<link href="https://fonts.googleapis.com/css2?family=Ma+Shan+Zheng&family=Noto+Sans+SC:wght@400;500;700&family=Rajdhani:wght@500;600;700&display=swap" rel="stylesheet">
<style>
:root{
--acc:#ffb36b;
--ink:#eef2f6;
--panel:rgba(10,15,24,.62);
--line:rgba(255,255,255,.13);
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{width:100%;height:100%;overflow:hidden;background:#0a0f1a}
body{font-family:'Noto Sans SC',sans-serif;color:var(--ink);-webkit-user-select:none;user-select:none}
canvas{display:block}
#scene{position:fixed;inset:0;cursor:grab}
#scene.drag{cursor:grabbing}
#vig{position:fixed;inset:0;pointer-events:none;z-index:5;
background:radial-gradient(ellipse at 50% 42%,transparent 55%,rgba(4,7,14,.42) 100%);}
#flash{position:fixed;inset:0;pointer-events:none;z-index:6;background:#eaf2ff;opacity:0}
.panel{position:fixed;z-index:10;background:var(--panel);
border:1px solid var(--line);border-radius:12px;
box-shadow:0 10px 34px rgba(0,0,0,.38), inset 0 1px 0 rgba(255,255,255,.07);
backdrop-filter:blur(6px)}
.panel::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;
border-radius:3px;background:var(--acc);opacity:.9;transition:background .6s}
#brand{top:18px;left:18px;padding:14px 20px 13px 22px;max-width:340px}
#brand .tag{font-size:10px;letter-spacing:.34em;color:rgba(238,242,246,.55);font-weight:500}
#brand h1{font-family:'Ma Shan Zheng',cursive;font-weight:400;font-size:38px;line-height:1.05;
margin:2px 0 1px;text-shadow:0 2px 14px rgba(0,0,0,.5)}
#brand h1 em{font-style:normal;color:var(--acc);transition:color .6s}
#clockrow{display:flex;align-items:baseline;gap:12px;margin-top:6px}
#clock{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:34px;letter-spacing:.04em;
font-variant-numeric:tabular-nums;line-height:1}
#dateTxt{font-size:11px;color:rgba(238,242,246,.6)}
#chips{display:flex;gap:8px;margin-top:9px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;
padding:4px 11px;border-radius:999px;border:1px solid var(--line);
background:rgba(255,255,255,.06)}
.chip b{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:14px}
#rideChip{border-color:var(--acc);box-shadow:0 0 12px -3px var(--acc)}
#nav{top:18px;right:18px;padding:10px 14px 8px;text-align:center}
#compass{display:block}
#camLabel{font-size:11px;letter-spacing:.22em;color:rgba(238,242,246,.62);margin-top:2px}
#computer{bottom:18px;left:18px;padding:14px 22px 15px;min-width:252px}
#speedrow{display:flex;align-items:center;gap:10px}
#pbar{position:relative;width:7px;height:54px;border-radius:4px;
background:rgba(255,255,255,.08);overflow:hidden;flex:none}
#pbar i{position:absolute;left:0;width:100%;height:50%;transform:scaleY(0);transition:transform .1s linear}
#pbar .pu{top:0;background:linear-gradient(180deg,#86e29b,var(--acc));transform-origin:50% 100%}
#pbar .pd{bottom:0;background:linear-gradient(0deg,#ff8a7a,#c0392b);transform-origin:50% 0%}
#pbar::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:rgba(255,255,255,.45)}
#speed{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:58px;line-height:.9;
font-variant-numeric:tabular-nums;letter-spacing:.01em;transition:color .2s,text-shadow .2s}
#speed.pedal{color:#9ff0ae;text-shadow:0 0 20px rgba(110,230,140,.4)}
#speed.brake{color:#ff9d92;text-shadow:0 0 20px rgba(255,110,90,.45)}
#speedrow .unit{font-size:12px;color:rgba(238,242,246,.55);letter-spacing:.14em}
#grade{margin-left:auto;font-family:'Rajdhani',sans-serif;font-weight:700;font-size:22px;
padding:2px 9px;border-radius:8px;background:rgba(255,255,255,.07)}
#grade.up{color:#8fe3a4}#grade.down{color:#8fc7ff}
#pushHint{margin-top:8px;font-size:12px;font-weight:700;letter-spacing:.24em;color:var(--acc);
opacity:0;transition:opacity .3s;animation:pulse 1.5s ease-in-out infinite}
#stats{display:grid;grid-template-columns:repeat(3,auto);gap:4px 22px;margin-top:10px;
border-top:1px dashed rgba(255,255,255,.14);padding-top:9px}
.st .k{font-size:10px;letter-spacing:.2em;color:rgba(238,242,246,.5)}
.st .v{font-family:'Rajdhani',sans-serif;font-weight:600;font-size:19px;font-variant-numeric:tabular-nums}
.st .v small{font-size:10px;color:rgba(238,242,246,.5);margin-left:2px}
#ctrl{bottom:18px;right:18px;padding:12px 14px 13px;width:296px}
#elev{display:block;width:100%;margin-bottom:9px}
.row{display:flex;align-items:center;gap:6px;margin-top:7px;flex-wrap:wrap}
.row .lab{font-size:10px;letter-spacing:.24em;color:rgba(238,242,246,.5);width:34px}
.btn{font-family:'Noto Sans SC',sans-serif;font-size:12px;font-weight:500;color:var(--ink);
background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:8px;
padding:5px 10px;cursor:pointer;transition:all .18s ease;line-height:1.2}
.btn:hover{transform:translateY(-1px);border-color:var(--acc);background:rgba(255,255,255,.11)}
.btn.on{background:var(--acc);border-color:var(--acc);color:#10151f;font-weight:700;
box-shadow:0 0 14px -2px var(--acc)}
.btn.wide{flex:1}
.mini{font-size:10px;letter-spacing:.08em;color:rgba(238,242,246,.45);margin-left:auto}
#hint{position:fixed;z-index:10;bottom:20px;left:50%;transform:translateX(-50%);
font-size:11px;letter-spacing:.16em;color:rgba(238,242,246,.5);white-space:nowrap}
#hint kbd{font-family:'Rajdhani',sans-serif;border:1px solid var(--line);border-bottom-width:2px;
border-radius:4px;padding:0 5px;margin:0 2px;background:rgba(255,255,255,.07)}
#toast{position:fixed;z-index:20;top:24px;left:50%;transform:translate(-50%,-16px);
padding:9px 22px;border-radius:999px;font-size:14px;font-weight:500;letter-spacing:.12em;
background:rgba(10,15,24,.78);border:1px solid var(--acc);color:var(--ink);
opacity:0;p.........完整代码请登录后点击上方下载按钮下载查看















网友评论0