eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.wwwCSS - problem z zerową wysokością listy UL
Ilość wypowiedzi w tym wątku: 2

  • 1. Data: 2011-05-01 20:54:47
    Temat: CSS - problem z zerową wysokością listy UL
    Od: Ai <n...@s...pl>

    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."


  • 2. Data: 2011-05-02 12:24:30
    Temat: Re: CSS - problem z zerową wysokością listy UL
    Od: Ai <n...@s...pl>

    Po długiej walce znalazłem wreszcie rozwiązanie. Inline przegrał walkę z
    floatem. Niech będzie dla potomności - kompletyny system zakładkowy :). Kod
    CSS wygląda tak:

    .zakladki_gora
    {margin: 0px 12px 0px 12px;}

    .zakladki_gora ul
    {list-style-type: none;
    padding: 0px;
    margin: 0px;
    width: 936px;}

    .zakladki_gora li
    {float: left;
    border: #6D90B0 solid;
    border-width: 1px 1px 0px 1px;
    margin-left: 12px;
    font-size: 14px;
    color: #333333;
    background-color: #F4F9FC;
    text-align: center;}

    .zakladki_gora a
    {border-bottom-style: none;
    display: block;
    padding: 3px 3px 3px 3px;
    width: 164px;
    background-position: bottom;
    background-color: #F4F9FC;
    background-image: url('../obrazy/interfejs/zakladki_gora.png');
    background-repeat: repeat-x;}

    .zakladki_gora a.wybrana
    {position: relative;
    top: 1px;}

    .zakladki_dol
    {background-position: top;
    margin: 0px 12px 12px 12px;
    padding: 8px;
    border: 1px solid #6D90B0;
    background-color: #C6E0F2;
    font-size: 13px;
    text-align: center;
    clear: both;
    background-image: url('../obrazy/interfejs/zakladki_dol.png');
    background-repeat: repeat-x;}

    Działa bezbłędnie we wszystkim, nawet upiornym IE6 ;). I jeszcze skrypt do
    przełączania zakładek:

    function PrzygotujZakladki(Numer)
    {
    var Pozycja = Numer - 1;
    $('div.zakladki_dol').hide().filter('#zakladka_' + Numer).show();
    $('div.zakladki_gora ul li').eq(Pozycja).children().addClass('wybrana');
    $('div.zakladki_gora a').click(function()
    {
    $('div.zakladki_dol').hide();
    $('div.zakladki_dol').filter(this.hash).show();
    $('div.zakladki_gora ul li a').removeClass('wybrana');
    $(this).addClass('wybrana');
    $(this).blur();
    return false;
    });
    }

    Efekt ostateczny + wygląd w przeglądarce skalującej całość i tylko
    czcionki:

    http://img705.imageshack.us/img705/3397/89704519.png
    http://img849.imageshack.us/img849/7258/36015867.png
    http://img20.imageshack.us/img20/9588/14234084.png


    --
    Pozdrowienia
    Ai / mailto: n...@n...arg / ROT-13 /
    "Najlepsza metodą do zainspirowania odkrywczych myśli, jest zaklejenie
    koperty."

strony : [ 1 ]


Szukaj w grupach

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: