Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][CSS]Czemu w <li> robi się margines, jak zaradzić?
Forum PHP.pl > Forum > Przedszkole
mex
Cześć. Mam taki kod:

Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>TEST</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
ol             {background: #aaa; list-style-type: none; text-align: center; padding: 0; }
ol li          {background: #777; display: inline; padding: .5em; }
</style>
</head>
<body>
<ol>
     <li>Jeden</li>
     <li>Dwa</li>
     <li>Trzy</li>
     <li>Cztery</li>
     <li>Pięć</li>
     <li>Sześć</li>
</ol>
</body>
</html>


Pytanie:
  1. Czemu klocki <li> tworzą wkoło siebie margines 2px. Aby ułożyć elementy obok siebie bez przerw musimy zastosować margin: -2px. W czym tkwi haczyk, może ja coś nie tak czynię.
  2. Jak nadać liście <ol> tło aby wysokością dopasowywało się do wysokości <li> zawierającego padding?
  3. Czy jeśli ustawię <li> wg. float right/left to czy mogę elementy wyśrodkować, a jeśli tak to jak?
P.S. Sprawa się odnosi do FF i Opery, w IE jest jak zwykle inna bajka.
ayeo
Witaj!

Sformatuj proszę swój kod. Na chwilę obecną jest strasznie nieczytelny. Chcesz pomocy - szanuj czas innych!

Pozdrawiam!

edit:
Byłeś szybszy winksmiley.jpg

Zamiast display: inline spróbuj float: left; Żeby wyśrodkować powinno wystarczyć margin: auto; dla ol
mex
Problem w tym, że nie wystarczy. Nawet jak dam dla <ol> width: 100%.
marcok
Ad 1. Usuń spacje między bloków <li>

  1.        <li>Jeden</li>
  2.  
  3. {tu są spacje}<li>Dwa</li>
mex
Działa. Powiedz mi, czemu tak się dzieje? Może to wina edytora. Korzystam z notepada2. Wg. tego co piszesz to kod powinien wyglądać tak:

Kod
<ol>
<li>Jeden</li><li>Dwa</li><li>Trzy</li><li>Cztery</li><li>Pięć</li><li>Sześć</li>
</ol>


Troche to dla mnie bez sensu. Czym to jest spowodowane?
l0ud
A konkretnie, spacje i znaki nowej linii. Elementy wyświetlane inline tak mają. Innym rozwiązaniem jest ustawienie dla li float: left i display:block, ale w tym wypadku zepsuje to efekt, który chcesz osiągnąć.
mex
Oto drugi problem. 

Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>TEST</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
html body      {margin: 0; padding: 0;}
ol             {background: #aaa; list-style-type: none; text-align: center; margin: 0; padding: 0; }
ol li          {background: #777; display: inline; padding: .5em; }
</style>
</head>
<body>
<ol>
<li>Jeden</li><li>Dwa</li><li>Trzy</li><li>Cztery</li><li>Pięć</li><li>Sześć</li></ol>
</body>
</html>


Jak należy zrobić by <li> mimo zwiększenia/zmniejszenia padding były na równo z górną listwą przeglądarki. Chciałbym by górna krawędź <li> pokrywała się np. z górną krawędzią <ol> przy okazji by <ol> dopasowywało swą wysokość do wysokości <li>
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.