Rechercher : dans
Par :

Css, float et IE

Dernière réponse le 8 nov 2009 à 13:29:54 Straw, le 23 jan 2008 à 15:19:38 
 Signaler ce message aux modérateurs

Bonjour à tous,

Je débute en CSS et je rencontre quelques problèmes au niveau de l'alignement de mes blocs J'ai un menu à gauche en "float:left", et un bloc à sa droite, le corps, contenant tout mon texte.
Sous firefox, y'a pas de pro, mais sous IE6, mon corps se positionne en dessous du menu (diagonalement car je lui ai appliqué une marge).

Voici mon code html :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Bienvenue sur mon site !</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="styles/1ersite.css" rel="stylesheet" type="text/css" />
</head>
<body>

<div id="en_tete"><img src="images/structure/images_bandeaux/FR/bandeau_bienvenue_FR.jpg" alt="" width="765" height="150" /></div>

<div id="menu"> <!-- Cadre englobant tous les sous-menus (en bleu marine sur le schéma) -->
<div class="element_menu"> <!-- Cadre correspondant à un sous-menu -->
<h3>Bienvenue aux Valades</h3>
<ul>
<li>Qui sommes-nous ?</li> <!-- Liste des liens du sous-menu -->
<li>Chalets bois</li>
<li>Le site</li>
<li>Etang de pêche</li>
</ul>
<h3>Nos formules</h3>
<ul>
<li>Escapade romantique</li> <!-- Liste des liens du sous-menu -->
<li>Aventure</li>
<li>Préhistoire</li>
<li>Tarifs</li>
</ul>
<h3>Contact</h3>
</div>
<div class="element_menu">
<h3>Nos liens</h3>
<ul>
<li>Camping</li> <!-- Liste des liens du sous-menu -->
<li>Blog</li>
<li>Vidéos</li>
</ul>
</div>
</div>
<div id="corps">
<h1>Locations de vacances en Dordogne</h1>
<h2>Hébergement en chalet bois sur un site naturel</h2>
<p>Venez séjourner dans le cadre intime et chalheureux d'un <a href="FR/chalets-bois.html">chalet en bois</a> et</p>
<p>Vous ressourcer dans un écrin de verdure paradisiaque</p>
<P>Surprise, <strong>idée cadeau</strong> à offrir ou à s'offrir</p>
<img src="images/contenu/animations/anim_1.jpg" alt="" /> <img src="images/contenu/animations/anim_2.jpg" alt="" /></P>
<h2>Découvrez nos idées week-end et nos séjours à thèmes</h2>
<p>Escapade romantique ? Séjour sportif ? Semaine farniente ? De l'<strong>hébergement simple</strong> au <strong>séjour organisé</strong>, trouvez la formule qui vous correspond !</p>
<p><strong>Etang de pêche</strong>, randonnée, calme et repos</p>
<h2>Découvrez nos idées week-end et nos séjours à thèmes</h2>
<p>Escapade romantique ? Séjour sportif ? Semaine farniente ? De l'<strong>hébergement simple</strong> au <strong>séjour organisé</strong>, trouvez la formule qui vous correspond !</p>
<p><strong>Etang de pêche</strong>, randonnée, calme et repos</p>
</div>

<div id="pied_de_page">
<p>Camping LES VALADES<a href="mailto:info@lesvalades.com">info@lesvalades.com</a>- +33 (0) 5 53 29 14 27<br/>
COPYRIGHT © 2008 Les Valades Dordogne</p>
</div>

</body>
</html>

Et voici mon CSS :

body
{
width: 1100px;
margin: 20px auto;
background-image:url('../images/structure/cadre%20general/fond_rayures.jpg');
color:#330000;
font-family:Trebuchet MS, georgia, arial; margin-top:20px; /
margin-bottom:20px

}

#en_tete
{
width: 1100px;
height: 180px;
background-image: url('../images/structure/cadre%20general/bandeau_nature.png');
background-repeat: no-repeat;
margin-bottom: 10px
}

#en_tete img
{
position: relative;
left: 323px;
top: 19px;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
}

#menu
{
float: left;
width: 187px;
border: 2px solid #A3A864;
}

.element_menu
{
background-color: #3E4307;
margin-bottom: 20px;
}

.element_menu h3
{
color: #FFDB32;
text-align: center;
}

.element_menu ul
{
padding: 0px;
padding-left: 20px;
margin: 0px;
margin-bottom: 5px;
color: #FFFFFF;
}

.element_menu a
{
color: #FFFFFF;
}

.element_menu a:hover
{
color: #FFFF33;
}

#corps
{
margin-left: 190px;
margin-bottom: 20px;
background-image: url('../images/structure/cadre%20general/fond_beige_milieu.jpg');
background-repeat: repeat-y;
border: 2px solid #A3A864;
width: 913px;
background-position: center 50%;
}

