Wie entferne ich seltsame Lücken zwischen drei Divs mit derselben Hintergrundfarbe?


23

Ich habe jetzt schon eine ganze Weile mit diesem Problem zu kämpfen. Das Problem tritt auf Mobilgeräten (Android und iOS) auf. Einige Geräte müssen möglicherweise etwas vergrößert werden. Auf dem PC kann ich diesen Fehler auch im Chrome-Browser reproduzieren, wenn ich in den mobilen Modus wechsle. Unten ist der Code, mit dem der Fehler reproduziert wird:

<!DOCTYPE html>
<html lang="en">
<head>
  <style>
    .top {
      height: 100px;
      background-color: #553213;
    }
    .middle {
      height: 100px;
      background-color: #553213;
    }
    .bottom {
      height: 100px;
      background-color: #553213;
    }
  </style>
</head>
<body>
  <div style="width:300px; height: 300px">
    <div class="top"></div>
    <div class="middle"></div>
    <div class="bottom"></div>
  </div>
</body>
</html>

Das erwartete Ergebnis wäre ein Div, das mit der Farbe # 553213 erfüllt wird. Auf einigen Mobilgeräten werden jedoch zusätzliche Linien (oder Lücken) zwischen diesen drei Divs angezeigt.

Om mein iPhone

Geben Sie hier die Bildbeschreibung ein

Verwenden Sie auf meinem PC den Chrome-Browser im mobilen Modus

Geben Sie hier die Bildbeschreibung ein

Weiß jemand, was hier los ist? Alle Ideen darüber, wie es passiert und wie es behoben werden kann, wären sehr willkommen.


3
Warum haben Sie Rand 0? Ich kann nicht reproduzieren, vielleicht versuche ich, den Rand für jedes Div auf -1px zu setzen.
Madison Courto

3
Hier gilt das gleiche. Kann nicht auf einem PC reproduziert werden. Wahrscheinlich ein Problem mit dem Telefonbrowser.
Asprin

3
Probleme mit dem mobilen Browser wahrscheinlich
Louie Kim

3
Es scheint, dass dies ein Problem mit bestimmten Browsern / Betriebssystemen / Geräten ist. Dies bedeutet wahrscheinlich, dass Sie dies nur mithilfe eines Hacks beheben können. Oder schlagen Sie den Entwicklern dieser Browser / Betriebssysteme / Geräte vor, um den Fehler zu beheben.
Daan

2
Da alle diese Divs denselben Hintergrund haben, können Sie nicht stattdessen einfach die Hintergrundfarbe auf das übergeordnete Element setzen?
Moob

Antworten:


6

Ich habe diese Antwort gefunden.

So ist die Lösung ist ein hinzufügen margin-top: -1px;zu top, middleund bottomKlassen.

<!DOCTYPE html>
<html lang="en">
<head>
  <style>
    .top {
      height: 100px;
      background-color: #553213;
    }
    .middle {
      height: 100px;
      background-color: #553213;
    }
    .bottom {
      height: 100px;
      background-color: #553213;
    }
    
    .top, .middle, .bottom {
      margin-top: -1px;
    }

  </style>
</head>
<body>
  <div style="width:300px; height: 300px;">
    <div class="top"></div>
    <div class="middle"></div>
    <div class="bottom"></div>
  </div>
</body>
</html>

Und es sieht auch auf Mobilgeräten und PCs gut aus. Die divHöhe ändert sich nicht. Es bleibt 300px.


5

Ich denke, das liegt an der Größe der Seite. Versuchen Sie, dieses Meta-Tag dem Kopf hinzuzufügen:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">


4

Nachdem ich die Kommentare gelesen habe, habe ich gesehen, dass Madison Courto einen Vorschlag von hatte

margin: -1px;

Dies wurde zur Lösung des eigentlichen Problems bestätigt, hat jedoch Probleme in anderen Teilen der Seite verursacht. Wenden wir diese Idee also nur auf die tatsächlichen Divs an:

<!DOCTYPE html>
<html lang="en">
<head>
  <style>
    .top {
      height: 100px;
      background-color: #553213;
    }
    .middle {
      height: 100px;
      background-color: #553213;
    }
    .bottom {
      height: 100px;
      background-color: #553213;
    }
  </style>
</head>
<body>
  <div style="width:300px; height: 300px">
    <div class="top" style="margin: -1px;"></div>
    <div class="middle" style="margin: -1px;"></div>
    <div class="bottom" style="margin: -1px;"></div>
  </div>
</body>
</html>

3

Versuchen Sie es mit background. Dies funktioniert gut in meinem Handy:

