Custom Code Experiment •
Nazar Boncuğu 3: CSS
Source Code View HTML / CSS / JavaScript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Nazar Boncuğu 3</title>
<style>
*{box-sizing:border-box;margin:0;padding:0}
body{
background:#07010f;
display:flex;align-items:center;justify-content:center;
min-height:100vh;
}
.stage{
background:radial-gradient(ellipse at 40% 35%,#1a0535 0%,#07010f 65%);
display:flex;flex-direction:column;align-items:center;justify-content:center;
min-height:100vh;padding:50px 20px 60px;
overflow:hidden;position:relative;width:100%;
perspective:900px;
}
.stars{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.star{position:absolute;border-radius:50%;background:#fff;animation:twinkle var(--d,3s) ease-in-out infinite var(--dl,0s)}
@keyframes twinkle{0%,100%{opacity:var(--op,.3);transform:scale(1)}50%{opacity:.9;transform:scale(1.5)}}
.halo{
position:absolute;
width:340px;height:340px;
border-radius:50%;
background:radial-gradient(circle, rgba(40,80,220,0.30) 0%, rgba(15,30,100,0.12) 50%, transparent 72%);
animation:halo-pulse 3.5s ease-in-out infinite;
pointer-events:none;
}
@keyframes halo-pulse{0%,100%{transform:scale(1);opacity:.7}50%{transform:scale(1.2);opacity:1}}
.eye-3d{
transform-style:preserve-3d;
animation:eye-float 7s ease-in-out infinite, eye-tilt 10s ease-in-out infinite;
transition:transform 0.12s ease-out;
}
@keyframes eye-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@keyframes eye-tilt{
0%,100%{transform:rotateX(6deg) rotateY(-4deg) translateY(0)}
30%{transform:rotateX(-4deg) rotateY(6deg) translateY(-6px)}
60%{transform:rotateX(8deg) rotateY(-6deg) translateY(-3px)}
}
.eye-system{position:relative;width:280px;height:280px;transform-style:preserve-3d}
.ring-1{
position:absolute;inset:0;border-radius:50%;
background:radial-gradient(ellipse at 35% 30%, #2550c8 0%, #0e267a 60%, #08155a 100%);
box-shadow:
inset -8px -10px 24px rgba(0,0,0,0.6),
inset 6px 8px 18px rgba(100,140,255,0.25),
0 0 40px 6px rgba(30,60,200,0.45),
0 12px 30px rgba(0,0,0,0.7);
animation:pulse-ring1 2.8s ease-in-out infinite;
}
@keyframes pulse-ring1{
0%,100%{box-shadow:inset -8px -10px 24px rgba(0,0,0,0.6),inset 6px 8px 18px rgba(100,140,255,0.25),0 0 40px 6px rgba(30,60,200,0.45),0 12px 30px rgba(0,0,0,0.7)}
50%{box-shadow:inset -8px -10px 24px rgba(0,0,0,0.5),inset 6px 8px 18px rgba(100,140,255,0.35),0 0 70px 18px rgba(50,90,255,0.6),0 16px 40px rgba(0,0,0,0.7)}
}
.ring-filigree{
position:absolute;inset:13px;border-radius:50%;
background:
repeating-conic-gradient(#d4b030 0deg 5deg,#7a5c0e 5deg 10deg),
radial-gradient(ellipse at 35% 28%, #fce080 0%, #a07818 60%, #5a3e04 100%);
background-blend-mode:multiply;
box-shadow:inset -4px -5px 12px rgba(0,0,0,0.55),inset 3px 4px 8px rgba(255,230,120,0.3),0 4px 12px rgba(0,0,0,0.4);
animation:spin-rev 18s linear infinite;
}
.ring-2{
position:absolute;inset:27px;border-radius:50%;
background:radial-gradient(ellipse at 35% 30%, #f0e8d8 0%, #d8ceba 60%, #b8a890 100%);
box-shadow:inset -4px -5px 12px rgba(0,0,0,0.45),inset 3px 3px 8px rgba(255,255,255,0.35);
}
.ring-pattern{
position:absolute;inset:55px;border-radius:50%;
background:
repeating-conic-gradient(#c0b090 0deg 5deg,#e8dcc4 5deg 10deg),
radial-gradient(ellipse at 35% 30%, #e0d4b8 0%, #b8a888 100%);
background-blend-mode:multiply;
box-shadow:inset -3px -4px 9px rgba(0,0,0,0.35),inset 2px 2px 6px rgba(255,255,255,0.2);
}
.ring-3{
position:absolute;inset:69px;border-radius:50%;
background:radial-gradient(ellipse at 35% 30%, #3060e0 0%, #1440b0 55%, #0a2880 100%);
box-shadow:inset -4px -6px 14px rgba(0,0,0,0.55),inset 3px 4px 9px rgba(80,120,255,0.28);
}
.ring-4{
position:absolute;inset:98px;border-radius:50%;
background:radial-gradient(ellipse at 35% 30%, #ece6d4 0%, #c8c0a4 60%, #a09078 100%);
box-shadow:inset -3px -4px 9px rgba(0,0,0,0.4),inset 2px 3px 6px rgba(255,255,255,0.25);
}
.ring-5{
position:absolute;inset:114px;border-radius:50%;
background:radial-gradient(ellipse at 35% 30%, #2055c8 0%, #0e3598 55%, #081e70 100%);
box-shadow:inset -3px -5px 11px rgba(0,0,0,0.5),inset 2px 3px 7px rgba(60,100,230,0.25);
}
.pupil{
position:absolute;inset:134px;border-radius:50%;
background:radial-gradient(ellipse at 38% 32%, #1c1830 0%, #06040e 55%, #020108 100%);
box-shadow:inset -2px -3px 7px rgba(0,0,0,0.8),inset 2px 2px 5px rgba(80,60,130,0.2),0 0 14px 3px rgba(10,6,30,0.6);
}
.pupil::before{
content:'';position:absolute;
top:11%;left:14%;width:30%;height:30%;
border-radius:50%;
background:radial-gradient(circle at 35% 35%, rgba(255,255,255,0.85) 0%, rgba(255,255,255,0.4) 50%, transparent 70%);
}
.pupil::after{
content:'';position:absolute;
bottom:17%;right:14%;width:13%;height:13%;
border-radius:50%;
background:rgba(255,255,255,0.22);
}
.lid-top{
position:absolute;inset:0;border-radius:50%;
background:radial-gradient(ellipse at 50% 0%, #12023a 0%, #07010f 100%);
clip-path:ellipse(50% 50% at 50% 0%);
transform-origin:50% 0%;
transform:scaleY(0);
animation:blink-top 6s ease-in-out infinite;
z-index:20;
}
.lid-top::after{
content:'';
position:absolute;
bottom:0;left:8%;width:84%;height:16px;
background:repeating-linear-gradient(90deg,#07010f 0px 3px,transparent 3px 8px);
border-radius:0 0 50% 50%;
}
.lid-bottom{
position:absolute;inset:0;border-radius:50%;
background:radial-gradient(ellipse at 50% 100%, #12023a 0%, #07010f 100%);
clip-path:ellipse(50% 50% at 50% 100%);
transform-origin:50% 100%;
transform:scaleY(0);
animation:blink-bottom 6s ease-in-out infinite;
z-index:20;
}
@keyframes blink-top{0%,7%{transform:scaleY(0)}10%,13%{transform:scaleY(1)}16%,100%{transform:scaleY(0)}}
@keyframes blink-bottom{0%,7%{transform:scaleY(0)}10%,13%{transform:scaleY(1)}16%,100%{transform:scaleY(0)}}
.rays{position:absolute;inset:0;border-radius:50%;animation:spin-slow 50s linear infinite;z-index:-1;pointer-events:none}
.ray{
position:absolute;top:50%;left:50%;
width:1.5px;height:160px;
background:linear-gradient(to bottom, rgba(200,168,48,0.28), transparent 80%);
transform-origin:top center;margin-left:-0.75px;
}
.burst-ring{position:absolute;inset:-40px;border-radius:50%;animation:spin-slow 35s linear infinite}
.burst-tri{
position:absolute;width:0;height:0;
border-left:8px solid transparent;border-right:8px solid transparent;
border-bottom:20px solid;
transform-origin:8px 180px;
}
.burst-tri:nth-child(odd){border-bottom-color:#c8a830;opacity:0.9}
.burst-tri:nth-child(even){border-bottom-color:#8a6010;opacity:0.55}
.orbit-outer{position:absolute;inset:-24px;border-radius:50%;animation:spin-rev 22s linear infinite;transform-style:preserve-3d}
.orbit-inner{position:absolute;inset:-10px;border-radius:50%;animation:spin-slow 13s linear infinite;transform-style:preserve-3d}
.orb{
position:absolute;border-radius:50%;
box-shadow:inset -2px -2px 4px rgba(0,0,0,0.5),inset 1px 1px 3px rgba(255,255,255,0.35);
}
.corner-eye{
position:absolute;width:14px;height:24px;
background:radial-gradient(ellipse at 40% 30%, #2550c8 0%, #0a1e7a 100%);
border-radius:50% 50% 60% 60%/40% 40% 60% 60%;
box-shadow:inset -1px -2px 4px rgba(0,0,0,0.5),0 2px 6px rgba(0,0,0,0.4);
}
.corner-eye::after{
content:'';position:absolute;
top:4px;left:50%;transform:translateX(-50%);
width:6px;height:6px;border-radius:50%;
background:radial-gradient(circle at 35% 35%, #f0e8d0 0%, #c8b890 100%);
}
.ce-tl{top:-32px;left:-32px;transform:rotate(-45deg)}
.ce-tr{top:-32px;right:-32px;transform:rotate(45deg)}
.ce-bl{bottom:-32px;left:-32px;transform:rotate(-135deg)}
.ce-br{bottom:-32px;right:-32px;transform:rotate(135deg)}
.teardrop{
position:absolute;bottom:-46px;left:50%;transform:translateX(-50%);
width:24px;height:40px;
background:radial-gradient(ellipse at 38% 30%, #2550c8 0%, #0e267a 60%, #07154a 100%);
border-radius:50% 50% 60% 60%/40% 40% 60% 60%;
box-shadow:inset -2px -3px 7px rgba(0,0,0,0.55),0 4px 12px rgba(0,0,0,0.5);
}
.teardrop::after{
content:'';position:absolute;
top:7px;left:50%;transform:translateX(-50%);
width:10px;height:10px;border-radius:50%;
background:radial-gradient(circle at 35% 35%, #fce080 0%, #b07c10 100%);
}
.chain{
display:flex;flex-direction:column;align-items:center;gap:3px;
margin-bottom:8px;
}
.link{
width:14px;height:9px;border-radius:50%;
border:2.5px solid #a07818;
background:linear-gradient(135deg, #d4b030 0%, #7a5a0e 100%);
box-shadow:0 1px 3px rgba(0,0,0,0.5);
}
.particles{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.particle{
position:absolute;border-radius:50%;
width:var(--sz,3px);height:var(--sz,3px);
animation:float-up var(--dur,8s) ease-in-out infinite var(--delay,0s);
left:var(--left,50%);bottom:0;
}
@keyframes float-up{
0%{transform:translateY(0) translateX(0) scale(1);opacity:var(--op,.5)}
50%{transform:translateY(-180px) translateX(var(--dx,10px)) scale(0.8);opacity:.8}
100%{transform:translateY(-360px) translateX(calc(var(--dx,10px)*2)) scale(0.4);opacity:0}
}
@keyframes spin-slow{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes spin-rev{from{transform:rotate(0deg)}to{transform:rotate(-360deg)}}
</style>
</head>
<body>
<div class="stage" id="stage">
<div class="stars" id="stars"></div>
<div class="particles" id="particles"></div>
<div class="halo"></div>
<div class="chain">
<div class="link"></div>
<div class="link"></div>
<div class="link"></div>
</div>
<div class="eye-3d" id="eye3d">
<div class="eye-system">
<div class="rays" id="rays"></div>
<div class="burst-ring" id="burst"></div>
<div class="orbit-outer" id="orbitOuter"></div>
<div class="ring-1"></div>
<div class="ring-filigree"></div>
<div class="ring-2"></div>
<div class="ring-pattern"></div>
<div class="ring-3"></div>
<div class="ring-4"></div>
<div class="ring-5"></div>
<div class="pupil"></div>
<div class="orbit-inner" id="orbitInner"></div>
<div class="lid-top"></div>
<div class="lid-bottom"></div>
<div class="corner-eye ce-tl"></div>
<div class="corner-eye ce-tr"></div>
<div class="corner-eye ce-bl"></div>
<div class="corner-eye ce-br"></div>
<div class="teardrop"></div>
</div>
</div>
</div>
<script>
(function(){
const starsEl = document.getElementById('stars');
for(let i=0;i<80;i++){
const s=document.createElement('div');
s.className='star';
const sz=Math.random()*2+0.5;
s.style.cssText=`width:${sz}px;height:${sz}px;left:${Math.random()*100}%;top:${Math.random()*100}%;--d:${2+Math.random()*4}s;--dl:${Math.random()*4}s;--op:${0.15+Math.random()*0.55}`;
starsEl.appendChild(s);
}
const particlesEl = document.getElementById('particles');
for(let i=0;i<18;i++){
const p=document.createElement('div');
p.className='particle';
const sz=Math.random()*3+1.5;
const isBlue=Math.random()>0.5;
const col=isBlue?`rgba(80,140,255,${0.3+Math.random()*0.4})`:`rgba(200,168,48,${0.3+Math.random()*0.4})`;
p.style.cssText=`width:${sz}px;height:${sz}px;background:${col};left:${30+Math.random()*40}%;--dur:${5+Math.random()*8}s;--delay:${Math.random()*6}s;--dx:${(Math.random()-0.5)*30}px;--op:${0.3+Math.random()*0.4}`;
particlesEl.appendChild(p);
}
const raysEl = document.getElementById('rays');
for(let i=0;i<24;i++){
const r=document.createElement('div');
r.className='ray';
r.style.transform=`rotate(${i*15}deg)`;
raysEl.appendChild(r);
}
const burstEl = document.getElementById('burst');
for(let i=0;i<24;i++){
const t=document.createElement('div');
t.className='burst-tri';
t.style.transform=`rotate(${i*15}deg)`;
burstEl.appendChild(t);
}
const outerEl = document.getElementById('orbitOuter');
const outerR=154;
for(let i=0;i<15;i++){
const b=document.createElement('div');
b.className='orb';
const big=i%2===0;
const sz=big?10:6;
const col=big?'radial-gradient(circle at 35% 30%, #c8d8f8 0%, #6090d0 100%)':'radial-gradient(circle at 35% 30%, #f0e8d0 0%, #a89060 100%)';
const angle=i*(360/15);
const rad=angle*Math.PI/180;
const cx=140+outerR*Math.sin(rad)-sz/2;
const cy=140-outerR*Math.cos(rad)-sz/2;
b.style.cssText=`width:${sz}px;height:${sz}px;background:${col};left:${cx}px;top:${cy}px;`;
outerEl.appendChild(b);
}
const innerEl = document.getElementById('orbitInner');
const innerR=148;
for(let i=0;i<12;i++){
const b=document.createElement('div');
b.className='orb';
const big=i%2===0;
const sz=big?8:5;
const col=big?'radial-gradient(circle at 35% 30%, #fce080 0%, #a07010 100%)':'radial-gradient(circle at 35% 30%, #ffe8a0 0%, #c09020 100%)';
const angle=i*(360/12);
const rad=angle*Math.PI/180;
const cx=140+innerR*Math.sin(rad)-sz/2;
const cy=140-innerR*Math.cos(rad)-sz/2;
b.style.cssText=`width:${sz}px;height:${sz}px;background:${col};left:${cx}px;top:${cy}px;`;
innerEl.appendChild(b);
}
const eye3d = document.getElementById('eye3d');
const stage = document.getElementById('stage');
let animating = true;
stage.addEventListener('mousemove', e=>{
animating = false;
eye3d.style.animation = 'none';
const rect=stage.getBoundingClientRect();
const cx=rect.left+rect.width/2;
const cy=rect.top+rect.height/2;
const dx=(e.clientX-cx)/rect.width;
const dy=(e.clientY-cy)/rect.height;
eye3d.style.transform=`rotateX(${-dy*22}deg) rotateY(${dx*26}deg)`;
});
stage.addEventListener('mouseleave', ()=>{
eye3d.style.animation = 'eye-float 7s ease-in-out infinite, eye-tilt 10s ease-in-out infinite';
eye3d.style.transform = '';
animating = true;
});
})();
</script>
</body>
</html>