Tworzenie gradientu na stronie z pomocą CSS3

Słowo gradient zwykle kojarzy się nam się zwykle z obrazkiem posiadającym bardzo ciekawą kolorystykę np. przechodzącym z jednej barwy w drugą.

Jeszcze niedawno taki efekt graficzny w witrynach internetowych uzyskiwało się z pomocą obrazka w tle. Rewolucja jaką było pojawienie się CSS3 sprawiło, że efekt jest także możliwy z pomocą odpowiednik właściwości CSS. Dzięki czemu możemy tworzyć nie tylko lżejsze strony (grafiki w tle zwykle spowolniają wczytywanie witryn), ale rozbudowywać je o ciekawsze rozwiązania graficzne. Nie potrzebujemy także znać (posiadać) programów graficznych i martwić się że w złe miejsce wrzucimy ilustrację.

Gdzie możemy wykorzystać gradient CSS3

Gradient możemy praktycznie umieścić w takich samych miejscach jak obrazki czyli np. w tle przycisku (button), tle strony internetowej.

Ogranicza nas jedynie wyobraźnia. Wyróżniamy 2 rodzaje gradientu:

  • Gradient linowy (do dołu/góry/prawo/lewo/na skos) linear-gradient
  • Gradient kołowy / promienisty (rozchodzący się od środka) radial-gradient

Przykładowe gradienty:

Gradient typu liniowego (linear gradient). Czyli taki, w którym następuje płynne przejście z jednego koloru w drugi z góry na dół. Czasami efekt ten nazywany jest ombre.

#grad {
    background: green; /* For browsers that do not support gradients */    background: -webkit-linear-gradient(green, yellow); /* For Safari 5.1 to 6.0 */    background: -o-linear-gradient(green, yellow); /* For Opera 11.1 to 12.0 */    background: -moz-linear-gradient(green, yellow); /* For Firefox 3.6 to 15 */    background: linear-gradient(green, yellow); /* Standard syntax */}

Gradient typu liniowego od lewej do prawej. Tym razem kolor zmienia się już z boku na bok.

#grad {
  background: green; /* For browsers that do not support gradients */  background: -webkit-linear-gradient(left, green , yellow); /* For Safari 5.1 to 6.0 */  background: -o-linear-gradient(right, green, yellow); /* For Opera 11.1 to 12.0 */  background: -moz-linear-gradient(right, green, yellow); /* For Firefox 3.6 to 15 */  background: linear-gradient(to right, green , yellow); /* Standard syntax */}

Jak widać na powyższych przykładach gradient liniowy zaczyna się od wybranego fragmentu i przechodzi w kolejny.

Gradient na ukos, skos

#grad {
  background: red; /* For browsers that do not support gradients */  background: -webkit-linear-gradient(left top, green, yellow); /* For Safari 5.1 to 6.0 */  background: -o-linear-gradient(bottom right, green, yellow); /* For Opera 11.1 to 12.0 */  background: -moz-linear-gradient(bottom right, green, yellow); /* For Firefox 3.6 to 15 */  background: linear-gradient(to bottom right, green, yellow); /* Standard syntax */}

Gradient liniowy można również obracać w inny sposób. Za kierunek obrotu odpowiedzialna jest wartość deg np:

0deg
90deg
180deg
-90deg
#grad {
    height: 100px;
    background: red; /* For browsers that do not support gradients */    
    background: -webkit-linear-gradient(0deg, green, yellow); /* For Safari 5.1 to 6.0 */    background: -o-linear-gradient(0deg, green, yellow); /* For Opera 11.1 to 12.0 */    background: -moz-linear-gradient(0deg, green, yellow); /* For Firefox 3.6 to 15 */    background: linear-gradient(0deg, green, yellow); /* Standard syntax (must be last) */}

W przypadku gradientu liniowego nie jesteśmy ograniczeni do konkretnej ilości kolorów. W efekcie możemy stworzyć wielobarwny obiekt np:

