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