Skip to content
← Wszystkie wpisy
1 min czytania Dawid Skłodowski

Przyciski 3D z gradientami CSS3 i Sass

Twórz elastyczne, skalowalne przyciski wyglądające jak 3D dzięki gradientom CSS3 i wygodnemu miksinowi Sass — bez użycia obrazków.

Przeglądając różne strony w internecie, często widzimy ładne przyciski wyglądające jak trójwymiarowe. W większości przypadków takie przyciski tworzone są z obrazków – gradientów. CSS3 pozwala nam tworzyć gradienty bez obrazków, przyspieszając development i czas ładowania strony. Kolejnym ważnym czynnikiem jest ich elastyczność w zmianie koloru oraz możliwość skalowania wraz z kontenerami. Próba innych kolorów dla przycisków opartych na obrazkach oznacza zmianę kolorów odpowiadających im obrazków-gradientów, co z pewnością jest czasochłonnym procesem.

przyciski

Składnia gradientów CSS jest nieco uciążliwa. Podobnie obliczenia jasności dla różnych odcieni koloru. Aby rozwiązać ten problem, stworzyłem miksin Sass, który przyjmuje kolor bazowy jako argument:

@mixin gradient-background($base_color)
  $color1: adjust-hue(lighten($base_color, 7%), 2)
  $color2: darken($base_color, 4%)
  $color3: darken($base_color, 3%)
  $color4: darken($base_color, 12%)
  background-color: $base_color
  background-image: linear-gradient(top,
                                    $base_color,
                                    $color1 45%,
                                    $color2 55%,
                                    $color3 90%,
                                    $color4)
  background-image: -webkit-linear-gradient(top,
                                            $base_color,
                                            $color1 45%,
                                            $color2 55%,
                                            $color3 90%,
                                            $color4)
  background-image: -moz-linear-gradient(top,
                                         $base_color,
                                         $color1 45%,
                                         $color2 55%,
                                         $color3 90%,
                                         $color4)

Przydatny jest również miksin dla zaokrąglonych rogów:

@mixin border-radius($radius)
  -moz-border-radius: $radius
  -webkit-border-radius: $radius
  border-radius: $radius

Mając te miksiny, stylowanie przycisku jest znacznie łatwiejsze. Styl dla zielonego przycisku (#77c62f ustawiony jako kolor bazowy):

a.button
  font-family: verdana
  color: #FFF
  @include border-radius(8px)
  @include gradient-background(#77c62f)
  text-shadow: 1px 1px 2px #000
  font-size: 40px
  padding: 5px 60px
  text-align: center
  text-decoration: none
  font-weight: bold

Styl dla czerwonego przycisku w stanie hover, active i focus (#e6572f jako kolor bazowy):

a.button
  &:hover, &:active, &:focus
    @include gradient-background(#e6572f)

Aby umieścić nasz błyszczący przycisk na stronie, możemy użyć prostego znacznika <a>:

<a class="button" href="https://www.google.com">Button</a>

W 2012 roku gradienty CSS3 były dostępne tylko w przeglądarkach Firefox, Chrome i Safari — ale już wtedy świetnie sprawdzały się na urządzeniach mobilnych, takich jak iPhone czy Android.

Poniżej znajduje się prawdziwy przykład przycisku 3D w CSS3, więc możesz zobaczyć, jak wygląda w Twojej przeglądarce:

Button