#grad {
  background: red; /* For browsers that do not support gradients */  /* For Safari 5.1 to 6.0 */  background: -webkit-linear-gradient(left,red,orange,yellow,green,blue,indigo,violet);
  /* For Opera 11.1 to 12.0 */  background: -o-linear-gradient(left,red,orange,yellow,green,blue,indigo,violet);
  /* For Fx 3.6 to 15 */  background: -moz-linear-gradient(left,red,orange,yellow,green,blue,indigo,violet);
  /* Standard syntax */  background: linear-gradient(to right, red,orange,yellow,green,blue,indigo,violet); 
}

Do tworzenia gradientów można runiesz wykorzystywać przezroczystość:

#grad {
  background: red; /* For browsers that do not support gradients */  background: -webkit-linear-gradient(left,rgba(255,0,0,0),rgba(255,0,0,1)); /*Safari 5.1-6*/  background: -o-linear-gradient(right,rgba(255,0,0,0),rgba(255,0,0,1)); /*Opera 11.1-12*/  background: -moz-linear-gradient(right,rgba(255,0,0,0),rgba(255,0,0,1)); /*Fx 3.6-15*/  background: linear-gradient(to right, rgba(255,0,0,0), rgba(255,0,0,1)); /*Standard*/}

Możemy również manipulować natężeniem kolorów np:

  background: -webkit-linear-gradient(rgba(255,0,0,0) -20%, rgba(255,0,0,1) 150%); /*Safari 5.1-6*/  background: -o-linear-gradient(rgba(255,0,0,0) -20%, rgba(255,0,0,1) 150%); /*Opera 11.1-12*/  background: -moz-linear-gradient(rgba(255,0,0,0) -20%, rgba(255,0,0,1) 150%); /*Fx 3.6-15*/  background: linear-gradient(rgba(255,0,0,0) -20%, rgba(255,0,0,1) 150%); /*Standard*/

W tym wypadku ten kolor, który ma wyższy % będzie najbardziej widoczny i dominujący.

Gradient może być również samopowtarzalny. Powtarzać go możemy kilkakrotnie:

#grad {
  background: red; /* For browsers that do not support gradients */  /* Safari 5.1 to 6.0 */  background: -webkit-repeating-linear-gradient(green, yellow 10%, green 20%);
  /* Opera 11.1 to 12.0 */  background: -o-repeating-linear-gradient(green, yellow 10%, green 20%);
  /* Firefox 3.6 to 15 */  background: -moz-repeating-linear-gradient(green, yellow 10%, green 20%);
  /* Standard syntax */  background: repeating-linear-gradient(green, yellow 10%, green 20%);
}

Drugim rodzajem gradientu jest gradient promienisty. Tworzy się go od jednego punktu następnie rozciąga się we wszystkie strony tworząc coś w rodzaju elipsy.

Gradient promienisty można z kolei uzyskać:

#grad {
  background: red; /* For browsers that do not support gradients */  background: -webkit-radial-gradient(red, yellow, green); /* Safari 5.1 to 6.0 */  background: -o-radial-gradient(red, yellow, green); /* For Opera 11.6 to 12.0 */  background: -moz-radial-gradient(red, yellow, green); /* For Firefox 3.6 to 15 */  background: radial-gradient(red, yellow, green); /* Standard syntax */}
#grad {
  background: red; /* For browsers that do not support gradients */  background: -webkit-radial-gradient(red 5%, yellow 15%, green 60%); /* Safari 5.1-6.0 */  background: -o-radial-gradient(red 5%, yellow 15%, green 60%); /* For Opera 11.6-12.0 */  background: -moz-radial-gradient(red 5%, yellow 15%, green 60%); /* For Firefox 3.6-15 */  background: radial-gradient(red 5%, yellow 15%, green 60%); /* Standard syntax */}

Oczywiście gradient promienisty nie musi tylko przybierać kszatłu jajka może być również w kształcie koła.

