28172 sujets

CSS et mise en forme, CSS3

Bonjour,

Il y a un point sur Knacss que je ne comprends pas.

Vous dit mettre 62.5% en body pour que 1 em = 10 px

a écrit :
HTML sert de référence à la taille de police. 62.5% est un équivalent de 10px, mais en unité fluide, ce qui facilitera les calculs par la suite (1.4em vaudra 14px), et permettra à terme d'employer l'unité rem.


Alors pourquoi juste 5 lignes en dessous vous mettez :

/* font-sizing for content */
/* preserve vertical-rythm, thanks to  http://soqr.fr/vertical-rhythm/  */
p,
ul,
ol,
dl,
blockquote,
pre,
td,
th,
label,
textarea {
	[#red]font-size: 1em; /* equiv 14px */[/#]
	line-height: 1.5em;
	margin: 21px 0;
}
h1, .h1-like {
	font-size: 1.8571em; /* equiv 26px */
	line-height: 1.6154em;
	margin: 42px 0 21px 0;
}


font-size: 1em; /* equiv 14px */
Pour avoir 14 px on ne devrait pas faire 1,4 em normalement ?

font-size: 1.8571em; /* equiv 26px */
et 2.6 em pour 26 px ici.

Vous dites vouloir se basé sur 10 px en body pour simplifier le calcul mais au final on se retrouve avec des 1.8571em ?

Ce n'est pas un reproche, loin de là, mais je veux juste comprendre car je m'y perds un peux. Et quel outil utilisez-vous pour calculer rapidement ?

Merci
Pour obtenir un résultat rapidement une calculatrice fait l'affaire :
1em = 14px alors pour 26px :
26 / 14 = 1,857142857142857 em
Mais effectivement on est loin de 1em = 10px
bien plus simple... Smiley sweatdrop
Modifié par PoluxZero (27 Oct 2012 - 11:57)
Bonjour messieurs,

de deux choses l'une :

1 - ce forum n'est pas le lieu ou a été conçu Knacss. Vous devez ce super outil a Raphaël Goetter, qui s'est donné la peine de créer un site dédié et publie dans son blog la moindre modification. Un commentaire sur cet outil serait donc bien plus approprié s'il était destiné à son auteur, qui aurait ainsi une chance de l'améliorer ou de vous expliquer.

2 - Il serait judicieux de lire le code en entier. Parce que vous avez ceci au tout début :
/* base font-size corresponds to 10px and is adapted to rem unit */
html {
	font-size: 62.5%;
}
body {
	background-color: #fff;
	color: #000;
	font-family: "Century Gothic", helvetica, arial, sans-serif;
	font-size: 1.4em; /* equiv 14px */
	line-height: 1.5; /* adapt to your design */
}

Le body est donc à 1.4em, et tous les calculs de contexte en em suivants se font donc d'après cette valeur.

C'est expliqué très clairement : le html à 62.5% est là en prévision du support de l'unité rem, dont le fonctionnement diffère des em. Les em sont calculés d'après le contexte hérité de la cascade, tandis que les rem seront systématiquement calculés d'après la racine html. Et dans la visite guidée de Knacss, il y a même un lien pour que tout le monde comprenne ce que sont les rem.

Et en bonus, le 3 - tu as mis le lien vers l'outil utilisé dans ta demande : http://soqr.fr/vertical-rhythm/
C'est ironique, non ?

Un peu de lecture sérieuse ne ferait pas de mal.
Modifié par Ten (23 Oct 2012 - 09:12)
Bonjour,

Merci de vos réponses, @Ten je sais que c'est Raphaël Goetter qui a développé Knacss et je le remercie.

Je pose cette question car j'étais perdu.

Ten a écrit :
tandis que les rem seront systématiquement calculés d'après la racine html


Justement là où j'étais perdu, c'est qu'il calcul d'après la racine html qui est à 62.5% = 10 px donc il ne prends pas racine sur le body qui lui est à 14px. Enfin je l'avais compris dans ce sens.

En tout cas merci beaucoup de m'avoir éclairci.
Bonjour,

Je pense avoir compris le système de taille de typo avec KNACSS :

- BODY a une taille de police de 1.4em ce qui équivaut à 14px.

- Tous les éléments p, ul, li, form, table, td, th, etc, ont une taille de 1em ce qui équivaut à 14 pixels.


Du coup, si je souhaite qu'un élément <p> ait une taille de 10px, quelle valeur en EM dois je indiquer Smiley ohwell ?

Si mes calculs sont bons je devrais mettre un truc comme :


p {

    font-size: 0.71428571428571428571428571428571em; // 10/14

}



Ce qui vous en conviendrez n'est pas très pratique...


Pourquoi ne pas avoir mis une taille de 1em sur le body, ce qui fait que tous les éléments aurait une taille de 10px par défaut. Et si l'ont souhaite du 12px sur un <p> on mettrait font-size: 1.2em; ou du 9px on mettrait 0.9em ?

Merci pour vous réponses.
Modifié par Gyzm0 (20 Feb 2013 - 11:33)
Je me permet de remonter ce sujet car je suis vraiment interessé pour avoir une explication...

Pourquoi 1.4 em sur le body puis 1.0 sur les p, li, etc, et pas l'inverse ?

Merci d'avance
Administrateur
Bonjour,

pour ce qui est de la division de 10 par 14, tu peux t'arrêter à 3, 4 ou 5 chiffres significatifs Smiley cligne Je te laisse calculer combien de millièmes de pixels représente le 6e chiffre après la virgule...

Pour ce qui est des éléments où l'on place 1.4em pour avoir 14px, c'est le choix de Raphael de le placer sur body, il a toujours préféré placer cela sur les éléments structurants (#footer, #sidebar, #header il y a quelques années ; body maintenant).

Perso, après avoir travaillé pendant des mois sur un projet où la base était 14px et avoir, à force, appris par coeur toutes les fractions entre 7/14e et 18/14e ... Smiley sweatdrop je ne jure que par 62.5% puis une cascade d'em réduite à RIEN avec p, li { font-size: 1.4em; } li li { font-size: 1em } et cie. Reste à gérer les label et input dans un p par exemple quand ils ne font pas 14 px mais ce ne sont que quelques cas, toujours les mêmes et tout le reste est simple... Perso ça me va Smiley lol
En LESS, je précise html { font-size: 100%; } puis j'ai une fonction pour n'avoir à calculer AUCUNE taille d'éléments qu'il soit bloc ... ou inline n'ayant pas la taille de leur parent de type block... J'indique la taille de police voulue en px, optionnellement la taille du parent si ce n'est pas 16px/1em :
- cas général : pour avoir un p de 14px , je tape juste .px(14) puisque le parent div a une taille de police de 16px et l'instruction CSS sera "font-size: 0.875em;"
- cas particulier (assez rare) : pour un label de 13px dans un p de 14px, je tape .px(13, 14) et plop mon instruction CSS sera "font-size: 0.9286em;".
Modifié par Felipe (23 Feb 2013 - 10:17)
Je te remercie pour ta réponse, oui effectivement 4 chiffres significatifs semblent suffisant.

Felipe a écrit :

Pour ce qui est des éléments où l'on place 1.4em pour avoir 14px, c'est le choix de Raphael de le placer sur body, il a toujours préféré placer cela sur les éléments structurants (#footer, #sidebar, #header il y a quelques années ; body maintenant).


Cependant ça ne me dit tjs pas pourquoi est ce qu'il a fait ce choix et qu'il préfère cela. Quel est l'avantage de cette technique par rapport à un body à 1em et les éléments de bas niveau (p, li, etc) à 1.4em ?

Pour l'instant, je ne vois que l’inconvénient de calculs compliqués pour pouvoir appliquer la bonne taille de typos, mais il doit y avoir une raison ?
Administrateur
Gyzm0 a écrit :
Quel est l'avantage de cette technique par rapport à un body à 1em et les éléments de bas niveau (p, li, etc) à 1.4em ?

Hello,

L'avantage est que tu n'as qu'un seul élément à gérer (body) et non plusieurs. Le problème des "plusieurs" est que tu ne connais pas toujours exactement quels sont les éléments de plus bas niveau, tandis que body tu le connais et tu le maîtrises.

Gyzm0 a écrit :
Pour l'instant, je ne vois que l’inconvénient de calculs compliqués pour pouvoir appliquer la bonne taille de typos, mais il doit y avoir une raison ?

Dans la pratique, cet inconvénient devrait être limité puisque ces calculs compliqués ne concernent que "les anomalies" par rapport à la norme.

C'est certain que si tu dois gérer 10 tailles de polices de paragraphes différentes, cela complique un peu les choses.. mais dans ce cas, la faute est plutôt du côté de la charte graphique qui est incohérente.
Raphael a écrit :

Dans la pratique, cet inconvénient devrait être limité puisque ces calculs compliqués ne concernent que &quot;les anomalies&quot; par rapport à la norme.

C'est certain que si tu dois gérer 10 tailles de polices de paragraphes différentes, cela complique un peu les choses.. mais dans ce cas, la faute est plutôt du côté de la charte graphique qui est incohérente.


Bonjour, je te remercie beaucoup pour ta réponse.

Je ne suis pas d'accord avec toi quand tu parles de "anomalies" et de "norme". Pour moi dans un site il est normal qu'on se retrouve avec des dizaines de tailles différentes. Il n'y a pas que des paragraphes à gérer, mais aussi des menus, titres, sous-titres, chapeaux, boutons, contenu annexe, etc... Et du coup toutes ces informations on doit leur appliquer une taille spécifique, d'où ma problématique.

Je ne pense pas qu'on puisse dire la norme d'un site c'est "14px" au final il y aura que quelques styles qui auront effectivement cette taille et tous les autres seront à redéfinir. Je sais pas si j'ai réussi à bien m'expliquer ?

Si je modifie moi même le fichier knacss en mettant le body à 1em, quels sont les risques ? J'ai peur que les calculs de hauteurs de ligne soient faussée et ne respectent plus le rythme vertical...
Administrateur
Gyzm0 a écrit :
Il n'y a pas que des paragraphes à gérer, mais aussi des menus, titres, sous-titres, chapeaux, boutons, contenu annexe, etc...

Les titres, sous-titres sont déjà définis. Tout le reste du contenu n'est pas - à mon avis - un objet "réutilisable" : il ne me semble pas anormal de devoir le styler explicitement plutôt qu'en utilisant des classes génériques.
KNACSS n'est que le produit de nos expériences en projets d'intégrations. Tes expériences sont sans-doute différentes et tu as besoin de reconsidérer KNACSS.

Gyzm0 a écrit :
Si je modifie moi même le fichier knacss en mettant le body à 1em, quels sont les risques ? J'ai peur que les calculs de hauteurs de ligne soient faussée et ne respectent plus le rythme vertical...

Hormis l'inconnue des éléments imbriqués, cela ne devrait pas casser grand chose pour les éléments classiques.
Salut,

Merci d'avoir ouvert ce débat fort intéressant Smiley smile on continu donc cette discussion directement sur KNACSS.

Smiley cligne