2013-04-12 7 views
6

Ich habe eine Tabelle. Im Inneren des TDs Ich habe zwei Span-Tags - die ein span-Tag i links ausgerichtet werden soll, und das andere rechts, aber die td erlauben nicht, dass:Richten Sie zwei Spannen innerhalb eines TD aus - eine linke und eine rechte

<table> 
    <tr> 
    <td colspan="5"><span>$</span><span>1000</span></td> 
    </tr> 
</table> 

Deshalb möchte ich die $ zu ausgerichtet werden die weit links der td und die auf die weit rechts der td ausrichten.

Ist das möglich?

+1

Viele Antworten gibt, aber sieht aus wie sie alle sagen, die gleiche Sache . Wenden Sie eine Klasse an und schweben Sie sie nach links und rechts. – Andrew

+0

@Andrew Außer wenn dies der einzige Inhalt des TD ist, müssen Sie den ersten nicht nach links schweben lassen. –

+0

Yip gibt es viele Möglichkeiten, dies zu tun und bis jetzt scheinen sie alle richtig. aber es kann davon abhängen, wie er es verwenden möchte. – Andrew

Antwort

12

Sie können den folgenden Selektor verwenden, ohne zusätzliche Klassen zu verwenden:

td span:last-child{ /*not compatible with <=IE8*/ 
    color:green; 
    float:right; 
} 

Demo: http://jsfiddle.net/QR3kP/1/


Für die Kompatibilität mit IE7 und bis unter den CSS-Code verwenden:

td span{ 
    float:right; 
} 
td span:first-child{ /* compatible to >=IE7 */ 
    float:left; 
} 

Demo: http://jsfiddle.net/QR3kP/4/


Ein weiterer Ansatz für richtig Richte den Text innerhalb deraus nurund float die erste <span>:

td { 
    text-align:right 
} 
td span:first-child { 
    float:left; 
} 

Demo: http://jsfiddle.net/QR3kP/29/


Sie ein ähnliches Verfahren mit der obigen Erklärungen mit noch weniger CSS verwenden können:

td span:first-child + span { 
    float:right; 
} 

In der Beispiel oben, der Standard td Textausrichtung ist links und Sie wählen nur die Geschwister, die sofort vor ist nach der ersten span abgetreten. Dann sind Sie nur float es auf der rechten Seite. Natürlich können Sie den ~ Selektor verwenden, der in diesem Fall ist.

Demo: http://jsfiddle.net/QR3kP/32/


Siehe Kompatibilitätstabelle hier: http://kimblim.dk/css-tests/selectors/

Siehe die CSS-Selektoren hier: http://www.w3.org/TR/CSS2/selector.html

+0

Beste Antwort, erfordert kein extra Markup! –

+0

Bitte beachten Sie, dass IE8 und darunter nicht 'last-child' unterstützen, obwohl, wenn Sie IE8 und darunter nicht benötigen, dies bei weitem das beste ist. – ajp15243

+1

@ ajp15243: Ich habe meine Antwort für die Kompatibilität mit IE7 und höher bearbeitet. Danke, dass du darauf hingewiesen hast. – otinanai

1

einfachste Weg ist die erste nach links und die zweite nach rechts

http://jsfiddle.net/L3QU2/1/

<table width="100%"> 
    <tr> 
    <td colspan="5"> 
     <span style="float:left">$</span> 
     <span style="float:right">1000</span></td> 
    </tr> 
</table> 
+0

Inline-Stile sind nicht gut –

+0

@DylanHayes Ich nicht vorschlagen, Inline-Stile, die Frage ist nicht darüber, wie CSS und HTML ordnungsgemäß trennen, das ist nur ein Beispiel dafür, wie es zu tun, und es versuchte, kurz in der Darstellung zu sein welches CSS es mit der geringsten Menge an Änderungen am OP-Code braucht. Ich wünschte, ich hätte keinen Haftungsausschluss hinzufügen müssen. Die beste Antwort ist wirklich otinanai's, die kein HTML hinzufügen muss und kann in ein CSS-Snippet nur lapidar gesetzt werden –

2

Wahrscheinlich am besten aus es zu tun mit Schwimmern zu schweben.

<td colspan="5"><span class="left">$</span><span class="right">1000</span></td> 

CSS:

.left { 
    float: left 
} 

.right { 
    float: right; 
} 

jsFiddle: http://jsfiddle.net/NLZU5/

1

Versuchen Sie folgendes:

<table style="width:100%"> 
    <tr> 
    <td colspan="5"><span style="float:left;">$</span><span style="float:right;">1000</span></td> 
    </tr> 
</table> 

DEMO

1

Sie können auf dem span setzen, der $ enthält, und float: right auf dem span, der Ihren Dollarbetrag enthält.

Hier ist eine einfache demo davon.

1

Sie können den Stil float für die Spannen mit CSS-Klassen definieren.

<style> 
    .left { float: left; } 
    .right { float: right; } 
</style> 

<table> 
    <tr> 
    <td colspan="5"> 
     <span class="left">$</span> 
     <span class="right">1000</span> 
    </td> 
    </tr> 
</table> 
+0

Ich nehme an, dass Sie der erste waren, der meine Frage beantwortete? –

+0

Ich bin mir nicht sicher. Werde nur irgendjemanden beleidigen. Ich bin glücklich zu helfen. –

+0

danke Mann, zu schätzen –

2

Der beste Weg, um eine Klasse auf jede der Spannweiten zu platzieren wäre und den Schwimmer gelten jeweils die Klassen ot

HTML

<span class="left">$</span><span class="right">1000</span> 

CSS

.left{float:left;} 
.right{float:right;} 
+0

'.left',' .right' ist nicht semantisch, wie wäre es '.sign',' .value' –

+0

@JuanMendes Semantik in CSS Klassenbenennung? Gibt es einen weiteren Hinweis darauf? – otinanai

+0

@otinanai CSS-Klassennamen sollten für das Datenelement stehen, das sie darstellen, nicht für ihr Aussehen auf der Seite. Zum Beispiel zeigen einige Sprachen das Geldzeichen auf der rechten Seite an, und Ihr CSS-Klassenname würde in diesem Fall keinen Sinn ergeben. Ein semantischer Klassenname bedeutet, dass Sie ein alternatives Stylesheet verwenden können, um ein anderes Aussehen zu erzeugen. Siehe http://css-tricks.com/semantic-class-names/ und http://www.w3.org/QA/Tips/goodclassnames –

Verwandte Themen