44 votes

Déterminer la hauteur DIV maximale possible

Est-il une méthode recommandée pour déterminer la hauteur maximale qu'un DIV peuvent être définies et restent visibles par navigateur? Ce ne semble pas être documenté partout et est très mise en œuvre spécifique.

Voir, par exemple, le script de test suivant:

http://jsfiddle.net/NP5Pa/2/

C'est un test simple pour trouver la valeur maximale que vous pouvez définir un DIV style attribut hauteur avant de la correspondante clientHeight de l'élément devient 0. Vous pouvez le vérifier en cliquant sur "Find Max" puis incrémentation de la trouvé de hauteur par 1 et en cliquant sur "Hauteur".

Quelques exemples (Win7/64):

Chrome (14.0) :    134,217,726 px
Safari (5.1)  :    134,217,726 px
IE (9.0)      :     10,737,418 px
FF (7.0.1)    :     17,895,697 px

Il n'est pas surprenant que le WebKit produit le même résultat, je pense - plus surprenant que IE et FF sont très différents.

Est-il un meilleur moyen? Et vous obtenez des résultats différents dans les systèmes 32 bits?

--EDIT: mis à Jour le violon à s'arrêter au 10,000,000,000 (et y arriver plus vite) pour l'Opéra. C'est beaucoup de pixels.

13voto

Thai Points 4698

C'est votre code, modifié pour utiliser les binaires de recherche (il est donc beaucoup plus rapide).

http://jsfiddle.net/thai/zkuGv/4/

Il commence à partir de 1 pixel, et de doubler sa taille jusqu'à ce qu'il frappe le maximum (j'utilise 253, qui est le plus grand entier qui peut être stockée en JavaScript, sans perdre la précision et rendrait le binaire de recherche buggy), ou de la div s'effondre à zéro pixel.

Supposons que nous avons défini la div de taille h , et il disparaît, alors la taille maximale doit être comprise entre h/2 et h. Nous binaire de recherche à partir de là, pour une hauteur h qui ne rend pas les div disparaissent lorsque le réglage de la hauteur h, mais disparaît lorsque la valeur de h+1.

Ensuite, nous pouvons arriver à une conclusion pour l'Opéra: 2147483583 pixels.

2voto

Brendan Delumpa Points 938

Je me demande si ce problème est même pertinent si vous définissez body, html height à 100% afin que le document par défaut soit la hauteur de la fenêtre d'affichage, de sorte que la hauteur maximale de la div sera la hauteur de la fenêtre d'affichage si vous la définissez à 100% de hauteur. Juste une pensée...

0voto

Sunjay Varma Points 1794

0voto

Serkan Yersen Points 398

Ici, essayez ceci: http://jsfiddle.net/serkanyersen/yNfuX/

De respecter le parent du remplissage et de la marge de propriétés. Lorsque vous cliquez sur bouton MAX, DIV permettra d'élargir de plus d'espace disponible. Je suis sûr que vous pouvez convertir ce en fonction de vos besoins.

Il doit être récursive, à partir de lui-même vers le très haut, mais je n'ai pas eu le temps de mettre cela en œuvre.

REMARQUE: Essayez de redimensionner la page, et décommentez la DIV parent pour qu'il soit pleinement de travail.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X