-
Data: 2011-05-01 20:54:47
Temat: CSS - problem z zerową wysokością listy UL
Od: Ai <n...@s...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Witam.
Przy okazji przeróbki strony na wyższą rozdzielczość postanowiłem poprawić
jeden błąd, z którym nie poradziłem sobie tworząc ostatnią wersję.
Aktualnie na stronie wykorzystuję nawigację w oparciu o zakładki, co
prezentuje się w sposób następujący:
http://img848.imageshack.us/img848/3776/76117336.png
Nie do końca przypomina to zakładki widywane na większości stron, ale
kierując się wskazówkami stąd: http://unraveled.com/publications/css_tabs
udało mi się osiągnąć prawie idealny efekt widoczny tutaj:
http://img690.imageshack.us/img690/7303/17259223.png
Prawie idealny, bo jeśli przyjrzeć się bliżej to nadal coś jest nie tak.
Ale zacznę od początku. W kodzie wygląda to w uproszczeniu tak:
<div class="zakladki_gora">
<ul>
<li><a href="#zakladka_1">Serwis</a></li>
<li><a href="#zakladka_2">Pobieranie</a></li>
<li><a href="#zakladka_3">Pozostałe</a></li>
<li><a href="#zakladka_4">Autor</a></li>
<li><a href="#zakladka_5">Sieć</a></li>
</ul>
</div>
<div id="zakladka_1" class="zakladki_dol">
[linki do poszczególnych działów]
</div>
[analogicznie kolejne zakładki]
Przełączanie zakładek realizuje prosty skrypt korzystający z jQuery. Szkoda
miejsca na szczegóły, w każdym razie kliknięcie danego linka stanowiącego
zakładkę skutkuje pobraniem jego adresu i ukryciem wszystkich obszarów
oprócz obszaru o danym identyfikatorze. Dodatkowo, zmieniany jest styl
danego łącza, tak aby wyglądało na wybrane.
Obszar o klasie zakladki_dol posiada następujący styl:
.zakladki_dol
{background-position: top;
margin: 0px 12px 12px 12px;
padding: 8px;
border: solid #6D90B0;
border-width: 0px 1px 1px 1px; <<< krawędzie boczne i dolna
background-color: #C6E0F2;
font-size: 13px;
text-align: center;
clear: both;
background-image: url('../obrazy/interfejs/zakladki_dol.png');
background-repeat: repeat-x;}
Czyli ma widoczne krawędzie boczne i dolną oraz obraz tła, który wyrównany
jest do górnej krawędzi, powielony w poziomie, a resztę wypełnia kolor jaki
posiada dolna krawędź obrazu.
Widoczna w przeglądarce górna krawędź dolnego obszaru to tak naprawdę dolna
krawędź ściśle przylegającej do niego listy (UL):
.zakladki_gora
{margin: 0px 12px 0px 12px;}
.zakladki_gora ul
{list-style-type: none;
border-bottom: 1px solid #6D90B0; <<< krawędź dolna
width: 936px;}
.zakladki_gora li
{display: inline;}
Problem w tym, że lista w której umieszczone zostały elementy znajdujące
się obok siebie - a nie w pionie - nie posiada wysokości. Efekt jest taki,
że jej dolna krawędź pokrywa się z górną i pomimo zapisu "border-bottom:
1px solid #6D90B0;" widoczny jest taki efekt:
http://img34.imageshack.us/img34/4235/27957962.png
Można by to obejść, uwidaczniając nie tyle dolną krawędź listy co dolną
krawędź obszaru (DIV) w którym ów lista się znajduje (koniecznie dodając mu
"overflow: hidden" aby objął swoim polem całą listę). Niestety wtedy, dolna
krawędź poszczególnych zakładek znajdowała by się piksel powyżej tej linii,
dokładnie jak na pierwszym screenie. Ostatecznie, żeby uzyskać efekt z
drugiego screena wymusiłem na siłę wysokość listy:
.zakladki_gora ul
{list-style-type: none;
border-bottom: 1px solid #6D90B0;
width: 936px;
height: 25px;}
Efekt jest zadowalający dopóki do strony nie dorwie się ktoś z przeglądarką
skalującą przy powiększaniu tylko czcionki, a nie całość i wtedy opis
poszczególnych zakładek wyjdzie poza sztucznie wymuszoną pozycję dolnej
krawędzi listy. Jest jeszcze jeden bubel - żeby osiągnąć zachodzenie
aktywnej zakładki na obszar poniżej, ma ona ustawioną pozycję względną w
pionie na +1, co znowu skutkuje drobnym zgrzytem - jej górna krawędź jest
nieco niżej niż pozostałych zakładek. Jakimś cudem działa to jednak
poprawnie w przytaczanym obcym przykładzie.
Dla mających cierpliwość żeby z tym powalczyć reszta styli:
.zakladki_gora a
{background-position: bottom;
padding: 3px 3px 3px 3px;
float: left;
margin-left: 12px;
width: 165px;
border-top-style: solid;
border-right-style: solid;
border-top-width: 1px;
border-right-width: 1px;
border-right-color: #6D90B0;
border-top-color: #6D90B0;
border-left-style: solid;
border-left-width: 1px;
border-left-color: #6D90B0;
font-size: 14px;
color: #333333;
text-decoration: none;
border-bottom-style: solid;
border-bottom-width: 1px;
border-bottom-color: #DDEDF7;
text-align: center;
background-color: #F4F9FC;
background-image: url('../obrazy/interfejs/zakladki_gora.png');
background-repeat: repeat-x;}
.zakladki_gora a.wybrana
{padding-top: 4px;
position: relative;
top: 1px;
border-bottom-width: 0px;}
--
Pozdrowienia
Ai / mailto: n...@n...arg / ROT-13 /
"Aby oszacować czas potrzebny na wykonanie jakiegoś zadania, należy
przewidywany czas pomnożyć przez dwa i przyjąć jednostkę o rząd wyższa."
Następne wpisy z tego wątku
- 02.05.11 12:24 Ai
Najnowsze wątki z tej grupy
- Jakie znacie działające serwery grup dyskusyjnych?
- is it live this group at news.icm.edu.pl
- php, linki z nazwami a $_GET, SEO
- www polityka pl captcha
- dyktatura brudnego palucha
- www.znanylekarz.pl
- Czy pytanie o sczytywanie stron programami/skryptami to tu?
- Grupy webdevowe
- Jak wydrukować stronę?
- IIS, kilka witryn
- linki <a href="/strona.php"> (ze slashami)
- co rozszerza stronę??
- responsywny akapit <p>
- Czy istnieje jakiś emulator przeglądarek pod Mac'a?
- taka sama konfiguracja dla localhost i produkcji
Najnowsze wątki
- 2024-12-03 Re: Tani dodatkowy sim do smartwacha
- 2024-12-03 Wróblewo => Analityk finansowy <=
- 2024-12-03 Praktyczny test GPS...
- 2024-12-02 Tak się sprzedają elektryczne woldzwageny ;-)
- 2024-12-02 Akumulator do Hyundai
- 2024-12-02 Olsztyn => Sales Specialist <=
- 2024-12-02 Poznań => Technical Artist <=
- 2024-12-02 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-02 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-12-02 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2024-12-02 Białystok => Delphi Programmer <=
- 2024-12-02 Poznań => Dyspozytor Międzynarodowy <=
- 2024-12-02 Szczecin => Key Account Manager (ERP) <=
- 2024-12-02 Poznań => Senior PHP Developer <=
- 2024-12-03 Usiłuję zapłacić za energetyzację...