Font-weight Transition CSS dans Chrome
Essayer d'obtenir font-weight
harmonieusement la transition de '400' à '600' l'aide de CSS, mais il ne semble pas y avoir de travail dans le navigateur Chrome. Est-ce un bug connu ou suis-je en train de faire quelque chose de mal?
Vérifier le Violon ici pour un exemple
serait sympa de nous montrer ce que vous avez fait jusqu'à présent afin que nous puissions analyser votre code, pour savoir si vous avez fait quelque chose de mal ou pas
il y a un violon
Il ne fonctionne pas dans IE10.
hmmm... Il ne semble pas fonctionner dans Firefox/Opera. Ennuyeux...
Je semble pour obtenir une transition de la police-poids lors de la configuration de transition:tous les... (Chrome, FF et IE11) OK... il ne ressemble à une transition pour des transitions rapides. Essayez de .25s
il y a un violon
Il ne fonctionne pas dans IE10.
font-weight
est censé être animables, mais je ne suis pas sûr si le navigateur de la police du moteur de rendu prend en charge.hmmm... Il ne semble pas fonctionner dans Firefox/Opera. Ennuyeux...
Je semble pour obtenir une transition de la police-poids lors de la configuration de transition:tous les... (Chrome, FF et IE11) OK... il ne ressemble à une transition pour des transitions rapides. Essayez de .25s
OriginalL'auteur Funktr0n | 2013-05-18
Vous devez vous connecter pour publier un commentaire.
Le problème est que la police de poids, représenté numériquement, ce doit être un multiple de 100. Pour animer entre 400 et 600, la police allait changer de 400 à 500 à 600 (3 'frames', si vous le souhaitez) et n'a pas l'air très lisse. Une animation à ne pas augmenter le poids de 1 à chaque fois (400, 401, 402...), on pourrait augmenter le poids par 100 (400, 500, 600). Si votre animation a duré 2 secondes, après 1 seconde, le poids serait soudainement devenu 500, et après 2 secondes, le poids serait soudainement devenu 600; il n'y a pas d'entre-deux variations.
Un autre problème avec ce que vous êtes de tenter ici, c'est que la police que vous utilisez (ou JSFiddle par défaut, au moins) n'a rien de différent pour
font-weight:500
, sens la valeur par défaut est de 400:http://jsfiddle.net/r4gDh/6/
https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight
Cela signifie que vous ne pouvez pas en douceur animer
font-weight
. Même si vous aviez le soutien pour tous les poids entre 100 et 900 le changement ne serait pas agréable et il y aurait un changement radical entre 500 et 600 (où poids plus léger rencontre plus sombre de poids).La seule différence que je peux voir entre Firefox et Chrome, c'est que Chrome s'applique
font-weight:600
au début de l'animation, et Firefox s'applique à la fin.Même si vous modifiez la police à un robuste de la famille, et de définir la non-plané de l'état pour un poids de '100' et le plané de l'état pour un poids de '900', il s'applique toujours 900 immédiatement, ce qui signifie que la transition la plus probable n'est pas pris en charge.
Google Chrome Canary fait la même chose que la version stable, donc c'est soit une conception de la décision de ne pas mettre en œuvre ou à un bug. J'imagine que c'est probablement plus d'une décision de conception, plus que tout, cependant. J'ai mis à jour votre JSFiddle d'utiliser une police avec le soutien de 400, 500 et 600, et les sauts entre chaque variation de poids sont clairement visibles (avec Firefox): jsfiddle.net/r4gDh/9
yah, si vous le faites avec Open Sans et réduire le temps de 300ms, il semble effectivement assez décent (en FF). De toute façon, suce qu'ils ne sont pas de la soutenir dans google Chrome. Merci pour la mise dans le temps.
OriginalL'auteur James Donnelly
Font-weight animation est actuellement pas pris en charge dans Chrome et IE-10, basé sur de nombreux tests. Cela pourrait changer dans l'avenir.
OriginalL'auteur Funktr0n
Les polices ne sont pas de simples vecteurs de collections d'images (c'est pourquoi les polices svg n'a jamais décollé). Les polices Opentype incluent toutes sortes de magie pour la fixation de polices sur la grille de pixels, ce qui fait qu'il est irréaliste de s'attendre à une famille de polices à toujours inclure tous les possibles de la valeur de poids.
Parce que les polices ne sont pas de simples vecteurs de collections d'images, ils ne sont jamais redimensionner de façon linéaire, il y aura des bosses de prendre de la grille de pixels en compte.
Google livre blanc explique pourquoi linéaire de redimensionnement ne fonctionne pas pour le texte courant sur les écrans
https://docs.google.com/document/d/1wpzgGMqXgit6FBVaO76epnnFC_rQPdVKswrDQWyqO1M/edit
c'est pourquoi aucun navigateur va essayer et ils reposent tous sur la pré-calculée de la police de poids.
Qui peut changer en une décennie, lorsque les écrans de la rétine sont le plus petit dénominateur commun, mais la police de caractères courante tech cibles actuelles des écrans.
Ce livre blanc de Microsoft documents, police standard, les valeurs de poids
http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-components-postattachments/00-02-24-90-36/WPF-Font-Selection-Model.pdf
(mais juste parce qu'ils sont documentés ne signifie pas que le nombre de polices comprennent, en fait, tous d'entre eux n'est pas assez petit)
Vous pouvez probablement obtenir l'effet que vous voulez avec une svg de police et un peu de javascript. Le svg police va être de la merde pour du texte utiliser.
OriginalL'auteur nim
Je suis venu ici pour trouver la réponse moi-même pour la façon de faire la transition de la police de poids, et a été déçu quand j'ai lu le a approuvé la réponse ci-dessus en disant qu'il ne peut pas être fait (ou du moins pas très bien).
Avec font-weight animation indisponible, j'ai décidé d'essayer un autre effet, qui, en fait, vous donne un font-weight effet... je n'ai même pas penser à travailler pour ce type de transition.
Ici est de savoir comment faire le poids croître:
Parfaitement lisse et exactement ce que je cherchais quand je suis arrivée sur cette page. Espérons que cela aide quelqu'un.
Nice mate! Vous pouvez augmenter peu de la taille de police si l'ombre se remplit les compteurs.
OriginalL'auteur user2943492
Me semble que j'ai obtenu un "font-weight" effet de transition par hasard, en faisant une rapide transition de couleur (gris clair à bleu foncé) en même temps.
OriginalL'auteur Rolf
Bien qu'il n'existe aucun moyen direct d'obtenir la police-poids en douceur la transition, j'ai trouvé une façon de le faire indirectement (mais avec certaines limitations).
En essence, vous pouvez simplement utiliser l'une des pseudo-éléments dans l'ordre pour faire une copie miroir de l'élément dont la police que vous voulez passer en gras, où la police-poids sur le pseudo-élément est en gras et l'opacité est de 0. Et sur le vol stationnaire tout simplement de la transition, le pseudo de l'élément d'opacité et qui fait le tour avec une très lisse de transition.
Vous pouvez voir une démo ici:
http://jsfiddle.net/r4gDh/45/
HTML:
Dans le code HTML, vous pouvez déjà voir l'une des limites, parce que nous sommes à l'aide de pseudo éléments dont nous avons besoin pour transmettre le contenu de l'élément comme un attribut ainsi, si le contenu est dupliqué.
CSS:
La seconde limitation vient de la nature de la technique, à savoir parce que vous êtes tout simplement la superposition de la pseudo-élément par rapport à l'original, puis l'élément doit avoir un fond uni ou cela ne fonctionnera pas, parce que l'élément d'origine reste visible en arrière-plan.
Une chose que vous devriez vraiment garder un œil sur, c'est que le pseudo-élément et l'élément d'origine ont les mêmes dimensions, à cette fin, dans la démo, j'ai enlevé le rembourrage sur le pseudo-élément, vous devrez peut-être faire quelque chose de similaire.
Comme vous pouvez le voir, cette façon d'obtenir de la police-poids de transition n'est pas sans ses problèmes et loin d'être idéal, mais c'est le mieux que je peux actuellement penser et, dans certains cas, comme pour les boutons et ce n'est pas c'est tout à fait utile et si c'est fait correctement, il aura une apparence convenable, même dans les anciens navigateurs.
OriginalL'auteur Idra
J'ai peaufiné @Idra du violon pour faire de la normale en gras transition un peu plus lisse. Voici le violon: http://jsfiddle.net/y7rLwx95/
Changements... Puisque la largeur du texte obtiendrez plus large, quand on va en gras, j'ai ajouté un premier "étirer" la transition par l'augmentation de l'espacement entre les lettres:
Ensuite retarder la décoloration dans le gras ::avant d'élément:
Également certains des réglages supplémentaires ici:
Le calendrier de transition est juste tout ce qui se sent le droit de me. L'idée originale de @Idra posté est important pour moi. J'accepte le fait que les largeurs de devrait être différentes entre le normal et gras, comme c'est l'intention de police différente poids. Si vraiment le défi, à mon humble avis, est de comprendre comment aller entre les 2 ressemble à une surface lisse, pas de secousses. Cela semble être la meilleure solution, pour l'instant j'ai trouvé.
OriginalL'auteur Michael Chen