Il tag <hr> (Horizontal Rule) รจ un elemento HTML che svolge il ruolo di โseparatoreโ: questo tag, infatti, genera una linea orizzontale che viene utilizzata per separare visivamente dei contenuti (ad esempio, due paragrafi di testo) all’interno della stessa pagina web. Non sono, invece, disponibili tag HTML appositamente dedicati alla creazione di linee verticali.
Indice
Quando utilizzare il tag <hr>
Fino alla versione 4 di HTML <hr> non era un tag semantico, cioรจ non descriveva espressamente il proprio significato.
La situazione รจ cambiata con HTML5, release grazie alla quale il tag รจ diventato semantico rappresentando โun’interruzione tematica a livello di paragrafoโ.
Il tag <hr> puรฒ essere impiegato, quindi, per interrompere, all’interno della stessa pagina, un flusso di contenuti non omogenei.
Sintasi del tag <hr>
Il tag <hr> appartiene alla famiglia dei “tag vuoti” cioรจ quei tag (come il tag <img> ed altri) che non prevedono un omonimo tag di chiusura. Essendo privo di chiusura (non esiste il delimitatore </hr>), tale elemento puรฒ essere riportato nel codice di markup anche tramite la sintassi <hr/> nello stesso modo di altri tag vuoti come <br>, <img> o <link>.
Di seguito un semplice esempio di linea orizzontale utilizzata per dividere due paragrafi di testo:
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Accumsan sit amet nulla facilisi morbi tempus. Interdum consectetur libero id faucibus nisl tincidunt eget.</p>
<hr>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Accumsan sit amet nulla facilisi morbi tempus. Interdum consectetur libero id faucibus nisl tincidunt eget.</p>
Gestire l’aspetto del tag <hr> utilizzando gli attributi HTML
Le specifiche di HTML prevedono unicamente due attributi per questo tag:
color
, per definirne il colore;size
, per specificarne lo spessore.
Gli altri attributi sono considerati obsoleti dalle specifiche di HTML 5 e, pertanto, il loro utilizzo viene scoraggiato.
Il codice proposto di seguito genera ad esempio una linea di colore grigio dello spessore di 2 pixel:
<hr color="#CCC" size="2" />
Utilizzare CSS per stilizzare le linee orizzontali
Affidare la stilizzazione di un elemento a dei semplici attributi HTML non รจ una buona pratica, inoltre, come รจ possibile notare, il linguaggio offre poche opzioni da questo punto di vista. Per superare tale limite รจ possibile ricorrere a CSS utilizzando fogli di stile interni od esterni cosรฌ come proprietร di stile scritte direttamente all’interno del tag stesso (stilizzazione inline).
Di seguito proporremo delle semplici idee per personalizzare <hr> in base alle nostre esigenze.
In linea di massima possiamo dire che la stilizzazione delle linee orizzionatli puรฒ avvenire mediante l’utilizzo delle proprietร border-*
oppure, in alternativa, utilizzando height
e background-color
.
Se si utilizza border-*
la prima cosa da fare รจ impostare border: 0
per effettuare il reset dello stile di default e poi impostare la propietร desiderata (solitamente si utilizza border-top
) per impostare spessore, stile e colore della linea.
Se si utilizzano height
e background-color
, invece, lo spessore sarร definito mediante la prima ed il colore mediante la seconda.
Linee singole
Iniziamo con la stilizzazione di una semplice linea orizzontale di colore grigio dello spessore di 2 pixel, riproducendo, quindi, l’aspetto ottenuto con l’ausilio degli attributi HTML:
hr {
border: 0;
border-top: 2px solid #CCC;
}
Per raggiungere l’obiettivo prefissato abbiamo utilizzato l’attributo border-top
che ha lo scopo di definire l’aspetto del bordo superiore. Tale proprietร supporta diverse opzioni con cui specificare la tipologia di bordo da restituire a video: nell’esempio precedente รจ stato utilizzato solid, la cui finalitร รจ quella di produrre una linea continua.
Lo stesso risultato estetico si sarebbe potuto raggiungere con le proprietร height
e background-color
. in questo modo:
hr {
border: 0;
height: 2px;
background-color: #CCC;
}
Linee doppie
La linea orizzontale puรฒ essere doppia. Per questo scopo รจ sufficiente sostituire, nella proprietร border-top
, il valore solid con double:
hr {
border: 0;
border-top: 10px double #CCC;
}
Aumentiamo lo spessore per rendere piรน visibile l’effetto.
Linee punteggiate e tratteggiate
Gli output di <hr> non devono essere necessariamente delle linee continue, un effetto interessante รจ dato per esempio dal valore dotted della proprietร border
che permette di generare un separatore composto da una sequenza di punti disposti orizzontalmente.
Nel caso dell’esempio proposto di seguito viene generata una linea punteggiata di colore rosso dallo spessore di 2 pixel.
hr {
border: 0;
border-top: 2px dotted red;
}
Nello stesso modo รจ possibile restituire a video una linea tratteggiata sfruttando il valore dashed che nel codice seguente sostituisce dotted, mentre rimangono invariati il colore e le dimensioni.
hr {
border: 0;
border-top: 2px dashed red;
}
Una variante interessante potrebbe essere una linea colorata con trattini al suo interno. In pratica si otterrebbe un effetto di trattini di colore alternato disposti in sequenza. Ad esempio:
hr {
border: 0;
border-bottom: 10px dashed red;
background-color: #999;
}
Linee doppie di colori diversi
Per introdurre un’ulteriore variante รจ possibile utilizzare il valore dotted come argomento sia per la proprietร border-top
che per border-bottom
, in modo da ottenere una fila di punti composta da due linee di colore differente, ad esempio la prima verde e la seconda rossa:
hr {
border: 0;
border-top: 4px dotted green;
border-bottom: 4px dotted red;
}
Sostituendo dotted con dashed in entrambe le istruzioni precedenti avremo invece due linee tratteggiate degli stessi colori e del medesimo spessore:
hr {
border: 0;
border-top: 4px dashed green;
border-bottom: 4px dashed red;
}
Chiaramente รจ possibile ottenere un effetto simile, ma basato questa volta sulla generazione di linee continue, utilizzando il valore solid:
hr {
border: 0;
border-top: 4px solid green;
border-bottom: 4px solid red;
}
Linea con estremitร sfumate
Una interessante stilizzazione per le linee orizzontali prevede la possibilitร di sfumare le parti piรน esterne:
hr {
border: 0;
height: 1px;
background: #333;
background-image: linear-gradient(to right, #ccc, #333, #ccc);
}
In questo caso abbiamo azzerato il valore di border
, impostato height
a 2 pixel, definito un gradiente mediante background-image
per tracciare una linea piรน scura nella sua parte centrale con esteremitร piรน chiare.
Linea… con tre asterischi al centro
Una soluzione minimale (molto utilizzata in tipografia) per separare contenuti non omogenei potrebbe consistere nell’utilizzare 3 semplici asterischi…
hr.asterischi {
border: none;
}
hr.asterischi:before {
content: '***';
display: block;
text-align: center;
}
Questo codice non crea nessuna linea ma, semplicemente, posiziona tre asterischi al centro a mo di separatore.
Una soluzione piรน elegante potrebbe essere quella di posizionare i tre asterischi al centro di una sottile linea:
hr.linea-asterischi {
padding: 0;
border: none;
border-top: 1px solid #333;
color: #333;
text-align: center;
}
hr.linea-asterischi:before {
content: '***';
display: inline-block;
position: relative;
top: -0.5em;
font-size: 1.5em;
padding: 0 0.25em;
background: white;
}
Linea con glifo al centro
Una soluzione originale, dal gusto classico, puรฒ essere interrompere la linea con un glifo al centro. Il codice CSS รจ molto simile a quello dell’esempio precedente ma per completezza di esposizione ve lo riporto ugualmente:
hr.linea-glifo {
padding: 0;
border: none;
border-top: medium double #333;
color: #333;
text-align: center;
}
hr.linea-glifo:after {
content: "ยง";
display: inline-block;
position: relative;
top: -0.7em;
font-size: 1.5em;
padding: 0 0.25em;
background: white;
}
Linea con stella al centro
Proseguiamo sullo stile di quanto abbiamo appena visto proponendo una semplice linea orizzontale con una stellina al centro:
hr.linea-stella {
padding: 0;
border: none;
border-top: 1px solid #333;
color: #333;
text-align: center;
}
hr.linea-stella:after {
content: "\2605";
display: inline-block;
position: relative;
top: -0.7em;
font-size: 1.5em;
padding: 0 0.25em;
background: white;
}
Linea… di ritaglio!
Una interessante stilizzazione prevede la possibilitร di ricreare, in puro CSS, una linea di ritaglio tratteggiata con tanto di simbolo della forbice! vediamo il codice per questa stilizzazione:
hr.linea-ritaglio {
border:0;
border-top: 1px dashed #8c8b8b;
}
hr.linea-ritaglio:after {
content: '\002702';
display: inline-block;
position: relative;
top: -12px;
left: 40px;
padding: 0 3px;
color: #8c8b8b;
font-size: 18px;
}