#grad {
  background: red; /* For browsers that do not support gradients */  background: -webkit-radial-gradient(circle, red, yellow, green); /* Safari */  background: -o-radial-gradient(circle, red, yellow, green); /* Opera 11.6 to 12.0 */  background: -moz-radial-gradient(circle, red, yellow, green); /* Firefox 3.6 to 15 */  background: radial-gradient(circle, red, yellow, green); /* Standard syntax */}

Gradient można również wykorzystać do stworzenia szachownicy (kratki) np. czarno białej.

#szachownica{
 background-image:
      -moz-linear-gradient(45deg, #000 25%, transparent 25%), 
      -moz-linear-gradient(-45deg, #000 25%, transparent 25%),
      -moz-linear-gradient(45deg, transparent 75%, #000 75%),
      -moz-linear-gradient(-45deg, transparent 75%, #000 75%);
    background-image:
      -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, #000), color-stop(.25, transparent)), 
      -webkit-gradient(linear, 0 0, 100% 100%, color-stop(.25, #000), color-stop(.25, transparent)),
      -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.75, transparent), color-stop(.75, #000)),
      -webkit-gradient(linear, 0 0, 100% 100%, color-stop(.75, transparent), color-stop(.75, #000));

    -moz-background-size:100px 100px;
    background-size:100px 100px;
    -webkit-background-size:100px 101px; /* override value for shitty webkit */    
    background-position:0 0, 50px 0, 50px -50px, 0px 50px;
}

W kodzie CSS wygląda to tak (stworzone przez Shippo)

background-image: radial-gradient(closest-side, transparent 98%, rgba(0,0,0,.3) 99%), radial-gradient(closest-side, transparent 98%, rgba(0,0,0,.3) 99%);
background-size: 80px 80px;
background-position: 0 0, 40px 40px;
width: 90%;
height: 150px;

Na stronie znajdziecie inne ciekawe przykłady:
http://lea.verou.me/css3patterns/

Obsługa przez Przeglądarki internetowe

PropertyChromeEdge IEFirefoxSafariOpera
linear-gradient26.0
10.0 -webkit-
12.010.016.0
3.6 -moz-
6.1
5.1 -webkit-
12.1
11.1 -o-
radial-gradient26.0
10.0 -webkit-
12.010.016.0
3.6 -moz-
6.1
5.1 -webkit-
12.1
11.6 -o-
repeating-linear-gradient26.0
10.0 -webkit-
12.010.016.0
3.6 -moz-
6.1
5.1 -webkit-
12.1
11.1 -o-
repeating-radial-gradient26.0
10.0 -webkit-
12.010.016.0
3.6 -moz-
6.1
5.1 -webkit-
12.1
11.6 -o-

Generatory gradientu

Źródło: http://www.w3schools.com/css/css3_gradients.asp

Tworzenie gradientu na stronie z pomocą CSS3
aurelia

Recent Posts

Mity o marce osobistej, które warto znać

Jak w przypadku wielu różnych tematów tak i w przypadku marki osobistej pojawiło się przez…

1 tydzień ago

Jakie zawody zastąpi AI? Czy mamy się czego bać?

Choć zabrzmi to może nieco dziwnie to wprowadzenie AI (sztucznej inteligencji) do naszego życia było…

2 tygodnie ago

Widmo Brockenu – co to jest?

Widmo Brockenu to dość rzadko spotykane zjawisko optyczne, najczęściej widywane w wysokich partiach gór. Można…

2 miesiące ago

Relikwie: jak zdobywano, sprzedawano i podrabiano święte przedmioty

Zacznę może od tego, że relikwia, relikwii nie równa. Wiem jeśli nie ma się pojęcia…

2 miesiące ago

Poznaj 6 powodów, dla których warto posiadać logo

Logo stanowi jeden z ważniejszych elementów tożsamości wizualnej praktycznie każdej firmy, marki czy projektu. Logo…

2 miesiące ago

Dlaczego firmy mylą markę osobistą z firmową

Budując własną markę osobistą lub chcąc ją zbudować trzeba liczyć się z wieloma wyzwaniami. Jednym…

2 miesiące ago