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"/>
<title>瑞王府 · 三维府邸</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Ma+Shan+Zheng&family=Noto+Serif+SC:wght@400;600;900&display=swap" rel="stylesheet">
<style>
:root{ --gold:#caa25a; --gold-hi:#f0d491; }
*{ box-sizing:border-box; }
html,body{ margin:0; height:100%; overflow:hidden; background:#0a0c14;
font-family:'Noto Serif SC',serif; -webkit-font-smoothing:antialiased; }
#app{ position:fixed; inset:0; }
#app canvas{ display:block; }
#plaque{ position:fixed; top:22px; left:22px; z-index:20; writing-mode:vertical-rl;
font-family:'Ma Shan Zheng',serif; font-size:40px; letter-spacing:12px; color:var(--gold-hi);
background:linear-gradient(160deg,#8a2417,#571209); padding:20px 11px 34px;
border:2px solid var(--gold); border-radius:4px; text-shadow:0 2px 8px #000c;
box-shadow:0 10px 34px #000a, inset 0 0 0 2px #00000055; animation:drop .9s ease .15s both; }
#plaque::after{ content:'瑞'; position:absolute; bottom:8px; left:50%; transform:translateX(-50%);
writing-mode:horizontal-tb; font-size:12px; line-height:18px; width:20px; height:20px; text-align:center;
color:var(--gold-hi); border:1.5px solid var(--gold); border-radius:2px; letter-spacing:0; opacity:.9; }
#plaque-sub{ position:fixed; top:24px; left:88px; z-index:20; writing-mode:vertical-rl;
font-size:12px; letter-spacing:5px; color:#d8c290; background:#14100cd0; border:1px solid #8a6d3b66;
padding:10px 6px; border-radius:3px; animation:drop .9s ease .35s both; }
@keyframes drop{ from{ opacity:0; transform:translateY(-14px);} to{ opacity:1; transform:none;} }
#status-chip{ position:fixed; top:22px; right:22px; z-index:20; min-width:92px; text-align:center;
background:#14100cd9; border:1px solid #8a6d3b; border-radius:4px; padding:8px 14px 9px;
animation:drop .9s ease .5s both; }
#chip-shichen{ font-family:'Ma Shan Zheng',serif; font-size:30px; color:var(--gold-hi); line-height:1.15; }
#chip-detail{ font-size:11px; letter-spacing:2px; color:#bda87e; margin-top:2px; }
#panel{ position:fixed; left:22px; bottom:22px; z-index:20; width:322px; user-select:none;
background:linear-gradient(180deg,#1a1410f2,#0e0b08f4); border:1px solid #8a6d3b; border-radius:6px;
padding:14px 16px 12px; color:#e8dcc0; box-shadow:0 14px 44px #000b;
animation:rise .8s ease .55s both; }
#panel::before{ content:''; position:absolute; top:0; left:12px; right:12px; height:2px;
background:linear-gradient(90deg,transparent,var(--gold),transparent); }
@keyframes rise{ from{ opacity:0; transform:translateY(18px);} to{ opacity:1; transform:none;} }
.sec{ margin-bottom:12px; } .sec:last-child{ margin-bottom:2px; }
.sec h3{ margin:0 0 8px; font-size:12px; font-weight:600; letter-spacing:7px; color:var(--gold);
display:flex; align-items:center; gap:10px; }
.sec h3::after{ content:''; flex:1; height:1px; background:linear-gradient(90deg,#8a6d3b,transparent); }
.row{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.btn{ background:#241c14; color:#e8d5a8; border:1px solid #7a5f33; border-radius:3px; cursor:pointer;
padding:6px 11px; font-size:13px; letter-spacing:2px; font-family:inherit;
transition:transform .2s, background .25s, border-color .25s, box-shadow .25s; }
.btn:hover{ background:#3a2c1a; border-color:var(--gold); transform:translateY(-1px); box-shadow:0 5px 14px #0009; }
.btn.active{ background:linear-gradient(180deg,#cfa850,#96702c); color:#1c1206; border-color:#e6c87e; font-weight:600; }
#time-display{ font-family:'Ma Shan Zheng',serif; font-size:22px; color:var(--gold-hi); width:62px; text-align:center; }
#time-slider{ flex:1; -webkit-appearance:none; appearance:none; height:4px; border-radius:2px; outline:none;
background:linear-gradient(90deg,#3a2c1a,var(--gold)); cursor:pointer; }
#time-slider::-webkit-slider-thumb{ -webkit-appearance:none; width:15px; height:15px; border-radius:50%;
background:radial-gradient(circle at 35% 35%,#f4dfa6,#a37c33); border:1px solid #5c451d; box-shadow:0 2px 6px #000a; }
.tip{ font-size:11px; color:#9c8a66; letter-spacing:1px; margin-top:7px; }
#hint{ position:fixed; right:22px; bottom:22px; z-index:20; text-align:right; font-size:12px;
letter-spacing:2px; line-height:2; color:#cbb98e99; }
#tooltip{ position:fixed; z-index:30; display:none; pointer-events:none; white-space:nowrap;
background:#1a140ef2; color:var(--gold-hi); border:1px solid var(--gold); border-radius:3px;
padding:4px 11px; font-size:13px; letter-spacing:3px; transform:translate(-50%,-160%); }
#flash{ position:fixed; inset:0; z-index:25; background:#eaf2ff; opacity:0; pointer-events:none; }
#vignette{ position:fixed; inset:0; z-index:5; pointer-events:none;
background:radial-gradient(ellipse at center, transparent 55%, #00000059 100%); }
#walk-hint{ position:fixed; left:50%; bottom:26px; z-index:22; transform:translateX(-50%) translateY(14px);
background:#14100ce8; border:1px solid var(--gold); color:#e8d5a8; padding:9px 24px; border-radius:4px;
font-size:13px; letter-spacing:2px; white-space:nowrap; opacity:0; pointer-events:none;
transition:opacity .4s ease, transform .4s ease; }
#walk-hint.show{ opacity:1; transform:translateX(-50%); }
#walk-hint b{ color:var(--gold-hi); font-weight:600; }
#door-toast{ position:fixed; left:50%; bottom:88px; z-index:22; transform:translateX(-50%);
background:#3a1712f0; border:1px solid #d08a4a; color:#f3d795; padding:7px 20px; border-radius:4px;
font-size:13px; letter-spacing:3px; opacity:0; pointer-events:none; transition:opacity .35s; }
#door-toast.show{ opacity:1; }
#intro{ position:fixed; inset:0; z-index:50; display:flex; flex-direction:column; align-items:center;
justify-content:center; transition:opacity 1.2s ease, visibility 1.2s;
background:radial-gradient(1100px 640px at 50% 42%, #241a12d9, #0b0805f5 78%); }
#intro.hidden{ opacity:0; visibility:hidden; }
#intro .frame{ display:flex; align-items:center; gap:26px; }
#intro .rule{ width:110px; height:1px; background:linear-gradient(90deg,transparent,var(--gold)); }
#intro .rule.r{ background:linear-gradient(90deg,var(--gold),transparent); }
#intro h1{ margin:0; font-family:'Ma Shan Zheng',serif; font-size:104px; font-weight:400;
letter-spacing:26px; color:var(--gold-hi); text-shadow:0 4px 26px #000, 0 0 70px #c9862f55; }
#intro .line{ margin:20px 0 44px; font-size:15px; letter-spacing:11px; color:#c8b285; }
#enter{ font-family:'Ma Shan Zheng',serif; font-size:27px; letter-spacing:14px; color:var(--gold-hi);
background:linear-gradient(160deg,#8a2417,#571209); border:2px solid var(--gold); border-radius:4px;
padding:13px 34px 13px 48px; cursor:pointer; box-shadow:0 12px 44px #000b;
transition:transform .3s, box-shadow .3s; }
#enter:hover{ transform:translateY(-3px) scale(1.02);
box-shadow:0 18px 54px #000d, 0 0 34px #c9862f4d; }
#intro .note{ margin-top:28px; font-size:12px; letter-spacing:3px; color:#9c8a66; }
@media (max-width:760px){
#plaque{ font-size:26px; letter-spacing:8px; padding:14px 8px 28px; }
#plaque-sub,#.........完整代码请登录后点击上方下载按钮下载查看















网友评论0