28172 sujets

CSS et mise en forme, CSS3

Bonjour a tous,

Je me pose cette question sur le css:
Quelle différence entre la propriété left et margin-left qui semblent tres proches?
Est ce que quelqu un maitrise la theorie css assez pour m expliquer ou pour m indiquer une ressource sur ce sujet precis ?

------------------------------------

Dans la pratique j'essaie de faire un site tout horizontal d'une seule tres longue page dans laquelle on se balade en scrollant horizontalement et avec le plugin jquery scrollto.

Mes contenu est organise en theme accueil/presatation/realisation etc... comme des pages classiques. Seulement elles se suivent toutes dans une meme page. J utilise la propriete float:left.

La propriete margin-left fonctionne bien dans mon site sur mes elements places en float:left d ailleur aussi en position:relative.
Cependant la propriete left , elle, fonctionne tout aussi bien. (j'essai d espacer mes elements entre eux.)

Voila pourquoi je m'interroge sur la difference entre margin-left et left tout court car left est sujet a moins de bug d interpretation entre les navigateurs il me semble

Merci pour vos lumieres,

Francois
Modifié par boucdur00000 (21 Jun 2010 - 15:19)
Hello,

De façon simple, top/bottom/left/right s'appliquent aux éléments en position:absolute. Les valeurs que tu donne (qui peuvent être négatives) indiquent la distance à laquelle l'élément va se trouver par rapport au premier de ses éléments parents qui est en position:relative (ou à <body> s'il n'en trouve aucun).

Les margin-* par contre s'appliquent aux éléments en display:block (et apparentés) et indiquent la marge de "vide" que tu veux ajouter autour.

Dans ton cas (tes éléments en float:left), il vaut mieux utiliser margin-*. Les seuls bugs que tu pourraient rencontrer seront sur IE6 qui doublera la valeur de tes marges. Il te suffit d'ajouter display:inline pour lui (cf. commentaires conditionnels) et le problème sera réglé.
bonjour,
merci Tymlis pour ta reponse.

D'accord donc si je comprend bien la grosse différence c'est que margin-left se positionne par rapport à son conteneur parent direct quelquesoit le positionnement de ce conteneur parent relatif, fixed, absolute ou non precisé.

Left par contre se positonne seulement par rapport au premier conteneur parent positionné en relatif et c'est tout.
Donc il est n'est pas utilisable pour positionner un element par rapport à son parent qui lui est positionné en absolute. dans ce cas on est bien obligé d'utiliser margin-left.