2013-04-12 9 views
6

Mam stół. Wewnątrz td użytkownika Mam dwa znaczniki SPAN - tag jeden rozpiętości Chcę wyrównać w lewo, a drugi prawo, ale sędzia nie pozwala, że:Wyrównaj dwie przęsła wewnątrz td - Jedna lewa i jedna prawa

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

Więc chcę $ zostać dostosowane do dalekie opuścił z td i , aby wyrównać do odległego prawa z td.

Czy to możliwe?

+1

Wiele odpowiedzi tam, ale wygląda na to, że wszyscy mówią to samo . Zastosuj klasę i ułóż je w lewo i prawo. – Andrew

+0

@Andrew Z wyjątkiem tego, że jeśli jest to jedyna treść TD, nie musisz unosić pierwszego po lewej stronie. –

+0

Yip jest wiele sposobów na zrobienie tego i jak dotąd wszystkie wydają się poprawne. ale może zależeć od tego, w jaki sposób zamierza go użyć. – Andrew

Odpowiedz

12

Możesz użyć następującego selektora, bez dodatkowych zajęć:

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

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


Dla zgodności z IE7 i maksymalnie wykorzystać kod CSS poniżej:

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

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


Innym podejściem jest prawo wyrównaj tekst wewnątrz <td> i float tylko pierwszy <span>:

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

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


Można zastosować podobną metodę z powyższym za pomocą nawet mniej deklaracje CSS:

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

W przykład powyżej, domyślne wyrównanie tekstowe td zostało pozostawione, a użytkownik wybiera tylko rodzeństwo, które jest bezpośrednio cedowane po pierwszym span. Potem po prostu float to po prawej. Oczywiście możesz użyć selektora ~, który jest tym samym w tym przypadku.

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


Patrz tabela kompatybilności tutaj: http://kimblim.dk/css-tests/selectors/

zobaczyć selektorów CSS tutaj: http://www.w3.org/TR/CSS2/selector.html

+0

Najlepsza odpowiedź, nie wymaga dodatkowych znaczników! –

+0

Po prostu pamiętaj, że IE8 i poniżej nie obsługują "ostatniego dziecka", chociaż jeśli nie potrzebujesz IE8 i poniżej wsparcia, jest to zdecydowanie najlepsze. – ajp15243

+1

@ ajp15243: Poprawiłem moją odpowiedź na zgodność z IE7 i nowszymi wersjami. Dzięki za wskazanie tego. – otinanai

1

Najprostszym sposobem jest unosić się pierwszy z lewej, a drugi z prawej

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

style inline nie są dobre –

+0

@DylanHayes Nie sugeruję stylów wbudowanych, nie chodzi o to, jak poprawnie oddzielić CSS i HTML, to tylko przykład, jak to zrobić, i starał się być zwięzły w pokazywaniu jaki CSS przyjmuje przy najmniejszej ilości zmian w kodzie OP. Szkoda, że ​​nie muszę dodawać zastrzeżenia. Najlepszą odpowiedzią jest naprawdę otinanai, która nie musi dodawać żadnych znaczników do kodu HTML i może być zwięźle umieszczana w kodzie CSS tylko –

2

Prawdopodobnie najlepiej się to robi w pływaki.

<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

Spróbuj tego:

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

DEMO

1

Można ustawić wartość float: left na span, zawierającą $ i float: right na numerze span zawierającą kwotę w dolarach.

Oto prosty demo tego.

1

Możesz zdefiniować styl float dla przęseł używających klas CSS.

<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

Zakładam, że byłeś pierwszym, który odpowiedział na moje pytanie? –

+0

Nie jestem pewien. Po prostu upomnij kogokolwiek. Chętnie pomogę. –

+0

dziękuje człowiekowi, doceniam –

2

Najlepszym sposobem byłoby umieścić klasę na każde z przęseł i zastosowanie pływaka do siebie ot klas

HTML

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

CSS

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

'.left',' .right' nie jest semantyczny, a może: '.sign',' .value' –

+0

@ Semianizm juana w css nazywanie? Jakieś dalsze odniesienie do tego? – otinanai

+0

@otinanai Nazwy klas CSS powinny oznaczać reprezentowane przez nie dane, a nie ich wygląd na stronie. Na przykład niektóre języki wyświetlają znak pieniędzy po prawej stronie, a nazwa klasy CSS nie ma w tym przypadku sensu. Semantyczna nazwa klasy oznacza, że ​​możesz użyć alternatywnego arkusza stylów, aby uzyskać odmienny wygląd. Zobacz http://css-tricks.com/semantic-class-names/ i http://www.w3.org/QA/Tips/goodclassnames –