PorównaniePorównania

border vs outline

border jest częścią modelu pudełkowego i powiększa element, a outline rysuje obwódkę na zewnątrz, bez wpływu na układ strony i rozmiar.

Na tej stronie

Porównanie w tabeli

#
  • Wpływa na rozmiar elementu

    border
    Tak, powiększa go (poza border-box)
    outline
    Nie, rysowana na zewnątrz bez zajmowania miejsca
  • Można stylować każdą stronę osobno

    border
    Tak, np. border-top
    outline
    Nie, to jeden prostokąt wokół całego elementu
  • Zaokrąglenie przez border-radius

    border
    Definiuje je
    outline
    Tak, nowe przeglądarki zaokrąglają obwódkę razem z elementem
  • Odsunięcie od elementu

    border
    Niemożliwe bez dodatkowego elementu
    outline
    Tak, przez outline-offset
  • Domyślne użycie przez przeglądarkę

    border
    Brak
    outline
    Wskaźnik fokusu klawiatury
  • Typowe użycie

    border
    Ramki kart, pól i przycisków
    outline
    Wskaźnik :focus-visible, podświetlanie przy debugowaniu

Przykład

#
CSS
.card {
  border: 2px solid #3f3f46;
}

.card:focus-visible {
  outline: 3px solid #a78bfa;
  outline-offset: 3px;
}
Podgląd

Definicja i zastosowanie

#

Właściwość border to pełnoprawna część modelu pudełkowego. Dolicza się do rozmiaru elementu, chyba że włączysz box-sizing: border-box, a każdą stronę możesz stylować osobno przez border-top, border-right i tak dalej. Zaokrąglenie narożników przez border-radius dotyczy właśnie obramowania.

outline rysowana jest na zewnątrz obramowania i nigdy nie wpływa na rozmiar ani układ sąsiednich elementów. Nie da się jej stylować osobno na każdej stronie: to zawsze jeden prostokąt wokół całego elementu. Nowoczesne przeglądarki zaokrąglają ją razem z border-radius, a outline-offset pozwala odsunąć ją od krawędzi.

Przeglądarki domyślnie używają outline do pokazywania fokusu klawiatury, więc to naturalny wybór dla własnych wskaźników fokusu i do debugowania układu, bo nigdy nie przesuwa treści. border zostaw do widocznych ramek kart, pól i przycisków, które są częścią projektu.

Składnia

#
Składnia
border: <grubość> <styl> <kolor>;
outline: <grubość> <styl> <kolor>;

Więcej przykładów

#
Outline nie zajmuje miejsca w układzie
CSS
.box-outline { outline: 6px solid #f59e0b; }
Podgląd

Mimo grubej obwódki elementy 1 i 3 stoją w tym samym miejscu, co bez niej.

Taka sama grubość border rozsuwa sąsiadów
CSS
.box-border { border: 6px solid #f59e0b; }
Podgląd

Ten sam element z obramowaniem o tej samej grubości odpycha sąsiadów 1 i 3, żeby zrobić sobie miejsce.

Dobre praktyki

#
  • Do wskaźnika fokusu klawiatury użyj outline, najlepiej z :focus-visible, żeby nie przesuwać layoutu.
  • Jeśli potrzebujesz innej grubości obramowania na jednej stronie, musi to być border. Outline jest tylko jednym prostokątem.
  • outline-offset odsuwa obwódkę od elementu bez zmiany jego rozmiaru.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.