2014-03-14 12 views
7

Bitte überprüfen Sie die CSS unten.Warum funktioniert "Inline-Block" in diesem CSS nicht richtig?

/*rex is the container of ex,ex2,ex3*/ 
div.rex{ 
height:200px; 
border:0px; 
margin:60px auto; 
padding: 0; 
vertical-align:top; 
} 

div.ex{ 
width:34%; 
height:200px; 
background-color:#4f443a; 
display:inline-block; 
margin: 0; 
padding: 0; 
vertical-align:top; 
} 

div.ex2{ 
width:0.5%; 
height:200px; 
display:inline-block; 
margin: 0; 
padding: 0; 
vertical-align:top; 
} 


div.ex3{ 
width:65.5%; 
height:200px; 
background-color:#7e8547; 
display:inline-block; 
margin: 0; 
padding: 0; 
vertical-align:top; 
} 

Das Ergebnis in Browser: enter image description here

Was ich brauche:

enter image description here

+0

@DA danke für bearbeiten. Ich bin ein Noob :) Ich werde definitiv Geige in meinen nächsten Posts verwenden. Danke nochmal. – GATA

+0

mögliche Duplikate von [Wie entferne ich den Abstand zwischen Inline-Block-Elementen?] (Http://stackoverflow.com/questions/5078239/how-to-remove-the-space-between-inline-block-elements) – Oriol

Antwort

19

Dieses Verhalten tatsächlich in HTML zu erwarten ist. Da Sie Inline-Block verwenden, werden alle Zeilenvorschubzeichen oder Leerzeichen, die Sie nach dem Element und vor einem weiteren Inline-Element haben, als Leerzeichen gezählt. Wenn Sie möchten, dass die Blöcke wie in Ihrem Bild nebeneinander gestapelt werden, müsste Ihr HTML so aussehen.

<div class="rex"> 
    <div class="ex"></div><div class="ex2"></div><div class="ex3"></div> 
</div> 

working demo

Es ist nicht sehr hübsch, aber dann wieder, ich würde empfehlen, einen anderen Ansatz verwenden, möglicherweise die Elemente statt schwimmen.

Hier finden Sie eine detailliertere Erklärung, warum dies auftritt.

How to remove the space between inline-block elements?

+1

Die Breite, die er gesetzt hat, stimmt, sie addieren sich zu 100%. Versuchen Sie, sein CSS mit meinem HTML zu verwenden, und Sie werden sehen, dass es funktioniert. – Tristan

+0

Dies ist die richtige Antwort. Hinweis: Wenn Sie das Markup auf diese Weise nicht formatieren möchten, sollten Sie in Betracht ziehen, die DIVs (als Elemente auf Blockebene) zu verschieben, anstatt sie als Inline-Block zu definieren. –

+0

Floating der divs funktioniert gut, aber seien Sie vorsichtig, wenn Sie keine Höhe einstellen. Eventuell musst du den Floated-Inhalt löschen, bevor du etwas darunter hinzufügst! – Tristan

0

hinzufügen float:left; zu Ihrem div.ex, div.ex2 und div.ex3 statt.

JSFIDDLE

UPDATE: hinzufügen position:absolute zweite und dritte div wenn float nicht eine Wahl.

FIDDLE

UPDATE 2: Fügen Sie diese auf nur 3. div, wenn Sie diesen Raum dazwischen müssen.

FIDDLE

+0

Sollte die Verwendung von Inline-Block –

+0

nicht erforderlich sein, sollten Sie Floats aktualisieren Die Antwort wurde aktualisiert. – Fr0zenFyr

+0

Sie machen den Overkill mit css Mate, 'Position' ist eine Art * letzter Ausweg * !! :) – NoobEditor

1

Gerade Antwort erstreckt sich hier von @Tristan geben.

Sie haben den css-Code unnötigerweise wiederholt.Sie können es minify durch mehrere mit CSS wie:

.ex, .ex2, .ex3 { 
    display: inline-block; 
    vertical-align: top; 
    margin: 0; 
    padding: 0; 
    height: 100%; /* no need of height: 200px; here */ 
}     /* if you need to extend it to parent height */ 
        /* then use height: 100% */ 

ODER

div.rex > div { /* code here */ } 

Sie Elemente nebeneinander halten kann eine der unten unter Verwendung von Ansätzen:

+0

Vielen Dank, Ihre Tipps sind sehr nützlich. – GATA

+1

@GATA Sie sind willkommen :) –

0

Mein Trick ist font-size einzustellen: 0; im Elternelement, weil es die Schriftgröße ist, die bewirkt, dass die Mathematik nicht perfekt addiert wird (etwa 4 px Überlappung pro div, abhängig von der Bildschirmgröße) und bewirkt, dass ein div unter dem anderen erscheint.

.rex{ 
display:block; 
font-size:0; 
} 

.ex{ 
width:34%; 
height:200px; 
background-color:#4f443a; 
display:inline-block; 
vertical-align:top; 
margin: 0 .5% 0 0; /*small space between divs*/ 
padding: 0; 
font-size:16px; /*restore font size*/ 
} 

.ex2{ 
width:65.5%; 
height:200px; 
background-color:#7e8547; 
display:inline-block; 
vertical-align:top; 
margin: 0; 
padding: 0; 
font-size:16px; 
} 
0

können Sie klagen Kommentare wie, dass (das in Code wenig besser aussieht):

<div class="rex"> 
    <div class="ex"><!-- 
--></div><div class="ex2"></div><!-- 
--><div class="ex3"></div> 
</div> 
Verwandte Themen