پیش‌نمایش زنده
کد HTML
<div class="comic-brutal-button-container">
  <button class="comic-brutal-button">
    <div class="button-inner">
      <span class="button-text">POW!</span>
      <div class="halftone-overlay"></div>
      <div class="ink-splatter"></div>
    </div>
    <div class="button-shadow"></div>
    <div class="button-frame"></div>
  </button>
</div>
کد CSS
.comic-brutal-button-container {
  --primary-color: #ff3d3d;
  --secondary-color: #3d3dff;
  --text-color: #000000;
  --accent-color: #ffef00;
  --panel-color: #ffffff;
  --shadow-color: rgba(0, 0, 0, 0.75);

  display: flex;
  justify-content: center;
  align-items: center;
  padding: 2em;
}

.comic-brutal-button {
  position: relative;
  font-size: 1.5em;
  border: none;
  background: none;
  cursor: pointer;
  padding: 0;
  transform: rotate(-2deg);
  transform-origin: center;
  transition: transform 0.15s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.button-inner {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: var(--primary-color);
  color: var(--text-color);
  padding: 0.8em 1.5em;
  z-index: 3;
  overflow: hidden;
  transform: skew(-3deg, 1deg);
  transition: transform 0.15s cubic-bezier(0.22, 0.61, 0.36, 1);
  clip-path: polygon(
    0% 10%,
    3% 0%,
    97% 0%,
    100% 10%,
    100% 90%,
    97% 100%,
    3% 100%,
    0% 90%
  );
}

.button-text {
  position: relative;
  font-weight: 900;
  font-size: 1.2em;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  z-index: 5;
  color: var(--text-color);
  text-shadow:
    0.05em 0.05em 0 var(--panel-color),
    -0.05em -0.05em 0 var(--panel-color),
    0.05em -0.05em 0 var(--panel-color),
    -0.05em 0.05em 0 var(--panel-color);
  transform: rotate(2deg);
}

.button-frame {
  position: absolute;
  top: -0.3em;
  left: -0.3em;
  right: -0.3em;
  bottom: -0.3em;
  background-color: var(--accent-color);
  border: 0.15em solid var(--text-color);
  z-index: 1;
  transition: transform 0.15s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.button-shadow {
  position: absolute;
  top: 0.4em;
  left: 0.4em;
  right: -0.4em;
  bottom: -0.4em;
  background-color: var(--shadow-color);
  z-index: 0;
  transition: all 0.15s cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* Halftone effect using CSS */
.halftone-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: radial-gradient(
    circle at 30% 30%,
    rgba(0, 0, 0, 0.2) 0.1em,
    transparent 0.1em
  );
  background-size: 0.5em 0.5em;
  background-position: 0 0;
  opacity: 0.3;
  z-index: 2;
  mix-blend-mode: multiply;
}

/* Ink splatter effect using CSS gradients */
.ink-splatter {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  opacity: 0;
  transition: opacity 0.2s ease;
  background: radial-gradient(
      circle at 20% 30%,
      rgba(0, 0, 0, 0.15) 0%,
      rgba(0, 0, 0, 0.08) 20%,
      transparent 50%
    ),
    radial-gradient(
      circle at 70% 65%,
      rgba(0, 0, 0, 0.15) 0%,
      rgba(0, 0, 0, 0.08) 25%,
      transparent 50%
    ),
    radial-gradient(
      circle at 40% 50%,
      rgba(0, 0, 0, 0.15) 0%,
      rgba(0, 0, 0, 0.08) 30%,
      transparent 60%
    ),
    radial-gradient(
      circle at 85% 15%,
      rgba(0, 0, 0, 0.15) 0%,
      rgba(0, 0, 0, 0.08) 15%,
      transparent 40%
    );
}

/* Button hover state */
.comic-brutal-button:hover {
  transform: rotate(-1deg) scale(1.05);
}

.comic-brutal-button:hover .button-inner {
  transform: skew(-5deg, 2deg);
  background-color: var(--secondary-color);
}

.comic-brutal-button:hover .button-text {
  color: var(--panel-color);
  text-shadow:
    0.05em 0.05em 0 var(--text-color),
    -0.05em -0.05em 0 var(--text-color),
    0.05em -0.05em 0 var(--text-color),
    -0.05em 0.05em 0 var(--text-color);
}

.comic-brutal-button:hover .button-shadow {
  transform: translate(0.2em, 0.2em);
}

.comic-brutal-button:hover .ink-splatter {
  opacity: 1;
}

/* Button focus state */
.comic-brutal-button:focus {
  outline: none;
}

.comic-brutal-button:focus .button-frame {
  border-color: var(--secondary-color);
}

/* Button active state */
.comic-brutal-button:active {
  transform: rotate(0) scale(0.98);
}

.comic-brutal-button:active .button-inner {
  transform: skew(0, 0);
}

.comic-brutal-button:active .button-shadow {
  transform: translate(0.1em, 0.1em);
}

/* Comic burst animation */
@keyframes burst {
  0% {
    transform: scale(0.95);
  }
  50% {
    transform: scale(1.05);
  }
  100% {
    transform: scale(1);
  }
}

.comic-brutal-button:active .button-text {
  animation: burst 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

/* Add comic-style border on focus */
@keyframes dash {
  to {
    stroke-dashoffset: -20;
  }
}

.comic-brutal-button:focus::after {
  content: "";
  position: absolute;
  top: -0.5em;
  left: -0.5em;
  right: -0.5em;
  bottom: -0.5em;
  border: 0.15em dashed var(--text-color);
  z-index: 0;
  animation: dash 1s linear infinite;
  pointer-events: none;
}

/* Additional brutalist comic book elements */
.comic-brutal-button::before {
  content: "";
  position: absolute;
  top: 0.4em;
  left: 0.8em;
  width: 1em;
  height: 1em;
  background-color: var(--accent-color);
  border-radius: 50%;
  z-index: 2;
  opacity: 0;
  transition: opacity 0.2s ease;
}

.comic-brutal-button:hover::before {
  opacity: 0.7;
}

/* Action lines on click */
@keyframes action-lines {
  0% {
    opacity: 0;
    transform: scale(0.7);
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: scale(1.2);
  }
}

.comic-brutal-button:active::before {
  content: "";
  position: absolute;
  top: -1em;
  left: -1em;
  right: -1em;
  bottom: -1em;
  background-image: radial-gradient(var(--text-color) 0%, transparent 70%),
    repeating-conic-gradient(
      transparent 0%,
      transparent 5%,
      var(--text-color) 5%,
      var(--text-color) 6%
    );
  opacity: 0;
  z-index: 6;
  mix-blend-mode: overlay;
  pointer-events: none;
  animation: action-lines 0.5s ease-out forwards;
}
نوع: button
تاریخ ایجاد: 2026/06/05
آخرین بروزرسانی: 2026/06/05