6.4. Obramowanie (border
)
Wprowadzenie: Linia wokół elementu
Właściwość border
w CSS pozwala na rysowanie linii (obramowania lub ramki) wokół elementu HTML. Obramowanie znajduje się na zewnątrz paddingu, a wewnątrz marginesu.
Border składa się z trzech podstawowych aspektów: grubości (border-width
), stylu (border-style
) i koloru (border-color
). Można je ustawiać indywidualnie lub za pomocą właściwości zbiorczej border
.
Obramowanie jest często używane do wizualnego oddzielania elementów, tworzenia ramek dla obrazków, przycisków, sekcji strony czy tabel.
Podstawowe właściwości obramowania
border-width
: Określa grubość linii obramowania. Może przyjmować wartości długości (np.px
,em
) lub słowa kluczowe:thin
(cienkie),medium
(średnie - domyślne),thick
(grube).border-style
: Określa styl linii. Jest to **wymagana** właściwość, aby obramowanie było widoczne (domyślnienone
). Najważniejsze wartości:none
: Brak obramowania (domyślne).hidden
: Jaknone
, ale ma znaczenie przy rozwiązywaniu konfliktów obramowań w tabelach.solid
: Ciągła linia.dotted
: Linia kropkowana.dashed
: Linia przerywana (kreskowana).double
: Podwójna ciągła linia (całkowita grubość równaborder-width
).groove
: Efekt 3D - wyżłobiona ramka.ridge
: Efekt 3D - wypukła ramka.inset
: Efekt 3D - element wydaje się wciśnięty.outset
: Efekt 3D - element wydaje się wypukły.
border-color
: Określa kolor linii. Może przyjmować dowolną wartość koloru CSS. Domyślnie przyjmuje wartość właściwościcolor
(kolor tekstu) elementu.
.ramka {
border-width: 2px;
border-style: dashed; /* Bez tego obramowanie nie będzie widoczne! */
border-color: green;
}
Właściwość zbiorcza border
Najczęściej używa się właściwości zbiorczej border
, która pozwala ustawić grubość, styl i kolor dla wszystkich czterech stron jednocześnie w jednej deklaracji. Wartości można podawać w dowolnej kolejności.
.ramka-zbiorcza {
/* Grubość, Styl, Kolor */
border: 1px solid black;
}
.inna-ramka {
border: thick dotted blue; /* Użycie słów kluczowych i nazwy koloru */
}
.bez-ramki {
border: none; /* Jawne usunięcie obramowania */
}
Ważne: Jeśli używasz skrótu border
, musisz podać co najmniej border-style
, aby ramka była widoczna. Jeśli podasz tylko np. border: 1px black;
, ramka się nie pojawi, bo brakuje stylu (domyślnie none
).
Stylizowanie poszczególnych krawędzi
Można również stylizować każdą krawędź (górną, prawą, dolną, lewą) niezależnie, używając bardziej szczegółowych właściwości:
- Właściwości zbiorcze dla krawędzi:
border-top: [width] [style] [color];
border-right: [width] [style] [color];
border-bottom: [width] [style] [color];
border-left: [width] [style] [color];
- Indywidualne właściwości dla krawędzi:
- Np.
border-top-width
,border-top-style
,border-top-color
- Np.
border-left-width
,border-left-style
,border-left-color
- itd. dla
right
ibottom
.
- Np.
- Ustawianie grubości/stylu/koloru dla wielu krawędzi naraz:
border-width: [top] [right] [bottom] [left];
(analogicznie jak padding/margin)border-style: [top] [right] [bottom] [left];
border-color: [top] [right] [bottom] [left];
.tylko-dolna {
border-bottom: 2px solid blue; /* Tylko dolna krawędź */
}
.rozne-krawedzie {
border-top: 1px solid red;
border-right: 2px dashed green;
border-bottom: 3px dotted blue;
border-left: 4px double orange;
}
.rozne-grubosci {
/* 1px góra, 2px prawo/lewo, 3px dół */
border-width: 1px 2px 3px;
border-style: solid;
border-color: black;
}
.rozne-kolory {
/* czerwony góra, zielony prawo, niebieski dół, pomarańczowy lewo */
border-color: red green blue orange;
border-width: 1px;
border-style: solid;
}
Zaokrąglone rogi (border-radius
)
Właściwość border-radius
pozwala na zaokrąglenie rogów elementu. Może przyjmować jedną, dwie, trzy lub cztery wartości długości lub procentów, działając analogicznie do składni padding
/margin
dla poszczególnych rogów (górny-lewy, górny-prawy, dolny-prawy, dolny-lewy).
- Jedna wartość:
border-radius: 10px;
- wszystkie rogi zaokrąglone o 10px. - Dwie wartości:
border-radius: 10px 20px;
- górny-lewy i dolny-prawy o 10px, górny-prawy i dolny-lewy o 20px. - Trzy wartości:
border-radius: 10px 20px 30px;
- górny-lewy 10px, górny-prawy i dolny-lewy 20px, dolny-prawy 30px. - Cztery wartości:
border-radius: 10px 20px 30px 40px;
- kolejno: górny-lewy, górny-prawy, dolny-prawy, dolny-lewy.
Można również definiować eliptyczne zaokrąglenia, podając dwie wartości oddzielone ukośnikiem (/
) dla każdego rogu (promień poziomy / promień pionowy), np. border-top-left-radius: 20px / 10px;
.
Wartość 50%
użyta jako border-radius
dla elementu kwadratowego stworzy idealne koło.
.zaokraglony-prostokat {
border: 1px solid gray;
padding: 20px;
border-radius: 8px; /* Wszystkie rogi zaokrąglone */
}
.kolo {
width: 100px;
height: 100px;
background-color: red;
border-radius: 50%; /* Tworzy koło */
}
.zakladka {
border: 1px solid blue;
padding: 10px;
/* Zaokrąglone tylko górne rogi */
border-radius: 10px 10px 0 0;
}
Border a rozmiar elementu (box-sizing: content-box
)
Podobnie jak padding, przy domyślnym box-sizing: content-box;
, grubość obramowania jest **dodawana** do wymiarów width
i height
, aby obliczyć całkowity rozmiar elementu.
Całkowita Szerokość = width
+ padding-left
+ padding-right
+ border-left-width
+ border-right-width
Dodanie obramowania do elementu o stałej szerokości width
zwiększy jego wizualną szerokość na ekranie.
Zadania praktyczne
Zadanie 1 (z rozwiązaniem)
Stwórz element div
z klasą .info-box
. Nadaj mu przerywane (dashed) obramowanie o grubości 1px i kolorze niebieskim (blue) ze wszystkich stron, używając właściwości zbiorczej border
.
Rozwiązanie:
HTML:
<div class="info-box">Ważna informacja.</div>
CSS:
.info-box {
border: 1px dashed blue;
padding: 15px; /* Dodajmy padding dla lepszego wyglądu */
}
Efekt: Element będzie miał niebieską, przerywaną ramkę wokół siebie.
Zadanie 2 (do samodzielnego wykonania)
Stwórz element div
. Użyj indywidualnych właściwości border-*
, aby nadać mu tylko górne i dolne obramowanie (np. 2px solid gray
), bez obramowania po bokach.
Zadanie 3 (do samodzielnego wykonania)
Stwórz kwadratowy element div
(np. width: 150px; height: 150px;
) z tłem. Użyj border-radius
, aby zaokrąglić tylko jego górny lewy i dolny prawy róg (np. o 20px
).
FAQ - Najczęściej zadawane pytania
Co jeśli podam border-width
, ale nie border-style
?
Obramowanie nie będzie widoczne. Domyślną wartością border-style
jest none
, co oznacza brak ramki, niezależnie od ustawionej grubości czy koloru.
Jaki jest domyślny kolor obramowania?
Jeśli nie ustawisz border-color
, obramowanie przyjmie bieżącą wartość właściwości color
(kolor tekstu) elementu.
Czy border-radius
działa bez ustawionego border
?
Tak. border-radius
zaokrągla rogi elementu, co wpływa na kształt tła (background
) i obszaru, w którym renderowana jest treść. Nie wymaga ono jawnego ustawienia border
, aby działać.
Jak stworzyć trójkąt za pomocą CSS borders?
Jest to popularny trik CSS. Tworzy się element o zerowej szerokości i wysokości (width: 0; height: 0;
) i ustawia bardzo grube, przezroczyste obramowania dla trzech krawędzi, a dla czwartej krawędzi ustawia się kolorowe obramowanie. Kolorowa krawędź "wypełnia" przestrzeń, tworząc trójkąt. Np. trójkąt skierowany w dół: border-left: 10px solid transparent; border-right: 10px solid transparent; border-top: 10px solid black;
.