پیشنمایش زنده
کد HTML
<div class="wasd-layout">
<button class="command-button key-w">
<span class="cmd-icon-text">W</span>
<span class="cmd-text"></span>
</button>
<button class="command-button key-a">
<span class="cmd-icon-text">A</span>
<span class="cmd-text"></span>
</button>
<button class="command-button key-s">
<span class="cmd-icon-text">S</span>
<span class="cmd-text"></span>
</button>
<button class="command-button key-d">
<span class="cmd-icon-text">D</span>
<span class="cmd-text"></span>
</button>
</div>
کد CSS
.command-button {
width: 60px;
height: 65px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 3px;
background-color: #000;
border: 0.5px solid rgba(0, 0, 0, 0.1);
border-radius: 15px 15px 12px 12px;
cursor: pointer;
position: relative;
user-select: none;
transform: perspective(70px) rotateX(5deg) rotateY(0deg);
will-change: transform;
transition: all 0.1s ease-in-out 0s;
background-image: linear-gradient(
to right,
rgba(0, 0, 0, 0.8),
rgba(0, 0, 0, 0)
),
linear-gradient(to bottom, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0));
background-position:
bottom right,
bottom right;
background-size:
100% 100%,
100% 100%;
background-repeat: no-repeat;
box-shadow:
inset -4px -10px 0px rgba(255, 255, 255, 0.4),
inset -4px -8px 0px rgba(0, 0, 0, 0.3),
0px 2px 1px rgba(0, 0, 0, 0.3),
0px 2px 1px rgba(255, 255, 255, 0.1);
}
/* Icon Styling */
.command-button .cmd-icon-text {
font-size: 22px;
line-height: 24px;
color: #fff;
font-weight: 600;
filter: drop-shadow(0px 1px 1px rgba(0, 0, 0, 0.5));
}
/* Text Styling */
.command-button .cmd-text {
color: #fff;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica,
Arial, sans-serif;
font-size: 9px;
font-weight: 400;
letter-spacing: 0.5px;
text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
}
.command-button::after {
content: "";
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-image: linear-gradient(
to bottom,
rgba(255, 255, 255, 0.2),
rgba(0, 0, 0, 0.5)
);
z-index: -1;
border-radius: 15px;
box-shadow:
inset 4px 0px 0px rgba(255, 255, 255, 0.1),
inset 4px -8px 0px rgba(0, 0, 0, 0.3);
transition: all 0.1s ease-in-out 0s;
}
.command-button::before {
content: "";
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-image: linear-gradient(
to right,
rgba(0, 0, 0, 0.8),
rgba(0, 0, 0, 0)
),
linear-gradient(to bottom, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0));
background-position:
bottom right,
bottom right;
background-size:
100% 100%,
100% 100%;
background-repeat: no-repeat;
z-index: -1;
border-radius: 15px;
transition: all 0.1s ease-in-out 0s;
}
/* Active / Pressed State */
.command-button:active {
transform: perspective(80px) rotateX(5deg) rotateY(1deg) translateY(3px)
scale(0.96);
height: 64px;
border: 0.25px solid rgba(0, 0, 0, 0.2);
box-shadow:
inset -4px -8px 0px rgba(255, 255, 255, 0.2),
inset -4px -6px 0px rgba(0, 0, 0, 0.8),
0px 1px 0px rgba(0, 0, 0, 0.9),
0px 1px 0px rgba(255, 255, 255, 0.2);
}
.command-button:focus {
outline: none;
}
@keyframes overlay {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* ==== for WASD positioning*/
.wasd-layout {
display: grid;
grid-template-columns: repeat(3, 60px);
grid-template-rows: repeat(2, 65px);
gap: 12px;
}
.key-w {
grid-column: 2;
grid-row: 1;
}
.key-a {
grid-column: 1;
grid-row: 2;
}
.key-s {
grid-column: 2;
grid-row: 2;
}
.key-d {
grid-column: 3;
grid-row: 2;
}