3D css实现公园街道透视效果
代码语言:html
所属分类:三维
代码描述:3D css实现公园街道透视效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
@charset "UTF-8";
@font-face {
font-family: 'VenturisSansADFLt-Bold';
src: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/25387/VenturisSansADFLt-Bold.ttf.woff") format("woff"), url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/25387/VenturisSansADFLt-Bold.ttf.svg#VenturisSansADFLt-Bold") format("svg"), url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/25387/VenturisSansADFLt-Bold.ttf.eot"), url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/25387/VenturisSansADFLt-Bold.ttf.eot?#iefix") format("embedded-opentype");
font-weight: normal;
font-style: normal;
}
:root {
--zoom: 1;
--zoom-square: calc( var(--zoom) * var(--zoom) );
--camera-x: 0;
--camera-y: 0;
--row-count: 0;
--col-count: 0;
--tile-width: 1em;
--gap-width: calc(var(--tile-width) * 5 / 100);
--total-tile-width: calc(1em + var(--gap-width));
--gap-color: #666;
}
body {
height: 100vh;
display: grid;
-webkit-box-pack: center;
justify-content: center;
-webkit-box-align: center;
align-items: center;
overflow: hidden;
font-size: 7vmin;
-webkit-perspective: 150vmin;
perspective: 150vmin;
background: #cfe2e3;
}
.loading-overlay {
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
width: 100%;
height: 100%;
display: -webkit-box;
display: flex;
-webkit-box-pack: center;
justify-content: center;
-webkit-box-align: center;
align-items: center;
background: rgba(255, 255, 255, 0.85);
}
.has-loaded .loading-overlay {
display: none;
}
.loading-message {
font-size: 3rem;
}
.loading-message::after {
content: "✨";
-webkit-animation: loading-message .5s infinite;
animation: loading-message .5s infinite;
}
@-webkit-keyframes loading-message {
from, to {
content: "Loading ✨";
}
33% {
content: "Loading 🍓";
}
66% {
content: "Loading ⚡️";
}
}
@keyframes loading-message {
from, to {
content: "Loading ✨";
}
33% {
content: "Loading 🍓";
}
66% {
content: "Loading ⚡️";
}
}
.tile {
width: calc(1 * var(--tile-width));
height: calc(1 * var(--tile-width));
display: grid;
gap: var(--gap-width);
background: var(--gap-color);
}
.enable-shadows .tile span {
box-shadow: inset calc(0.02 * var(--tile-width)) calc(0.02 * var(--tile-width)) calc(0.06 * var(--tile-width)) rgba(255, 200, 50, 0.25), inset calc(-0.02 * var(--tile-width)) calc(-0.02 * var(--tile-width)) calc(0.08 * var(--tile-width)) rgba(30, 10, 0, 0.5);
}
.tile.half-vertical {
width: calc(0.3 * var(--tile-width));
height: calc(0.4 * var(--tile-width));
}
.tile.masonry-vertical {
grid-template: .6fr 1.4fr / 1fr;
width: calc(0.3 * var(--tile-width));
}
.tile.masonry-vertical.odd {
grid-template: 1.4fr .6fr / 1fr;
}
.tile.half-horizontal {
width: calc(0.475 * var(--tile-width));
height: calc(0.33 * var(--tile-width));
}
.tile.single-horizontal {
height: calc(0.33 * var(--tile-width));
}
.tile.vertical {
grid-template: 1fr/repeat(3, 1fr);
}
.tile.horizontal {
grid-template: repeat(3, 1fr)/1fr 1fr;
}
.tile.horizontal :first-child {
grid-area: 1 / span 2;
}
.tile.horizontal :last-child {
grid-area: 3 / span 2;
}
.wall {
position: relative;
background: var(--gap-color);
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform: rotateX(calc(var(--camera-y) * -15deg)) rotateY(calc(var(--camera-x) * 15deg)) scale(calc(var(--zoom)));
transform: rotateX(calc(var(--camera-y) * -15deg)) rotateY(calc(var(--camera-x) * 15deg)) scale(calc(var(--zoom)));
}
.wall-rain-shield {
position: absolute;
top: calc(-0.26 * var(--tile-width));
left: 0;
z-index: 5;
width: 100%;
height: calc(0.4 * var(--tile-width));
background: #bbb;
}
.enable-3d-transformations .wall-rain-shield {
-webkit-transform-origin: top center;
transform-origin: top center;
-webkit-transform: translateZ(calc(0.6 * var(-.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0