2013-09-26 9 views
9

ich eine einfache Struktur haben:HTML & CSS - Kraft Div> Span> Span auf derselben Zeile

<div></div><span></span><span></span> 

aber ich möchte, dass sie alle auf einer Linie zwingen! im Moment, sie erscheinen:

<div /> 
<span /><span /> 

Leider habe ich das erste Element als div haben, ich habe Kräfte wenig HTML-Bearbeitung, wie ich durch ein anderes Programm bin der Bearbeitung, wirkt die div als Bar von einem Balkendiagramm (also abgerundete Ecken, Breite = jquery Zeug, kein Inhalt und Blockfarbe im Inneren), der nächste Bereich ist der Wert, den der Balken darstellt und der letzte Bereich ist, was der Wert zugeordnet ist.

so mag ich

[____________] 25% ObjectA 
[________________________] 50% ObjectB 
[______] 12.5% ObjectC 
[______] 12.5% ObjectD 

und nicht

[____________] 
25% ObjectA 
[________________________] 
50% ObjectB 
[______] 
12.5% ObjectC 
[______] 
12.5% ObjectD 
+0

Code hier posten .. –

Antwort

15

die CSS-Eigenschaft Setzen display: inline-block auf der div, um es wie ein Inline-Element zu machen zu handeln, anstatt die ganze Linie der Aufnahme.

Edit:

@ Mr_Green Vorschlag das after Pseudoelement zu verwenden, um jede Zeile zu löschen ist unbedingt notwendig, ein gebrochenes Layout zu verhindern.

+1

Danke, ich alle jetzt peinlich! um fair zu sein, es ist ziemlich früh am Morgen. Danke, tick wenn es mich lässt. – Phish

+0

Dies funktioniert, aber manchmal wird der zweite Balken auch mit dem ersten Balken übereinstimmen, wenn seine Breiten klein sind. –

+0

@Mr_Green das ist wahr, dies ist wahrscheinlich ein geeigneter Anwendungsfall für das '
' Tag, obwohl, wenn er keine Kontrolle über den HTML hat, vielleicht ein Float-basiertes Layout notwendig wäre. –

3

Da die <div> Elemente standardmäßig display: block sind und die gesamte verfügbare Breite einnehmen, müssen Sie sie auf setzen. Sie müssen auch die Linien manuell mit einer <br> brechen, oder machen Sie etwas Phantasie auf der letzten <span>, damit es den Rest des verfügbaren Speicherplatzes füllt.

Alternativ können Sie jede Zeile in ein anderes Blockelement (z. B. ein anderes <div>) umbrechen, um neue Zeilen zu erstellen.

5

Der Vorschlag von Dylan wird funktionieren, aber manchmal, wenn eine Breite des divs sehr klein ist, wird das nächste div mit diesem div Element inline kommen. Siehe hierzu fiddle. Also, mein Vorschlag ist, :after Pseudo-Element zu verwenden, das display: block sein wird. Dieses Pseudoelement wird für die letzte Spanne in jedem Balkenabschnitt verwendet.

div { 
    /* width and height are just for example */ 
    width: 100px; 
    height: 50px; 
    background-color: red; 
    display: inline-block; 
} 
div+span+span:after { /* last span element's pseudo element */ 
    content:""; 
    display: block; 
} 

Working Fiddle