#corps h2
{
position: relative;
left: 30px;
}

#pied_de_page
{
width: 913px;
text-align: center;
margin-bottom: 20px;
font-size: small;
margin-left: 190px;
}




J'imagine que ce bug doit être assez courant (?)

Je vous remercie d'avance pour votre aide !

Meilleures réponses pour « css, float et IE » dans :
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...
Désinstaller IE 8 VoirDésinstallation d'IE 8 Vous avez installé IE8 pour le tester et vous souhaitez désormais revenir à une version précédente ? Voici la procédure à suivre pour les OS suivants : Windows Vista Windows XP Windows Vista Ouvrir le...
Affichage flou sous Vista - Désactiver ClearType VoirL'option ClearType, intégrée dans le système Windows Vista, permet d'adoucir l'affichage en lissant les polices. Néanmoins, cela a également pour effet de donner une impression de "flou". Si vous souhaitez désactiver ClearType, voici la...
Télécharger Flock VoirFlock est un navigateur web gratuit monté à partir de la technologie sécurisée et rapide de Mozilla. L'application n'est pas uniquement un navigateur pour la recherche sur Internet, mais il intègre également des fonctions supplémentaires. Flock vous...
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...
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...
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

Darkito, le 23 jan 2008 à 15:33:13

Bonjour,
La réponse est dans le titre de ton message =o)
En effet, IE n'aime pas trop les floats...
Essaie en mettant float:left dans ton corps également.
En gros, tu mets float left si su tu veux des div sur la même ligne.
Ce n'est pas l'utilisation "propre" de float mais il semble que ce soit la seule qui fonctionne sous IE.

--
Tøƒ

Répondre à Darkito

2

thilde, le 23 jan 2008 à 15:34:06

J'ai eu le meme probleme et j'ai du appliqué de codage différent
un pour ie et l'autre pour firefox

ou autre solution rapide que j'ai testé

mettre le lien pour télécharger firefox ou alors de dire aux gens de s'adapter

mais quelqu'un d'autre aura peut etre une meilleure solution

Répondre à thilde

3

Straw, le 23 jan 2008 à 18:24:11

Ok, je vais essayer de mettre un float left sur le corps et je reviens vers vous ;

Y a-t-il autre chose que le float ? Si j'utilise des positions absolues, je ne vais plus pouvoir centrer mon design, non ?

Pour Thilde : qd tu dis que tu as appliqué un codage différent "un pour ie et l'autre pour firefox ", comment tu fais ? on peut reconnaitre le navigateur de l'internaute et choisir un CSS en fonction ?

Répondre à Straw

4

Moulloud, le 18 avr 2008 à 15:23:12
  • +4

A creuser:

utiliser un float avec Firefox ET IE est possible.
Par contre, les marges sont alors doublées avec IE.

La solution: utiliser le mot clef !important lors de la definition des margin / padding.
!important fait partie de la norme W3C, mais encore une chose que IE ne respecte pas

Firefox va considérer le parametre CSS contenant !important comme prioritaire
IE va tout simplement l'ignorer

Exemple de code CSS compatible:

float: left;
margin-left: 40px !important; /* pris en compte par Firefox */
margin-left: 20px; /* pris en compte par IE*/

Répondre à Moulloud

5

LeRenardDuWeb, le 11 mai 2008 à 11:12:21

Bonjour,

Je cherchais une solution à ce problème de cohabitation que rencontrent parfois FF et IE au niveau des marges.
J'y suis arrivé avec l'aide de ton conseil :

margin-left: 240px !important; /* pris en compte par Firefox */
margin-left: 0px; /* pris en compte par IE*/

Merci Moulloud.

Répondre à LeRenardDuWeb

6

naflo, le 5 jun 2008 à 10:15:08
  • +2

Il te manque un display: inline;
pour tes élément en float left et qui ont un margin left
voila

Répondre à naflo

7

lemanico, le 12 jun 2008 à 19:52:13
  • +2

Salut,

au lieu de rajouter "!important", il est vraiment préférable de créer une feuille de style spéciale pour IE. En effet, IE7 reconnaît le "!important" alors qu'il ne gère toujours pas mieux les modèles de boite.

Pour cela il suffit de rajouter dans le header de ta page html

<!--[if IE]>
<link rel="stylesheet" media="screen" type="text/css" title="feuille de style pour IE" href="css/style_ie.css" />
<![endif]-->

et de modifier à loisir cette nouvelle feuille de style qui ne sera lu que par IE.
Il existe de nombreuses options pour cibler la version de IE que tu peut trouver facilement sur google.

Répondre à lemanico

9

Csil, le 20 fév 2009 à 20:09:47

