IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mise en page CSS Discussion :

Marge non prise en compte après un reset du flux


Sujet :

CSS

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 9
    Par défaut Marge non prise en compte après un reset du flux
    Bonjour à tous,

    Petite chose CSS qui m'intrigue depuis quelques temps et que je n'ai pas réussi à m'expliquer : pourquoi, dans cet exemple, la marge supérieure du bloc .bar n'est-elle pas prise en compte, bien que le flux ai été réinitialiser ?

    La seule solution que j'ai trouvée pour solutionner le souci est d'effectuer la réinitialisation du flux sur un élément intermédiaire avant le bloc .bar.

    Je suis donc curieux de connaître le pourquoi de ce comportement

    Merci par avance.

  2. #2
    Membre Expert
    Avatar de rodolphebrd
    Homme Profil pro
    Indépendant
    Inscrit en
    Novembre 2012
    Messages
    2 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 336
    Par défaut
    Bonjour,

    Effectivement même si vous effectuez un clear le margin-top de l'élément n'agit pas.
    La solution est de créer un conteneur sur lequel on peut appliquer une bordure transparente.

    Je préfère utiliser le pseudo-élément :after appliqué au conteneur pour obtenir ce résultat.

  3. #3
    Membre extrêmement actif
    Avatar de Muchos
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 704
    Billets dans le blog
    6
    Par défaut
    Ca me semble être un problème de fusion des marges.

    Personnellement, je n'ai pas su résoudre votre problème sans faire le clear:left autrement.

    EDIT: désolé. Un camarade a répondu avant moi (et mieux que moi je pense) ^^

  4. #4
    Membre Expert
    Avatar de Candygirl
    Femme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 912
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Par défaut
    Hello,

    Ton margin est bien pris en compte seulement ta configuration ne permet pas d'en voir l'effet pour 2 raisons:

    - Vu que le contenu des flottants d'écoule en dehors du flux normal, ton margin est appliqué depuis l'endroit logique actuel du flux, soit tout en haut de ta page. Vu que le contenu de tes flottants est plus haut que tes 20pixels, tu n'en vois pas les effets.

    Si tu donnes une valeur plus élevée (par exemple, 500px), tu devrais commencer à en voir les effets. Sauf que...

    - Le margin-top de .bar fusionne avec le body, raison pour laquelle tu ne le visualiseras toujours pas (même avec une valeur de 500px), à moins d'ajouter, par exemple un body {border:1px solid red;} pour empêcher la fusion.
    Les bons réflexes:
    • avant de poser une question:
      règles | faq | tutoriels | recherche
    • clarté, politesse, vocabulaire et orthographe soignés = efficacité
    • remercier ceux qui ont pris le temps d'aider et :resolu: si c'est le cas

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 9
    Par défaut
    Merci à vous 3 pour vos réponses.

    Je vais répondre en détail à CandyGirl :

    Citation Envoyé par Candygirl Voir le message
    Hello,

    Ton margin est bien pris en compte seulement ta configuration ne permet pas d'en voir l'effet pour 2 raisons:

    - Vu que le contenu des flottants d'écoule en dehors du flux normal, ton margin est appliqué depuis l'endroit logique actuel du flux, soit tout en haut de ta page. Vu que le contenu de tes flottants est plus haut que tes 20pixels, tu n'en vois pas les effets.
    Hum, je pensais en fait que le fait de mettre un clear sur l'élément .bar aurait du réinitialiser le flux et rendre effectif la marge. Et en effet, en réalité le flux doit être réinitialisé sur les éléments flottant et non sur les éléments qui suivent : http://cdpn.io/Jafzh.

    Est-ce que cela signifie qu'un clear sur un élément réinitialise le flux à partir de la bordure et non pas à partir de la marge externe ?

    Citation Envoyé par Candygirl Voir le message
    Si tu donnes une valeur plus élevée (par exemple, 500px), tu devrais commencer à en voir les effets. Sauf que...

    - Le margin-top de .bar fusionne avec le body, raison pour laquelle tu ne le visualiseras toujours pas (même avec une valeur de 500px), à moins d'ajouter, par exemple un body {border:1px solid red;} pour empêcher la fusion.
    Ouep, j'avais bien noté ce point

  6. #6
    Membre Expert
    Avatar de Candygirl
    Femme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 912
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Par défaut
    Citation Envoyé par GxiGlon Voir le message
    Hum, je pensais en fait que le fait de mettre un clear sur l'élément .bar aurait du réinitialiser le flux et rendre effectif la marge.
    La recommendation css2.1 définit ainsi la propriété clear:
    Clear
    This property indicates which sides of an element's box(es) may not be adjacent to an earlier floating box. The 'clear' property does not consider floats inside the element itself or in other block formatting contexts.
    Citation Envoyé par traduc_française
    Clear
    Cette propriété indique quels côtés d'une ou des boîtes d'un élément ne doivent pas être adjacents à une boîte flottante précédente. (Il peut arriver que l'élément lui-même ait des descendants flottants, la propriété 'clear' n'a alors aucun effet sur eux).
    Citation Envoyé par GxiGlon Voir le message
    Et en effet, en réalité le flux doit être réinitialisé sur les éléments flottant et non sur les éléments qui suivent : http://cdpn.io/Jafzh.
    J'ai aps trop compris ce que tu cherches à montrer avec ton exemple. Là, tu fais ton clear sur le pseudo element :after, pas sur ton élément flottant. C'est donc bien "un élément qui suit".

    Là, le margin de .bar est appliqué depuis le pseudo-element :after, puisque le flux se situe à son niveau, qui remplit exactement le même office qu'un div vide affublé d'un clear.
    Les bons réflexes:
    • avant de poser une question:
      règles | faq | tutoriels | recherche
    • clarté, politesse, vocabulaire et orthographe soignés = efficacité
    • remercier ceux qui ont pris le temps d'aider et :resolu: si c'est le cas

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/09/2006, 16h38
  2. Installation SP2 + RAM non prise en compte
    Par laure_belette dans le forum Windows XP
    Réponses: 3
    Dernier message: 13/10/2005, 12h46
  3. [css] Feuille de style non prise en compte
    Par Neuromancien2 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 29/06/2005, 11h49
  4. [netbeans] Modifications non prises en compte
    Par nadass dans le forum NetBeans
    Réponses: 6
    Dernier message: 07/04/2005, 13h49
  5. Lecture de fichier - dernière ligne non prise en compte
    Par JulienPles dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo