css布局实现汽车行驶在冲浪海滩公路上动画效果代码

代码语言:html

所属分类:动画

代码描述:css布局实现汽车行驶在冲浪海滩公路上动画效果代码

代码标签: 汽车 行驶 冲浪 海滩 路上 动画 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开


<!DOCTYPE html>
<html lang="en" >

<head>

 
<meta charset="UTF-8">
 

 
<style>
/*
Alittle bit of chaos here... debug in progress
*/

* {
        box-sizing: border-box;
        transform-style: preserve-3d;
        /*animation: none !important;*/
}

body {
        width: 100vw;
        height: 100vh;
        margin: 0;
        padding: 0;
        overflow: hidden;
}

.content {
        perspective: 100vmin;
        transform-style: preserve-3d;
}

.sky {
        background: radial-gradient(
                        circle at 50vw 35vh,
                        #ffc107 5%,
                        rgb(255 193 7 / 64%) 10%,
                        rgb(253 50 41 / 50%) 25%,
                        rgb(243 0 0 / 40%) 30%,
                        rgb(93 0 0 / 0%) 100%
                ),
                linear-gradient(180deg, #673ab7, #ffb900 80%, #fff0 100%);
        width: 100vw;
        height: 35vh;
        position: absolute;
        left: 0;
        top: 0;
}
.sky:after {
        content: "";
        width: 100%;
        height: 5vmin;
        position: absolute;
        background: linear-gradient(
                to top,
                rgba(0, 25, 45, 1) 0%,
                rgba(14, 71, 117, 1) 35%,
                rgba(26, 126, 174, 1) 70%,
                rgba(62, 168, 220, 1) 100%
        );
        bottom: 0;
        box-shadow: 0 6px 6px -6px #ffc107 inset;
}

/*
.water {
  background:
  height: 50vh;
  overflow: hidden;
  position: relative;
}
.water:before {
  content: "";
  width: 100%;
  height: 100%;
  position: absolute;
  background: repeating-linear-gradient(175deg,rgba(165,165,165,0.08) 45%, rgba(175,175,175,0.08) 47%, rgba(235,235,235,0.08) 50%, rgba(195,195,195,0.08) 54%, rgba(165,165,165,0.08) 57%), linear-gradient(to left top, rgba(0,0,0,0.0) 10%,rgba(0,0,0,0.20) 44%,rgba(0,0,0,0.65) 95%,rgba(0,0,0,0.62) 100%);
  opacity: 0.5;
  box-shadow: 0 6px 6px -6px #ffc107 inset;
  animation: ocean 15s infinite;
}
*/

.ground {
        background: linear-gradient(
                to top,
                #0a190b 0%,
                #255226 36%,
                #8bc34a 98%,
                #1e6f20b3 100%
        );
        width: 300vw;
        height: 70vh;
        position: absolute;
        left: -100vw;
        top: 30vh;
        border-radius: 100% 100% 0 0;
}

.road {
        background: linear-gradient(0deg, #6d6d6d, #eae5d6);
        width: 25vw;
        height: 70vh;
        position: absolute;
        top: 30vh;
        left: 35vw;
        transform: rotateX(90deg);
        transform-origin: center top;
        border-radius: 1% 1% 0 0;
        animation: roadview 10s ease-in-out 0s infinite alternate;
        border: 0.25vmin solid #75747470;
        border-top: 0;
        border-bottom: 0;
}

@keyframes roadview {
        0% {
                left: 49vw;
        }
        10% {
                left: 48vw;
        }

        40% {
                left: 40vw;
        }
        70% {
                left: 30vw;
        }

        90% {
                left: 19vw;
        }
        100% {
                left: 18vw;
        }
}

.road:before,
.road:after {
        content: "";
        width: 1vmin;
        height: 100%;
        background: #ffffffba;
        position: absolute;
        left: 1.25vmin;
}

.road:after {
        left: initial;
        right: 1.25vmin;
}

.line {
        width: 1vmin;
        height: 100%;
        background: repeating-linear-gradient(0deg, #fff 0 25%, transparent 0 50%);
        position: absolute;
        left: calc(50% - 0.625vmin);
        animation: gradient 2s linear 0s infinite;
        background-size: 1vmin 20vmin;
        background-position: 50% 0%;
}

@keyframes gradient {
        0% {
                background-position: 0% 0%;
        }
        100% {
                background-position: 0% 100%;
        }
}

.van {
        /*background: #ccc;*/
        width: 16vw;
        height: 26vmin;
        position: absolute;
        bottom: 0vmin;
        bottom: -3vh;
        z-index: 22222;
        transform: translateZ(4.15vmin) translateY(-8vmin) rotateZ(0deg);
        transform-style: preserve-3d;
        perspective: 100vmin;
        --height: 16;
        --width: 8;
        --depth: 6;
        --hue: 0;
        --sat: 60%;
        height: calc(var(--height) * 1vmin);
        width: calc(var(--width) * 1vmin);
        perspective-origin: center;
        left: calc(50% - -3vmin);
        animation: vanmove 3s ease 0s infinite alternate;
}

@keyframes vanmove {
        0% {
                transform: translateZ(4.15vmin) translateY(-8vmin) rotateZ(0deg) rotateY(1deg);
        }
        20% {
                transform: translateZ(4.15vmin) translateY(-8vmin) rotateZ(1deg) rotateY(0deg);
        }
        40% {
                transform: translateZ(4.15vmin) translateY(-8vmin) rotateZ(0deg)
                        rotateY(-1deg);
        }
        60% {
                transform: translateZ(4.15vmin) translateY(-8vmin) rotateZ(-1deg)
                        rotateY(0deg);
        }
        80% {
                transform: translateZ(4.15vmin) translateY(-8vmin) rotateZ(0deg) rotateY(1deg);
        }
        100% {
                transform: translateZ(4.15vmin) translateY(-8vmin) rotateZ(1deg) rotateY(0deg);
        }
}

.line + .van:before {
        background: #333;
        width: 98%;
        height: 60%;
        position: absolute;
        content: "";
        top: 40%;
        left: 1%;
        background-color: #026873;
        background-image: linear-gradient(
                        90deg,
                        rgba(255, 255, 255, 0.07) 50%,
                        transparent 50%
                ),
                linear-gradient(90deg, rgba(255, 255, 255, 0.13) 50%, transparent 50%),
                linear-gradient(90deg, transparent 50%, rgba(255, 255, 255, 0.17) 50%),
                linear-gradient(90deg, transparent 50%, rgba(255, 255, 255, 0.19) 50%);
        background-size: 1vmin, 1.5vmin, 1.8vmin, 2.2vmin;
}

.side {
        position: absolute;
        top: 50%;
        left: 50%;
        height: 100%;
        width: 100%;
        border-radius: 0.25vmin;
}

.side:nth-of-type(1) {
        transform: translate3d(-50%, -45%, calc(var(--depth) * 0.5vmin));
        background: hsl(var(--hue), var(--sat), 50%);
        height: 91%;
}
.side:nth-of-type(2) {
        transform: translate3d(-50%, -50%, calc(var(--depth) * -0.5vmin))
                rotateY(180deg);
        background: hsl(var(--hue), var(--sat), 35%);
}
.side:nth-of-type(3) {
        width: calc(var(--depth) * 1vmin);
        transform: translate(-50%, -50%) rotateY(90deg)
                translate3d(0, 0, calc(var(--width) * 0.5vmin));
        background: linear-gradient(
                        0deg,
                        transparent 0% 38%,
                        #000 0% 38.25%,
                        transparent 38.5% 69%,
                        #000 69.25%,
                        transparent 69.45% 100%
                ),
                hsl(var(--hue), var(--sat), 40%);
        clip-path: polygon(
                0 10%,
                45% 5%,
                60% 0,
                100% 0%,
                100% 100%,
                4% 100%,
                4% 98%,
                45% 98%,
                45% 9%,
                7% 13%,
                7% 100%,
                0% 100%
        );
}
.side:nth-of-type(4) {
        width: calc(var(--depth) * 1vmin);
        transform: translate(-50%, -50%) rotateY(90deg)
                translate3d(0, 0, calc(var(--width) * -0.5vmin));
        background: linear-gradient(
                        180deg,
                        transparent 0% 30.1%,
                        #000 0% 30.5%,
                        transparent 31% 100%
                ),
                hsl(var(--hue), var(--sat), 60%);
        clip-path: polygon(
                0 10%,
                45% 5%,
                60% 0,
                100% 0%,
                100% 100%,
                4% 100%,
                4% 98%,
                45% 98%,
                45% 9%,
                7% 13%,
                7% 100%,
                0% 100%
        );
}
.side:nth-of-type(5) {
        height: calc(var(--depth) * 0.5vmin);
        transform: translate(-50%, -50%) rotateX(75deg)
                translate3d(0vmin, -0.3vmin, calc(var(--height) * 0.435vmin)) rotate(180deg);
        background: hsl(var(--hue), var(--sat), 70%);
        clip-path: polygon(
                0% 0%,
                0% 100%,
                5% 100%,
                5% 11%,
                95% 10%,
                95% 90%,
                5% 90%,
                5% 100%,
                100% 100%,
                100% 0%
        );
}
.side:nth-of-type(6) {
        height: calc(var(--depth) * 0.19vmin);
        transform: translate(-50%, -50%) rotateX(-135deg)
                translate3d(0vmin, 5.5vmin, calc(var(--height) * -0.3275vmin));
        background: hsl(var(--hue), var(--sat), 70%);
        border-radius: 0.15vmin;
}
.side:nth-of-type(7) {
        height: calc(var(--depth) * 1vmin);
        transform: translate(-50%, -50%) rotateX(-90deg)
                translate3d(0, 0, calc(var(--height) * 0.5vmin));
        background: hsl(var(--hue), var(--sat), 30%);
        clip-path: polygon(
                0% 0%,
                0% 100%,
                5% 100%,
                5% 5%,
                95% 5%,
                95% 45%,
                5% 45%,
                5% 100%,
                100% 100%,
                100% 0%
        );
}

.side:nth-of-type(6):before {
        width: 100%;
        height: 220%;
        position: absolute;
        content: "";
        background: hsl(var(--hue), var(--sat), 57%);
        bottom: -15%;
        transform: rotateX(45deg) translate3d(0vmin, 2vmin, -0.8vmin);
        border-radius: 0.1vmin;
}

/* front-back glass */
.side:nth-of-type(1):before,
.side:nth-of-type(1):after {
        content: "";
        width: 91%;
        height: 16.5%;
        background: linear-gradient(
                        45deg,
                        transparent 0 30%,
                        #ffffff30 31% 35%,
                        transparent 36% 40%,
                        #ffffff20 41% 43%,
                        transparent 42% 50%
                ),
                #03a9f442;
        z-index: 2;
        float: left;
        transform: rotateX(90deg) translate3d(5%, -1.55vmin, -13.35vmin);
        bottom: 0;
}

/* front glass */
.side:nth-of-type(1):after {
        transform: rotateX(75deg) translate3d(4.5%, -2.4vmin, 3.35vmin);
        height: 17%;
}

.side:nth-of-type(2):before,
.side:nth-of-type(2):after {
        content: "";
        width: 30%;
        height: 89%;
        background: linear-gradient(
                        0deg,
                        transparent 0% 40.9%,
                        #0004 0% 41.5%,
                        transparent 41.85% 75.5%,
                        #0007 76.25%,
                        transparent 69.45% 100%
                ),
                linear-gradient(
                        -25deg,
                        transparent 0 9%,
                        #ffffff20 10% 12%,
                        transparent 12% 14%,
                        #ffffff20 15% 17%,
                        transparent 18% 20%
                ),
                linear-gradient(
                        0deg,
                        #03a9f442 0 40%,
                        hsl(var(--hue), var(--sat), 35%) 0 43%,
                        #03a9f442 0% 75%,
                        hsl(var(--hue), var(--sat), 35%) 0% 78%,
                        #03a9f442 0% 100%
                );
        z-index: 2;
        float: left;
        transform: rotateX(0deg) rotateY(90deg)
                translate3d(4.5vmin, 1.5vmin, -1.15vmin);
        bottom: 0;
}
.side:nth-of-type(2):after {
        transform: rotateX(0deg) rotateY(90deg)
                translate3d(4.5vmin, 1.5vmin, 4.425vmin);
        background: linear-gradient(
                        180deg,
                        transparent 0% 23.5%,
                        #0008 0% 24%,
                        transparent 24.5% 100%
                ),
                linear-gradient(
                        -25deg,
                        transparent 0 9%,
                        #ffffff20 10% 12%,
                        transparent 12% 14%,
                        #ffffff20 15% 17%,
                        transparent 18% 20%
                ),
                linear-gradient(
                        0deg,
                        #03a9f442 0 40%,
                        hsl(var(--hue), var(--sat), 60%) 0 43%,
                        #03a9f442 0% 75%,
                        hsl(var(--hue), var(--sat), 60%) 0% 78%,
                        #03a9f442 0% 100%
                );
}

.van.shadow {
        transform: translate3d(0vmin, -9vmin, 0vmin);
        background: #00000080;
        filter: blur(8px);
        animation: none;
}

.van.wheels div,
.van.wheels div span {
        background: radial-gradient(#121212 0% 30%, #333 0 55%, #fff 60%, #333 65%);
        width: 2.75vmin;
        height: 3vmin;
        position: absolute;
        transform: rotateY(90deg) translate3d(3vmin, 2.5vmin, -1.65vmin);
        border-radius: 90% 100%;
        box-shadow: 0 0 2px 0 #111 inset;
}

.van.wheels div {
        animation: wheelspin 0.25s linear 0s infinite alternate;
}

.van.wheels div span {
        transform: rotateY(0deg) translate3d(0vmin, 0vmin, 0.05vmin);
        background: #333;
        width: 100%;
        height: 100%;
}
.van.wheels div span:nth-child(2) {
        transform: rotateY(0deg) translate3d(0vmin, 0vmin, 0.1vmin);
}
.van.wheels div span:n.........完整代码请登录后点击上方下载按钮下载查看

网友评论0