CSS podstawy
Kaskadowe arkusze stylów CSS (ang. Cascading Style Sheets) to kod służący do nadawania wyglądu strony. CSS Podstawy przeprowadzi cię przez bazowe zagadnienia, abyś mógł zacząć modyfikować wygląd swojej strony. Odpowiemy na takie pytania jak: Jak zrobić, żeby mój tekst był czarny albo czerwony? Jak wyświetlić poszczególną zawartość strony w wybranych miejscach ekranu? Jak dekorować stronę obrazami czy nadać kolor tła?
Czym właściwie jest CSS?
Podobnie jak HTML, CSS nie jest językiem programowania. Nie jest jednak też językiem znaczników — jest językiem arkuszy stylów (ang. style sheet language). Oznacza to, że pozwala on selektywnie stosować style do elementów w dokumentach HTML. Na przykład, aby zaznaczyć wszystkie paragrafy na stronie HTML i zmienić w nich kolor tekstu na czerwono, należy napisać ten kod CSS:
p {
color: red;
}
Sprawdźmy: wklej te trzy linie kodu do nowego pliku. Plik nazwij style.css
i umieść go w katalogu styles
.
Wciąż jednak musimy powiązać ten kod CSS z twoim dokumentem HTML. W przeciwnym wypadku stworzony kod CSS nie będzie miał wpływu na wygląd twojej strony. (Jeśli nie śledzisz naszego projektu od poczatku, przeczytaj Struktura plików witryny oraz HTML podstawy, żeby dowiedzieć się co wpierw należy wykonać.)
- Otwórz plik
index.html
i wklej poniższy kod gdzieś w sekcji nagłówka (czyli pomiędzy elementami<head>
i</head>
):<link href="styles/style.css" rel="stylesheet" type="text/css">
- Zapisz plik
index.html
a następnie otwórz go w przeglądarce. Powinieneś móc zobaczyć coś takiego:
Jeśli tekst twoich akapitów jest czerwony, gratulacje! Właśnie napisałeś swój pierwszy skuteczny kod CSS.
Anatomia reguł CSS
Przyjrzyjmy się nieco bardziej szczegółowo naszemu kodowi CSS:
Cała struktura jest nazywana listą dyrektyw - reguł. Oto nazwy poszczególnych części:
- Selektor
- Element HTML na początku reguły. Wybiera poszczególne elementy (bądź też tylko jeden) do wystylizowania - w tym wypadku wszystkie elementy
p
. Aby dodać styl do innego elementu, po prostu zmień selektor; - Deklaracja
- Pojedyncza reguła, taka jak
color: red;
, która ustala jakie właściwości elementu chcesz wystylizować. - Właściwości
- Sposoby stylizowania danego elementu HTML. (W powyższym przykładzie
color
jest właściwością selektrorap
.) W CSS wybierasz, która właściwość ma być nadana w danej deklaracji. - Wartość właściwości
- Po prawej stronie właściwości za dwukropkiem mamy wartość właściwości, która wybiera jeden z wielu możliwych wyglądów dla danej właściwości (istnieje wiele wartości
color
opróczred
).
Zauważ inne ważne części składni:
- Każda deklaracja (oprócz selektror) musi być ujęta w nawias klamrowy (
{}
). - W ramach każdej deklaracji należy użyć dwukropka (
:
), aby oddzielić właściwość od jej wartości. - W ramach każdej deklaracji należy użyć średnika (
;
), aby oddzielić każdą deklarację od następnej.
Aby zmodyfikować wiele wartości właściwości jednocześnie, wystarczy napisać je oddzielone średnikami, np.:
p {
color: red;
width: 500px;
border: 1px solid black;
}
Wybieranie wielu elementów
Możesz również wybrać wiele typów elementów i zastosować dla nich jeden zestaw deklaracji. Wypisz kilka selektorów oddzielonych przecinkami. Na przykład:
p,li,h1 {
color: red;
}
Inne typy selektorów
Istnieje wiele innych typów selektorów. Do tej pory używaliśmy tylko selektorów elementów, które wybierają wszystkie elementy danego typu z kodu HTML. Ale możemy stworzyć bardziej szczegółowe selektory. Oto kilka powszechnych typów selektorów:
Nazwa selektora | Co wybiera? | Przykład |
---|---|---|
Selektor elementu (czasem nazywany selektorem tagu lub typu) | Element(y) HTML o podanym typie. | p Wybiera elementy <p> |
Selektor ID | Element na stronie o podanym ID (na jednej stronie HTML możesz użyć konkretnego ID tylko raz). | #my-id Wybiera <p id="my-id"> lub <a id="my-id"> |
Selektor klasy | Element(y) na stronie o podanej klasie (Tej samej klasy możesz użyć wiele razy na stronie). | .my-class Wybiera <p class="my-class"> oraz <a class="my-class"> |
Selektor atrybutu | Element(y) na stronie o podanym atrybucie. | img[src] wybiera <img src="myimage.png"> ale nie <img> |
Selektor pseudo-klasy | Element(y) o określonym stanie np. najechanie myszą na element | a:hover Wybiera <a> , ale tylko gdy kursor znajduje się nad elementem. |
Istnieje wiele innych typów selektorów, możesz je poznać w naszym Selectors guide.
Czcionki i tekst
Teraz, gdy poznaliśmy podstawy CSS, dodajmy więcej reguł i informacji do naszego pliku style.css
żeby nasz przykład wyglądał lepiej. Zacznijmy od zmiany wyglądu czcionek i tekstu.
- Na początek, cofnij się i znajdź output from Google Fonts, który przechowałeś w bezpiecznym miejscu. Dodaj element
<link>
gdzieś wewnątrz sekcji head w plikuindex.html
(gdziekolwiek pomiędzy tagami<head>
i</head>
). Linijka będzie wyglądała podobnie do:<link href='https://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
- Następnie, usuń istniejące reguły w pliku
style.css
. To był dobry test, ale czerwony tekst nie wygląda najlepiej. - Dodaj poniższy kod, zastępując linie "placeholder" z
font-family
wygenerowanym w Google Fonts. (font-family
oznacza czcionkę lub czcionki których chcesz używać). Pierwsza reguła ustala bazową wielkość tekstu i czcionkę dla całej strony (ponieważ<html>
to element-rodzic całej strony i wszystkie elementy wewnątrz niego dziedziczą ten samfont-size
ifont-family
):html { font-size: 10px; /* px oznacz 'piksele': bazowy rozmiar tekstu to teraz 10 pikseli wysokości */ font-family: placeholder; /* tu powinnien być font-family wygenerowany w Google fonts */ }
Uwaga: Wszystko w dokumencie CSS pomiędzy
/*
i*/
jest komentarzem CSS, który przyglądarka zignoruje podczas wyświetlania strony. To miejsce dla Ciebie na notatki dotyczące tego co dzieje się w danym miejscu. - Teraz ustawimy rozmiar czcionki dla elementów zawierających tekst wewnątrz ciała (body) HTML: (
<h1>
(en-US),<li>
, i<p>
). Wycentrujemy również tekst naszego nagłówka i ustawimy wysokość linii tekstu i odstęp między znakami dla głównej treści aby uczynić ją bardziej czytelną:h1 { font-size: 60px; text-align: center; } p, li { font-size: 16px; line-height: 2; letter-spacing: 1px; }
Możesz dostosować wartości px
na jakiekolwiek chcesz, aby uzyskać wygląd jaki chcesz, ale generalnie twoja strona powinna wyglądać podobnie jak ta:
Pudełka, pudełka, wszędzie pudełka
Jedną z rzeczy którą zauważysz podczas pisania CSS to, że wiele z nich dotyczy pudełek (ang. boxes) — ustawianie ich rozmiaru, koloru, pozycji etc. O większości elementów na stronie możesz myśleć jak o pudełkach stawianych jedne na drugim.
Nic dziwnego, że układ CSS opiera się głównie na modelu pudełkowym (ang. box model). Każdy z bloków zajmujących miejsce na Twojej stronie ma takie właściwości:
padding
, przestrzeń wokół elementu (np. wokół paragrafu tekstu)border
, obramowanie poza padding-iemmargin
, przestrzeń wokół zewnętrznej części elementu
W tej sekcji możemy także użyć:
width
, szerokość elementu,background-color
, kolor pod zawartością i paddingiem elementu,color
, kolor treści elementu (zazwyczaj tekstu),text-shadow
: ustawia cień pod tekstem wewnątrz elementu,display
: określa sposób wyświetlania elementu (póki co nie martw się tym).
Dodajmy trochę więcej CSS do naszej strony! Dodawaj nowe reguły na dole pliku i nie bój się eksperymentować ze zmianą wartości, aby zobaczyć, jak działają.
Zmiana koloru strony
html {
background-color: #00539F;
}
Ten zestaw reguł ustawi kolor tła dla całej strony. Zmień powyższy kod koloru na dowolny wybrany podczas planning your site.
Sortowanie elementów body
body {
width: 600px;
margin: 0 auto;
background-color: #FF9500;
padding: 0 20px 20px 20px;
border: 5px solid black;
}
Teraz element <body>
. Jest tu kilka deklaracji, więc przejrzyjmy je wszystkie jedna po drugiej:
width: 600px;
— wymusza, aby szerokość elementu body wynosiła 600 pikseli.margin: 0 auto;
— Kiedy ustawiasz dwie wartości na właściwościach takich jakmargin
czypadding
, pierwsza wartość dotyczy górnej i dolnej strony elementu (ustawia je na 0 w tym wypadku), a druga wartość ustawia lewą i prawą stronę (auto
to specjalna wartość która dzieli dostępną przestrzeń w poziomie równo pomiędzy lewą i prawą stronę). Możesz równiej użyć jednej, dwóch, trzech lub czterech wartości tak jak zostało to opisane tutaj.background-color: #FF9500;
— jak wcześniej, ustawia tło elementu. Użyliśmy czerwono-pomarańczowego koloru dla body, jako przeciwieństwa dla ciemno niebieskiego koloru dla elementu<html>
, ale nie krępuj się eksperymentować.padding: 0 20px 20px 20px;
— mamy cztery wartości do ustawienia odstępów do uzyskania przestrzeni wokół elementu. Tym razem ustawiamy brak górnego odstępu i po 20 pikseli odstępu dla prawej strony, dołu i lewej strony. Wartości ustawiają kolejno górę, prawą stronę, dół i lewą stronę.border: 5px solid black;
— ta prosta reguła ustawia obramowanie ciągłą linią o szerokości 5-ciu pikseli w czarnym kolorze dla każdego z boków.
Ustawianie i stylowanie głównego nagłówka
h1 {
margin: 0;
padding: 20px 0;
color: #00539F;
text-shadow: 3px 3px 1px black;
}
Być może zauważysz paskudną szparę na górze ciała strony. Dzieje się tak dlatego, że przeglądarki stosują pewne domyślne style dla elementu <h1>
(en-US) (oraz innych), nawet jeżeli nie użyjesz żadnego stylu CSS! To może brzmieć jak zła koncepcja, ale chcemy by nawet nieostylowana strona wyglądała czytelnie. Aby pozbyć się luki, zmieniliśmy domyślny styl, ustawiając margin: 0;
.
Następnie ustawiliśmy górny i dolny margines nagłówka na 20 pikseli i nadaliśmy tekstowi nagłówka taki sam kolor, jak kolor tła dla html.
Ciekawą właściwością, którą tutaj wykorzystaliśmy, jest text-shadow
, który nadaje cień dla tekstu wewnątrz elementu. Jego cztery wartości są następujące:
- Pierwsza wartość w pikselach określa przesunięcie poziome cienia od tekstu - jak daleko przesunąć go w poprzek: wartość ujemna powinna przesunąć cień w lewo.
- Druga wartość w pikselach określa pionowe przesunięcie cienia - jak daleko przesunąć go w dół; Wartość ujemna przesunie cień w górę.
- Trzecia wartość w pikselach to promień rozmycia cienia — większa wartość oznacza bardziej rozmyty cień.
- Czwarta wartość określa kolor cienia.
Ponownie, eksperymentuj z innymi wartościami i zobacz co możesz zrobić!
Centrowanie obrazka
img {
display: block;
margin: 0 auto;
}
Wreszcie wycentrujemy obrazek żeby wyglądał lepiej. Możemy użyć ponownie triku margin: 0 auto
którego użyliśmy w przypadku body, ale dodatkowo musimy zrobić coś jeszcze. Element <body>
jest blokowy (ang. block), co oznacza, że zajmuje całą dostępną przestrzeń na stronie i możesz zastosować dla niego marginesy i inne ustawienia wielkości. Z drugiej strony, obrazki są elementali liniowymi (ang.inline) i nie posiadają takich właściwości. Dlatego żeby zastosować marginesy dla grafiki musimy zmienić jej sposób wyświetlania na blokowy używając display: block;
.
Note: Powyższe instrukcje zakładają, że używasz obrazu o szerokości mniejszej niż szerokość ustawiona dla elementu body (600 pikseli). Jeśli obraz jest większy, spowoduje to przelanie treści i rozlanie jej na resztę strony. Aby temu zapobiec możesz 1) zmniejszyć wielkość obrazu za pomocą editora graficznego, lub 2) zmniejszyć obraz przy użyciu CSS ustawiając właściwość width
dla elementu <img>
na mniejszą wartość (np., 400 px;
).
Uwaga: Nie przejmuj się jeżeli jeszcze nie rozumiesz display: block;
i różnicy między elementami liniowymi a blokowymi. Zrozumiesz z czasem zgłębiania wiedzy o CSS. Więcej o różnych dostępnych sposobach wyświetlania możesz znaleźć w naszym display reference page.
Konkluzja
Jeżeli prześledziłeś instrukcje z tego artykułu powinieneś zakończyć ze stroną wyglądającą jak ta (możesz również zobaczyć naszą wersję tutaj):
Jeżeli utkniesz możesz zawsze porównać swój kod z naszym gotowym przykładem na GitHub.
To naprawdę podstawowe informacje o CSS. Aby dowiedzieć się więcej sprawdź nasz CSS Learning topic.