Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS] Wyśrodkowanie elementów listy inaczej
Forum PHP.pl > Forum > Po stronie przeglądarki > CSS
lonek
Witam,

Staram się zrobić listę (docelowo dropdown menu), która będzie składała się z:

1. dynamicznej liczby elementów (sterowane z php),

2. każdy element o dynamicznej szerokości (w zależności od długości tekstu),

3. wyśrodkowanej w poziomie, ALE - z rozciągnięciem zarówno do lewego i prawego boku.

W zależności od liczby elementów lista powinna wyglądać tak jak poniżej.

Jeden element, wyśrodkowany w centrum:



Ale jeśli są już dwa elementy, jeden przesuwa do lewej a drugi do prawej krawędzi:



Kiedy są trzy elementy:



Cztery:



I pięć... i tak dalej... :





Nie za bardzo mi to wychodzi. Albo uzyskuję elementy wyśrodkowane w centrum zewnętrznego diva, albo floatujące do left, albo do right. Nie mogę poradzić sobie z rozciągnięciem zewnętrznych elementów listy do przeciwległych krawędzi. Czy ktoś mógłby mi pomóc..?

Dzięki, guys.


P.S. Wydaje mi się, że problem może sprawiać połączenie sytuacji z tylko jednym elementem i tych z wieloma elementami. Lista będzie miała prawdopodobnie sześć elementów (chociaż o różnych dynamicznych szerokościach), więc skupiam się na tym rozwiązaniu.
Shili
Możesz pobawić się z display: inline-block (oraz jego hackami do opornych przeglądarek) i text-align: justify; Chyba że nie musisz elementom ustawiać height i width, to wystarczy display: inline

Bodajże będzie to wymagało większej ilości tekstu (jedną linijkę wyrówna do prawej, przy dwóch pierwsza będzie wyjustowana, mechanizm podobny jak w edytorach tekstu - ostatniej linijki nie justuje) - kontener menu możesz ustawić na określoną wysokość i zastosować overflow: hidden; a na koniec listy dodać jeszcze jeden element o szerokości równej tak z 90% szerokości kontenera.

Nie mam pojęcia jak to cudo będzie się zachowywało dla jednego elementu, ale skoro to sterowane jest za pomocą php, to w przypadku jednego elementu nadaj inną klasę, id czy coś tam i inaczej ostyluj.
links
Ja mam za to z tym problem i nie moge sobie za nic w swiecie poradzic.
Kod
div#menu {
    border-bottom: 3px solid #B3BF01;
    height: 24px;
    margin:10px auto 0;
    width: 1000px;
}

div#menu ul {
    margin: 0;
    padding: 0;
}

div#menu ul li {
    display: inline-block;
    margin: 0 5px;
    padding: 0;
}

Kod
<div id="menu">
   <ul>
         <li>
         <a title="Strona Główna" href="#">Home</a>
         </li>
         <li>
         <a title="#" href="#">#</a>
         </li>
   </ul>
</div>


Jest ktos w stanie pomoc?
Z gory serdecznie dziekuje.
sebekzosw
witam, odkopuje temat ponieważ mam problem. chcę wyśrodkować elementy w liście, bo w jednej linii jest ich 7 w drugiej 2 i w wszystko do lewej leci
Kostek.88
http://www.cssplay.co.uk/menus/centered.html - moze to?
sebekzosw
nie oto smile.gif

jak w pierwszym rzędzie są 3 elementy a w drugim 2 elementy, to te w drugim powinny być na przecięciu tych w pierwszym rzędzie:

- - -
- -

a nie

- - -
- -
Necsord
Nie podałeś ani html'ki ani css'a ktorego używasz, więc nawet nie wiem czego ty oczekujesz tak dokladnie. Praktycznie możesz dac szeroki kontener z text-align: center a zawartosc na display inline. bez floatow.
sebekzosw
ta opcja też nie działa. a pytanie zadałem do osoby która już rozwiązała ten problem, a Ty taką osobą nie jesteś. Kodu żadnego nie trzeba
r4xz
Necsord podał dobre rozwiązanie...
http://jsfiddle.net/FrsSY/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.