Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > CSS
CSS Forum d'entraide sur l'utilisation des feuilles de style CSS. Avant de poster : Cours CSS, FAQ CSS, Galerie CSS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/05/2011, 11h02   #1
Membre régulier
 
Inscription : janvier 2007
Messages : 186
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2007
Messages : 186
Points : 90
Points : 90
Par défaut overflow:hidden et float avec Chrome et safari

Bonjour à tous,

Je rencontre un problème avec le overflow:hidden combiné à des positionnements en float avec les navigateurs chrome et safari.

Voici le code :
HTML
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<body>
    <div id="page">
        <div id="container">
            <div id="bloc1"></div>
                <div id="bloc2">
		    <p>Lorem ipsum</p>
                </div>
            <div style="clear:both;"></div>
        </div>
        <div style="clear:both;"></div>
    </div>
</body>
Les div en clear:both sont juste là pour que l'on puisse voir les blocs conteneur.
CSS
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
#page{
    width: 200px;
    background-color: #f0f0f0;
}
#container{
    float: right;
    background-color: blue;
}
#bloc1, #bloc2{
    height: 50px;
    float: left;
}
#bloc1{
    width: 50px;
    background-color: red;
}
#bloc2{
    background-color: green;
    height: 50px;
    color:white;
}
Ceci donne sous chrome : image1.jpg (en PJ)

Jusqu'ici tout va bien, le bloc "container" et bien positionné à droite de la page (en gris), sa largeur vaut exactement la somme de ses 2 blocs fils et ceux ci sont bien côte à côte.

Maintenant je souhaite cacher le bloc2 (en vert) en mettant sa largeur à 0.
(Je n'utilise pas display:none car mon but est de réaliser une animation, je ne présente ici qu'un exemple simplifié)
Je pensais donc qu'en ajoutant "overflow:hidden;" et "width:0px;" sur le bloc2 (en vert), il allait disparaitre et que la largeur du bloc conteneur (en bleu) allait s'adapter.
Or avec chrome et safari ce n'est pas le cas :

CSS
Code :
1
2
3
4
5
6
7
8
 
#bloc2{
    background-color: green;
    height: 50px;
    color:white;
    overflow: hidden;
    width:0px;
}
Ceci donne sous chrome : image2.jpg (en PJ)

Je voudrais finalement que le bloc1 (en rouge) soit aligné à droite et que la largeur du bloc conteneur (en bleu) s'adapte à ses fils.

En regardant les tailles calculées par le navigateur, on voit que le bloc2 (en vert) ainsi que la balise <p> ont une largeur de 0. En revanche la largeur du bloc conteneur (en bleu) est restée la même.

Avez-vous une idée pour forcer la largeur du conteneur à s'ajuster à la taille de ses fils ?

Merci d'avance et n’hésitez pas à me demander des compléments si je n’ai pas été clair.

P.S. Tout ceci fonctionne bien avec FF, opera et IE.
Images attachées
Type de fichier : jpg image1.jpg (3,2 Ko, 3 affichages)
Type de fichier : jpg image2.jpg (951 octets, 2 affichages)
__________________
Seulement le tout venant a été piraté par les mômes... Qu'est-ce qu'on fait, on s' risque sur le bizard ???
tom42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 12h13   #2
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Tu peux sortir le bloc2 du flux :

Code :
1
2
3
4
5
#bloc2 {
  [...]
  position : absolute;
  left : -999em;
}
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 13h19   #3
Membre régulier
 
Inscription : janvier 2007
Messages : 186
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2007
Messages : 186
Points : 90
Points : 90
Merci pour ta réponse.

Mon but est d'animer l'ensemble par javascript en jouant sur la largeur du bloc 2.
J'ai simplifié au max pour la compréhension du problème mais dans mon cas il y a beaucoup plus d'enfant dans le bloc "container".
En le laissant dans le flux, tous les fils du bloc conteneur restent en fer à droite (A condition que la largeur du bloc parent s'adapte à son contenu).
__________________
Seulement le tout venant a été piraté par les mômes... Qu'est-ce qu'on fait, on s' risque sur le bizard ???
tom42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 14h10   #4
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Tu peux le sortir du flux quand tu veux une largeur équivalente à 0 et le remettre dès que tu c'est supérieur à 0. A partir de 1px Chrome réagit "normalement".
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 15h53   #5
Membre régulier
 
Inscription : janvier 2007
Messages : 186
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2007
Messages : 186
Points : 90
Points : 90
Bien vu, je n'avais pas remarqué qu'à partir d'un 1px le comportement était normal.
Avec ceci je vais facilement pouvoir m'en sortir.

Merci beaucoup pour le coup de main.
__________________
Seulement le tout venant a été piraté par les mômes... Qu'est-ce qu'on fait, on s' risque sur le bizard ???
tom42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h49.


 
 
 
 
Partenaires

Hébergement Web