2016-10-15 6 views
1

Im bewegen versucht, ein div in einem anderen div ein wenig nach unten zu bewegen, aber wenn ichCSS ein div vertikal nach unten

margin-top: 10px; 

verwenden macht es eine weiße Lücke an der Spitze. Heres die html:

<div id="topb"> 
    <div id="selection"> 

    </div> 
</div> 

Und heres die CSS:

#topb { 
    background: url(images/tomato-background.jpg) no-repeat fixed; 
    background-size: cover; 
    height: 100%; 
    width: 101%; 
    margin-left: -10px; 
} 

#selection { 
    background-color: #4d4d4d; 
    width: 60%; 
    height: 500px; 
    margin: auto; 
    margin-top: 40px; 
} 

Und heres ein Screenshot der Webseite: image

+0

Es sieht so aus, als ob Sie in der #Auswahl einen oberen Rand von 40px haben. Wo liegt Ihre Marge bei 10px? – Joel

Antwort

0

vielleicht können Sie das übergeordnete Element ändern, indem Sie padding-top:10px; hinzufügen, anstatt das untergeordnete Element zu ändern.

0

margin-top style in #selection entfernen und anwenden padding- top to #top

+0

Tut nichts. Buchstäblich. sieht so aus: http://imgur.com/a/eOfPh –

+0

falsche ID, sorry – Olga

+0

Oh Gott, es funktioniert. Danke lieber –

0

Dies ist ein "collapsed margin" -Problem. Why would margin not be contained by parent element?

Sie müssten die Eltern div ändern entweder (1) in einen Rahmen, (2) Position absolut, (3) Anzeige als inline-block, (4): Es hat sich in dieser Frage beantwortet Überlauf automatisch.

Weitere Informationen finden Sie unter dem angegebenen Link.

0

Dazu können Sie position: absolute verwenden. Hier ist der Code:

#topb { 
 
    background: url(images/tomato-background.jpg) no-repeat fixed; 
 
    background-size: cover; 
 
    height: 100%; 
 
    width: 101%; 
 
    margin-left: -10px; 
 
} 
 

 
#selection { 
 
    background-color: #4d4d4d; 
 
    width: 60%; 
 
    height: 500px; 
 
    margin: auto; 
 
    position: absolute; 
 
    top: 40px; /*This is where it is changed as well as the line above*/ 
 
}

Hoffe, es hilft! Ich denke Padding würde immer noch einen Hintergrund hinterlassen, also ist dies eine bessere Idee.

0

Hier ist die Arbeit fiddle Ich hoffe, es kann helfen.

0

Dies liegt daran, wenn Sie ein Blockelement (Anzeige: Block) in einem anderen Blockelement haben, werden die Ränder zusammenbrechen. Es wird nur als die größte Marge betrachtet.

Also, in Ihrem Beispiel wird nur einer der Ränder (40px) berücksichtigt. See reference about collapsing margins.

Es gibt einige Problemumgehungen. Wählen Sie eine:

  1. mit padding statt margin für die Komponente im Inneren.
  2. Ändern display Typ. z.B. display: inline-block.
  3. Verwenden Sie absolute Positionierung.