three打造混凝土高楼林立的城市效果代码
代码语言:html
所属分类:三维
代码描述:three打造混凝土高楼林立的城市效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<html lang="en"><head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Hind:wght@400;700&display=swap">
<style>
* {
border: 0;
box-sizing: border-box;
margin: 0;
padding: 0;
}
:root {
font-size: calc(16px + (24 - 16) * (100vw - 320px) / (2560 - 320));
--bg: #737a8c;
--buttonBg: #2762f3;
--buttonHoverBg: #0c48db;
--formBg: #fff;
--inputBorder: #abafba;
--inputBg: #fff;
--inputDisableBg: #e3e4e8;
--pColor: #17181c;
}
aside {
background: var(--formBg);
box-shadow: 0 0 0.25em hsla(223,10%,10%,0.5);
border-radius: 0.375em 0.375em 0 0;
position: fixed;
bottom: 0;
left: 1.25em;
max-width: 17.5em;
width: calc(100% - 2.5em);
transform: translateY(100%);
transition: transform 0.3s ease-in-out;
}
body, button, input {
color: var(--pColor);
font: 1em/1.5 "Hind", -apple-system, sans-serif;
}
body, .upload-btn {
overflow: hidden;
}
button:hover, button:focus, .upload-btn input[type=file]:hover + button, .upload-btn input[type=file]:focus + button {
background: var(--buttonHoverBg);
}
button, .upload-btn input[type=file], .upload-btn input[type=file]::-webkit-file-upload-button {
cursor: pointer;
}
button, input {
display: block;
width: 100%;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
button {
background: var(--buttonBg);
border-radius: 0.375em;
color: #fff;
margin-bottom: 1.5em;
padding: 0.75em 1em;
transition: background 0.1s linear;
}
button:focus {
outline: 0;
}
form {
padding: 1.5em 1.5em 0 1.5em;
position: relative;
}
input {
background: var(--inputBg);
border-radius: 0.25em;
box-shadow: 0 0 0 1px var(--inputBorder) inset;
padding: 0.75em;
}
input:disabled {
background: var(--inputDisableBg);
cursor: not-allowed;
text-overflow: ellipsis;
}
label {
display: inline-block;
font-weight: bold;
}
.aside-toggle, .aside-toggle:hover, .aside-toggle:focus {
background-color: var(--formBg);
}
.aside-toggle {
border-radius: 0.375em 0.375em 0 0;
margin: 0;
padding: 0.25em 1em;
position: absolute;
bottom: 100%;
left: 50%;
transform: translateX(-50%);
transition: none;
width: 4.5em;
height: 1.5em;
}
.aside-toggle:before {
border-left: 0.5em solid transparent;
border-right: 0.5em solid transparent;
border-bottom: 0.5em solid;
color: var(--pColor);
content: "";
display: block;
position: absolute;
top: 33%;
left: calc(50% - 0.5em);
width: 0;
height: 0;
transition: color 0.1s linear;
}
.aside-toggle:hover:before, .aside-toggle:focus:before {
color: var(--buttonBg);
}
.aside-open {
transform: translateY(0%);
}
.aside-open .aside-toggle:before {
border-bottom: 0;
border-top: 0.5em solid;
}
.sr {
clip: rect(1px,1px,1px,1px);
overflow: hidden;
position: absolute;
}
.upload-btn, .upload-btn input[type=text], .upload-btn input[type=file] + button {
margin-bottom: 0.75em;
}
.upload-btn {
display: flex;
justify-content: space-between;
position: relative;
}
.upload-btn input[type=text] {
width: calc(62.5% - 0.375em);
}
.upload-btn input[type=file], .upload-btn input[type=file] + button {
width: calc(37.5% - 0.375em);
}
.upload-btn input[type=file] {
position: absolute;
opacity: 0;
top: 0;
left: 0;
height: 3em;
}
.upload-btn input[type=file] + button svg {
display: block;
margin: auto;
width: 1.5em;
height: 1.5em;
}
.upload-btn input[type=file] + button path {
fill: #fff;
}
/* Dark theme */
@media (prefers-color-scheme: dark) {
:root {
--formBg: #17181c;
--inputBg: #2e3138;
--inputDisableBg: #2e3138;
--inputBorder: #5c6270;
--pColor: #e3e4e8;
}
}
</style>
</head>
<body><canvas width="498" height="659" style="display: block; width: 498px; height: 659px;"></canvas>
<aside class="aside-open">
<form action="">
<button id="aside-btn" class="aside-toggle aside-toggle-open" type="button">
<span class="sr">Toggle Panel</span>
</button>
<label for="img_upload">Image</label>
<div class="upload-btn">
<input id="img_upload" name="img_upload" type="file" accept="image/*">
<button for="img_upload" type="button" tabindex="-1" title="Upload">
<svg viewBox="0 0 512 512" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="m182.461 155.48 49.539-49.539v262.059a24 24 0 0 0 48 0v-262.059l49.539 49.539a24 24 0 1 0 33.941-33.941l-90.509-90.51a24 24 0 0 0 -33.942 0l-90.509 90.51a24 24 0 1 0 33.941 33.941z"></path>
<path d="m464 232a24 24 0 0 0 -24 24v184h-368v-184a24 24 0 0 0 -48 0v192a40 40 0 0 0 40 40h384a40 40 0 0 0 40-40v-192a24 24 0 0 0 -24-24z"></path>
</svg>
</button>
<input id="img_name" name="img_name" type="text" placeholder="No file selected" disabled="">
</div>
<button id="reset-btn" type="button">Reset</button>
</form>
</aside>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.126.js"></script>
<script>
window.addEventListener("DOMContentLoaded",app);
THREE.OrbitControls = function ( object, domElement ) {
this.object = object;
this.domElement = ( domElement !== undefined ) ? domElement : document;
// Set to false to disable this control
this.enabled = true;
// "target" sets the location of focus, where the object orbits around
this.target = new THREE.Vector3();
// How far you can dolly in and out ( PerspectiveCamera only )
this.minDistance = 0;
this.maxDistance = Infinity;
// How far you can zoom in and out ( OrthographicCamera only )
this.minZoom = 0;
this.maxZoom = Infinity;
// How far you can orbit vertically, upper and lower limits.
// Range is 0 to Math.PI radians.
this.minPolarAngle = 0; // radians
this.maxPolarAngle = Math.PI; // radians
// How far you can orbit horizontally, upper and lower limits.
// If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ].
this.minAzimuthAngle = - Infinity; // radians
this.maxAzimuthAngle = Infinity; // radians
// Set to true to enable damping (inertia)
// If damping is enabled, you must call controls.update() in your animation loop
this.enableDamping = false;
this.dampingFactor = 0.05;
// This option actually enables dollying in and out; left as "zoom" for backwards compatibility.
// Set to false to disable zooming
this.enableZoom = true;
this.zoomSpeed = 1.0;
// Set to false to disable rotating
this.enableRotate = true;
this.rotateSpeed = 1.0;
// Set to false to disable panning
this.enablePan = true;
this.panSpeed = 1.0;
this.screenSpacePanning = false; // if true, pan in screen-space
this.keyPanSpeed = 7.0; // pixels moved per arrow key push
// Set to true to automatically rotate around the target
// If auto-rotate is enabled, you must call controls.update() in your animation loop
this.autoRotate = false;
this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60
// Set to false to disable use of the keys
this.enableKeys = true;
// The four arrow keys
this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };
// Mouse buttons
this.mous.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0