jesteś w: Główna > css > list-style-image i pozycja markera
Ostatnia aktualizacja tej strony: 2007-10-20, 10:10:31

list-style-type i pozycja markera - sposoby

to tylko zajawka tekstu

list-style-image

Css pozwala nam zastąpić standardowe markery list obrazkami. Styl, który do tego służy to list-style-image

Jak zwykle jednak w takich sytuacjach pojawia się problem (problem pojawia się też przy standardowych markerach ale jakoś nikt na niego wtedy uwagi nie zwraca). Każda przeglądarka inaczej pozycjonuje takiego markera względem elementu listy

Moje sposoby na drania

zabawy z obrazkiem - metoda Picasso

Metoda Picasso - najmniej skuteczna - polega na odpowiednich eksperymentach z przygotowanym obrazkiem tak by we wszystkich przeglądarkach wyglądał w miarę poprawnie. Ustawiając odpowiednio wysokość obrazka i położenie na nim markera możemy wyrównać obrazek w pionie z dosyć sporą dokładnością.

Niestety metoda ta daje bardzo ograniczone możliwości i prawie nie pozwala na operowanie położeniem markera w poziomie, dlatego polecam ją tylko do prostych rozwiązań.

position: relative;

Ten sposób można zastosować jeśli tekst wewnątrz elementu <li /> jest upakowany np wewnątrz <a /> lub <span /> lub innego znacznika. Możemy wtedy dla tego elementu przypisać styl position:relative; i odpowiednio ustawić go przy pomocy styli top i left.

Wadą tego rozwiązania jest to, że dla każdej przeglądarki pozycję musimy ustawiać osobno. Wymaga to użycia wielu styli i hacków.

html:
<ul>
  <li><a href="#">item 1</a></li>
  <li><a href="#">item 2</a></li>
</ul>

css:
ul{list-style-image:url(obrazek.gif);}
li a{position: relative; top:-5px; left-3px;}

list-style-type:none; i background;

Ta metoda polega na całkowitym ukryciu markerów listy i zastąpieniu ich tłem dla elementu <li />.

html:
<ul>
  <li><a href="#">item 1</a></li>
  <li><a href="#">item 2</a></li>
</ul>

css:
ul{list-style-type:none; margin:0;padding:0;}
li{margin:0; padding:0 0 0 20px; background: url(obrazek.gif) no-repeat 0% 50%;}

W stylu background 0% i 50% oznacza kolejno pozycję w poziomie i w pionie. 50% dla pionu spowoduje wyśrodkowanie tła względem elementu <li />. Jeśli zawartość tego elementu nie mieści się w jednej linijce lepszym rozwiązaniem może być podanie pozycji tła w pikselach lub em-ach.

opływane elementy listy - <li style="float:left;" />

Stosując metodę "background" można zbudować też listy z opływanymi elementami <li /> i markerami.

Markery na listach z ustawionym float nie działają w IE i Operze.

Nie wiem co jest tego przyczyną ale może to być zmiana w specyfikacji CSS2.1 w stounku do CSS2.0. Ta druga mówi, że każdy element ze stylem float automatycznie staje się elementem blokowym, a te nie mogą mieć markerów. W CSS2.1 wprowadzono zmiany w relacjach między display i float.

Menu

Działy:

Quick start:

Inne:

animacje Flash

Diablo 2: