Bordure autour de 100% de la taille du corps et la largeur (HTML 4.01 Strict)
Ok, ça me rend fou maintenant.
Je veux avoir une bordure autour de mon document. Il faut bien aller autour de la totalité de la fenêtre/fenêtre d'affichage. J'ai donc définir:
body {
border: 1px solid red;
}
Lors de mon document est en mode quirks, cela fonctionne bien. Au moins dans IE, qui est mon principal objectif ici. Une bordure rouge montre jusqu'à la limite de ma page, bien sûr, parce que par prédéfinis CSS body
et html
sont mis à remplir l'écran.
Lorsque vous allez à la mode normes en définissant un DOCTYPE HTML 4.01 strict, body
et html
effondrement de la réel (petite) taille du contenu, la frontière est tracée de droite passant par le milieu de l'écran. J'ai donc définir:
body, html {
padding: 0px;
margin: 0px;
border: 0px none;
width: 100%;
height: 100%;
}
body {
border: 1px solid red;
}
Et je reçois — les barres de défilement, défilement exactement un pixel pour afficher le bas/la droite frontières. Cependant, je veux que la frontière visible immédiatement.
Est-il un no-bullshit "(comme " hauteur: 99.9%;", "overflow: hidden;" ou de "revenir en mode quirks") méthode pour obtenir une bordure à 100%, sans inutiles barres de défilement? IE-seulement est fine, cross-browser serait mieux, bien sûr.
- IE-seulement pour l'application intranet? Le seul endroit où vous pouvez obtenir 100% de non-utilisateurs d'internet explorer? Fou! 🙂
- Les environnements d'entreprise et Firefox sont mutuellement exclusifs. Au moins 99% du temps. Et jusqu'à ce que Mozilla enfin, il obtient que le manuel de l'authentification NTLM (ou jouer avec about:config par client), n'a vraiment pas le couper, c'est va rester de cette façon.
- À distance de configs. wetdog.sourceforge.net
- Avec ce Tomalak dit, Firefox a toujours eu assez de problèmes d'impression que la plupart des entreprises de le fuir ainsi. C'est une chose de faire un développeur de faire quelques contorsions; il est tout à fait autre à faire qu'il est impossible pour l'utilisateur final de travailler comme ils veulent.
Vous devez vous connecter pour publier un commentaire.
Comme SpliFF, déjà mentionné, le problème est que la valeur par défaut (W3C) modèle de boîte est "content-box", qui se traduit dans les frontières étant à l'extérieur de la
width
etheight
. Mais vous voulez que ces être dans les 100% de la largeur et de la hauteur que vous avez spécifié. Une solution de contournement consiste à sélectionner le border-box modèle de boîte, mais vous ne pouvez pas le faire dans IE 6 et 7 sans revenir en mode quirks.Une autre solution fonctionne dans IE 7, trop. Juste mettre
html
etbody
à 100% de la hauteur et deoverflow
àhidden
pour se débarrasser de la fenêtre, des barres de défilement. Ensuite, vous devez insérer un positionnement absolu div wrapper qui obtient la bordure rouge et tout le contenu, le réglage de tous les quatre zone de décalage propriétés à0
(donc la frontière colle aux bords de la fenêtre d'affichage etoverflow
àauto
(pour mettre les barres de défilement à l'intérieur de la div wrapper).Il n'y a qu'un seul inconvénient: IE 6 ne prend pas en charge la définition de deux
left
etright
et les deuxtop
etbottom
. La seule solution pour cela est d'utiliser Expressions CSS (dans un commentaire conditionnel) de définir explicitement la largeur et la hauteur de l'emballage à la fenêtre d'affichage de la taille, moins la largeur de la bordure.Pour le rendre plus facile pour voir l'effet, dans l'exemple suivant, j'ai agrandi la largeur de la bordure de 5 pixels:
P. S.: je viens de voir que vous n'aimez pas
overflow: hidden
, hmmm...Mise à jour: j'ai réussi à obtenir autour de l'utilisation
overflow: hidden
en simulant une frontière à l'aide de quatre divs qui sont collés sur les bords de la fenêtre d'affichage (vous ne pouvez pas simplement la superposition de l'ensemble de la fenêtre avec un plein taille des div, comme tous les éléments ci-dessous, il ne serait pas plus accessible). Ce n'est pas une solution sympa, mais au moins la normale barres de défilement restent dans leur position d'origine. Je ne parvenais pas à le laisser IE 6 simuler la correction du positionnement à l'aide d'expressions CSS (ai eu des problèmes avec la droite et en bas divs), mais il semblait horriblement de toute façon que ces expressions sont très cher et le rendu obtenu péniblement lent.overflow: hidden
est très orthodoxe, mais je pense qu'il y a pas moyen de contourner cela. Comme dirait ma demande d'origine est impossible à remplir, mais c'est une réponse, trop.Vous allez aimer celui-ci.
http://www.test.dev.arc.net.au/100-percent-border.html
J'ai trouvé depuis que les tables de garder beaucoup de "bizarre" comportement, même selon les standards mode, ils pourraient être la solution. En tournant l'élément HTML dans une table est assez drôle même si.
Avant le marquage ce pour ne pas travailler dans IE6 considérer que c'est un très banal problème à résoudre. Le point est que l'utilisation de la table de dessin de l'algorithme est la solution, et un pur CSS solution est également possible:
Jusqu'CSS3 nous donne à l'intérieur des frontières et de la boîte-modèle de commutation vous avez besoin de deux divs. Le premier à donner 100% de la hauteur et la seconde pour fournir de la frontière. Sinon, la frontière passe à l'extérieur de la 100% de la hauteur (c'est à dire, 1px+100%+1px)
BTW. Vous devez collecter quelques statistiques avant d'aller "c'est à dire uniquement". IE n'a pas les parts de marché qu'elle avait autrefois. N'importe où entre 10% à 30% de vos utilisateurs peut être sur d'autres navigateurs.
Voici une solution simple en utilisant seulement l'html et des éléments du corps (pas besoin de divs imbriqués). Il faut profiter de la spéciale de comportement de l'élément HTML (il ne peut pas avoir une frontière extérieure de sorte qu'il doit diminuer afin de l'afficher).
Elle aussi un peu moche, mais en donnant le corps
a fonctionné pour moi.
Essayez de définir les frontières de l'élément html. L'élément de corps est seulement aussi haut qu'il doit, mais, autant que je me souvienne, l'élément html prend tout l'espace (c'est là que vous devez définir votre arrière-plan, trop).
Je ne suis pas sûr de savoir comment les frontières de regarder, j'ai l'habitude de définir uniquement les milieux.
frontière est de 100% de la taille. Essayez
padding: -1px
oumargin: -1px
.