پیشنمایش زنده
کد HTML
<div class="button-container">
<button class="hacker-button">
<span class="hacker-text">Access</span>
<div class="hacker-shine"></div>
<div class="hacker-border"></div>
<div class="hacker-depth"></div>
<div class="data-stream"></div>
<div class="glitch-layer"></div>
</button>
</div>
کد CSS
/* Container styling */
.button-container {
display: flex;
justify-content: center;
align-items: center;
background: #1a1a3d; /* Deep indigo background */
border-radius: 4px;
perspective: 800px; /* Reduced perspective for a flatter look */
}
/* Hacker button base */
.hacker-button {
position: relative;
padding: 16px 32px;
background: linear-gradient(45deg, #2b2b5c, #3a3a7a); /* Indigo gradient */
border: none;
border-radius: 4px; /* Sharp, techy corners */
cursor: pointer;
overflow: hidden;
transform-style: preserve-3d;
transition: all 0.3s ease;
transform: rotateX(0deg) rotateY(0deg);
box-shadow:
0 0 20px rgba(75, 75, 255, 0.2),
0 0 10px rgba(0, 255, 153, 0.1); /* Indigo and green glow */
animation: terminal-pulse 2.5s infinite ease-in-out;
}
/* Glitch Overlay 1 (Indigo) */
.hacker-button::before {
content: "Access";
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) translateZ(15px);
color: rgba(75, 75, 255, 0.4); /* Indigo glitch */
font-family: "Courier New", monospace; /* Terminal font */
font-size: 18px;
font-weight: 600;
letter-spacing: 1px;
text-transform: uppercase;
opacity: 0;
pointer-events: none;
animation: glitch-overlay-1 1.5s infinite steps(4);
}
/* Glitch Overlay 2 (Green) */
.hacker-button::after {
content: "Access";
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) translateZ(15px);
color: rgba(0, 255, 153, 0.3); /* Hacker green */
font-family: "Courier New", monospace;
font-size: 18px;
font-weight: 600;
letter-spacing: 1px;
text-transform: uppercase;
opacity: 0;
pointer-events: none;
animation: glitch-overlay-2 1.8s infinite steps(6);
}
/* Light Source */
.hacker-button .glitch-layer::before {
content: "";
position: absolute;
top: -100%;
left: 50%;
width: 50px;
height: 200%;
background: radial-gradient(
circle,
rgba(75, 75, 255, 0.3) 0%,
/* Indigo light */ rgba(0, 255, 153, 0.2) 50%,
/* Green blend */ transparent 70%
);
transform: translateX(-50%) translateZ(40px);
opacity: 0.5;
mix-blend-mode: overlay;
animation: scan-flicker 2s infinite linear;
}
/* Text Layer */
.hacker-text {
position: relative;
z-index: 3;
color: #b3b3ff; /* Light indigo */
font-family: "Courier New", monospace; /* Hacker font */
font-size: 18px;
font-weight: 600;
letter-spacing: 1px;
text-transform: uppercase;
transform: translateZ(10px);
filter: drop-shadow(0 0 4px rgba(75, 75, 255, 0.4));
animation: text-flicker 1s infinite steps(8);
}
/* Hacker Shine */
.hacker-shine {
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: linear-gradient(
90deg,
transparent,
rgba(75, 75, 255, 0.2),
/* Indigo */ rgba(0, 255, 153, 0.2),
/* Green */ transparent
);
transform: rotate(45deg) translateZ(5px);
transition: all 0.5s ease;
z-index: 2;
opacity: 0;
mix-blend-mode: screen;
}
/* Hacker Border */
.hacker-border {
position: absolute;
inset: 0;
border-radius: 4px;
padding: 2px;
background: linear-gradient(
45deg,
rgba(75, 75, 255, 0.4),
/* Indigo */ rgba(0, 255, 153, 0.3) /* Green */
);
z-index: 1;
opacity: 0.6;
transform: translateZ(3px);
filter: blur(1px);
animation: border-glitch 1.2s infinite steps(4);
}
/* Depth Layer */
.hacker-depth {
position: absolute;
inset: 0;
background: rgba(20, 20, 60, 0.5); /* Dark indigo */
border-radius: 4px;
transform: translateZ(-10px);
box-shadow:
0 0 25px rgba(75, 75, 255, 0.1),
inset 0 0 10px rgba(0, 255, 153, 0.05);
}
/* Data Stream (Hacker Rain) */
.data-stream {
position: absolute;
inset: 0;
background: linear-gradient(
to bottom,
rgba(75, 75, 255, 0.05),
rgba(0, 255, 153, 0.05),
transparent
);
transform: translateZ(-5px);
overflow: hidden;
z-index: 0;
animation: data-flow 5s infinite linear;
}
/* Glitch Layer */
.glitch-layer {
position: absolute;
inset: 0;
background: rgba(75, 75, 255, 0.1); /* Indigo glitch */
transform: translateZ(10px);
opacity: 0;
animation: glitch-layer 2s infinite steps(5);
}
/* Hover Effects */
.hacker-button:hover {
transform: rotateX(10deg) rotateY(10deg) translateZ(-20px);
box-shadow:
0 15px 30px rgba(20, 20, 60, 0.5),
0 0 40px rgba(75, 75, 255, 0.3),
0 0 20px rgba(0, 255, 153, 0.2);
animation: terminal-pulse 0.8s infinite ease-in-out;
}
.hacker-button:hover::before,
.hacker-button:hover::after,
.hacker-button:hover .glitch-layer {
opacity: 0.4;
}
.hacker-button:hover .hacker-shine {
transform: translateX(50%) rotate(45deg) translateZ(10px);
opacity: 0.8;
}
.hacker-button:hover .hacker-text {
color: #00ff99; /* Green */
transform: translateZ(25px);
filter: drop-shadow(0 0 8px rgba(0, 255, 153, 0.5));
}
.hacker-button:hover .hacker-border {
opacity: 1;
transform: translateZ(8px);
background: linear-gradient(
45deg,
rgba(75, 75, 255, 0.7),
rgba(0, 255, 153, 0.6)
);
filter: blur(1.5px) brightness(1.3);
}
.hacker-button:hover .hacker-depth {
transform: translateZ(-20px);
box-shadow:
0 0 35px rgba(75, 75, 255, 0.2),
inset 0 0 15px rgba(0, 255, 153, 0.1);
}
.hacker-button:hover .data-stream {
animation: data-flow 2s infinite linear;
}
/* Active Effects */
.hacker-button:active {
transform: rotateX(5deg) rotateY(5deg) translateZ(0px);
transition: all 0.2s ease;
box-shadow:
0 5px 15px rgba(20, 20, 60, 0.4),
0 0 20px rgba(75, 75, 255, 0.2);
}
.hacker-button:active::before,
.hacker-button:active::after,
.hacker-button:active .glitch-layer {
opacity: 0;
}
.hacker-button:active .hacker-shine {
opacity: 1;
transform: translateX(70%) rotate(45deg) translateZ(5px);
}
.hacker-button:active .hacker-text {
color: #4b4bff; /* Indigo */
transform: translateZ(10px);
filter: drop-shadow(0 0 6px rgba(75, 75, 255, 0.5));
}
.hacker-button:active .hacker-depth {
transform: translateZ(-5px);
}
/* Hacker Animations */
@keyframes terminal-pulse {
0% {
box-shadow:
0 0 20px rgba(75, 75, 255, 0.2),
0 0 10px rgba(0, 255, 153, 0.1);
}
50% {
box-shadow:
0 0 30px rgba(75, 75, 255, 0.3),
0 0 15px rgba(0, 255, 153, 0.15);
}
100% {
box-shadow:
0 0 20px rgba(75, 75, 255, 0.2),
0 0 10px rgba(0, 255, 153, 0.1);
}
}
@keyframes scan-flicker {
0% {
opacity: 0.5;
transform: translateX(-50%) translateZ(40px);
}
20% {
opacity: 0.7;
}
25% {
opacity: 0.3;
}
50% {
opacity: 0.6;
transform: translateX(-50%) translateZ(45px);
}
55% {
opacity: 0.2;
}
100% {
opacity: 0.5;
transform: translateX(-50%) translateZ(40px);
}
}
@keyframes text-flicker {
0% {
transform: translateZ(10px);
opacity: 1;
}
5% {
transform: translateZ(10px) translateX(-2px);
opacity: 0.8;
}
10% {
transform: translateZ(10px) translateX(2px);
opacity: 0.6;
}
15% {
opacity: 0.9;
}
100% {
transform: translateZ(10px);
opacity: 1;
}
}
@keyframes glitch-overlay-1 {
0% {
opacity: 0.4;
transform: translate(-50%, -50%) translateZ(15px) translateX(-3px);
}
20% {
opacity: 0.2;
transform: translate(-50%, -50%) translateZ(15px) translateX(3px);
}
25% {
opacity: 0;
}
50% {
opacity: 0.3;
transform: translate(-50%, -50%) translateZ(15px) translateY(-2px);
}
55% {
opacity: 0;
}
100% {
opacity: 0.4;
transform: translate(-50%, -50%) translateZ(15px) translateX(-1px);
}
}
@keyframes glitch-overlay-2 {
0% {
opacity: 0.3;
transform: translate(-50%, -50%) translateZ(15px) translateX(4px);
}
15% {
opacity: 0.1;
transform: translate(-50%, -50%) translateZ(15px) translateX(-4px);
}
20% {
opacity: 0;
}
40% {
opacity: 0.2;
transform: translate(-50%, -50%) translateZ(15px) translateY(3px);
}
45% {
opacity: 0;
}
100% {
opacity: 0.3;
transform: translate(-50%, -50%) translateZ(15px) translateX(2px);
}
}
@keyframes glitch-layer {
0% {
opacity: 0.2;
transform: translateZ(10px) translateX(-4px);
clip-path: polygon(0 0, 100% 0, 100% 40%, 0 40%);
}
25% {
opacity: 0.1;
transform: translateZ(10px) translateX(4px);
clip-path: polygon(0 60%, 100% 60%, 100% 100%, 0 100%);
}
30% {
opacity: 0;
}
50% {
opacity: 0.3;
transform: translateZ(10px) translateX(-2px);
clip-path: polygon(0 20%, 100% 20%, 100% 80%, 0 80%);
}
55% {
opacity: 0;
}
100% {
opacity: 0.2;
transform: translateZ(10px) translateX(2px);
clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}
}
@keyframes border-glitch {
0% {
opacity: 0.6;
filter: blur(1px) brightness(1);
}
20% {
opacity: 0.3;
filter: blur(1.5px) brightness(0.8);
}
25% {
opacity: 0.8;
filter: blur(1px) brightness(1.2);
}
30% {
opacity: 0.2;
}
50% {
opacity: 0.7;
filter: blur(1px) brightness(1.1);
}
100% {
opacity: 0.6;
filter: blur(1px) brightness(1);
}
}
@keyframes data-flow {
0% {
background-position: 0 0;
}
100% {
background-position: 0 50%;
}
}