js+svg实现立体钟摆时钟显示时间代码
代码语言:html
所属分类:其他
代码描述:js+svg实现立体钟摆时钟显示时间代码,钟摆可用鼠标点击拖动改变时间,周围的环境也会跟随时间而改变。
代码标签: js svg实 立体 钟摆 时钟 显示 时间 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
@import url('https://fonts.cdnfonts.com/css/digital-7-mono');
*{ box-sizing: border-box; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; scroll-behavior: smooth;}
html, body { height: 100%; overflow: hidden;}
html {
filter: grayscale(1) brightness(0.5) contrast(4) brightness(1.6);
}
body {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
align-items: center;
margin: 0;
--clr-d: #c2d1e3; /* midday */
--clr-n: #35373a; /* midnight */
--clr: var(--clr-d);
--clr-dark: lch(from var(--clr) calc(l - 16) c h);
background: var(--clr);
background: linear-gradient(225deg, var(--clr), var(--clr-dark));
font-size: calc(var(--_size) * 0.02);
--_factor: min(600px, 100vh);
--_size: min(var(--_factor), 100vw);
--rotate-hour: 0;
--pecentage-of-day: 0;
}
svg {
height: 0; width: 0;
overflow: hidden;
max-width: 0px;
max-height: 0;
}
.nueclock-wrap {
width: 50em; height: 50em;
border-radius: 50%;
position: relative;
--fox: calc( sin( ( var(--rotate-hour) + 135 ) * 1deg ) );
--foy: calc( sin( ( var(--rotate-hour) + 45 )* 1deg ) );
--sox: 1; --soy: 1;
rotate: 90deg;
}
#timeContainer {
font-family: 'Digital-7 Mono', sans-serif;
font-size: 4.2em;
font-weight: 1000;
filter: blur(3px);
opacity: 0.3;
transition: opacity 0s;
text-align: center;
position: absolute;
color: #fff;
top: 32%;
transition: all 0.2s ease-in-out;
}
body:has( .hour.dragging ) #timeContainer {
opacity: 0;
}
.scene * { pointer-events: none; }
.scene:hover #timeContainer {
opacity: 0.6;
filter: blur(1px);
}
.nueclock-wrap * { transition: transform 0.2s ease-out; }
.nueclock-wrap > * { position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto; }
.hour {
width: 90%;
height: 3%;
transform-origin: 50% 50%;
clip-path: polygon(-10% -400%, 50% -400%, 50% 400%, -10% 400%);
transform: rotate(calc( 1deg * var(--rotate-hour)));
filter: grayscale(0.2) contrast(1.6);
--sox: 0.5; --soy: 0.5;
transition: width 0.2s ease-out;
}
.hour.hovered {
width: 88%;
}
.hour, .hour::before {
background: var(--clr-dark);
box-shadow:
calc(0.4em * var(--soy) * var(--foy)) calc(0.4em * var(--sox) * var(--fox)) 0.2em -0.2em #000,
calc(1em * var(--soy) * var(--foy)) calc(1em * var(--sox) * var(--fox)) 0.8em -0.2em #0005,
inset calc(-0.4em * var(--soy) * var(--foy)) calc(-1em * var(--sox) * var(--fox)) 1em -0.6em #232323,
inset calc(0.4em * var(--soy) * var(--foy)) calc(0.6em * var(--sox) * var(--fox)) 0.6em -0.5em #000a,
inset calc(0.8em * var(--soy) * var(--foy)) calc(2em * var(--sox) * var(--fox)) 1em -0.6em #eee,
inset calc(0.8em * var(--soy) * var(--foy)) calc(2em * var(--sox) * var(--fox)) 1em -0.1em #eee,
inset calc(-0.8em * var(--soy) * var(--foy)) calc(-2em * var(--sox) * var(--fox)) 2em -0.1em #232323;
}
.hour::before {
content: ''; display: block;
width: 11%;
height: 400%;
position: absolute;
bottom: -150%;
left: -2%;
border-radius: 1.2em;
--sox: 1;
--soy: 1;
cursor: grab;
}
.hour.dragging::before {
cursor: grabbing;
}
.hour::aft.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0