Jak stworzyć przycisk 3D przy użyciu CSS3

Aby stworzyć przycisk 3D przy użyciu CSS3, możemy skorzystać z kilku właściwości, takich jak cienie, gradienty oraz pseudo-elementy, które nadadzą efekt głębi. Poniżej przedstawiam kilka przykładów wraz z opisem, jak każda właściwość wpływa na efekt 3D.

Przykład 1: Prosty przycisk 3D za pomocą cienia (box-shadow)

<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    .button-3d {
      background-color: #3498db; /* Niebieski kolor tła */
      color: white; /* Kolor tekstu */
      padding: 15px 30px; /* Wewnętrzny odstęp (padding) */
      font-size: 18px; /* Rozmiar tekstu */
      border: none; /* Brak obramowania */
      border-radius: 5px; /* Zaokrąglone rogi */
      box-shadow: 0 5px 0 #2980b9, /* Cień poniżej przycisku */
                  0 10px 15px rgba(0, 0, 0, 0.2); /* Cień za przyciskiem */
      cursor: pointer;
      transition: all 0.2s ease; /* Płynne przejście animacji */
    }

    .button-3d:active {
      box-shadow: 0 2px 0 #2980b9, /* Przyciśnięcie - cień bliżej */
                  0 5px 10px rgba(0, 0, 0, 0.2);
      transform: translateY(3px); /* Przesunięcie w dół */
    }
  </style>
</head>
<body>

<button class="button-3d">Przycisk 3D</button>

</body>
</html>

Wyjaśnienie funkcji:

  • background-color: Określa kolor tła przycisku.
  • color: Ustala kolor tekstu przycisku.
  • padding: Wewnętrzny odstęp, aby przycisk był większy.
  • box-shadow: Tworzy cień, który symuluje głębię przycisku. Pierwszy cień 0 5px 0 #2980b9 to cień bezpośrednio pod przyciskiem, tworzący efekt podniesienia. Drugi cień 0 10px 15px rgba(0, 0, 0, 0.2) jest rozmytym cieniem dodającym głębi w tle.
  • transition: Płynne przejście między stanami przycisku (normalny, aktywny).
  • :active: Pseudoklasa zmieniająca wygląd przycisku po kliknięciu (obniżenie cienia i przesunięcie).

Przykład 2: Przyciski 3D z gradientem

<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    .button-gradient {
      background: linear-gradient(145deg, #6c7ae0, #384ba8); /* Gradient tła */
      color: white;
      padding: 15px 40px;
      font-size: 18px;
      border: none;
      border-radius: 10px;
      box-shadow: 5px 5px 15px #222, /* Głęboki cień */
                  -5px -5px 15px #fff; /* Jasny cień */
      cursor: pointer;
      transition: all 0.2s ease;
    }

    .button-gradient:active {
      box-shadow: inset 5px 5px 15px #222, /* Wewnętrzny cień */
                  inset -5px -5px 15px #fff;
    }
  </style>
</head>
<body>

<button class="button-gradient">Przycisk 3D z gradientem</button>

</body>
</html>

Wyjaśnienie funkcji:

  • background: linear-gradient(...): Ustawia gradient liniowy, który tworzy iluzję światła padającego na przycisk.
  • box-shadow: Tworzy dwa cienie – jeden ciemny cień po prawej stronie (głębia), drugi jasny po lewej, co sprawia, że przycisk wygląda na „wklęsły”.
  • :active: Podczas kliknięcia, cienie są zmieniane na wewnętrzne (inset), co symuluje wciśnięcie przycisku.

Przykład 3: Przyciski 3D z pseudo-elementami

<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    .button-pseudo {
      position: relative;
      background-color: #e74c3c; /* Kolor tła */
      color: white;
      padding: 15px 30px;
      font-size: 18px;
      border: none;
      border-radius: 5px;
      cursor: pointer;
      transition: all 0.2s ease;
    }

    .button-pseudo::before {
      content: '';
      position: absolute;
      left: 0;
      top: 0;
      width: 100%;
      height: 100%;
      background-color: #c0392b; /* Kolor pseudo-elementu (cień) */
      border-radius: 5px;
      z-index: -1; /* Za przyciskiem */
      transform: translate(5px, 5px); /* Przesunięcie pseudo-elementu */
      transition: all 0.2s ease;
    }

    .button-pseudo:active::before {
      transform: translate(2px, 2px); /* Przesunięcie pseudo-elementu po kliknięciu */
    }
  </style>
</head>
<body>

<button class="button-pseudo">Przycisk 3D z pseudo-elementem</button>

</body>
</html>

Wyjaśnienie funkcji:

  • position: relative: Umożliwia manipulowanie pozycją pseudo-elementu względem przycisku.
  • ::before: Tworzy pseudo-element before, który jest używany jako cień przycisku. Dzięki z-index: -1 znajduje się on za przyciskiem, a jego przesunięcie (transform: translate) sprawia, że wygląda jak cień.
  • :active::before: Po kliknięciu pseudo-element przesuwa się bliżej, co symuluje efekt „wciskania” przycisku.

Wykorzystanie takich właściwości jak box-shadow, linear-gradient, czy pseudo-elementów (::before, ::after) pozwala na tworzenie efektownych przycisków 3D w CSS3. Każda z tych technik dodaje głębi, a połączenie kilku z nich (jak cienie, gradienty, pseudo-elementy) może dać jeszcze bardziej zaawansowany efekt.

Szukasz taniego i dobrego hostingu dla swojej strony www? - Sprawdź Seohost.pl