Bordi

Podcast CSS - 016: Borders .

Nel modulo Box model, abbiamo considerato un'analogia con i frame per descrivere ogni sezione del modello box.

Tre cornici affiancate.
Il frame centrale ha le sezioni del modello della scatola sopra

La casella di bordo è la cornice delle caselle, e le proprietà border offrono una vasta gamma di opzioni per creare il frame quasi tutti gli stili che ti vengono in mente.

Proprietà dei bordi

Le singole proprietà border consentono di applicare uno stile alle varie parti di un bordo.

Supporto dei browser

  • Chrome: 1.
  • Edge: 12.
  • Firefox: 1.
  • Safari: 1.

Origine

Stile

Per visualizzare un bordo, devi definire border-style Puoi scegliere tra più opzioni:

Quando utilizzi gli stili ridge, inset, outset e groove, il browser scurirà il colore del bordo per il secondo colore mostrato per fornire contrasto e profondità. Questo comportamento può variare da browser a browser, in particolare per i colori scuri come black. In Chrome, questi stili per i bordi appariranno in tinta unita e in Firefox, saranno illuminati per ottenere un secondo colore più scuro.

Il comportamento del browser può variare anche per altri stili di bordo, quindi è importante testarlo in browser diversi. Un esempio comune di questa differenza è il modo in cui ciascun browser esegue il rendering degli stili dotted e dashed.

La demo sui confini di Chrome
  Firefox e Safari, che dimostrano le sottili differenze
  come vengono visualizzati i bordi
I bordi visualizzati in Chrome, Firefox e Safari.

Per impostare lo stile del bordo su ciascun lato del riquadro: puoi utilizzare border-top-style, border-right-style, border-left-style, e border-bottom-style.

Sintesi

Come per margin e padding, puoi utilizzare border: proprietà abbreviata per definire tutte le parti del bordo in un'unica dichiarazione.

.my-element {
    border: 1px solid red;
}

L'ordine dei valori nella forma abbreviata border è border-width, border-style e poi border-color.

Colore

Puoi impostare il colore su tutti i lati della scatola o su ogni singolo lato con border-color Per impostazione predefinita, utilizza il colore del testo corrente della casella: currentColor. Ciò significa che se dichiari solo le proprietà di confine, come larghezza, il colore sarà quel valore calcolato, a meno che non lo imposti esplicitamente.

.my-element {
    color: blue;
    border: solid; /* Will be a blue border */
}

.my-element {
    color: blue;
    border: solid yellow;
}

Per impostare un colore per il bordo su ciascun lato della casella: utilizzare border-top-color, border-right-color, border-left-color e border-bottom-color.

Larghezza

La larghezza di un bordo è lo spessore della linea ed è controllata da border-width La larghezza predefinita del bordo è medium. Non saranno visibili, tuttavia, a meno che non definisci uno stile. Puoi utilizzare altre larghezze denominate, ad esempio thin e thick.

Le proprietà border-width accettano anche un'unità di lunghezza come px, em, rem o %. Per impostare la larghezza del bordo su ciascun lato del riquadro, utilizza border-top-width, border-right-width, border-left-width e border-bottom-width.

Proprietà logiche

Nella Nel modulo Proprietà logiche hai scoperto come fare riferimento a flusso a blocchi e flusso in linea. anziché espliciti in alto, a destra, in basso o a sinistra.

Puoi usare questa funzionalità anche con i bordi:

.my-element {
    border: 2px dotted;
    border-inline-end: 2px solid red;
}

In questo esempio, per .my-element tutti i lati sono definiti con 2px, bordo tratteggiato che rappresenta il colore corrente del testo. Il bordo inline-end viene quindi definito come 2px, solido e rosso. Ciò significa che nelle lingue da sinistra a destra, come l'inglese, il bordo rosso sarà sul lato destro della casella. Nelle lingue da destra a sinistra, come l'arabo, il bordo rosso sarà sul lato sinistro della casella.

Il supporto dei browser varia per le proprietà logiche nei bordi, quindi assicurati di verificare l'assistenza prima dell'uso.

Raggio bordo

Per assegnare gli angoli arrotondati al riquadro, utilizza la Proprietà border-radius.

.my-element {
    border-radius: 1em;
}

Questa forma abbreviata aggiunge un bordo uniforme a ogni angolo del riquadro. Come per le altre proprietà dei bordi, puoi definire il raggio del bordo per ogni lato border-top-left-radius, border-top-right-radius, border-bottom-right-radius e border-bottom-left-radius.

Puoi anche specificare il raggio di ogni angolo in forma breve, che segue l'ordine: in alto a sinistra, in alto a destra, in basso a destra e poi in basso a sinistra.

.my-element {
    border-radius: 1em 2em 3em 4em;
}

