J'essaie de créer une page simple avec les caractéristiques suivantes :
- Son corps doit avoir une largeur d'au moins 60em.
- Ses marges gauche et droite doivent être de même largeur et au maximum de 3em.
- Lorsque la fenêtre du navigateur est redimensionnée, les marges du document doivent être redimensionnées de manière à ce que la barre de défilement horizontale de la fenêtre du navigateur couvre la plage la moins étendue possible.
En transformant ces exigences en un problème de programmation linéaire, nous obtenons :
DEFINITIONS:
BRWS = (width of the browser window, not a variable)
BODY = (width of the document's body)
LRMG = (width of the document's left and right margins)
HSCR = (range of the browser window's horizontal scroll bar)
OBJECTIVE:
MIN HSCR /* Third requirement */
CONSTRAINTS:
HSCR = BODY + 2*LRMG - BRWS /* From the definition of how a browser's
* horizontal scrollbar works. */
BODY >= 60 /* First requirement */
LRMG <= 3 /* Second requirement */
LRMG >= 0 /* Physical constraint, margins cannot be negative */
HSCR >= 0 /* Physical constraint, scroll bars cannot have negative ranges */
En résolvant ce programme linéaire, on obtient :
BODY = (BRWS <= 66) ? 60 : (BRWS - 6)
HSCR = (BRWS >= 60) ? 0 : (60 - BRWS)
LRMG = (BRWS + HSCR - BODY) / 2
(Désolé pour les mathématiques ennuyeuses, mais je ne suis pas sûr que l'explication originale en anglais était suffisamment claire).
Revenons maintenant à la page actuelle. Après avoir cherché sur Google ce que je pouvais faire avec CSS, j'ai réussi à mettre en œuvre les deux premières exigences en utilisant le code suivant :
body {
min-width: 60em; /* First requirement */
}
/* The document's body has only two children, both of which are divs. */
body > div {
margin: 0 3em; /* Second requirement, but in a way that makes */
max-width: 100%; /* it impossible to satisfy the third one. */
}
Si le CSS avait un max-margin
il serait facile de satisfaire à toutes les exigences :
body > div {
max-margin: 0 3em;
max-width: 100%;
}
Mais, bien sûr, max-margin
n'existe pas. Comment pourrais-je le simuler ?
1 votes
Javascript hors de question ?
0 votes
J'espère que non, car c'est la seule façon pour lui d'y arriver ;)
0 votes
Essayez-vous de créer une disposition centrée, c'est-à-dire une division dont la largeur est fixe, mais qui reste au centre même lorsque le navigateur est redimensionné ?
0 votes
Niklas : Oui. Je sais comment faire cela avec JavaScript, mais c'est quelque chose pour lequel JavaScript ne devrait pas être nécessaire.
0 votes
@Darknight : J'ai déjà une mise en page centrée. Ce que je veux, c'est que les deux le corps du document et les marges du document sont redimensionnés de manière raisonnable.
0 votes
Avez-vous un lien vers une démo/exemple de la page, car je ne comprends toujours pas ce que vous essayez d'obtenir exactement ?
1 votes
Si je comprends bien, il essaie de créer une mise en page centrée où la largeur du contenu est variable, mais au minimum de 60em. En outre, le contenu doit avoir une marge de 3em qui doit être réduite si la fenêtre du navigateur n'est pas assez large.
0 votes
@skajfes : Exactement ! Pourquoi je ne pouvais pas le dire comme ça ?
0 votes
Probablement parce que vous n'avez pas assez bu :)
1 votes
Pouvez-vous utiliser les media queries css3 ?
0 votes
@skajfes : Probablement aussi parce que je suis trop enclin aux mathématiques pour mon propre bien.
0 votes
@Chris J. Lee : Qu'est-ce que les media queries CSS3 ? :-o
1 votes
Ok, ça a beaucoup plus de sens maintenant. Donc, lorsque l'utilisateur élargit son navigateur, vous voulez dire qu'en fait, la division centrale s'agrandit (mais conserve des marges de 3em de chaque côté) ? Et lorsque le navigateur est réduit (en largeur), la division centrale devrait également se rétrécir, mais pas moins puis 60em. Et il peut même manger dans les marges de 3em afin d'essayer de maintenir le minimum de 60em ?
0 votes
@Eduardo : Je te comprends tout à fait car je suis aussi comme ça. J'ai aussi remarqué que j'arrive à m'exprimer plus clairement avec les humains quand j'ai quelques bières dans le corps (disclaimer : je ne préconise pas la consommation d'alcool, je fais juste une observation).
0 votes
Merde, j'aimerais pouvoir déclasser ma propre question, parce que c'est complètement stupide.