three实现三维长安城建筑沙盘展示代码
代码语言:html
所属分类:其他
代码由qwen-4 ai生成,可能有错误,仅供参考:点击查看提示词
代码描述: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" />
<title>长安 · 程序化建筑沙盘</title>
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin />
<style>
:root{
--ink:#151815;
--ink-2:#1d211c;
--ink-3:#262b24;
--paper:#ece7da;
--paper-dim:#b9b4a6;
--jade:#8fae9b;
--jade-deep:#4f6f60;
--cinnabar:#b4574a;
--bronze:#c2a061;
--line:rgba(236,231,218,.12);
--serif:"Songti SC","STSong","Noto Serif CJK SC","Source Han Serif SC",serif;
--sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden}
body{
font-family:var(--sans);
background:var(--ink);
color:var(--paper);
-webkit-font-smoothing:antialiased;
}
#app{
display:grid;
grid-template-columns:minmax(0,1fr) 324px;
height:100vh;
height:100dvh;
}
#stage{
position:relative;
min-width:0;
overflow:hidden;
background:
radial-gradient(120% 90% at 18% 8%, rgba(143,174,155,.16), transparent 55%),
radial-gradient(90% 80% at 85% 95%, rgba(194,160,97,.12), transparent 60%),
linear-gradient(160deg,#d9ddd3 0%,#c8cec2 48%,#b9c1b3 100%);
transition:background .8s ease;
}
body.night #stage{
background:
radial-gradient(110% 90% at 20% 0%, rgba(70,100,130,.22), transparent 55%),
radial-gradient(90% 80% at 80% 100%, rgba(194,160,97,.10), transparent 60%),
linear-gradient(160deg,#0d151d 0%,#101b24 55%,#0a1118 100%);
}
#c{position:absolute;inset:0;width:100%;height:100%;display:block;outline:none}
.grain{
position:absolute;inset:0;pointer-events:none;opacity:.05;mix-blend-mode:multiply;
background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E");
}
body.night .grain{mix-blend-mode:screen;opacity:.04}
.brand{
position:absolute;top:26px;left:30px;z-index:5;pointer-events:none;
display:flex;gap:16px;align-items:flex-start;
}
.seal{
width:46px;height:46px;flex:0 0 auto;border-radius:8px;
background:linear-gradient(145deg,#a44e40,#7e3328);
color:#f3e6cf;display:grid;place-items:center;
font-family:var(--serif);font-size:24px;font-weight:700;
box-shadow:0 6px 18px rgba(60,20,12,.28), inset 0 0 0 1px rgba(255,235,200,.25);
transform:rotate(-3deg);
}
.brand h1{
font-family:var(--serif);font-size:34px;line-height:1.05;letter-spacing:.14em;
color:#232a22;font-weight:700;
}
body.night .brand h1{color:#e8e2d2}
.brand .sub{margin-top:7px;font-size:11px;letter-spacing:.32em;color:#4c584c;text-transform:uppercase}
body.night .brand .sub{color:#93a09a}
.brand .meta{margin-top:4px;font-size:11px;color:#6b7568;letter-spacing:.08em}
body.night .brand .meta{color:#6f7d78}
.stage-top{
position:absolute;top:26px;right:24px;z-index:6;display:flex;gap:8px;align-items:center;
}
.chip{
border:1px solid rgba(35,42,34,.18);background:rgba(240,238,228,.62);
backdrop-filter:blur(8px);color:#333d32;border-radius:999px;
font-size:11px;letter-spacing:.06em;padding:7px 12px;cursor:pointer;
transition:all .2s ease;font-family:var(--sans);
}
.chip:hover{background:rgba(240,238,228,.92);transform:translateY(-1px)}
.chip.active{background:#33402f;color:#ece7da;border-color:#33402f}
body.night .chip{background:rgba(18,26,32,.62);color:#cfd6cf;border-color:rgba(207,214,207,.18)}
body.night .chip:hover{background:rgba(30,42,50,.9)}
body.night .chip.active{background:#c2a061;color:#1a160e;border-color:#c2a061}
.badge{
display:flex;align-items:center;gap:7px;font-size:10px;letter-spacing:.18em;
color:#4c584c;padding:7px 11px;border-radius:999px;
background:rgba(240,238,228,.5);border:1px solid rgba(35,42,34,.14);
}
body.night .badge{color:#9fb0a8;background:rgba(18,26,32,.5);border-color:rgba(207,214,207,.14)}
.dot{width:6px;height:6px;border-radius:50%;background:#5f8f6a;box-shadow:0 0 0 3px rgba(95,143,106,.18);animation:pulse 2.4s infinite}
body.night .dot{background:#c2a061;box-shadow:0 0 0 3px rgba(194,160,97,.18)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.45}}
.hint{
position:absolute;left:30px;bottom:22px;z-index:5;font-size:11px;letter-spacing:.14em;
color:#525e51;pointer-events:none;
}
body.night .hint{color:#7d8b85}
.hint b{font-weight:600;color:#333d32}
body.night .hint b{color:#cfd6cf}
.compass{
position:absolute;right:24px;bottom:20px;z-index:5;width:58px;height:58px;pointer-events:none;
opacity:.85;
}
.stats{
position:absolute;right:92px;bottom:32px;z-index:5;font-size:10px;letter-spacing:.1em;
color:#5c685b;font-variant-numeric:tabular-nums;pointer-events:none;text-align:right;
}
body.night .stats{color:#77857f}
#info{
position:absolute;left:30px;bottom:56px;z-index:6;width:270px;
background:rgba(22,26,22,.86);backdrop-filter:blur(12px);
border:1px solid rgba(236,231,218,.14);border-radius:12px;
padding:16px 16px 14px;color:var(--paper);
box-shadow:0 18px 40px rgba(10,14,10,.28);
transform:translateY(0);opacity:1;transition:opacity .3s ease,transform .3s ease;
}
#info.hidden{opacity:0;transform:translateY(12px);pointer-events:none}
#info .k{font-size:9px;letter-spacing:.3em;color:var(--bronze);text-transform:uppercase}
#info h2{font-family:var(--serif);font-size:24px;letter-spacing:.1em;margin:6px 0 2px;font-weight:700}
#info .loc{font-size:11px;color:var(--jade);letter-spacing:.08em;margin-bottom:9px}
#info p{font-size:11.5px;line-height:1.7;color:#c9c4b6}
#info .tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}
#info .tag{font-size:9.5px;letter-spacing:.06em;padding:4px 8px;border-radius:999px;border:1px solid rgba(143,174,155,.35);color:var(--jade)}
#info .close{
position:absolute;top:10px;right:10px;width:22px;height:22px;border-radius:6px;border:none;
background:rgba(236,231,218,.08);color:#b9b4a6;cursor:pointer;font-size:13px;line-height:1;
}
#info .close:hover{background:rgba(236,231,218,.18);color:#fff}
#loading{
position:absolute;inset:0;z-index:20;display:grid;place-items:center;
background:linear-gradient(160deg,#d9ddd3,#bfc7b9);transition:opacity .6s ease;
}
body.night #loading{background:linear-gradient(160deg,#0d151d,#0a1118)}
#loading.done{opacity:0;pointer-events:none}
.load-box{text-align:center;color:#3a4538}
body.night .load-box{color:#cfd6cf}
.load-ring{
width:44px;height:44px;margin:0 auto 16px;border-radius:50%;
border:2px solid rgba(58,69,56,.18);border-top-color:#7e3328;animation:spin 1s linear infinite;
}
body.night .load-ring{border-color:rgba(207,214,207,.15);border-top-color:#c2a061}
@keyframes spin{to{transform:rotate(360deg)}}
.load-box .t{font-family:var(--serif);font-size:18px;letter-spacing:.3em}
.load-box .s{margin-top:8px;font-size:10px;letter-spacing:.24em;opacity:.6}
#panel{
background:linear-gradient(180deg,var(--ink-2),var(--ink));
border-left:1px solid var(--line);
display:flex;flex-direction:column;min-height:0;z-index:10;
}
.panel-head{
padding:22px 20px 16px;border-bottom:1px solid var(--line);
display:flex;align-items:baseline;justify-content:space-between;
}
.panel-head .title{font-family:var(--serif);font-size:19px;letter-spacing:.2em}
.panel-head .live{font-size:9px;letter-spacing:.24em;color:var(--jade);display:flex;align-items:center;gap:6px}
.panel-head .live::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--jade);box-shadow:0 0 8px var(--jade)}
#gui{
flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:10px 12px 14px;
scrollbar-width:thin;scrollbar-color:var(--jade-deep) var(--ink-2);
}
#gui::-webkit-scrollbar{width:8px}
#gui::-webkit-scrollbar-track{background:var(--ink-2);border-radius:8px}
#gui::-webkit-scrollbar-thumb{background:var(--jade-deep);border-radius:8px;border:2px solid var(--ink-2)}
#gui::-webkit-scrollbar-thumb:hover{background:var(--jade)}
.lil-gui{
--background-color:transparent;
--title-background-color:transparent;
--widget-color:#2c322a;
--hover-color:#353d32;
--focus-color:#3d4a3a;
--text-color:#ddd8ca;
--title-text-color:#ece7da;
--number-color:#a8c4ae;
--string-color:#d3b57c;
--font-size:11px;
--input-font-size:11px;
--font-family:var(--sans);
--padding:7px;
--spacing:9px;
--widget-height:22px;
--name-width:46%;
--slider-knob-width:3px;
--slider-input-width:27%;
--color-input-width:27%;
width:100%!important;
border-radius:0;
}
.lil-gui.root>.title{display:none}
.lil-gui .controller{bo.........完整代码请登录后点击上方下载按钮下载查看















网友评论0