div+css布局实现三维房子模型效果
代码语言:html
所属分类:三维
代码描述:div+css布局实现三维房子模型效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
/***********************/
/***********************/
/************************/
/* Mixin para crear cubo ( Caras siempre al frente ) */
/************************/
/***********************/
/***********************/
/**/
*, *::after, *::before {
margin: 0;
padding: 0;
box-sizing: border-box;
user-select: none;
transform-style: preserve-3d;
-webkit-tap-highlight-color: transparent;
}
/* Generic */
body {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100vh;
overflow: hidden;
background-color: #C6C5E1;
cursor: pointer;
}
.face {
position: absolute;
}
/***************/
.house {
position: absolute;
width: 36vw;
height: 24vw;
transform: perspective(20000px) rotateX(75deg) rotateZ(35deg) translateZ(-9vw);
transition: transform .1s linear;
}
.shadows {
width: 100%;
height: 100%;
overflow: hidden;
}
.shadow-a {
position: absolute;
right: 0;
bottom: 0;
width: 130%;
height: 103%;
transform-origin: top right;
transform: skewY(-3deg);
background-color: #686688;
box-shadow: -1vw 1vw 1.5vw #686688;
filter: blur(0.5vw);
}
.shadow-b {
position: absolute;
top: 0;
width: 100%;
height: 101.5%;
background-color: #5f5d7c;
}
/***************/
/***************/
.al {
width: 3vw;
height: 24vw;
position: absolute;
left: 0;
top: 0;
}
.al__front {
width: 30vw;
height: 0.4vw;
transform-origin: bottom left;
transform: rotateX(-90deg) translateZ(23.6vw);
}
.al__back {
width: 30vw;
height: 0.4vw;
transform-origin: top left;
transform: rotateX(-90deg) rotateY(180deg) translateX(-30vw) translateY(-0.4vw);
}
.al__right {
width: 24vw;
height: 0.4vw;
transform-origin: top left;
transform: rotateY(90deg) rotateZ(-90deg) translateZ(30vw) translateX(-24vw) translateY(-0.4vw);
}
.al__left {
width: 24vw;
height: 0.4vw;
transform-origin: top left;
transform: rotateY(-90deg) rotateZ(90deg) translateY(-0.4vw);
}
.al__top {
width: 30vw;
height: 24vw;
transform-origin: top left;
transform: translateZ(0.4vw);
}
.al__bottom {
width: 30vw;
height: 24vw;
transform-origin: top left;
transform: rotateY(180deg) translateX(-30vw);
}
.al__front {
background-image: linear-gradient(to right, #8985ad, #c4c2d6);
}
.al__back {
background-color: #c4c2d6;
}
.al__right {
background-color: #fbfbfb;
}
.al__left {
background-color: #7a76a3;
}
.al__top {
background-image: linear-gradient(to right, #a7a4c2 40%, #e5e5e5, #f2f2f2);
}
.al__top::before {
content: '';
position: absolute;
bottom: 0;
width: 13vw;
height: 7vw;
background-image: linear-gradient(-135deg, transparent 20%, rgba(169, 215, 207, 0.75));
}
.al__top::after {
content: '';
position: absolute;
bottom: 1vw;
left: 6vw;
width: 5vw;
height: 5vw;
border-radius: 50%;
background-image: radial-gradient(rgba(251, 251, 251, 0.25), transparent);
filter: blur(0.7vw);
}
.al__bottom {
background-color: #c4c2d6;
}
.ab {
width: 8vw;
height: 8vw;
position: absolute;
right: 0;
bottom: 0;
}
.ab__front {
width: 8vw;
height: 0.4vw;
transform-origin: bottom left;
transform: rotateX(-90deg) translateZ(7.6vw);
}
.ab__back {
width: 8vw;
height: 0.4vw;
transform-origin: top left;
transform: rotateX(-90deg) rotateY(180deg) translateX(-8vw) translateY(-0.4vw);
}
.ab__right {
width: 8vw;
height: 0.4vw;
transform-origin: top left;
transform: rotateY(90deg) rotateZ(-90deg) translateZ(8vw) translateX(-8vw) translateY(-0.4vw);
}
.ab__left {
width: 8vw;
height: 0.4vw;
transform-origin: top left;
transform: rotateY(-90deg) rotateZ(90deg) translateY(-0.4vw);
}
.ab__top {
width: 8vw;
height: 8vw;
transform-origin: top left;
transform: translateZ(0.4vw);
}
.ab__bottom {
width: 8vw;
height: 8vw;
transform-origin: top left;
transform: rotateY(180deg) translateX(-8vw);
}
.ab__front {
background-color: #c4c2d6;
}
.ab__back {
background-color: #c4c2d6;
}
.ab__right {
background-color: #fbfbfb;
}
.ab__left {
background-color: #fbfbfb;
}
.ab__top {
background-color: #f2f2f2;
}
.ab__bottom {
background-color: #c4c2d6;
}
.at {
width: 8vw;
height: 4vw;
position: absolute;
right: 0;
top: 0;
}
.at__front {
width: 8vw;
height: 0.4vw;
transform-origin: bottom left;
transform: rotateX(-90deg) translateZ(3.6vw);
}
.at__back {
width: 8vw;
height: 0.4vw;
transform-origin: top left;
transform: rotateX(-90deg) rotateY(180deg) translateX(-8vw) translateY(-0.4vw);
}
.at__right {
width: 4vw;
height: 0.4vw;
transform-origin: top left;
transform: rotateY(90deg) rotateZ(-90deg) translateZ(8vw) translateX(-4vw) translateY(-0.4vw);
}
.at__left {
width: 4vw;
height: 0.4vw;
transform-origin: top left;
transform: rotateY(-90deg) rotateZ(90deg) translateY(-0.4vw);
}
.at__top {
width: 8vw;
height: 4vw;
transform-origin: top left;
transform: translateZ(0.4vw);
}
.at__bottom {
width: 8vw;
height: 4vw;
transform-origin: top left;
transform: rotateY(180deg) translateX(-8vw);
}
.at__front {
background-color: #c4c2d6;
}
.at__back {
background-color: #c4c2d6;
}
.at__right {
background-color: #fbfbfb;
}
.at__left {
background-color: #fbfbfb;
}
.at__top {
background-color: #f2f2f2;
}
.at__bottom {
background-color: #c4c2d6;
}
.ac {
width: 6vw;
height: 12vw;
position: absolute;
right: 0;
top: 4vw;
}
.ac__front {
width: 6vw;
height: 1vw;
transform-origin: bottom left;
transform: rotateX(-90deg) translateZ(11vw);
}
.ac__back {
width: 6vw;
height: 1vw;
transform-origin: top left;
transform: rotateX(-90deg) rotateY(180deg) translateX(-6vw) translateY(-1vw);
}
.ac__right {
width: 12vw;
height: 1vw;
transform-origin: top left;
transform: rotateY(90deg) rotateZ(-90deg) translateZ(6vw) translateX(-12vw) translateY(-1vw);
}
.ac__left {
width: 12vw;
height: 1vw;
transform-origin: top left;
transform: rotateY(-90deg) rotateZ(90deg) translateY(-1vw);
}
.ac__top {
width: 6vw;
height: 12vw;
transform-origin: top left;
transform: translateZ(1vw);
}
.ac__bottom {
width: 6vw;
height: 12vw;
transform-origin: top left;
transform: rotateY(180deg) translateX(-6vw);
}
.ac .face {
opacity: .9;
}
.ac__front {
background-color: #4d6d98;
opacity: .75;
}
.ac__back {
background-color: #4d6d98;
}
.ac__right {
background-image: linear-gradient(to top, #6187be, #7095c9);
}
.ac__left {
background-color: #16273c;
}
.ac__top {
opacity: .75;
background-image: linear-gradient(to right, #7095c9 0, #7095c9 5%, #6187be 20%, #6187be 30%, #7095c9 40%, #7095c9 65%, #658dc5 70%, #658dc5 72%, #7095c9 85%);
box-shadow: inset 0.5vw 0.5vw 2vw rgba(251, 251, 251, 0.5);
}
.ac__top::before {
content: '';
position: absolute;
width: 40%;
height: 100%;
overflow: hidden;
background-image: linear-gradient(to bottom, transparent 0, transparent 10%, rgba(97, 135, 190, 0.9) 15%, rgba(97, 135, 190, 0.9) 40%, rgba(251, 251, 251, 0.2) 40%, rgba(251, 251, 251, 0.2) 50%, transparent 60%);
filter: blur(0.15vw);
}
.ac__bottom {
background-color: #4d6d98;
}
.ac__bottom::before {
content: '';
position: absolute;
width: 100%;
height: 100%;
box-shadow: -0.25vw 0.25vw 1vw #234062;
}
/***************/
/***************/
.bce {
width: 17vw;
height: 20.5vw;
position: absolute;
right: 6vw;
top: 0;
transform: translateZ(0.41vw);
}
.bce__front {
width: 17vw;
height: 0.5vw;
transform-origin: bottom left;
transform: rotateX(-90deg) translateZ(21.5vw);
}
.bce__back {
width: 17vw;
height: 0.5vw;
transform-origin: top left;
transform: rotateX(-90deg) rotateY(180deg) translateX(-17vw) translateY(-0.5vw);
}
.bce__right {
width: 22vw;
height: 0.5vw;
transform-origin: top left;
transform: rotateY(90deg) rotateZ(-90deg) translateZ(17vw) translateX(-22vw) translateY(-0.5vw);
}
.bce__left {
width: 22vw;
height: 0.5vw;
transform-origin: top left;
transform: rotateY(-90deg) rotateZ(90deg) translateY(-0.5vw);
}
.bce__top {
width: 17vw;
height: 22vw;
transform-origin: top left;
transform: translateZ(0.5vw);
}
.bce__bottom {
width: 17vw;
height: 22vw;
transform-origin: top left;
transform: rotateY(180deg) translateX(-17vw);
}
.bce__front {
background-image: linear-gradient(to right, #a7a4c2, #c4c2d6);
}
.bce__back {
background-color: #c4c2d6;
}
.bce__right {
background-color: #f2f2f2;
}
.bce__left {
background-color: #c4c2d6;
}
.bce__top {
background-image: linear-gradient(135deg, #a7a4c2 60%, #f2f2f2);
}
.bce__bottom {
background-color: #c4c2d6;
}
.bce__bottom::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 101%;
background-color: #675D6E;
filter: blur(0.35vw);
}
.bci {
width: 16vw;
height: 21vw;
position: absolute;
right: 6vw;
top: 0;
transform: translateZ(0.92vw);
}
.bci__front {
width: 16vw;
height: 0.5vw;
transform-origin: bottom left;
transform: rotateX(-90deg) translateZ(20.5vw);
}
.bci__back {
width: 16vw;
height: 0.5vw;
transform-origin: top left;
transform: rotateX(-90deg) rotateY(180deg) translateX(-16vw) translateY(-0.5vw);
}
.bci__right {
width: 21vw;
height: 0.5vw;
transform-origin: top left;
transform: rotateY(90deg) rotateZ(-90deg) translateZ(16vw) translateX(-21vw) translateY(-0.5vw);
}
.bci__left {
width: 21vw;
height: 0.5vw;
transform-origin: top left;
transform: rotateY(-90deg) rotateZ(90deg) translateY(-0.5vw);
}
.bci__top {
width: 16vw;
height: 21vw;
transform-origin: top left;
transform: translateZ(0.5vw);
}
.bci__bottom {
width: 16vw;
height: 21vw;
transform-origin: top left;
transform: rotateY(180deg) translateX(-16vw);
}
.bci__front {
background-image: linear-gradient(to right, #a7a4c2, #c4c2d6);
}
.bci__back {
background-color: #c4c2d6;
}
.bci__right {
background-color: #f2f2f2;
}
.bci__left {
background-color: #c4c2d6;
}
.bci__top {
background-image: linear-gradient(135deg, #a7a4c2 60%, #f2f2f2);
}
.bci__top::before {
content: '';
position: absolute;
width: 100%;
height: 16.4vw;
background-color: #d7d6ea;
}
.bci__top::after {
content: '';
position: absolute;
bottom: 1.5vw;
left: 1vw;
width: 10vw;
height: 3.5vw;
border-radius: 50%;
background-image: radial-gradient(#badfd9, transparent);
filter: blur(0.5vw);
}
.bci__bottom {
background-color: #c4c2d6;
}
.bci__bottom::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 101%;
background-color: #675D6E;
filter: blur(0.35vw);
}
.bl {
width: 13vw;
height: 17vw;
position: absolute;
left: 0;
top: 0;
transform: translateZ(0.41vw);
}
.bl__front {
width: 13.1vw;
height: 0.5vw;
transform-origin: bottom left;
transform: rotateX(-90deg) translateZ(16.5vw);
}
.bl__back {
width: 13.1vw;
height: 0.5vw;
transform-origin: top left;
transform: rotateX(-90deg) rotateY(180deg) translateX(-13.1vw) translateY(-0.5vw);
}
.bl__right {
width: 17vw;
height: 0.5vw;
transform-origin: top left;
transform: rotateY(90deg) rotateZ(-90deg) translateZ(13.1vw) translateX(-17vw) translateY(-0.5vw);
}
.bl__left {
width: 17vw;
height: 0.5vw;
transform-origin: top left;
transform: rotateY(-90deg) rotateZ(90deg) translateY(-0.5vw);
}
.bl__top {
width: 13.1vw;
heig.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0