纯css实现三维3d五角星月亮效果代码
代码语言:html
所属分类:三维
代码描述:纯css实现三维3d五角星月亮效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
@charset "UTF-8";
@property --houdini {
syntax: "<integer>";
initial-value: 1;
inherits: true;
}
html {
height: 100%;
background: #000014;
}
html:before, html:after {
position: absolute;
z-index: -1;
width: 100%;
opacity: 0.05;
color: #fff;
font: italic 900 4vmin/2 petit formal script;
text-align: center;
}
html:after {
content: "Missing you every day";
}
html:before {
content: "1st of June 1927 - 18th of January 2019";
}
body, div {
display: grid;
}
body {
--s: var(--houdini, 0);
--not-s: calc(1 - var(--s));
overflow: hidden;
margin: 0;
min-height: 18.75em;
perspective: 39em;
}
div, ::before, ::after {
grid-area: 1/1;
place-self: center;
}
::before, ::after {
--not-k: calc(1 - var(--k));
--sgn-k: calc(2*var(--k) - 1) ;
}
::before {
--k: 0 ;
}
::after {
--k: 1 ;
}
div {
transform-style: preserve-3d;
}
.toy {
animation: rot-y 12s linear infinite;
}
.toy > .hang {
transform: rotatey(calc(var(--py)*1turn)) translate(9.375em);
}
@keyframes rot-y {
to {
transform: rotatey(1turn);
}
}
.hang {
--not-typ: calc(1 - var(--typ));
position: relative;
}
.hang > .hang {
--not-pos: calc(1 - var(--pos, 0));
transform: rotatex(calc(var(--pos)*var(--dl, 0deg))) translate3d(0, calc((1.2 + var(--sf))*var(--not-pos)*6.25em), calc(var(--pos)*-6.25em)) rotatex(calc(-1*var(--pos)*var(--dl, 0deg))) translatey(calc(var(--pos)*var(--sf)*6.25em));
}
.hang:before {
position: absolute;
bottom: 50%;
width: 4px;
height: 12.5em;
background: repeating-linear-gradient(60deg, darkorange 0 4px, maroon 0 8px);
animation: rot-y 12s linear infinite reverse;
content: "";
}
@property --int {
syntax: "<integer>";
initial-value: 0;
inherits: false;
}
.⭐ > .lat {
--p: calc(var(--i)/var(--n));
--not-up: Min(1, var(--i));
--up: calc(1 - var(--not-up));
--dif: calc(2*var(--i) - var(--n));
--not-dn: Min(1, Max(var(--dif), calc(-1*var(--dif))));
--dn: calc(1 - var(--not-dn));
height: 0;
transform: rotatex(calc(var(--p)*1turn)) translatey(calc(-1*var(--sf)*6.25em));
}
.⭐ > .lat::before, .⭐ > .lat::after {
--sum: calc(var(--p) + var(--sgn-k)*var(--rcm) + 1);
--int: calc(var(--sum) - .5);
--mod: calc(var(--sum) - var(--int));
--term: calc(var(--s)*var(--mod) + var(--not-s)*var(--p));
--abs: Max(calc(var(--term) - .5), calc(.5 - var(--term)));
--inc: calc(2*var(--abs) - .5);
--sgn-j: calc(var(--dn)*var(--sgn-k) -
var(--up)*var(--sgn-k) +
var(--not-dn)*var(--not-up)*clamp(-1, var(--dif), 1));
--j: calc(.5*(var(--sgn-j) + 1));
width: calc(var(--sf)*(var(--not-typ)*1em + 2*var(--typ)*var(--rsw, 0)*6.25em));
height: calc(var(--sf)*(var(--not-typ)*var(--re) + var(--typ)*var(--rsh, 0))*6.25em);
transform-origin: 50% 0;
transform: rotatey(calc(var(--k)*.5turn)) rotatex(var(--ax)) scalex(calc(var(--not-typ) + var(--typ)*var(--sgn-q, 0)*var(--sgn-k))) rotatey(var(--ay, 0deg));
}
.⭐ .main::before, .⭐ .main::after {
-webkit-clip-path: polygon(var(--vx));
clip-path: polygon(var(--vx));
}
@property --intl {
syntax: "<integer>";
initial-value: 0;
inherits: true;
}
@property --ints {
syntax: "<integer>";
initial-value: 0;
inherits: true;
}
@property --rndl {
syntax: "<integer>";
initial-value: 0;
inherits: true;
}
@property --rnds {
syntax: "<integer>";
initial-value: 0;
inherits: true;
}
.🌙 > .lat {
--p: calc((var(--i) + .5)/var(--n));
--pl: calc(.25 - var(--rsl) - var(--p)*var(--rdl) + 1);
--ps: calc(.25 - var(--rss) - var(--p)*var(--rds) + 1);
--intl: calc(var(--pl) - .5);
--ints: calc(var(--ps) - .5);
--modl: calc(var(--pl) - var(--intl));
--mods: calc(var(--ps) - var(--ints));
--absl: Max(calc(var(--modl) - .5), calc(.5 - var(--modl)));
--abss: Max(calc(var(--mods) - .5), calc(.5 - var(--mods)));
--incl: calc(2*var(--absl) - .5);
--incs: calc(2*var(--abss) - .5);
--rndl: var(--modl);
--rnds: var(--mods);
}
.🌙 > .lat::before, .🌙 > .lat::after {
--r: calc((var(--k) + var(--not-k)*var(--rf))*6.25em);
--ax: calc(var(--not-k)*(var(--rss)*-1turn - var(--p)*var(--ds)) +
var(--k)*(var(--rsl)*-1turn - var(--p)*var(--dl)));
--h: calc((var(--not-k)*var(--res) + var(--k)*var(--rel))*6.25em);
--inc: calc(var(--k)*var(--incl) + var(--not-k)*var(--incs));
--rnd: calc(var(--k)*var(--rndl) + var(--not-k)*var(--rnds));
--dif: calc(var(--k) - var(--rnd));
--not-xor: calc(1 - var(--dif)*var(--dif));
--sh: calc(-.5*var(--not-xor));
width: 1em;
height: var(--h);
transform: translatez(calc(var(--not-k)*var(--ofx)*6.25em)) rotatex(var(--ax)) translatez(var(--r)) scaley(1.05);
background-position: 50% calc(-1*var(--i)*var(--h));
background-size: auto calc(var(--n)*var(--h));
background-color: hsl(25, 50%, calc(50%*(1 - 1.5*var(--sgn-k)*var(--inc))));
}
.🌙 > .main::before, .🌙 > .main::after {
--sh: calc(-.25 - .5*var(--k));
--mask:
rad.........完整代码请登录后点击上方下载按钮下载查看
网友评论0