/css/ Bug w O7.50?

w dziale Opera
daroc napisał(a):

<a href="1.htm" style="border:solid 1px #000; padding:100px">jakiś tekst</a>

Obramowanie wychodzi poza górną krawędź ekranu...

UPDATE: Po dodaniu DTD transitional nic się nie zmienia...

Moose napisał(a):

URI?

M.

lockoom napisał(a):

Moose: po prostu wklej kod do edytora i zobacz co się dzieje.
Na pocieszenie dodam, że IE6 i Mozilla 1.6 zachowują się podobnie smile

daroc napisał(a):

Hm... natomiast IE4 bije rekordy... w przypadku taga <A> ignoruje zarówno padding, jak i border...

quiris napisał(a):

Wszystko jest w porządku. Proszę zauważyć, że zakoticzenie <a> jest elementem wewnętrznym (inline element) i do jako takiego padding jest przewidywalny tylko dla prawej i lewej strony dopełnienia. Oto co na ten temat pisze Eric A. Meyer w "CSS. Kaskadowe arkusze stylów. Przewodnik encyklopedyczny":

Dopełnienie ustawione dla elementów wewnętrznych nie wpłynie na obliczenia wysokości linii, ale zostanie dodane do prawego i lewego końca elementu. Jeśli element wewnętrzny oprócz dopełnienia ma także tło, to zostanie ono rozciągnięte nad i pod brzegiem pudełka linii, w której znajduje się element wewnętrzny, ale przeglądarki nie muszą tego obsługiwać. Nie ma także zdefiniowanego zachowania mówiącego, czy pierwszy plan zawartości poprzedniej linii znajdzie się na wierzchu tła kolejnej linii, czy zostanie zasłonięty przez tło.


No i test obrazujacy całą specyfikę zachowania: http://quiris.klub.chip.pl/testy/padinline.html

daroc napisał(a):

Aha... więc w takim wypadku trzeba dodać display:block (ew. +width) i będzie OK... smile

Dla dociekliwych: Do czego to miało służyć? Aby linki były wyższe niż tekst (w menu)...

lockoom napisał(a):

ot człowiek sie całe życie uczy smile W sumie ciekawe czemu tak to ma działać. Dlaczego dla elementów inline padding wpływa na szerokość a na wyskokość nie?

quiris napisał(a):

Dlaczego dla elementów inline padding wpływa na szerokość a na wyskokość nie?

Bo taka jest natura elementów wewnętrznych. Nie tworzą one nowych pudełek (boxes) z zawartością. Zwykły paragraf <p></p> jako element blokowy tworzy nowe pudełko z wieloma elementami wewnętrznymi. Gdy będziemy pisać wewnątrz tego paragrafu tekst to ten słowa tego teksty są również traktowane jako elementy wewnętrzne, tzw. anonimowe elementy wewnętrzne. http://www.w3.org/TR/CSS21/visuren.html#inline-level

lockoom napisał(a):

Heh, można z tym polemizować smile Choć ze specyfikacją się nie polemizuje smile Bo czemu w taki razie szerokość jest zwiekszana? Równie dobrze można by potraktować element inline z marginesem wewnętrznym górnym i dolnym jako "wyższy". W końcu elementy inline też mogą być różnej wysokości mimo, że nie tworzą boxów. Generalnie zawsze byłem przekonany, że margin i padding stosuje się tylko do elementów blokowych smile Cóż tak to wymyślili i nie ma co się z tym kłócić smile Jak dla mnie EOT.

quiris napisał(a):

W końcu elementy inline też mogą być różnej wysokości mimo, że nie tworzą boxów.

Zgadza się. Tylko zauważ, że wysokość elementów wewnętrznych jest określona nie przez właściwość height, ale poprzez właściwość line-height, która jest dla elementów wewnętrznych „święta”. Wysokość linii nie może być zależna od wartości dopełnienia, czy wartości marginesu.

BTW: Polecam lekturę ww. przez mnie książki. Mimo, że to wiekowa już pozycja (dostępne jest w tej chwili drugie, niestety tylko anglojęzyczne, wydanie tej książki) to nadal bardzo pożyteczna. Eric Meyer tłumaczy w niej wiele paradoksów CSS.