<!DOCTYPE html>
<html lang="en">
<head>
  <style>
    .top {
      height: 100px;
    }
    .middle {
      height: 100px;
      }
    .bottom {
      height: 100px;
      }
    div{
      background:#553213;
    }
  </style>
</head>
<body>
  <div style="width:300px; height: 300px">
    <div class="top"></div>
    <div class="middle"></div>
    <div class="bottom"></div>
  </div>
</body>
</html>

Ich weiß nicht, was die eigentliche Ursache ist. Aber als ich unten versuchte, die Farbe der weißen Linien in Schwarz umzuwandeln, kam mir die Idee:

<!DOCTYPE html>
<html lang="en">
<head>
  <style>
    .top {
      height: 100px;
      background-color: #553213;
    }
    .middle {
      height: 100px;
      background-color: #553213;
    }
    .bottom {
      height: 100px;
      background-color: #553213;
    }
    div:hover{background:#000;}
  </style>
</head>
<body>
  <div style="width:300px; height: 300px">
    <div class="top"></div>
    <div class="middle"></div>
    <div class="bottom"></div>
  </div>
</body>
</html>

Klicken Sie auf oben oder unten div


2

Der Grund für dieses Problem könnte der Weg sein display block,inline-block Stile von verschiedenen Browsern auf verschiedenen Bildschirmen verarbeitet werden.

Beispielsweise haben inline-blockElemente rechts automatisch einen kleinen Raum. Menschen lösen dies normalerweise mit Negativ margin-left.


Standardmäßig ist a divablock Ebenenelement.

Dieser untere Bereich, dem Sie gegenübergestanden haben, kann auch an der Art und Weise liegen, wie Elemente auf Blockebene behandelt werden.


Als würde man den inline-blockRaum mit dem Negativen lösenmargin-left ,

Dieser blockEbenenraum kann entweder mit gelöst werden

  • Negativ margin-top oder
  • Ändern divdes Stils in entweder table, table-cellTyp oder flexboxTyp mit CSS

2

<!DOCTYPE html>
<html lang="en">

<head>
    <style>
        .top,
        .middle,
        .bottom {
            min-height: 100px;
            width: 100%;
            background-color: #553213;
            margin-bottom: -6px;
            display: inline-block;
            padding: 15px 0;
        }
    </style>
</head>

<body>
    <div style="width:300px; height: 300px">
        <div class="top"></div>
        <div class="middle"></div>
        <div class="bottom"></div>
    </div>
</body>

</html>


1

Fügen Sie eine kleine Gliederung hinzu, um dieses Problem zu verbergen :

.container > * {
  height: 100px;
  background-color: #553213;
  outline:1px solid #553213;
}

.container {
  width:300px;
  height:300px;
}
<div  class="container">
  <div class="top"></div>
  <div class="middle"></div>
  <div class="bottom"></div>
</div>


Es funktioniert nicht
Nguyen You

@NguyenSie auch wenn Sie 1px versuchen?
Temani Afif

1
Jep! Ich fand jedoch etwas wirklich Interessantes, als ich die Umrissbreite auf 35px erhöhte. Eine Reihe von seltsamen Lücken erscheinen.
Nguyen Sie

1

Versuchen Sie einfach, den unteren Rand zu den oberen und mittleren Divs hinzuzufügen.

<!DOCTYPE html>
<html lang="en">
<head>
  <style>
    .top {
      height: 100px;
      background-color: #553213;
	  margin-bottom: -2px;
    }
    .middle {
      height: 100px;
      background-color: #553213;
	  margin-bottom: -2px;
    }
    .bottom {
      height: 100px;
      background-color: #553213;
    }
  </style>
</head>
<body>
  <div style="width:300px; height: 300px">
    <div class="top"></div>
    <div class="middle"></div>
    <div class="bottom"></div>
  </div>
</body>
</html>

Hoffe das hilft.


1

Verwenden Sie die Anzeige und den unteren Rand, um das Styling zu korrigieren.

.top, .middle, .bottom {
    height: 100px;
    background-color: #553213;
    margin-bottom: 5px;
    display: block;
}

1

Verwenden Sie die Anzeige und den unteren Rand, um das Styling zu korrigieren.

<!DOCTYPE html>
<html lang="en">
<head>
  <style>
  .top, .middle, .bottom {
    height: 100px;
    background-color: #553213;
    margin-bottom: 5px;
    display: block;
}
  </style>
</head>
<body>
  <div style="width:300px; height: 300px">
    <div class="top"></div>
    <div class="middle"></div>
    <div class="bottom"></div>
  </div>
</body>
</html>

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.