Rechercher : dans
Par :

CSS - Probleme overflow:auto

Dernière réponse le 13 jui 2009 à 15:04:24 matwil, le 22 jan 2005 à 11:48:49 
 Signaler ce message aux modérateurs

Voilà mon prob, j'utilise un overflow/auto mais suivant les navigateurs (ie ou firefox), la taille du bloc <DIV> qui contient l'attribut de style overflow:auto n'est pas la meme.
En effet, je fixe la taille de mon bloc (width:750px;) mais le rendu n'est pas le meme sous IE que sous Firefox.
Le premier inclu l'espace réservé au scroll dans els 750 px alors que Firefox ajoute le scroll aux 750 px.
Ce qui génère des blocs de taille très différentes suivant les navigateur.

Quelqu'un aurait il une solution ou astuce pour éviter ce probleme ???
Merci d'avance ...


NB : A quand des navigateurs qui respectent tous les normes W3C !!!?

Meilleures réponses pour « CSS Probleme overflow:auto » dans :
Grand Theft Auto IV ( GTA4 ) - Bugs récurrents VoirGTA4 AAAaaaah, un excellent jeu que ce Grand Theft Auto 4. En dehors de quelques détails… Chez beaucoup de gens, le jeu ne démarre pas après l’installation. Dans une grande majorité des cas, il faudra vérifier la puissance de l’ordinateur...
Popup en CSS, sans Javascript VoirVoici comment réaliser une popup d'information en pure CSS, sans Javascript. L'astuce est d'utiliser :hover de manière à utiliser des CSS différents au passage du curseur. Parmis les attributs CSS modifiés, on utilise display:none afin de...
Les CSS pour présenter vos images VoirPour présenter agréablement vos images, vous pouvez intégrer quelques codes supplémentaires dans votre CSS et vous en servir à bon escient. Elles sont bien sur modulables en fonction de la charte graphique de votre site. Utilisation Mettez les codes...
Les classes de style (CSS) VoirLes classes et les ID Les classes Il peut s'avérer intéressant d'affecter des styles différents à des mêmes balises. Pour cela les spécifications CSS ont introduit le concept de classe. La définition des classes est aussi simple que celles des...
Feuilles de style - CSS VoirPrésentation des feuilles de style Le concept de feuilles de style est apparu en 1996 avec la publication par le W3C d'une nouvelle recommandation intitulée « Cascading StyleSheets » (feuilles de style en cascade), notée CSS. Le principe des...
CSS - Les couleurs VoirLes couleurs Le standard CSS propose différentes façons de définir des couleurs : par un nom avec la notation hexadécimale avec la notation décimale Appel d'une couleur par son nom Le langage HTML définit des noms pour un nombre limité de...

1

asevere, le 22 jan 2005 à 12:44:30

Salut,

Si tu nous mettais un exemple de page, plus la CSS concerné, ça pourrais nous aider a te répondre ;)

@+
...Mana mana
   Tutudutu...

Répondre à asevere

2

matwil, le 22 jan 2005 à 13:02:06

Re !

J'ai crée une page vide de contenu pour illustrer mon prob mais ce n'est pas tres utile jepense puisque c'est une question de naivgatuer (IE ou Firefox) ... Mais bon sait on jamais ...

http://www.matwil.com
http://www.matwil.com/css.css

Répondre à matwil

3

matwil, le 22 jan 2005 à 13:53:23
  • +1

Salut à Tous !!

Je répond à mon propre post pour donner "l'astuce" qui permet de résoudre tous les probleme de ce genre...

Ce qui se passe c'est que Internet explorer c'est tellement de la merde que si on ne lui spécifie pas unDoctype pour lui faire compremdre qu'il faut par exemple vraiment qu'il se mette aux normes W3C, il ne le fait pas ...

Donc il suffit de placer en haut de page (au dessus de la balise <html>) le doctype qui correspond à votre page :

--> HTML 2.0

<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">

--> HTML 3.2

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

--> HTML 4.01 - Strict

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

--> HTML 4.01 - Transitional

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

--> HTML 4.01 - Frameset

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

--> XHTML 1.0 - Strict

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

--> XHTML 1.0 - Transitional

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

--> XHTML 1.0 - Frameset

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

--> XHTML 1.1

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Répondre à matwil

4

visiteur, le 13 jan 2008 à 14:55:17
  • +1

Comme j'ai le même problème, et si je puis me permettre :

Ce qui est de la merde, ce n'est certinement pas IE qui a l'intelligence d'inclure " l'espace réservé au scroll dans els 750 px", mais plutôt une norme qui prétendrait qu'il faut mettre la scrollbar à l'extérieur alors que :

1°) Le bon sens veut que la scrollbar fasse partie de ladite boite (puisque si tel n'était pas le cas, autant qire qu'elle se "ballade dans la nature")
2°) Jusqu'à preuve du contraire, il n'existe aucune méthode permettant de connaitre la taille d'une scrollbar chez le client (pour le moins problématique s'il faut travailler uniquement avec des tailles connues)
3°) et c'est là que ça devient un problème : On ne connaît pas nécessairement la TAILLE VOULUE de la boîte en overflow=auto (sauf, j'en conviens, à développer des interfaces qui n'offrent aucune flexibilité côté client).

CONCLUSION : un navigateur qui oblige à se fixer des tailles en dur (comme "750px") pour pouvoir utiliser convenablement l'overscroll=auto est pour moi de la merde, et non l'inverse. L'idéal serait évidemment que le développeut puisse indiquer au navigateur, en fonction des besoins, si la scrollbar doit être à l'intérieur de la boîte ou à l'extérieur...

Répondre à visiteur

5

Mitch074, le 27 fév 2008 à 10:12:26
  • +6

'width' d'après les spécifications, définit le contenu de la boîte, hors bordure et marge interne (padding) - ce tracé conditionnant les dimensions de tous ses enfants, rendre un truc aussi aléatoire que la largeur d'une barre de défilement partie de la définition du contenu est franchement idiot (c'est le cas de IE).

Pourquoi? Parce que dans un cas où le contenu de la boîte fait effectivement toute la largeur de la boîte (mettons, une image de 750px de large), l'apparition de la scrollbar latérale à l'intérieur de la boîte fait apparaître aussi la scrollbar horizontale! C'est moche, c'est difficile à naviguer, c'est pourrave, ça prend de la place pour rien, et ça demande de compter les pixels d'un élément d'interface utilisateur inaccessible pour un calcul automatique - donc de réserver manuellement de la place pour le cas le plus courant.

Là, le standard prend tout son sens: la taille du contenu de la boîte une fois décidé, y'a plus qu'à s'inquiéter de la place libre dans son conteneur.

Alors, puisque c'est si idiot, pourquoi faire des boîtes de taille fixe?

Simplement parce que IE 6 et inférieurs sont incapables de tracer des boîtes dont on définit les dimensions par rapport à leur conteneur (essayez de tracer une boîte avec top:10px, bottom:10px, left:10px,right:10px, et pleurez), ce qui empêche le tracé de pages à contenu fluide - il faut donc définir des pages à contenu fixe, avec des dimensions définies au pixel près, juste pour que IE les affiche sans faire appel à Javascript dans son CSS.

Et là, IE 7 (qui pourtant comprend enfin correctement le tracé 'fluide' d'éléments de pages) montre vraiment la perversité du mode de calcul d'IE: chaque fois que les barres de défilement doivent apparaître parce que le contenu de la page change (mettons, un élément s'agrandit lorsque survolé par la souris, ou la page est redimensionnée), l'apparition des barres de défilement entraîne une confusion totale de l'affichage.

Prenons le cas de figure d'un conteneur avec overflow:auto, qui contient du contenu varié mais essentiellement fluide (texte et blocs redimensionnables). Si l'un des blocs change de dimension, le texte devrait 'couler' et se repositionner, et si le contenu déborde du conteneur, overflow:auto devrait faire apparaître une barre de défilement latérale (rien ne pousse à l'horizontale puisque le texte s'écoule).
IE 7 aura les réactions suivantes:
- les barres de défilement n'apparaissent pas alors qu'elles le devraient (contenu qui déborde de son conteneur, agit comme overflow:none)
- la barre latérale apparaît, mais calcule mal le contenu (faire défiler la barre la fait sauter et se redimensionner; charge processeur grimpe à toute vitesse, risque de plantage du PC)
- les deux barres apparaissent, alors que l'horizontale n'est pas nécessaire
- le contenu s'affiche normalement avec une seule barre de défilement latérale parce qu'il n'y a plus de contenu redimensionnable hors zone affichée.

Sous Firefox 2, une barre de défilement apparaît sur le côté. Elle peut rester même si elle n'est pas nécessaire par la suite (un élément agrandit rétrécit à nouveau), mais elle disparaît si un autre élément entraîne un 'reflow' de la page.

Opéra 9, Safari et Firefox 3 recalculent le contenu de la page avec fluidité.

Traduction, ici IE est réellement pourrave.

Solution pour le cas de figure présent: utiliser le doctype html 4 Strict ou Xhtml 1.0 strict fait que IE6/7 et firefox calculent la largeur du bloc de la même manière. Pour éviter de s'enquiquiner avec les scrolls, une solution est de définir un conteneur assez large (mettons, 780px), de lui donner à lui l'attribut overflow:auto, et de coller à l'intérieur le div de largeur 750px, sans overflow. A ce moment-là, c'est le div conteneur qui s'occupe de 'scroller' son contenu, lequel fait 750px - point barre.

Répondre à Mitch074

6

 L*, le 13 jui 2009 à 15:04:24

Merci Mitch pour ton explication éclairante, elle m'a résolu mon problème!

Répondre à L*