eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.www › CSS - jak przerwać dziedziczenie
Ilość wypowiedzi w tym wątku: 15

  • 1. Data: 2011-11-15 22:53:37
    Temat: CSS - jak przerwać dziedziczenie
    Od: Marek <p...@s...com>

    Załóżmy, że mamy następujący fragment kodu HTML:

    <table class="tabela">
    <tr class="wiersz">
    <td>komórka 1</td>
    <td>komórka N</td>
    <td>
    <table class="wewnetrzna">
    <tr>
    <td></td>
    <tr>
    </table>
    </td>
    <tr>
    </tabela>

    .tabela .wiersz td {
    padding 10px;
    }

    .wewnetrzna tr td {
    padding: 5px;
    }

    Problem w tym, że tabela wewnętrzna dziedziczy cechy po tabeli zewnętrznej.
    Padding dla komórki wewnętrznej wynosi więc 10px zamiast 5px. Czy istnieje
    możliwość w CSS wymyszenia aby tabela wewnętrzna nie dziedziczyła niczego
    po rodzicu? Ta tabela wewnętrzna będzie używana w różnych miejscach kodu
    HTML i nie chcę aby jakaś przypadkowa właściwość rodzica przedarła się do
    jej wnętrza. Odpada więc stosowanie !important do każdego atrybutu stylu.


  • 2. Data: 2011-11-15 23:16:09
    Temat: Re: CSS - jak przerwać dziedziczenie
    Od: Mirosław Zalewski <miniopl@CUT_THIS.gmail.com>

    Możesz zrobić .tabela .wiersz > td, aby 10px padding miały tylko te komórki,
    które znajdują się bezpośrednio w danym wierszy tabeli zewnętrznej. Bo
    aktualnie Twoja reguła łapie wszystkie komórki, niezależnie od tego jak
    odległymi potomkami .wiersz są.

    wtorek, 15 listopada 2011 23:53 wielka mądrość na czytelników pl.comp.www
    spłynęła, gdy tako rzekł(a) Marek:

    > Problem w tym, że tabela wewnętrzna dziedziczy cechy po tabeli
    > zewnętrznej. Padding dla komórki wewnętrznej wynosi więc 10px zamiast 5px.
    > Czy istnieje możliwość w CSS wymyszenia aby tabela wewnętrzna nie
    > dziedziczyła niczego po rodzicu?

    Problemem nie jest dziedziczenie, tylko specyficzność selektorów, które
    sobie stworzyłeś. Poczytaj o ,,specificity" CSS. Jest o tym w specyfikacji
    W3C, ale opisane w bardzo lapidarny sposób. Kiedyś był o tym fajny artykuł
    w języku polskim, ale strona, na której się znajdował, już nie istnieje. Nie
    mam więc żadnego sprawdzonego źródła, do którego mógłbym Cię odesłać.
    --
    Niżej podpisany, zamieszkały w http://minio.xt.pl ,
    Mirosław Zalewski


  • 3. Data: 2011-11-15 23:22:08
    Temat: Re: CSS - jak przerwać dziedziczenie
    Od: Gregbike <g...@g...com>

    Hej,

    W dniu 2011-11-15 23:53, Marek pisze:
    > Załóżmy, że mamy następujący fragment kodu HTML:
    [...]
    > .tabela .wiersz td {
    > padding 10px;
    > }
    > .wewnetrzna tr td {
    > padding: 5px;
    > }
    [...]
    > Czy istnieje
    > możliwość w CSS wymyszenia aby tabela wewnętrzna nie dziedziczyła niczego
    > po rodzicu? Ta tabela wewnętrzna będzie używana w różnych miejscach kodu
    > HTML i nie chcę aby jakaś przypadkowa właściwość rodzica przedarła się do
    > jej wnętrza. Odpada więc stosowanie !important do każdego atrybutu stylu.

    .tabela > td {padding: 10px;} ?
    Uważaj na IE6, jeśli Ci jeszcze zależy...

    A ogólnie jeśli chodzi Ci o dziedziczenie z innych miejsc, to chyba
    musiał byś określić z góry wszystkie wartości dla tej wewnętrznej
    tabeli. Czyli z góry zdefiniować te wartości, które mogą być
    nadpisane... Albo zadbać o kod jak powyżej, tam gdzie będzie ona występować.

    P.S. Potrafisz uzasadnić sens zagnieżdżania tabeli? Nie wystarczy Ci jedna?

    --
    Pozdrawiam,
    Grzegorz Gawlik
    http://gregbike.carbonmade.com


  • 4. Data: 2011-11-16 08:53:21
    Temat: Re: CSS - jak przerwać dziedziczenie
    Od: Marek <p...@s...com>

    Dnia Wed, 16 Nov 2011 00:22:08 +0100, Gregbike napisał(a):

    > .tabela > td {padding: 10px;} ?
    > Uważaj na IE6, jeśli Ci jeszcze zależy...

    Nie :-) Skansenu nie prowadzę :-)

    > A ogólnie jeśli chodzi Ci o dziedziczenie z innych miejsc, to chyba
    > musiał byś określić z góry wszystkie wartości dla tej wewnętrznej
    > tabeli. Czyli z góry zdefiniować te wartości, które mogą być
    > nadpisane...

    No tak,... a jakie będą atrybuty stylu w CSS4, CSS5, CSS N abym je również
    tam uwzględnił ? :-)

    > Albo zadbać o kod jak powyżej, tam gdzie będzie ona występować.

    Na to nie mam wpływu :-( CVhodzi o stworzenie "obiektu" wyglądającego
    zawsze tak samo niezależnie gdzie się go osadzi.

    > P.S. Potrafisz uzasadnić sens zagnieżdżania tabeli? Nie wystarczy Ci jedna?

    Trzebaby przemyśleć i zastąpić ją np. DIVami. Pierwsza tablela zawiera
    wyniki wyszukiwania - jeden rekord na jeden wiersz (kolumny to parametry
    poszczególnych rekordów). Druga zaś ma być wycentrowana względem pierwszej
    i jest przełącznikiem między grupami wyników. Z pewnością nie da się tego
    zrobić na jednej tabeli.


  • 5. Data: 2011-11-16 09:04:05
    Temat: Re: CSS - jak przerwać dziedziczenie
    Od: Marek <p...@s...com>

    P.S.
    Taki selektor wyników stosują też Google w wynikach wyszukiwania. Kiedyś
    przerabiałem temat stosowania DIVów lecz występował jakiś problem. Nie
    pamiętam już jaki. Najprawdopodobniej otaczający całość DIV nie potrafił
    dostosować szerokości do swojej zawartości (przed epoką display:table) i w
    związku z tym nie dawało się go centraować itp.


  • 6. Data: 2011-11-16 13:56:37
    Temat: Re: CSS - jak przerwać dziedziczenie
    Od: Gregbike <g...@g...com>

    W dniu 2011-11-16 09:53, Marek pisze:
    > Dnia Wed, 16 Nov 2011 00:22:08 +0100, Gregbike napisał(a):
    >> .tabela> td {padding: 10px;} ?
    >> Uważaj na IE6, jeśli Ci jeszcze zależy...
    > Nie :-) Skansenu nie prowadzę :-)

    I bardzo dobrze, ale wolałem uprzedzić. Nie pamiętam też czy IE7 sobie
    radził...

    > No tak,... a jakie będą atrybuty stylu w CSS4, CSS5, CSS N abym je również
    > tam uwzględnił ? :-)

    Niestety gwarancji nigdy nie ma. Chcesz być pewny wyglądu elementu -
    wstaw go w innej technologii, np obrazku hyhyhy ;) a i tu nie ma
    pewności, że ktoś coś kiedyś...

    > Na to nie mam wpływu :-( CVhodzi o stworzenie "obiektu" wyglądającego
    > zawsze tak samo niezależnie gdzie się go osadzi.

    Hmm to może znany i nielubiany iframe? :) Nie znam dokładnie przypadku.

    >> P.S. Potrafisz uzasadnić sens zagnieżdżania tabeli? Nie wystarczy Ci jedna?
    > Trzebaby przemyśleć i zastąpić ją np. DIVami. Pierwsza tablela zawiera
    > wyniki wyszukiwania - jeden rekord na jeden wiersz (kolumny to parametry
    > poszczególnych rekordów). Druga zaś ma być wycentrowana względem pierwszej
    > i jest przełącznikiem między grupami wyników. Z pewnością nie da się tego
    > zrobić na jednej tabeli.

    A czy ten przełącznik to dane tabelaryczne? Bo wydaje mi się, że nie
    bardzo. Jeśli nie to odpowiedź nasuwa się sama...

    --
    Pozdrawiam,
    Grzegorz Gawlik
    http://gregbike.carbonmade.com


  • 7. Data: 2011-11-16 13:58:27
    Temat: Re: CSS - jak przerwać dziedziczenie
    Od: Gregbike <g...@g...com>

    W dniu 2011-11-16 10:04, Marek pisze:
    > P.S.
    > Taki selektor wyników stosują też Google w wynikach wyszukiwania.

    Google to akurat nadal kiepski wzór do naśladownictwa, jeśli chodzi o
    jakość kodu HTML. W wielkich korporacjach często jak by jakość kodu na
    ostatnim miejscu. Koszty i szybkość (wykonania) najważniejsza. Do tego
    dochodzi też zasiedziałość pracowników.

    > Kiedyś
    > przerabiałem temat stosowania DIVów lecz występował jakiś problem. Nie
    > pamiętam już jaki. Najprawdopodobniej otaczający całość DIV nie potrafił
    > dostosować szerokości do swojej zawartości (przed epoką display:table) i w
    > związku z tym nie dawało się go centraować itp.

    Wiele się zmieniło. Może warto spróbować na nowo?

    --
    Pozdrawiam,
    Grzegorz Gawlik
    http://gregbike.carbonmade.com


  • 8. Data: 2011-11-16 18:10:43
    Temat: Re: CSS - jak przerwać dziedziczenie
    Od: Marek <p...@s...com>

    Dnia Wed, 16 Nov 2011 14:58:27 +0100, Gregbike napisał(a):

    > Wiele się zmieniło. Może warto spróbować na nowo?

    Może i tak... jednakże kwestia sposobu na "przerywanie" niechcianego
    dziedziczenia nadal pozostaje aktualna. :-(


  • 9. Data: 2011-11-16 18:26:37
    Temat: Re: CSS - jak przerwać dziedziczenie
    Od: Marek <p...@s...com>

    Dnia Wed, 16 Nov 2011 14:56:37 +0100, Gregbike napisał(a):

    >
    >> Na to nie mam wpływu :-( CVhodzi o stworzenie "obiektu" wyglądającego
    >> zawsze tak samo niezależnie gdzie się go osadzi.
    >
    > Hmm to może znany i nielubiany iframe? :) Nie znam dokładnie przypadku.

    O rany, iframe :-D Budowanie strony z iframe'ów tylko po to aby przerwać
    dziedziczenie jest trochę dziwaczne. Taki iframe musiałby dostosowywać swój
    wymiar do zawartości - czyli zachowywać się jak zwykły tag typu <div>.
    Zresztą iframe korzysta z kodu innego skryptu (PHP) a nie tego, w którym
    jest osadzony a po drugie - kliknięcie na numerze strony rekordu musiałoby
    przeładowywać skrypt, który osadza ten "obiekt". Robi się to nieziemsko
    skomplikowane.

    Znasz dokładnie przypadek - opisałem Ci go i komentujesz to poniżej nawet.
    :-)

    > A czy ten przełącznik to dane tabelaryczne? Bo wydaje mi się, że nie
    > bardzo. Jeśli nie to odpowiedź nasuwa się sama...

    Wydaje mi się, że tabela jednowierszowa i wielokolumnowa to też tabela. Po
    drugie dane w niej są informacją sekwencyjną - coś w rodzaju rekordów z
    bazy danych. Można je więc uznać za tabelaryczne. Rozważania mogą
    doprowadzić do dwóch skrajnych wniosków bo również typowe dane tabelaryczne
    można próbować uznać za nie-tabelaryczne na bazie filozoficznych rozważań.


  • 10. Data: 2011-11-16 20:15:29
    Temat: Re: CSS - jak przerwać dziedziczenie
    Od: Peter May <p...@o...pl>

    W dniu 2011-11-16 14:58, Gregbike pisze:
    > W dniu 2011-11-16 10:04, Marek pisze:
    >> P.S.
    >> Taki selektor wyników stosują też Google w wynikach wyszukiwania.
    >
    > Google to akurat nadal kiepski wzór do naśladownictwa, jeśli chodzi o
    > jakość kodu HTML. W wielkich korporacjach często jak by jakość kodu na
    > ostatnim miejscu. Koszty i szybkość (wykonania) najważniejsza. Do tego
    > dochodzi też zasiedziałość pracowników.

    Skłaniałbym się raczej ku temu, że to nie wina pracowników, a tzw.
    "superwajzorów". To tam trafiają pomysły i są też akceptowane lub
    torpedowane. Z różnych względów, w tym także politycznych (wpływy w
    firmie), a także z braku znajomości czym jest "łeb" ( nie są "up to
    date" :-/ ).

    --
    Peter

strony : [ 1 ] . 2


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: