Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Menu na <ul> + CSS
Forum PHP.pl > Forum > Po stronie przeglądarki > CSS
angel2953
Chciałem sobie zrobić górne menu na zasadzie zakładek, i mam taki kod:
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <?xml-stylesheet href="#internalStyle" type="text/css"?>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
  4. <html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  5. <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
  6. <title>Tabs Top Menu</title>
  7. <style type="text/css" media="all">
  8. /* <![CDATA[ */
  9. * { margin: 0px; padding: 0px; }
  10. body { font-family: Verdana, sans-serif; font-size: 12px; text-align: center; overflow: auto; background-color: #F1F3F5; }
  11. div#container { text-align: left; margin: 5px 20px; }
  12. .clear { clear: both; }
  13. div#Tabs { margin: 5px 5px 0px 35px; position: relative; top: +1px; }
  14. div#Tabs ul { list-style: none; }
  15. div#Tabs li { display: inline; }
  16. div#Tabs li#tabSelected { text-transform: uppercase; float: left; font-family: Arial, sans-serif; font-weight: bold; border: 1px solid #BBBBBB; text-decoration: none; text-align: center; padding: 5px; color: #000000; border-bottom: 1px solid #FFFFFF; text-decoration: none; background-color: #FFFFFF; }
  17. div#Tabs li a { text-transform: uppercase; float: left; font-family: Arial, sans-serif; font-weight: bold; color: #FFFFFF; border: 1px solid #BBBBBB; background-color: #336699; text-decoration: none; text-align: center; padding: 5px; }
  18. div#Tabs li a:hover { color: #DF7000; border: 1px solid #BBBBBB; text-decoration: none; background-color: #FFFFFF; }
  19. div#main { padding: 10px; text-align: justify; border: 1px solid #BBBBBB; background-color: #FFFFFF; margin: 0px; }
  20. /* ]]> */
  21. </style>
  22. </head>
  23. <body lang="en">
  24. <div id="container">
  25. <div id="Tabs">
  26. <ul>
  27. <li><a href=#">First tab</a></li>
  28. <li id="tabSelected">Second tab</li>
  29. <li><a href="#">Third tab</a></li>
  30. <li><a href="#">Fourth tab</a></li>
  31. <li><a href="#">Fifth tab</a></li>
  32. </ul>
  33. </div>
  34. <div class="clear"></div>
  35. <div id="main">
  36. <p>Epsum factorial non deposit quid pro quo hic escorol. Olypian quarrels et gorilla congolium sic ad nauseum. Souvlaki ignitus carborundum e pluribus unum. Defacto lingo est igpay atinlay. Marquee selectus non provisio incongruous feline nolo contendre. Gratuitous octopus niacin, sodium glutimate. Quote meon an estimate et non interruptus stadium. Sic tempus fugit esperanto hiccup estrogen. Glorious baklava ex librus hup hey ad infinitum. Non sequitur condominium facile et geranium incognito. Epsum factorial non deposit quid pro quo hic escorol. Marquee selectus non provisio incongruous feline nolo contendre Olypian quarrels et gorilla congolium sic ad nauseum. Souvlaki ignitus carborundum e pluribus unum.</p>
  37. </div>
  38. </div>
  39. </body>
  40. </html>


pod firefoxem to menu wyświetla się prawidłowo

ale niestety pod IE jest nieco odsunięte od zawartości (około 2-3px)

Jak to poprawić aby się tak samo wyświetlało ?
Ja_Szczur
nie wiem, czy to eleganckie rozwiązanie... ale jest skuteczne ;]
  1. div#main {
  2. margin-top: -5px;
  3. }
angel2953
Cytat(Ja_Szczur @ 24.08.2006, 11:58 ) *
nie wiem, czy to eleganckie rozwiązanie... ale jest skuteczne ;]
  1. div#main {
  2. margin-top: -5px;
  3. }

Tego już próbowałem ale to nie jest rozwiązanie gdyż w FF div id="main" podnosi się o te 5px a w IE widać czarną ramkę na zaznaczonej zakładce czego z kolei nie widać na FF i własnie taki efekt chciałbym też uzyskać na IE.
Zajec
Jeśli chcesz obecne rozwiązanie, zamień kod
Kod
.clear { clear: both; }
na
Kod
.clear { clear: both; font-size: 0; }



A jeszcze lepiej wyrzuć
Kod
.clear { clear: both; }
<div class="clear"></div>
i do CSSa wrzuć tylko takie coś:
Kod
#Tabs:after { display: block; content: ""; clear: both; }




P.S.
Czemu font-size? Przeczytaj temat: http://forum.php.pl/index.php?showtopic=52072
angel2953
Cytat(Zajec @ 24.08.2006, 12:50 ) *
Jeśli chcesz obecne rozwiązanie, zamień kod
Kod
.clear { clear: both; }
na
Kod
.clear { clear: both; font-size: 0; }

Niestety to nic nie daje.
Cytat(Zajec @ 24.08.2006, 12:50 ) *
A jeszcze lepiej wyrzuć
Kod
.clear { clear: both; }
<div class="clear"></div>
i do CSSa wrzuć tylko takie coś:
Kod
#Tabs:after { display: block; content: ""; clear: both; }

P.S.
Czemu font-size? Przeczytaj temat: http://forum.php.pl/index.php?showtopic=52072

po tym wyglad jest jeszcze gorszy zakładki wjechaly na diwa z zawartością (pod FF i IE):
Zajec
A jak wygląda w IE strona: http://zajec.net/test/angel questionmark.gif

Z tym :after napisałem dobrze, musiałeś coś źle dodać. Mój przykład działa na Firefoksie.
angel2953
Cytat(Zajec @ 24.08.2006, 15:09 ) *
A jak wygląda w IE strona: http://zajec.net/test/angel questionmark.gif

nieciekawie
revyag
Za dużo kombinowania smile.gif
Problem leży w hasLayout ie. Wyjaśnienia na google smile.gif. Do swojego pierwszego kodu który tu podałeś dodaj dla div#Tabs microsoftową właściwość zoom:1. Reszty kodu nie zmieniaj. To powinno rozwiązać problem.
angel2953
Cytat(revyag @ 24.08.2006, 15:21 ) *
Za dużo kombinowania smile.gif
Problem leży w hasLayout ie. Wyjaśnienia na google smile.gif. Do swojego pierwszego kodu który tu podałeś dodaj dla div#Tabs microsoftową właściwość zoom:1. Reszty kodu nie zmieniaj. To powinno rozwiązać problem.

no niestety nie rozwiązało. już nie wiem jak to ugryźć. Jak znam życie błędem jest jakiś banał...
revyag
Twój kod przeklejony z pierwszego posta z dodaniem zoom:1 dla div#Tabs.

http://projekty.producer.pl/rvg/test/

u mnie wygląda ok.
angel2953
Juppi.. zadziałało. No i teraz rodzi sie pytanie: czy walidator CSS'a to przełknie... Chyba nie.
revyag
No nie przełknie bo to dzieło microsoftu dla ie. Coś za coś. Według mnie można sobie na to odstępstwo od standardu pozwolić. Poza tym możesz wywalić to do alternatywnego arkusza styli dla ie, który nie będzie walidowany.
s_w_ir
Przetraw sobie to, żadnych hacków i działa pod IE bez problemu.
Kod
body {
   font: .8em/1.8em verdana, arial, sans-serif;
   background-color: #FFFFFF;
   margin-left: 50px;
   margin-right: 100px;
}
#zawartosc {
   border: 1px solid #711515;
   border-top: none;
   padding: 10px 5px 6px 5px;
}
#zawartosc h1 {
   font-size: 1.2em;
   color: #711515;
   background-color: transparent;
}
ul#zakl_naw {
   list-style-type: none;
   margin: 0;
   padding-left: 40px;
   padding-bottom: 24px;
   border-bottom: 1px solid #711515;
   font: bold 11px verdana, arial, sans-serif;
}
ul#zakl_naw li {
   float: left;
   height: 21px;
   background-color: #B51032;
   color: #FFFFFF;
   margin: 2px 2px 0 2px;
   border: 1px solid #711515;
}
ul#zakl_naw a:link, ul#zakl_naw a:visited {
   display: block;
   color: #FFFFFF;
   background-color: transparent;
   text-decoration: none;
   padding: 4px;
}
ul#zakl_naw a:hover {
   background-color: #F4869C;
   color: #FFFFFF;
}
body#przepisy li.przepisy, body#kontakt li.kontakt,
body#artykuly li.artykuly, body#zakupy li.zakupy {
   border-bottom: 1px solid #fff;
   color: #000000;
   background-color: #FFFFFF;
}
body#przepisy li.przepisy a:link, body#przepisy li.przepisy a:visited, body#kontakt li.kontakt a:link,
body#kontakt li.kontakt a:visited,
body#artykuly li.artykuly a:link,
body#artykuly li.artykuly a:visited, body#zakupy li.zakupy a:link,
body#zakupy li.zakupy a:visited {
   color: #000000;
   background-color: #FFFFFF;
}

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <title>Lista jako menu nawigacyjne</title>
  4. <meta http-equiv="content-type"
  5. content="text/html; charset=iso-8859-2" />
  6. <link rel="stylesheet" type="text/css" href="zakladki.css" />
  7. </head>
  8. <body id="przepisy">
  9. <ul id="zakl_naw">
  10. <li class="przepisy"><a href="#">Przepisy</a></li>
  11. <li class="kontakt"><a href="#">Napisz do nas</a></li>
  12. <li class="artykuly"><a href="#">Artykuły</a></li>
  13. <li class="zakupy"><a href="#">Sklep internetowy</a></li>
  14. </ul>
  15. <div id="zawartosc">
  16. <h1>Przepisy</h1>
  17. <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras quis tellus sit amet diam consectetuer scelerisque. Nulla facilisi. Praesent sit amet justo. Sed mattis arcu sed nisl. Vestibulum ante urna, gravida rhoncus, porta vel, sodales id, nisl. Vestibulum lectus velit, dignissim quis, molestie vel, iaculis quis, tellus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris sollicitudin dolor quis dolor. Donec at nisl ac felis vestibulum placerat. Fusce sollicitudin tristique nibh. Donec aliquam. Proin vitae neque iaculis dolor eleifend rhoncus. Curabitur dictum lobortis arcu. Vivamus tincidunt metus at justo. Aliquam dui. Nulla semper, nunc sit amet viverra placerat, mauris wisi sodales massa, et tincidunt sapien nisl eget nulla. Vivamus a neque vel quam cursus tincidunt. Fusce porttitor justo nec nisl. In vel velit eget tortor feugiat placerat.</p>
  18. <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam nulla nunc, interdum nec, interdum non, hendrerit in, enim. Donec eget risus. In eget neque vel nunc posuere iaculis. In adipiscing justo in enim. Donec commodo, dui ac pharetra interdum, libero wisi tincidunt arcu, sed ornare magna velit vel elit. Sed nec risus a massa imperdiet euismod. Nunc hendrerit. Fusce sit amet eros. Etiam vitae nulla at lectus fermentum rhoncus. </p>
  19. </div>
  20. </body>
  21.  
  22. </html>


Przykład zaczerpnięty z książki CSS Antologia.

edit: A autorka owej ksiązki ów pomysł zaczerpneła z http://unraveled.com/projects/css_tabs/
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.