J'ai créé un site en utilisant la grille Zurb Foundation 3 . Chaque page a un grand h1
:
body {
font-size: 100%
}
/* Headers */
h1 {
font-size: 6.2em;
font-weight: 500;
}
<div class="row">
<div class="twelve columns text-center">
<h1> LARGE HEADER TAGLINE </h1>
</div>
<!-- End Tagline -->
</div>
<!-- End Row -->
Lorsque je redimensionne le navigateur à la taille mobile, la grande police ne s'ajuste pas et fait en sorte que le navigateur inclue un défilement horizontal pour s'adapter au grand texte.
J'ai remarqué que sur la page d'exemple de typographie de Zurb Foundation 3 , les en-têtes s'adaptent au navigateur lorsqu'il est compressé et développé.
Suis-je en train de manquer quelque chose de vraiment évident? Comment puis-je y parvenir?
css
responsive-design
font-size
zurb-foundation
em
user2213682
la source
la source
Réponses:
Le
font-size
ne répondra pas comme ceci lors du redimensionnement de la fenêtre du navigateur. Au lieu de cela, ils répondent aux paramètres de zoom / taille du navigateur, comme si vous appuyez simultanément sur Ctrlet +sur le clavier dans le navigateur.Requêtes médias
Vous devriez envisager d'utiliser des requêtes multimédias pour réduire la taille de la police à certains intervalles où cela commence à casser votre conception et à créer des barres de défilement.
Par exemple, essayez d'ajouter ceci à l'intérieur de votre CSS en bas, en changeant la largeur de 320 pixels là où votre conception commence à se casser:
Longueurs de pourcentage de fenêtre
Vous pouvez également utiliser des longueurs de pourcentage viewport tels que
vw
,vh
,vmin
etvmax
. Le document officiel du W3C pour ceci indique:Encore une fois, à partir du même document W3C, chaque unité individuelle peut être définie comme suit:
Et ils sont utilisés exactement de la même manière que toute autre valeur CSS:
La compatibilité est relativement bonne comme on peut le voir ici . Cependant, certaines versions d'Internet Explorer et Edge ne prennent pas en charge vmax. De plus, iOS 6 et 7 ont un problème avec l'unité vh, qui a été corrigé dans iOS 8.
la source
font-size: 1.5vw;
?font-size: calc(12px + 1vw)
Vous pouvez utiliser la valeur de la fenêtre d'affichage au lieu de ems, pxs ou pts:
De CSS-Tricks: Typographie de taille de fenêtre
la source
J'ai essayé de résoudre ce problème et je pense avoir trouvé une solution:
Si vous pouvez écrire votre application pour Internet Explorer 9 (et versions ultérieures) et tous les autres navigateurs modernes prenant en charge CSS calc (), les unités rem et les unités vmin. Vous pouvez l'utiliser pour obtenir du texte évolutif sans interrogation multimédia:
Le voici en action: http://codepen.io/csuwldcat/pen/qOqVNO
la source
Utilisez des
media
spécificateurs CSS (c'est ce qu'ils utilisent [zurb]) pour un style réactif:la source
Si cela ne vous dérange pas d'utiliser une solution jQuery, vous pouvez essayer le plugin TextFill
https://github.com/jquery-textfill/jquery-textfill
la source
Il existe plusieurs façons d'y parvenir.
Utilisez une requête multimédia , mais elle nécessite des tailles de police pour plusieurs points d'arrêt:
Utilisez les dimensions en % ou em . Modifiez simplement la taille de la police de base et tout changera. Contrairement au précédent, vous pouvez simplement changer la police du corps et non h1 à chaque fois ou laisser la taille de police de base être la valeur par défaut de l'appareil et le reste tout en
em
:Voir kyleschaeffer.com / ....
CSS 3 prend en charge de nouvelles dimensions relatives au port de vue. Mais cela ne fonctionne pas sur Android:
3.2vmax = plus grand de 3.2vw ou 3.2vh
Voir CSS-Tricks ... et regardez aussi Can I Use ...
la source
Il existe une autre approche pour les tailles de police réactives - en utilisant les unités rem.
Plus loin dans les requêtes multimédias, vous pouvez ajuster toutes les tailles de police en modifiant la taille de police de base:
Pour que cela fonctionne dans Internet Explorer 7 et Internet Explorer 8, vous devrez ajouter un remplacement avec des unités px:
Si vous développez avec moins , vous pouvez créer un mixin qui fera le calcul pour vous.
Prise en charge des unités Rem - http://caniuse.com/#feat=rem
la source
La solution "vw" a un problème lors du passage à de très petits écrans. Vous pouvez définir la taille de base et monter à partir de là avec calc ():
la source
font-size: calc(1.2rem + 1vw)
pour un titre. De cette façon, j'ai eu l'avantage d'utiliser une unité non basée sur les pixels (bien que cela ne soit pas applicable ici). J'ai également eu un repli en em simple pour les anciens navigateurs. Enfin, comme cela est devenu un peu petit sur mobile, j'ai utilisé une requête multimédia pour ceux-ci. C'est peut-être trop élaboré, mais il semble faire ce que je voulais.Ceci est partiellement mis en œuvre dans la fondation 5.
Dans le fichier _type.scss, ils ont deux ensembles de variables d'en-tête:
Pour les moyennes, ils génèrent des tailles basées sur le premier ensemble de variables:
Et pour les petits écrans par défaut, c'est-à-dire qu'ils utilisent un deuxième ensemble de variables pour générer du CSS:
Vous pouvez utiliser ces variables et remplacer dans votre fichier scss personnalisé pour définir les tailles de police pour les tailles d'écran respectives.
la source
Une taille de police réactive peut également être effectuée avec ce code JavaScript appelé FlowType :
FlowType - Typographie Web réactive à son meilleur: taille de police basée sur la largeur de l'élément.
Ou ce code JavaScript appelé FitText :
FitText - Rend les tailles de police flexibles. Utilisez ce plugin sur votre conception réactive pour un redimensionnement basé sur le rapport de vos titres.
la source
Si vous utilisez un outil de construction, essayez Rucksack.
Sinon, vous pouvez utiliser des variables CSS (propriétés personnalisées) pour contrôler facilement les tailles de police minimale et maximale comme ceci ( démo ):
la source
J'ai vu un excellent article de CSS-Tricks . Cela fonctionne très bien:
Par exemple:
Nous pouvons appliquer la même équation à la
line-height
propriété pour la modifier également avec le navigateur.la source
Je venais juste de proposer une idée avec laquelle il suffit de définir la taille de la police une fois par élément, mais elle est toujours influencée par les requêtes des médias.
Tout d'abord, j'ai défini la variable "--text-scale-unit" sur "1vh" ou "1vw", selon la fenêtre d'affichage à l'aide des requêtes multimédias.
Ensuite, j'utilise la variable en utilisant calc () et mon numéro de multiplicateur pour la taille de police:
Dans mon exemple, j'ai uniquement utilisé l'orientation de la fenêtre, mais le principe devrait être possible avec toutes les requêtes multimédias.
la source
vmin
etvmax
au lieu de cette@media
entreprise?"FitText" de jQuery est probablement la meilleure solution d'en-tête réactive. Découvrez-le sur GitHub: https://github.com/davatron5000/FitText.js
la source
Comme avec de nombreux frameworks, une fois que vous "sortez de la grille" et remplacez le CSS par défaut du framework, les choses vont commencer à se casser à gauche et à droite. Les cadres sont intrinsèquement rigides. Si vous deviez utiliser le style H1 par défaut de Zurb avec leurs classes de grille par défaut, la page Web devrait s'afficher correctement sur mobile (c'est-à-dire sensible).
Cependant, il semble que vous souhaitiez de très gros en-têtes 6.2em, ce qui signifie que le texte devra rétrécir afin de tenir dans un écran mobile en mode portrait. Votre meilleur pari est d'utiliser un plugin jQuery de texte réactif tel que FlowType et FitText . Si vous voulez quelque chose de léger, alors vous pouvez consulter mon plugin Scalable Text jQuery:
http://thdoan.github.io/scalable-text/
Exemple d'utilisation:
la source
Dans Sass original réel (pas scss), vous pouvez utiliser les mixins ci-dessous pour définir automatiquement le paragraphe et tous les titres.
font-size
.Je l'aime car il est beaucoup plus compact. Et plus rapide à taper. En dehors de cela, il offre les mêmes fonctionnalités. Quoi qu'il en soit, si vous voulez toujours vous en tenir à la nouvelle syntaxe - scss, n'hésitez pas à convertir mon contenu Sass en scss ici: [CONVERTIR SASS EN SCSS ICI]
Ci-dessous, je vous donne quatre mixins Sass. Vous devrez modifier leurs paramètres selon vos besoins.
Une fois que vous avez fini de jouer avec les paramètres, appelez simplement un mixage - qui est: + config-and-run-font-generator () . Voir le code ci-dessous et les commentaires pour plus d'informations.
Je suppose que vous pouvez le faire automatiquement pour une requête multimédia comme cela est fait pour les balises d'en-tête, mais nous utilisons tous des requêtes multimédias différentes, donc ce ne serait pas approprié pour tout le monde. J'utilise une approche de conception axée sur le mobile, c'est ainsi que je ferais cela. N'hésitez pas à copier et utiliser ce code.
COPIEZ ET COLLEZ CES MIXINS DANS VOTRE FICHIER:
CONFIGUREZ TOUS LES MIXINS À VOS BESOINS - JOUEZ AVEC! :) ET PUIS L'APPELER EN HAUT DE VOTRE CODE SASS RÉEL AVEC:
Cela générerait cette sortie. Vous pouvez personnaliser les paramètres pour générer différents ensembles de résultats. Cependant, comme nous utilisons tous des requêtes multimédias différentes, certains mixins devront être modifiés manuellement (style et média).
CSS GÉNÉRÉ:
la source
J'utilise ces classes CSS, et elles rendent mon texte fluide sur n'importe quelle taille d'écran:
la source
la source
Il existe les moyens suivants pour y parvenir:
Ces unités se redimensionneront automatiquement en fonction de la largeur et de la hauteur de l'écran.
la source
Vous pouvez rendre la taille de police sensible si vous la définissez dans vw (largeur de la fenêtre d'affichage). Cependant, tous les navigateurs ne le prennent pas en charge. La solution consiste à utiliser JavaScript pour modifier la taille de police de base en fonction de la largeur du navigateur et définir toutes les tailles de police en%.
Voici un article décrivant comment créer des polices réactives: http://wpsalt.com/responsive-font-size-in-wordpress-theme/
la source
J'ai trouvé cette solution, et cela fonctionne très bien pour moi:
la source
Une façon de résoudre le problème du bon rendu du texte à la fois sur un ordinateur de bureau et un mobile / une tablette consiste à fixer la taille du texte à des unités physiques telles que des centimètres physiques ou des pouces, qui ne dépendent pas de l'écran PPI (points par pouce).
Sur la base de cette réponse , voici le code que j'utilise à la fin du document HTML pour une taille de police réactive:
Dans le code ci-dessus, les éléments d'une classe différente se voient attribuer des tailles de police en unités physiques, tant que le navigateur / système d'exploitation est correctement configuré pour le PPI de son écran.
Une police d'unité physique n'est toujours ni trop grande ni trop petite, tant que la distance à l'écran est habituelle (distance de lecture d'un livre).
la source
La taille du texte peut être définie avec une
vw
unité, ce qui signifie la "largeur de la fenêtre d'affichage". De cette façon, la taille du texte suivra la taille de la fenêtre du navigateur:https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_responsive_text
Pour mon projet personnel, j'ai utilisé vw et @meida. Cela fonctionne parfaitement.
la source
Utilisez cette équation:
Pour tout élément supérieur ou inférieur à 1440 et 768, vous pouvez lui attribuer une valeur statique ou appliquer la même approche.
L'inconvénient de la solution vw est que vous ne pouvez pas définir un rapport d'échelle, disons qu'un 5vw à la résolution d'écran 1440 peut finir par avoir une taille de police de 60 pixels, la taille de police de votre idée, mais lorsque vous réduisez la largeur de la fenêtre à 768, elle peut finir étant 12px, pas le minimum que vous voulez.
Avec cette approche, vous pouvez définir vos limites supérieure et inférieure et la police se mettra à l'échelle entre les deux.
la source
Nous pouvons utiliser calc () de css
La formule mathématique est calc (minsize + (maxsize - minsize) * (100vm - minviewportwidth) / (maxwidthviewoport - minviewportwidth))))
Codepen
la source
Je crains qu'il n'y ait pas de solution facile en ce qui concerne le redimensionnement des polices. Vous pouvez modifier la taille de la police à l'aide d'une requête multimédia, mais techniquement, elle ne sera pas redimensionnée en douceur. Par exemple, si vous utilisez:
votre
font-size
sera 3em à la fois pour une largeur de 300 pixels et 200 pixels. Mais vous devez réduire lafont-size
largeur de 200 pixels pour une réactivité parfaite.Alors, quelle est la vraie solution? Il n'y a qu'une seule façon. Vous devez créer une image PNG (avec un fond transparent) contenant votre texte. Après cela, vous pouvez facilement rendre votre image réactive (par exemple: largeur: 35%; hauteur: 28 px). De cette façon, votre texte sera pleinement réactif avec tous les appareils.
la source
Après de nombreuses conclusions, je me suis retrouvé avec cette combinaison:
la source
essaye ça
html { font-size: min(max(16px, 4vw), 22px); }
obtenu depuis https://css-tricks.com/simplified-fluid-typography/
la source
Voici quelque chose qui a fonctionné pour moi. Je ne l'ai testé que sur un iPhone.
Que vous ayez
h1
,h2
ou desp
balises, mettez cela autour de votre texte:Cela rend un texte de 22 pt sur un bureau et il est toujours lisible sur l'iPhone.
la source