eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.wwwCSS - problem z zerową wysokością listy ULCSS - problem z zerową wysokością listy UL
  • 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."

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

  • 02.05.11 12:24 Ai

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: