Warum überlappen sich meine Div-Ränder und wie kann ich das beheben?

Lesezeit: 5 Minuten

Warum uberlappen sich meine Div Rander und wie kann ich das
Atif

Ich verstehe nicht, warum sich die Ränder dieser Divs überlappen.

.alignright {float: right}
#header .social {margin-top: 50px;}
#header .social a {display: inline-block;}
#header .social .fb {width: 64px; height: 1px; padding-top: 60px; overflow: hidden;}
#header .social .twit {width: 64px; height: 1px; padding-top: 60px; overflow: hidden;}
#header .contact {margin: 20px 70px 20px 0; font-size: 14px; font-weight: bold;}
#header .contact span {color: #FFFFFF;}
#header .search {margin: 10px 0 0;}
<div class="alignright">
    <div class="social">
        <a href="#" class="twit"></a>
        <a href="#" class="fb"></a>
    </div><!-- social -->
    <div class="contact">
        Get in Touch: <span>+44 10012 12345</span>            
    </div><!-- contact -->
    <div class="search">
        <form method="post" action="">
            <input type="text" value="" name="s" gtbfieldid="28">
        </form>
    </div><!-- search -->
</div>

Bild

  • Dieser Artikel zum Formatieren von Kontexten könnte für Sie interessant sein: tjkdesign.com/articles/…

    – jensgram

    11. Oktober 10 um 14:03 Uhr

  • Sie scheinen einige der Regeln zu vermissen, die Sie dort verwenden. Sind alle Elemente in .alignright auch schwebend?

    – Joel Glovier

    11. Oktober 10 um 18:37 Uhr

1643906527 114 Warum uberlappen sich meine Div Rander und wie kann ich das
MatTheCat

Ich denke, es ist eine zusammengebrochene Marge. Es wird nur der größte Abstand zwischen dem unteren Rand des ersten Elements und dem oberen Rand des zweiten berücksichtigt.

Es ist ganz normal, dass zwischen zwei Absätzen nicht zu viel Platz ist, z.

Das lässt sich bei zwei benachbarten Elementen nicht vermeiden, also muss der größere Rand vergrößert oder verkleinert werden.

EDIT: vgl. W3C

Zwei Ränder grenzen genau dann aneinander, wenn:

  • beide gehören zu In-Flow-Boxen auf Blockebene, die am selben Blockformatierungskontext teilnehmen
  • keine Linienkästen, kein Freiraum, keine Polsterung und kein Rand trennen sie
  • beide gehören zu vertikal benachbarten Kastenkanten

Es gibt also kein Zusammenbrechen mit float was das Element aus der Strömung nimmt.

  • Senken Sie einfach Ihre Marge auf das, was Sie wollen.

    – Kissaki

    11. Oktober 10 um 13:50 Uhr

  • Bearbeitet, vergrößern oder verkleinern Sie einfach den größeren Rand oder verwenden Sie Polsterung

    – MatTheCat

    11. Oktober 10 um 13:57 Uhr

  • Ich habe gerade herausgefunden, dass beim Floaten der Elemente Ränder für beide angewendet werden.

    – Atif

    10. Januar 11 um 7:31 Uhr

  • Ich wäre vorsichtig mit der Verwendung float als Hack, da es einige unangenehme Nebenwirkungen haben kann. Ich bin vorsichtig mit der Verwendung float als Regel.

    – Andreas

    24. Februar 14 um 22:28 Uhr

  • Wenn Sie einer Stunde eine Höhe geben, wird es zu einer In-Flow-Block-Level-Box? Versuch es

    – Manuel Hernández

    12. Januar 19 um 0:10 Uhr

1643906527 105 Warum uberlappen sich meine Div Rander und wie kann ich das
Kissaki

Ränder sind im Gegensatz zum Auffüllen (das eine bestimmte Breite auffüllt) ein „Tun Sie dies als Mindestabstand“.

Es wird diese Distanz nicht zu allen Elementen bringen.

Wie Sie sehen, ist die in Kontakt kommen Der untere Rand des Blocks wird zum Eingabefeld hin begrenzt. Das ist die hier aktive Marge. Der andere Rand, der obere Rand von der Eingabe, ist nicht wirksam, da er kleiner ist und kein Blockelement erreicht, wo er eigentlich wäre zurückschieben das Element. Die beiden Ränder überlappen sich und beeinflussen sich nicht gegenseitig.

1643906528 227 Warum uberlappen sich meine Div Rander und wie kann ich das
TOPKAT

Wenn Sie keine Polsterung verwenden können und wirklich einen Rand benötigen, der sich nicht überlappt, ist hier ein Trick:

.btn {
    /* hack for a 2px margin */
    border-top: 2px #fff solid;
    /* this is important if you have a background-color
    and don't want to see it underneath the transparent border*/
    background-clip: padding-box;
}

Bitte starten Sie dieses Snippet für die Demo:

div {
  margin: 10px;
  background: rgb(48, 158, 140);
  padding: 5px 15px;
  font-weight: bold;
  color: #fff;
}

.fake-margin {
  border-top: 10px solid transparent;
  background-clip: padding-box;
}
<div>Margin applied is 10px on each sides</div>
<div>the first two have only 10px between them</div>
<div class="fake-margin">the last two have 10 + 10px</div>
<div class="fake-margin">= 20 px</div>

1643906528 878 Warum uberlappen sich meine Div Rander und wie kann ich das
Richard Max

Fügen Sie zwischen den beiden Objekten ein klares div-Tag hinzu

Achten Sie auf display: flex auf dem übergeordneten Element.

.flex {
  display: flex;
  flex-direction: column;
}

.block {
  display: block;
}


/* css for example only */
div {
  padding: 1em;
  background: #eee;
}
p {
  font-size: 20px;
  margin: 1em 0;
  background: pink;
  padding: 5px;
}
p:first-child {
  margin-top: 0;
}
<h1>display: flex</h1>
<div class="flex">
  <p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Curabitur blandit tempus porttitor.</p>
  <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
  <p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Curabitur blandit tempus porttitor.</p>
  <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
</div>
<h1>display: block</h1>
<div class="block">
  <p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Curabitur blandit tempus porttitor.</p>
  <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
  <p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Curabitur blandit tempus porttitor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.</p>
  <p>Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
</div>

.

757630cookie-checkWarum überlappen sich meine Div-Ränder und wie kann ich das beheben?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy