toruskit+svg实现黑夜白昼切换动画效果代码

代码语言:html

所属分类:其他

代码描述:toruskit+svg实现黑夜白昼切换动画效果代码

代码标签: toruskit svg 黑夜 白昼 切换 动画

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

<!DOCTYPE html>
<html lang="en" >
<head>
 
<meta charset="UTF-8">
<style>
    body
{
       
margin: 0;
       
padding: 0;    
}

#scene {
       
width: 100%;
       
height: 100%;
       
display: block;
}

#wrapper {
       
height: 100vh;
       
position: relative;
}

#blend {
       
mix-blend-mode: hard-light;
       
pointer-events: none;
}

#switch {
       
position: absolute;
       
right: 0;
       
background: black;
       
margin: 4rem;
       
display: flex;
       
width: 8rem;
       
height: 4rem;
       
border-radius: 3rem;
       
align-items: center;
       
justify-content: space-around;
       
cursor: pointer;
       
box-shadow: 0px 4px 30px rgb(0 0 0 / 50%);
}

#switch-moon {
       
z-index: 1;
}

#switch input {
       
visibility: hidden;
       
position: absolute;
}

#made-with {
       
background-color: rgb(40 40 40 / 30%);
       
bottom: 0;
       
color: #fff;
       
display: flex;
       
font-family: Inter, sans-serif;
       
font-size: 0.8rem;
       
font-weight: 600;
       
margin: 1rem;  
       
padding: 0.5rem 0.7rem;
       
position: fixed;
       
right: 0;
       
text-transform: uppercase;
       
text-decoration: none;
}
</style>

</head>
<body>

<div
 
id="wrapper"
 
data-tor-group="
    #blend =>
