svg+js实现Cybertruck夜间公路旅行行驶鼠标交互动画效果代码
代码语言:html
所属分类:动画
代码描述:svg+js实现Cybertruck夜间公路旅行行驶鼠标交互动画效果代码
代码标签: svg js Cybertruck 夜间 公路 旅行 行驶 鼠标 交互 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> body { margin: 0 auto; background: #030405; } svg { cursor: none; position: absolute; bottom: 0; width: 100%; height: auto; left: 50%; transform: translate(-50%); } #car, #lights, #lightPath { transition: 3000ms; } </style> </head> <body> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 100"> <defs> <linearGradient id="darkGrad" gradientTransform="rotate(90)"> <stop offset="5%" stop-color="#000" /> <stop offset="95%" stop-color="#444" /> </linearGradient> <linearGradient id="lightGrad"> <stop offset="50%" stop-color="#000" /> <stop offset="100%" stop-color="#fff" /> </linearGradient> <linearGradient id="skyGrad" gradientTransform="rotate(90)"> <stop offset="0%" stop-color="rgba(0,0,0,0)" /> <stop offset="50%" stop-color="rgba(0,0,0,0)" stop-opacity="0" /> <stop offset="95%" stop-color="#fff" /> </linearGradient> <linearGradient id="skyGrad2" gradientTransform="rotate(90)"> <stop offset="0%" stop-color="rgba(0,0,0,0)" stop-opacity="0" /> <stop offset="100%" stop-color="#fff" stop-opacity="0.8" /> </linearGradient> <linearGradient id="grassGrad" gradientTransform="rotate(90)"> <stop offset="0%" stop-color="darkgreen" /> <stop offset="70%" stop-color="green" /> </linearGradient> <linearGradient id="grassGradFront" gradientTransform="rotate(90)"> <stop offset="5%" stop-color="orange" /> <stop offset="60%" stop-color="#c6e24d" /> </linearGradient> <linearGradient id="gravelGrad" gradientTransform="rotate(90)"> <stop offset="0%" stop-color="#c6e24d" /> <stop offset="60%" stop-color="orange" /> </linearGradient> <linearGradient id="windowGrad" gradientTransform="rotate(-8)"> <stop offset="0%" stop-color="rgba(20,50,50,0.8)" /> <stop offset="15%" stop-color="rgba(20,50,50,0.8)" /> <stop offset="50%" stop-color="rgba(20,50,50,0.95)" /> </linearGradient> <linearGradient id="tireGrad"> <stop offset="0%" stop-color="#000" /> <stop offset="50%" stop-color="#444" /> <stop offset="100%" stop-color="#000" /> </linearGradient> <filter id="blur1" x="-100%" y="-100%" width="300%" height="300%"> <feGaussianBlur in="SourceGraphic" stdDeviation="0.8" /> </filter> <filter id="blur2" x="-100%" y="-100%" width="300%" height="300%"> <feGaussianBlur in="SourceGraphic" stdDeviation="1" /> </filter> <filter id="blur3" x="-100%" y="-100%" width="300%" height="300%"> <feGaussianBlur in="SourceGraphic" stdDeviation="0.7" /> </filter> <filter id="blur4" x="-100%" y="-100%" width="300%" height="300%"> <feGaussianBlur in="SourceGraphic" stdDeviation="0.3" /> </filter> <mask id="light"> <rect x="0" y="0" width="100%" height="100%" fill="#fff" /> <path id="lightPath" d="M 228.3 58 L 450 53 v30 L 228.3 64.6z" fill="url(#lightGrad)" /> </mask> </defs> <g opacity="1"> <!-- sky --> <rect id="sky" height="50" width="100%" fill="url('#skyGrad')" y="0" /> <!-- mountains --> <g id="mountain1" filter="url(#blur2)"> <!-- mountain 1 --> <path id="mtn1" d="M 56 50 L 140 50 L 111 19 L 100 15 L 90 17 L 79 25 Z" fill="silver" /> <!-- mountain 2 --> <path id="mtn2" d="M 17 50 L 90 50 L 78 23 L 50 17 L 34 27 Z" fill="lightgrey" filter="brightness(80%)" /> <animateTransform attributeName="transform" attributeType="XML" type="translate" from="370 0" to="-150 0" dur="20s" begin="-2s" repeatCount="indefinite" /> </g> <g id="mountain2" filter="url(#blur1)"> <path id="mtn3" d="M 118 50 L 60 50 L 72 33 L 83 27 L 102 30 L 114 43 Z" fill="lightgrey" filter="brightness(90%)" /> <animateTransform attributeName="transform" attributeType="XML" type="translate" from="370 0" to="-150 0" dur="20.1s" begin="-12s" repeatCount="indefinite" /> </g> <g id="mountain3" transform="scale(0.7 0.7) translate(180 25)" filter="url(#blur1)"> <use href="#mtn3" filter="brightness(78%)"> <animateTransform attributeName="transform" attributeType="XML" type="translate" from="320 0" to="-270 0" dur="14.1s" begin="-3s" repeatCount="indefinite" /> </use> </g> <!-- sky gradient overlay --> <rect id="skyOverlay" height="50" width="100%" fill="url('#skyGrad2')" y="0" /> <!-- top gravel --> <rect height="7" width="100%" fill="url('#gravelGrad')" y="60.5" /> <!-- top grass --> <rect height="10.5" width="100%" fill="url('#grassGrad')" y="50" /> <!-- trees --> <g filter="url(#blur3)"> <g id="treeGroup1"> <g id="tree1"> <!-- trunk --> <rect height="5" width="2" x="99" y="45" fill="brown" /> <!-- tree branch --> <path id="t1" d="M 92 46 L 108 46 L 100 25 Z" fill="forestgreen" /> </g> <animateTransform attributeName="transform" attributeType="XML" type="translate" from="410 0" to="-110 0" dur="12s" repeatCount="indefinite" /> </g> <use href="#tree1" filter="brightness(75%)"> <animateTransform attributeName="transform" attributeType="XML" type="translate" from="410 0" to="-110 0" dur="12s" begin="-5s" repeatCount="indefinite" /> </use> <g transform="translate(0 1)"> <use href="#tree1" filter="brightness(90%)"> <animateTransform attributeName="transform" attributeType="XML" type="translate" from="410 0" to="-110 0" dur="12s" begin="-7s" repeatCount="indefinite" /> </use> </g> <g transform="translate(0 1.5)"> <use href="#tree1" filter="brightness(110%)"> <animateTransform attributeName="transform" attributeType="XML" type="translate" from="410 0" to="-110 0" dur="12.1s" begin="-1s" repeatCount="indefinite" /> </use> </g> <use href="#tree1" filter="brightness(112%)"> <animateTransform attributeName="transform" attributeType="XML" type="translate" from="410 0" to="-110 0" dur="12.1s" begin="-11s" repeatCount="indefinite" /> </use> <g transform="scale(1.1 1.1) translate(0 0)"> <use href="#tree1" filter="brightness(105%)"> <animateTransform attributeName="transform" attributeType="XML" type="translate" from="410 0" to="-110 0" dur="13.1s" begin="-12.4s" repeatCount="indefinite" /> </use> <use href="#tree1" filter="brightness(115%)"> <animateTransform attributeName="transform" attributeType="XML" type="translate" from="410 0" to="-110 0" dur="13.1s" begin="-7.7s" repeatCount="indefinite" /> </use> </g> <g transform="scale(0.8 0.8) translate(0 20)"> <use href="#tree1" filter="brightness(111%)"> <animateTransform attributeName="transform" attributeType="XML" type="translate" from="410 0" to="-110 0" dur="9.1s" begin="-4.4s" repeatCount="indefinite" /> </use> <use href="#tree1" filter="brightness(95%)"> <animateTransform attributeName="transform" attributeType="XML" type="translate" from="410 0" to="-110 0" dur="9.1s" begin="-11.4s" repeatCount="indefinite" /> </use> </g> </g> <!-- grass base --> <rect height="20" width="100%&quo.........完整代码请登录后点击上方下载按钮下载查看
网友评论0