Bonjour,
j'ai fait un copier-coller tel quel du code que tu as donné (en changeant le nom de ma feuille de style bien sur) mais j'ai beau modifier mes parametres dans mais feuille_ie.css, ca ne change pas l'apparence de ma page sous IE.
Du coup j'ai des margin-top beaucoup trop grand et ma mise en page est totalement déglinguée !
Ya pas autrechose, un autre code, une autre manière de proceder ?

Merci pr votre aide

Répondre à Csil

8

Fredou, le 31 oct 2008 à 10:15:15

Bonjour, pour un div l'un au dessus de l'autre et suite à un décalage vertical entre Firefox et IE7 à cause d'un form dans le div du dessus, j'ai trouvé comme solution de mettre une marge presque inverse en mettant margin-bottom: 15px; pour le div au dessus et margin-top: -10px; pour le div en dessous. Même principe pour le premier div au dessus du form1 avec margin-bottom: 15px; et margin-top: -5px; pour le second div.

<div style="text-align: center; margin-bottom: 15px;">
</div>

<div style="text-align: right; margin-top: -5px; margin-bottom: 15px;">
<form 1>
</form>
</div>

<div style="text-align: center; margin-top: -10px;">
<form 2>
</form>
</div>


Voila si ça peut aider en adaptant le principe de *marge presque inverse* (nom venant d'être inventé).

J'ai moi-même un problème de positionnement mais c'est par manque de connaissance sur le sujet (je cherche sur le web de l'aide mais pas que sur le positionnement, des bouts de codes simples avec explications et cette page fait partie de ma recherche : 162 onglets ouverts ; voir l'addon pour Firefox 'Tab Counter').

Je voudrais centrer 2 lignes alignées au bord gauche sous un textarea (form2) lui-même centrer (Une aide je crois que j'ai trouvée qu'il faut que j'étudie ici : openweb.eu.org/IMG/article45/annexe1.html ). Et je voudrais pour faire un formulaire à onglet sans décentrer le textarea, mais en utilisant des boutons radios, placer les boutons radios à gauche du textarea = comment ne pas décentrer le texaera et placer les boutons radios à gauche ?.

Accessoirement (pour votre aide), je veux pouvoir enregistrer le textaera dans un fichier en local afin de facilité la tâche de l'utilisateur et exécuter le script (.vbs) même sans enregistrement à partir de la page ouverte.

Comment (j'ai vu la faq ccm mais c'est pas clair pour moi) lire le code de la page ouverte elle-même et l'insérer dans le texarea toujours sur la même page tout ET EN partie (= au choix du lecteur OU moi) ? Avec un code simple et détaillée sans fichier externe hormis la page html elle-même ? Merci. Bouton script et script interne et code '.vbs' autorisé ; le code vbs est l'origine du projet et tout le code libre utilisé reste libre. Merci.

1 seul fichier html contenant le textaera à enregistrer pour un fonctionnement en local = style css interne ; voir même placé dans les balises comme la présentation (du code je parle) ci-dessus.

Pour les balises form peut-on mettre les mêmes balises styles de positionnement que dans un div pour évité un décalage, voir remplacer une balise div par une balise form pour éviter un décalage (double?) ? form = div ? div + form et inversement = double décalage ? Si l'on utilisent des div, un div de positionnement (c'est bien le but des div = positionner ?) du formulaire sur la page (au plus près du formulaire) doit toujours englober une balise form ?

___________________________
.............................1B 2B 3B 4B
___________________________
...............................azrtyyui1op
..............................sdsdfsd1sdj

......... fichier: toto.bidule 1A (Rétablir)
......==============
1:@|......textarea............|
2:@|......textarea............|
3:@|......textarea............|
......|......textarea............|
......|......textarea............|
......==============
...... md5 : dfdfddsdds
...... sha-1 : dsdfsdfsdfs

salut ; merci.

Répondre à Fredou

10

nickybutterfly, le 10 sep 2009 à 13:12:33
  • +2

Un conseil pour l'utilisation des float, la majorité des problèmes lui étant associés sont dus aux attributs "width" et "overflow".

Donc pour "width", il faut spécifier une largeur à chaque élément flottant, cette largeur doit être très précise et doit être ajoutée a celle d'éventuels padding, margin, border. Et bien entendu, la somme de tout cela ne doit pas dépasser la largeur du conteneur de l'élément flottant.

Pour l'overflow, il faut le mettre en "hidden" dans la majorité des cas.
Autrement il faut utiliser la propriété "clear" pour supprimer l'effet des flottants sur les boites les suivant.

Répondre à nickybutterfly

11

 kabybot, le 8 nov 2009 à 13:29:54
  • +1

Essaye ça: *{margin: 0;padding: 0;}

Répondre à kabybot