Anche se non esiste un modo diretto per far sì che il peso del font possa transitare agevolmente, ho trovato un modo per farlo indirettamente (sebbene con alcune limitazioni).
In sostanza si può semplicemente usare uno degli pseudo elementi per fare una copia speculare dell'elemento su cui il font si desidera passare in grassetto, dove il font-weight sull'elemento pseudo è in grassetto e l'opacità è 0 E al passaggio del mouse si passa semplicemente alla transizione dell'opacità dell'elemento pseudo e questo fa il trucco con una transizione molto fluida.
Potete vedere una demo qui:
http://jsfiddle.net/r4gDh/45/
HTML:
<div class="element" data-text="text will turn to bold on hover">
text will turn to bold on hover
</div>
In HTML si può già vedere uno dei limiti, perché stiamo usando elementi pseudo abbiamo bisogno di passare la anche il contenuto dell'elemento come attributo, quindi il contenuto è duplicato.
CSS:
.element,
.element::before {
background: red;
font-weight:normal;
font-size:40px;
text-align:center;
display: inline-block;
padding: 0px 30px 0px 30px;
position: relative;
top: 0;
left: 0;
}
.element::before {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
padding: 0;
content: attr(data-text);
opacity: 0;
font-weight: bold;
transition: all 1s linear;
}
.element:hover::before {
opacity: 1;
}
Il secondo limite deriva dalla natura della tecnica, vale a dire perché si sono semplicemente sovrapponendo l'elemento pseudo sopra l'originale, quindi l'elemento deve avere un solido background o questo non lavoro, perché l'elemento originale rimarrà visibile sullo sfondo.
Una cosa che dovresti davvero tenere d'occhio è che lo pseudo elemento e l'elemento originale hanno le stesse dimensioni, a tal fine, nella demo, ho rimosso il padding sullo pseudoelemento, quindi potresti aver bisogno fare qualcosa di simile.
Come potete vedere, questo modo di ottenere la transizione di font-weight non è privo di problemi e lontano dall'ideale, ma questo è il meglio che posso attualmente pensare e in casi limitati come per i pulsanti e cosa no questo è abbastanza utile e se fatto correttamente sembrerà decente anche nei browser legacy.
sarebbe bello mostrarci cosa hai fatto fino ad ora in modo da poter analizzare il tuo codice, per dire se hai fatto qualcosa di sbagliato o no – aspirinemaga
c'è un violino – Funktr0n
Non funziona neanche in IE10. 'font-weight' dovrebbe essere animabile, ma non sono sicuro che il motore di rendering dei caratteri di qualsiasi browser lo supporti. –