La forma abbreviata border
border disegna una linea attorno a un elemento, tra il suo padding e il suo margin. La forma abbreviata accetta tre parti in qualsiasi ordine: uno spessore, uno stile e un colore.
| Parte | Proprietà singola | Valori | Predefinito |
|---|---|---|---|
| Spessore | border-width | 1px, 0.2em, thin, medium, thick | medium |
| Stile | border-style | solid, dashed, dotted, double e altri | none |
| Colore | border-color | Qualsiasi colore | currentColor (il colore del testo) |
Lo stile è l'unica parte che non puoi saltare. Il suo valore predefinito è none, quindi border: 2px #2563eb; non disegna proprio nulla. Se ometti il colore, il bordo prende il colore del testo dell'elemento.
Stili di bordo
double richiede almeno 3px per mostrare due linee. groove, ridge, inset e outset sfumano il colore per sembrare in 3D e cambiano leggermente da un browser all'altro. hidden sembra uguale a none; i due differiscono solo nelle tabelle con bordi collassati, di cui parla la pagina sui bordi delle tabelle HTML.
Un lato alla volta
Ogni lato ha la sua forma abbreviata (border-top, border-right, border-bottom, border-left), e ogni parte ha proprietà per lato come border-top-color. Le versioni logiche, border-inline-start e border-block-end, seguono la direzione del testo:
border-color, border-width e border-style accettano da uno a quattro valori, nello stesso ordine in senso orario del padding: sopra, destra, sotto, sinistra.
Angoli arrotondati con border-radius
border-radius arrotonda gli angoli del bordo e dello sfondo, quindi funziona anche su elementi senza alcun bordo.
| Valore | Risultato |
|---|---|
border-radius: 8px | Tutti gli angoli arrotondati di 8px |
border-radius: 50% | Un cerchio su un elemento quadrato, un'ellisse su un rettangolo |
border-radius: 999px | Una pillola: i lati corti diventano semicerchi completi |
border-radius: 8px 0 | In alto a sinistra e in basso a destra 8px, gli altri due squadrati |
border-top-left-radius: 12px | Un solo angolo |
border-radius: 50% / 25% | Angoli ellittici: raggio orizzontale / raggio verticale |
Un figlio con uno sfondo può sporgere oltre gli angoli arrotondati del genitore. overflow: hidden sul genitore lo ritaglia seguendo la curva.
Border contro outline
Un outline sembra un bordo, ma viene disegnato fuori dal bordo e non occupa spazio, quindi aggiungerne uno non sposta mai nulla. Per questo i browser usano gli outline per gli indicatori di focus.
| Border | Outline | |
|---|---|---|
| Occupa spazio | Sì, fa parte delle dimensioni del box | No |
| Per lato | Sì (border-top, ...) | No, tutto attorno |
Segue border-radius | Sì | Sì, nei browser attuali |
| Distanza dal box | No | Sì, outline-offset |
| Uso tipico | Design | Indicatori di focus, debug |
Errori comuni
- Nessuno stile di bordo.
border: 1px #111827;eborder-color: red;non disegnano nulla. Includisolid(o un altro stile). - Un bordo che fa saltare il layout all'hover. Riserva lo spazio con un bordo trasparente, oppure usa un outline o
box-shadow. - Dimenticare il bordo nella larghezza. Un elemento con
width: 100%e un bordo esce dal contenitore concontent-box. Usabox-sizing: border-box. border-radiuscon un figlio che sporge dagli angoli. Aggiungioverflow: hiddenal genitore arrotondato.- Togliere gli outline di focus con
outline: none. Chi usa la tastiera ne ha bisogno; ridisegna l'outline invece di eliminarlo.
Domande frequenti
Come aggiungo un bordo in CSS?
Usa la forma abbreviata con uno spessore, uno stile e un colore: border: 2px solid #2563eb;. La parte che conta di più è lo stile: senza, lo stile del bordo è none e non viene disegnato nessun bordo.
Perché il mio bordo CSS non si vede?
Quasi sempre perché non è impostato nessuno stile di bordo. border: 2px #2563eb; o border-color: red; da soli non disegnano nulla, perché il border-style predefinito è none. Aggiungi solid, dashed o un altro stile.
Come faccio gli angoli arrotondati in CSS?
Usa border-radius: border-radius: 8px; arrotonda tutti e quattro gli angoli. border-radius: 50%; su un quadrato crea un cerchio, e un valore grande come 999px crea una forma a pillola. Arrotonda anche lo sfondo, pure senza bordo.
Come aggiungo un bordo su un solo lato?
Usa una proprietà per lato: border-bottom: 2px solid #e5e7eb;, oppure border-inline-start per il lato dove inizia il testo, che funziona anche con le lingue scritte da destra a sinistra.
Che differenza c'è tra border e outline?
Un bordo fa parte del box: occupa spazio e cambia le dimensioni dell'elemento. Un outline viene disegnato fuori dal bordo senza occupare spazio, non si può impostare per lato ed è quello che i browser usano per gli indicatori di focus. Entrambi seguono border-radius nei browser attuali.