o(0) .night(#wrapper):o(1);

    #cloud_1 => .night(#wrapper):[o(0 <0.5s>) tx(-2rem <2.5s, elastic>)] animate:tx(4rem <13s, alternate, infinite>);
    #cloud_2 => .night(#wrapper):[o(0 <0.5s>) tx(2rem <2.5s, elastic, delay: 75ms>)] animate:tx(-5rem <15s, alternate, infinite>);
    #cloud_3 => .night(#wrapper):[o(0 <0.5s>) tx(2rem <2.5s, elastic, delay: 150ms>)] animate:tx(-3rem <8s, alternate, infinite>);

    #sun => .night(#wrapper):[o(0) ty(4rem <2.5s, elastic>)];
    #moon => o(0) ty(4rem) .night(#wrapper):[o(1) ty(0rem <2.5s, elastic>)];

    .star => o(0) ty(\random(1, 3)\rem) filter(drop-shadow(0px 0px 5px rgba(255,255,255,1))) transform-box(fill-box) transform-origin(center)
            .night(#wrapper):[
              o(1)
              ty(0rem <\random(1.5, 2)\s, elastic, delay: \random(50, 150)\ms>)
              s(\random(1.2, 1.5)\ <\random(1, 4)\s, infinite, alternate, delay: \random(0.5, 1)\s>)
            ];

    #windows => o(0) .night(#wrapper):o(1) mouse(x):parallax-x(0.75rem <2s>);

    #hill_1 => mouse(x):parallax-x(1.5rem <2s>);
    #hill_2 => mouse(x):parallax-x(1rem <2s>);
    #hill_3 => mouse(x):parallax-x(0.75rem <2s>);
    #hill_4 => mouse(x):parallax-x(0.5rem <2s>);
    #hill_5 => mouse(x):parallax-x(0.25rem <2s>);
    #hill_6 => mouse(x):parallax-x(0.05rem <2s>);

    #switch-sun => .night(#wrapper):tx(4rem);
    #switch-moon => o(.5) .night(#wrapper):o(1);
  "
>
 
<label for="switch-checkbox" id="switch">
   
<svg id="switch-sun" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="47.2" height="47.2" style="enable-background:new 0 0 47.2 47.2">
     
<circle cx="23.6" cy="23.6" r="23.6" style="fill:#5b51c8"/>
   
</svg>
   
<svg id="switch-moon" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="47.2" height="47.2" style="enable-background:new 0 0 47.2 47.2">
     
<path d="M34.3 2.6c1.6 3.2 2.6 6.9 2.6 10.7 0 13-10.6 23.6-23.6 23.6-3.9 0-7.5-.9-10.7-2.6 3.9 7.7 11.9 12.9 21 12.9 13 0 23.6-10.6 23.6-23.6 0-9.2-5.2-17.1-12.9-21z" style="fill:#fff"/>
   
</svg>
    <input type="checkbox" name="switch" id="switch-checkbox" data-tor="check:toggle(class
<name: night, target: #wrapper>)">
 
</label>
 
<svg id="scene" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1920 1080" preserveAspectRatio="xMidYMid slice" style="enable-background:new 0 0 1920 1080" xml:space="preserve">
   
<style>
     
.st2{fill:#fff}.st17{fill:#fdedff}
   
</style>
   
<symbol id="tree" viewBox="-31.5 -49.7 62.9 99.3">
     
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="0" y1="49.6563" x2="0" y2="-49.6563">
       
<stop offset="0" style="stop-color:#fff"/>
       
<stop offset="1" style="stop-color:#544ac5"/>
     
</linearGradient>
     
<path style="fill:url(#SVGID_1_)" d="M-31.5-49.7 0 49.7l31.5-99.4z"/>
   
</symbol>
   
<g id="sky">
     
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="960" y1="-11.3182" x2="960" y2="1091.2507">
       
<stop offset="0" style="stop-color:#5469d4"/>
       
<stop offset=".046" style="stop-color:#6a78d6"/>
       
<stop offset=".1361" style="stop-color:#9092d9"/>
       
<stop offset=".2335" style="stop-color:#b0a8dc"/>
       
<stop offset=".3382" style="stop-color:#cabadf"/>
       
<stop offset=".4526" style="stop-color:#dfc8e1"/>
       
<stop offset=".5821" style="stop-color:#edd2e2"/>
       
<stop offset=".739" style="stop-color:#f5d7e3"/>
       
<stop offset="1" style="stop-color:#f8d9e3"/>
     
</linearGradient>
     
<path style="fill:url(#SVGID_2_)" d="M-20-11.3h1960v1102.6H-20z"/>
   
</g>
   
<g id="mountain">
     
<g id="sun">
       
<g>
         
<circle class="st2" cx="802" cy="180.9" r="93"/>
       
</g>
     
</g>
     
<g id="hill_7">
       
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="1474.5" y1="141.3095" x2="1474.5" y2="691.8898">
         
<stop offset="0" style="stop-color:#7570d6"/>
         
<stop offset="1" style="stop-color:#423cc4"/>
       
</linearGradient>
       
<path style="fill:url(#SVGID_3_)" d="m923.9 691.9 550.6-550.6 550.6 550.6z"/>
       
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="1612.645" y1="141.3095" x2="1612.645" y2="446.3898">
         
<stop offset="0" style="stop-color:#101f63"/>
         
<stop offset="1" style="stop-color:#101f63;stop-opacity:0"/>
       
</linearGradient>
       
<path style="fill:url(#SVGID_4_)" d="m1474.5 141.3 26.5 110.1-39 13.5 93 181.5 208.3-16.3z"/>
     
</g>
     
<g id="hill_6">
       
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="534.5" y1="209.3095" x2="534.5" y2="759.8898">
         
<stop offset="0" style="stop-color:#7570d6"/>
         
<stop offset="1" style="stop-color:#423cc4"/>
       
</linearGradient>
       
<path style="fill:url(#SVGID_5_)" d="m-16.1 759.9 550.6-550.6 550.6 550.6z"/>
       
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="363.8549" y1="209.3095" x2="363.8549" y2="636.8898">
         
<stop offset="0" style="stop-color:#081863"/>
         
<stop offset="1" style="stop-color:#081863;stop-opacity:0"/>
       
</linearGradient>
       
<path style="fill:url(#SVGID_6_)" d="m534.5 209.3 36.5 87.1-46.5 21 23.3 130.5-95 189-296.1-49.8z"/>
     
</g>
     
<g id="hill_5">
       
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="1097.4197" y1="327.3094" x2="1097.4197" y2="971.8898">
         
<stop offset="0" style="stop-color:#dcd0f5"/>
         
<stop offset="1" style="stop-color:#745fdf"/>
       
</linearGradient>
       
<path style="fill:url(#SVGID_7_)" d="m452.8 971.9 644.6-644.6L1742 971.9z"/>
       
<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="938.2314" y1="327.3094" x2="938.2314" y2="649.5996">
         
<stop offset="0" style="stop-color:#fff"/>
         
<stop offset="1" style="stop-color:#fff;stop-opacity:0"/>
       
</linearGradient>
       
<path style="opacity:.5;fill:url(#SVGID_8_)" d="m1097.4 327.3-62.7 153.3 66.6 66-36.6 103H775.1z"/>
     
</g>
     
<g id="clouds">
       
<path id="cloud_3" class="st2" d="M1505.8 219.2c11.4-10.8 18.5-26.1 18.5-43.1 0-32.8-26.6-59.4-59.4-59.4-25.1 0-46.6 15.6-55.3 37.6-1.2-.1-2.4-.2-3.6-.2-6 0-11.7 1.3-16.8 3.6-8.1-7.8-19.2-12.6-31.3-12.6-21.6 0-39.7 15.2-44.1 35.4-1.6-.3-3.2-.4-4.8-.4-15.3 0-27.7 12.4-27.7 27.7v.5c-3.1-5.9-9.3-10-16.5-10-10.3 0-18.6 8.3-18.6 18.6s8.3 18.6 18.6 18.6H1538l-32.2-16.3z"/>
       
<path id="cloud_2" class="st2" d="M1255.2 423c5.8-7.4 9.4-16.7 9.4-26.8 0-23.8-19.3-43.1-43.1-43.1-6.1 0-11.9 1.3-17.1 3.5-9-9.6-21.7-15.5-35.8-15.5-18.3 0-34.3 10-42.7 24.9h-.6c-12.9 0-24.2 6.7-30.7 16.7-4-2-8.5-3.1-13.3-3.1-13.8 0-25.4 9.4-28.8 22.2-3.2-2-6.9-3.2-10.9-3.2-11.2 0-20.3 9.1-20.3 20.3s9.1 20.3 20.3 20.3h245.7l-32.1-16.2z"/>
       
<path id="cloud_1" class="st2" d="M482.4 317.8c4.7-4.6 7.6-11.1 7.6-18.2 0-14.2-11.5-25.6-25.6-25.6-3 0-6 .5-8.7 1.5-5.7-9.9-16.4-16.5-28.7-16.5-2.6 0-5.2.3-7.7.9-7.4-14.9-22.7-25.1-40.5-25.1-16.1 0-30.2 8.4-38.2 21-3.3-1.8-7-2.8-10.8-2.8-15.3 0-27.7 16.2-27.7 36.1 0 6 1.1 11.6 3.1 16.6l-1 1c0-10.3-8.3-18.6-18.6-18.6s-18.6 8.3-18.6 18.6 8.3 18.6 18.6 18.6h211.2l-14.4-7.5z"/>
      <.........完整代码请登录后点击上方下载按钮下载查看

网友评论0