Se definisci un singolo valore per un angolo, stai utilizzando un'altra forma abbreviata perché il raggio del bordo è diviso in due parti: i lati verticale e orizzontale. Ciò significa che quando imposti border-top-left-radius: 1em, stai impostando il raggio in alto a sinistra-in alto e in alto a sinistra-sinistra.

Puoi definire entrambe le proprietà per ogni angolo in questo modo:

.my-element {
    border-top-left-radius: 1em 2em;
}

Viene aggiunto un valore border-top-left-top pari a 1em e un valore border-top-left-left pari a 2em. In questo modo, il raggio del bordo superiore sinistro viene convertito in un raggio ellittico, anziché il raggio circolare predefinito.

Puoi definire questi valori nell'abbreviazione border-radius, utilizzando / per definire i valori ellittici, dopo i valori standard. In questo modo puoi liberare la tua creatività e realizzare alcune forme complesse.

.my-element {
    border: 2px solid;
  border-radius: 95px 155px 148px 103px / 48px 95px 130px 203px;
}

Immagini bordo

In CSS non è sufficiente utilizzare un bordo basato sul tratto. Puoi anche utilizzare qualsiasi tipo di immagine, utilizzando border-image Questa proprietà abbreviata ti consente di impostare l'immagine sorgente, la suddivisione dell'immagine, la sua larghezza quanto dista il bordo dal bordo e come dovrebbe ripetersi.

.my-element {
  border-image-source: url(https://assets.codepen.io/174183/border-image-frame.jpg);
  border-image-slice: 61 58 51 48;
  border-image-width: 20px 20px 20px 20px;
  border-image-outset: 0px 0px 0px 0px;
  border-image-repeat: stretch stretch;
}

La border-image-width è simile a border-width: ma puoi impostare la larghezza dell'immagine bordo. La border-image-outset consente di impostare la distanza tra l'immagine bordo e la casella che lo avvolge.

border-image-source

La border-image-source (origine dell'immagine bordo) può essere un url per qualsiasi immagine valida, comprese le sfumature CSS.

.my-element {
    border-image-source: url('path/to/image.png');
}

.my-element {
    border-image-source: linear-gradient(to bottom, #000, #fff);
}

border-image-slice

La border-image-slice è una proprietà utile che ti consente di suddividere un'immagine in 9 parti, composte da 4 linee di divisione. Funziona come l'abbreviazione margin, in cui definisci il valore di offset in alto, a destra, in basso e a sinistra.

.my-element {
    border-image: url('image.jpg');
    border-image-slice: 61 58 51 48;
}

L'immagine utilizzata nella demo con le quattro sezioni mostrate con linee blu

Dopo aver definito i valori di offset, Ora ci sono 9 sezioni dell'immagine: 4 angoli, 4 lati e una sezione centrale. Gli angoli vengono applicati a quelli dell'elemento con l'immagine del bordo. I bordi vengono applicati ai bordi dell'elemento. La border-image-repeat definisce il modo in cui questi bordi riempiono lo spazio, border-image-width controlla la dimensione delle sezioni.

Infine, la parola chiave fill determina se la sezione centrale, lasciata dalla sezione, viene utilizzata o meno come immagine di sfondo dell'elemento.

border-image-repeat

border-image-repeat è il modo in cui indichi a CSS come vuoi che l'immagine bordo si ripeta. Funziona come background-repeat.

  • Il valore iniziale è stretch, che estende l'immagine di origine per riempire lo spazio disponibile, ove possibile.
  • Il valore repeat affianca i bordi dell'immagine di origine il più possibile, e potrebbe tagliare le regioni perimetrali per ottenere questo risultato.
  • Il valore round è uguale a Ripeti, ma invece di ritagliare le regioni perimetrali dell'immagine per adattarle il maggior numero possibile, estende l'immagine e la ripete per ottenere una ripetizione senza interruzioni
  • Il valore space è di nuovo, uguale alla ripetizione, ma questo valore aggiunge spazio tra ogni regione perimetrale per creare un pattern uniforme.

Verifica le tue conoscenze

Metti alla prova le tue conoscenze sui confini

Qual è il colore predefinito del bordo?

black
Riprova.
white
Riprova.
currentColor
Questo valore CSS speciale rappresenterà il valore text-color calcolato ed è il colore predefinito del bordo.
historicColor
È inventato. Riprova.
.my-element {
  border: solid hotpink;
}

Qual è la larghezza predefinita di un bordo?

1px
Riprova.
medium
🎉
solid
Si tratta di un valore border-style, non di un valore border-width.

border-inline: 1px solid farebbe...

inserisci i bordi a sinistra e a destra (nei layout latini).
🎉
inserire i bordi sopra e in basso (nei layout latini).
In un layout latino, ad esempio in inglese, border-block corrisponde alla parte superiore e inferiore.
e inserire dei bordi all'interno.
Riprova.
inserisci i bordi nella prima riga.
Riprova.