Ciao, possiamo continuare qui, d'altronde si parla pur sempre di bordi con transizioni 

Originariamente inviata da
ivanisevic82
Sono riuscito a realizzare facilmente questo effetto...ma il problema è che così facendo gli elementi successivi (contrassegnati dalle classi "contenuto_griglia" e "leggi"), scendono di 1 px.
Chiaro, il bordo è "aggiunto" alle dimensioni dell'elemento nel calcolo dell'ingombro quando ha proprietà box-sizing:content-box (valore di default).
Potresti però risolvere applicando box-sizing:border-box, quindi impostando height con un valore fisso (in questo caso il valore finale di 2px) e un solo bordo (top o bottom) che va da 1px a 2px. In questo modo l'altezza (e quindi l'ingombro dell'elemento) non varia e non genera lo spostamento degli elementi a seguire.
Qui un esempio. Chiaramente rimuovi le altre eventuali tue regole, relative ad hr, così che non interferiscano con queste:
codice:
.link hr{
box-sizing: border-box; /* vedi nota */
height: 2px;
border: none;
border-bottom: 1px solid #888;
}
.link:hover hr{
border-bottom: 2px solid #d97132;
}
NOTA:
Per convenzione, in genere box-sizing viene ridefinito come border-box per tutti gli elementi. Questa pratica è detta "reset del box model css".
Anche nella tua pagina è presente questa particolarità ma viene fatto uso anche del normalize.css dove (per vecchie questioni di compatibilità tra browser, da quel che so) viene RIapplicato content-box su hr.
Ad oggi, secondo gli standard attuali supportati comunque da pressoché tutti i moderni browser, non ci sono problemi di sorta nell'applicare quanto indicato.
Questa mi pare la soluzione più semplice per il caso specifico ma chiaramente potrebbero esserci varie altre soluzioni più o meno complesse da valutare anche a seconda dei casi.
Giusto per chiarire, nota che il bordo viene "inspessito" verso l'alto o il basso (a seconda di usare bottom o top) perché mantiene comunque il riferimento relativo al limite del suo contenitore. Ora, su una variazione tra 1px e 2px questo effetto è piuttosto irrilevante ma, se la variazione fosse maggiore, potrebbe risultare sgradevole qualora l'effetto voluto fosse quello di estendere la linea rispetto al suo centro e non verso l'alto o il basso.
Supponiamo ad esempio di volere una riga che vada da 1px a 8px. In quest'ultimo caso si potrebbe adottare un'altra soluzione (comunque valida anche per la riga di 2px). Puoi usare background per creare la riga (anziché border) e applicare background-clip:content-box, quindi giocare, ad esempio, col padding per "tagliare" il background in modo da ridurre lo spessore della "riga".
Più facile farlo che spiegarlo. Qui un esempio:
codice:
.link hr{
box-sizing: border-box;
height: 8px; /* spessore finale della riga */
border: none;
background: content-box #888; /* qui il trucco con background-clip: content-box */
padding: 3.5px 0; /* il background viene tagliato di 3.5px sia sopra sia sotto, lasciando quindi 1 su 8px dello spessore finale */
transition: .2s;
}
.link:hover hr{
background-color: #d97132;
padding: 0; /* il background qui avrà l'altezza totale di 8px */
}