2011-12-15 10 views
10

Czy istnieje sposób na wyrównanie tekstu w lewo, w środku i w prawo na tej samej linii z HTML/CSS, pod następującymi warunkami?Tekst wyrównany do lewej, środkowej i prawej strony w tej samej linii

  1. Lewy i prawy fragment tekstu będzie krótki, ale nie znam ich długości z góry.
  2. Środkowy fragment tekstu może być wystarczająco długi do zawinięcia.
  3. Środkowy fragment tekstu powinien wyglądać DOKŁADNIE pośrodku.
  4. Środkowy fragment tekstu nie powinien zachodzić na lewy lub prawy fragment tekstu.

Oczywiste rozwiązanie polegające na użyciu 3 elementów div z dwoma z nich pływającymi w lewo i w prawo działa całkiem dobrze, z wyjątkiem tego, że środkowy fragment tekstu nie jest dokładnie wyśrodkowany (na przykład, jeśli lewy fragment tekstu jest dłuższy niż prawo, centrum wydaje się wyśrodkowane w prawo od absolutnego centrum).

Potrzebuję tylko rozwiązania działającego w WebKit. Jakieś pomysły?

Edit - To, co mam tak daleko ...

HTML:

<div id="left">Left</div> 
<div id="center">Center text</div> 
<div id="right">Right</div> 

CSS:

#left { 
    float: left; 
    text-align: left; 
    padding-right: 10px; 
} 

#center { 
    text-align: center; 
} 

#right { 
    float: right; 
    text-align: right; 
    padding-left: 10px; 
} 
+0

hmmm nie wiem rozwiązanie JS gdzie przejąć lewo lub w prawo szerokość tylko i używać go na drugiej stronie ... tylko wtedy tekst jest wyśrodkowany w centrum exaclty. bez szerokości nie możesz tego zrobić tylko HTML i CSS .... możesz użyć% szerokości jak 10% - 80% - 10%, ale to jest stała szerokość w zależności od kontenera – ggzone

+0

czy możesz opublikować kod, nad którym pracujesz? – ptriek

+0

Brzmi jak praca przy stole. Dokładnie jakie dane próbujesz tam umieścić? –

Odpowiedz

5

Będziesz musiał "oszukać" lewą kolumnę na prawo tak szeroką jak prawa, kopiując tekst z prawej do lewej kolumny. Czemu? Gdy kolumna środkowa musi się owijać, aby zachować środek względem całej tabeli, będzie ona musiała się owijać tak, jakby obie kolumny miały taką samą szerokość. Możesz to zobaczyć tutaj: http://jsfiddle.net/brettwp/n5eSB/, dostosowując rozmiar panelu Result. Zwróć uwagę, że dzięki temu Twoja tabela jest o jedną linię wyższa ze względu na ukrytą zawartość. Nie znam wszystkich szczegółów Twojej implementacji, więc musisz wprowadzić poprawki (ukryte przepełnienie, ujemne marginesy, względne położenie itp.), Aby dopasować to do strony, ale powinno zacząć się:

<table> 
    <tr> 
     <td class="d1"> 
      left 
      <div class="copy">right text</div> 
     </td> 
     <td class="d2"> 
      center text that is long enough to force a word wrap! 
     </td> 
     <td class="d3">right text</td> 
    </tr> 
</table> 

table { 
    width: 100%; 
} 
td { 
    vertical-align: top; 
} 
.d1 { 
    text-align: left; 
} 
.d2 { 
    text-align:center; 
} 
.d3 { 
    text-align:right; 
} 
.copy { 
    visibility: hidden; 
} 
.copy, .d3 { 
    white-space: nowrap; 
} 
+0

Świetne, dzięki! –

4

Można to osiągnąć z wyświetlaczem: Stół (-row/-cell) properties:

http://jsfiddle.net/WYxek/

<div class="table"> 
    <div class="tr"> 
     <div class="d1">left text</div> 
     <div class="d2">center text</div> 
     <div class="d3">right text</div> 
    </div> 
</div> 



.table { 
    display:table; 
    width:100%; 
} 
.tr { 
    display:table-row; 
} 
.d1 { 
    display:table-cell; 
    width:25%; 
} 
.d2 { 
    display:table-cell; 
    text-align:center; 
    width:50%; 
} 
.d3 { 
    display:table-cell; 
    text-align:right; 
    width:25%; 
} 
+1

Dobre rozwiązanie, ale zapobiega użyciu środkowego tekstu przez ponad 50% pełnej szerokości, nawet jeśli lewa i prawa strona są krótsze niż 25%. –

11

rozwiązanie z jasnymi div

https://jsfiddle.net/LaL92q88/1/

<div style="float: left">Left Text</div> 
<div style="float: right">Right Text</div> 
<div style="margin: 0 auto; width: 100px;">Centered Text</div> 
+2

Prosty i działa +1 – Belldandu

+0

wyrównanie tekstu: środek w ostatniej linii jest potrzebny '

Centered Text
' – guido

+0

@guido - w celu wyjaśnienia Twojej sugestii: 'text-align: center' jest potrzebne, jeśli WSZYSTKIE wiersze tekstu centralnego mają być wyśrodkowane (nierówne lewe i prawe krawędzie); jeśli celem jest, aby zawijane wiersze były wyrównane do lewej linii z pierwszą linią (centralne "pudełko", które ma równe miejsce po lewej i prawej stronie, ale wyjustowany do lewej strony tekst w tym polu, jak typowy akapit), może nie potrzebować że. [W tym przypadku kombinacja "automatycznego" marginesu i określonej szerokości wystarcza, aby wyśrodkować pole tekstowe.] – ToolmakerSteve

Powiązane problemy