[css] meerdere fontsizes i.c.m. baselinegrid in Firefox.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik gebruik voor mijn site een verticaal grid met een lineheight van 25px. Nu gaat dit prima (zie onderste screenshot), maar op het moment dat ik binnen een <li> tag een groter of kleiner font gebruik, dan gaat het in firefox fout (zie bovenste screenshot). Op één of andere manier verandert hij de line-height als er een font staat met een andere font-size.

Zijn er mensen die dit probleem vaker bij de hand hebben gehad? Is hier een oplossing voor?

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<!DOCTYPE HTML>
<html>
<head>
<title>Testje</title>
<style>
    * {
        margin: 0;
        padding: 0;
    }
    body {
        background-image:url(grid.gif);
        line-height: 25px;
        margin-top: 34px;
        margin-left: 200px;
    }

    li a {
        text-decoration: none;
        color: #000;
    }
    
    li {
        font-size: 15px;
    }
    li span {
        font-size: 10px;
    }
    

</style>
</head>

<body>
<ul>
    <li><a href="www.test.com">Category <span>(12)</span></a></li>
    <li><a href="www.test.com">Category <span>(12)</span></a></li>
    <li><a href="www.test.com">Category <span>(12)</span></a></li>
    <li><a href="www.test.com">Category <span>(12)</span></a></li>
    <li><a href="www.test.com">Category <span>(12)</span></a></li>
    <li><a href="www.test.com">Category <span>(12)</span></a></li>
    <li><a href="www.test.com">Category <span>(12)</span></a></li>
    <li><a href="www.test.com">Category <span>(12)</span></a></li>
    <li><a href="www.test.com">Category <span>(12)</span></a></li>
</ul>

</body>

</html>


Screenshot van het probleem:
Afbeeldingslocatie: http://pieterhofstra.com/test/screenshot_font-size.png

Screenshot als font-size wel gelijk blijft:

Afbeeldingslocatie: http://pieterhofstra.com/test/screenshot_normal.png

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Dit is normaal gedrag en volledig volgens de CSS spec:
CSS2.1 specification, 9.4.2 Inline formatting context:
A line box is always tall enough for all of the boxes it contains. However, it may be taller than the tallest box it contains (if, for example, boxes are aligned so that baselines line up).
De baselines van je 15px en 10px font lijnen standaard gelijk uit (vertical-align: baseline), maar bij de één gaat er een groter deel van de 25px line-height naar de top halfleading en bij de ander meer naar de bottom halfleading. De totale line box moet hoog genoeg zijn om alle inline boxes v/d individuele elementen op één tekst regel te bevatten en zal dus (iets) hoger dan 25px uitvallen.

Als je dit toch werkend wilt krijgen, zou ik eens proberen een 25px height op de li te zetten. De paar pixels extra leading op de complete line-box vallen dan in de overflow en de totale block-level box zal slechts 25px hoog zijn.

Acties:
  • 0 Henk 'm!

  • Zoefff
  • Registratie: September 2001
  • Laatst online: 22:13

Zoefff

❤ 

Dat is inderdaad een stom probleem, en helaas correct gedrag. Een vaste hoogte biedt inderdaad een oplossing, maar kan vervelend zijn als je niet van tevoren weet hoe hoog lijstelementen moeten worden (of bijvoorbeeld een dubbele hoogte moeten hebben).

Een andere oplossing is het aanpassen van de vertical-align van het kleine element naar 'bottom', maar dan is de uitlijning weer niet zoals je dit zou willen.

Zie ook deze snelle testcase die beide opties visualiseert.


FotoblogWerkaandemuur.nlMoestuincursus.nlTwitter


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45

Bosmonster

*zucht*

Kun je dat grid niet met borders oplossen op de li's? Dan hoef je ook niet alles op elkaar af te stemmen, maar gaat het automatisch.

[ Voor 42% gewijzigd door Bosmonster op 07-07-2010 15:57 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dank voor de oplossingen! Raar dat het zo werkt. Zo kan je nooit een goed baselinegrid gebruiken.... Ik weet het HTML is niet zo bedoeld bla bla bla... niet goed bla bla bla... maar ik wil het gewoon zo hebben ;-)

De oplossing met de 25px hoogte van de li kan jammer genoeg niet. Een li zou over 2 regels kunnen vallen (nu nog niet, maar ik zie het wel gebeuren).

En de vertical align bottom werkt idd prima, maar dan komen de cijfers allemaal iets hoger te staan. En als ik die dan met relatieve positionering wat lager zet dan gok ik dat dat voor elk besturingssysteem en font anders is...

@Bosmonster: Ik wil de lijnen uiteindelijk helemaal niet zichtbaar hebben. In de kolom ernaast staat echter tekst die ik gelijnd wil hebben met de links in de li.

Acties:
  • 0 Henk 'm!

  • v-d-P
  • Registratie: Maart 2010
  • Laatst online: 22:42
Kun je het probleem niet oplossen door op de kleine tekst ook een kleinere line-height te zetten? Zodanig dat linebox met die tekst binnen de linebox van de grote tekst valt. Je hoeft dan de vertical align niet aan te passen.

Acties:
  • 0 Henk 'm!

  • Zoefff
  • Registratie: September 2001
  • Laatst online: 22:13

Zoefff

❤ 

v-d-P schreef op zondag 11 juli 2010 @ 14:20:
Kun je het probleem niet oplossen door op de kleine tekst ook een kleinere line-height te zetten? Zodanig dat linebox met die tekst binnen de linebox van de grote tekst valt. Je hoeft dan de vertical align niet aan te passen.
Ah! Naar die oplossing was ik in mijn opzet ook al op zoek, maar in de snelheid hier overheen gekeken of niet helemaal goed opgelost? Anyway, als je aan het kleinere element een line-height van 1em meegeeft, dan is het probleem magisch opgelost!

Zie de derde variant in http://home.react.nl/~san...line-height-testcase.html :)


FotoblogWerkaandemuur.nlMoestuincursus.nlTwitter


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Raar dat dit zo werkt. Als ik de lineheight op 25px zet dan gaat 't op één of andere manier niet goed, maar bij 1 em wel. Hoe zou dat komen...

Naja, het werkt.

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Zoefff schreef op zondag 11 juli 2010 @ 17:52:
Anyway, als je aan het kleinere element een line-height van 1em meegeeft, dan is het probleem magisch opgelost!
Er is alleen iets 'magisch' aan als je geen besef hebt van hoe line-height werkt en je het toch gaat gebruiken. Op zijn beurt toont dit aan dat het je teveel moeite was om in de specificaties eerst op te zoeken hoe het werkte, of dat je ergens halverwege afhaakte omdat je het niet meer kon volgen. Leer technische specificaties lezen! Dat is wanneer je met web standaarden gaat werken een enorm belangrijke skill.
Verwijderd schreef op woensdag 14 juli 2010 @ 20:57:
Raar dat dit zo werkt. Als ik de lineheight op 25px zet dan gaat 't op één of andere manier niet goed, maar bij 1 em wel. Hoe zou dat komen...

Naja, het werkt.
1em wil zeggen '1x de huidige font grootte', in jouw geval: 10px. De tweede inline box van de geneste span wordt daarmee veel minder hoog, tot het punt waar deze binnen de eerste inline box valt en de totale line box dus niet meer buiten de 25px groot groeit. Volledig volgens de regels van de specificatie.

Acties:
  • 0 Henk 'm!

  • Zoefff
  • Registratie: September 2001
  • Laatst online: 22:13

Zoefff

❤ 

R4gnax schreef op woensdag 14 juli 2010 @ 22:19:
[...]
Er is alleen iets 'magisch' aan als je geen besef hebt van hoe line-height werkt en je het toch gaat gebruiken. Op zijn beurt toont dit aan dat het je teveel moeite was om in de specificaties eerst op te zoeken hoe het werkte, of dat je ergens halverwege afhaakte omdat je het niet meer kon volgen. Leer technische specificaties lezen! Dat is wanneer je met web standaarden gaat werken een enorm belangrijke skill.
Het woord 'magisch' was eigenlijk meer als grappige toevoeging bedoeld, jammer dat je dit verkeerd interpreteert. Want als er iemand zich bewust is dat er niets magisch is aan CSS dan ben ik het wel.

Je opmerking 'leer technische specificaties lezen' schiet me dan ook, zacht uitgedrukt, behoorlijk in het verkeerde keelgat. Ik denk dat het verstandig is om je niet uit te laten over het kennisniveau van andere gebruikers zonder dat je daar een daadwerkelijk juiste inschatting over kan maken.
[...]

1em wil zeggen '1x de huidige font grootte', in jouw geval: 10px. De tweede inline box van de geneste span wordt daarmee veel minder hoog, tot het punt waar deze binnen de eerste inline box valt en de totale line box dus niet meer buiten de 25px groot groeit. Volledig volgens de regels van de specificatie.
Het is jammer dat jij je dit, net zoals ik, niet in je eerste post realiseerde. Dan hadden we de topicstarter al veel eerder op het juiste pad kunnen helpen, maar dat is nu alsnog gebeurd.


FotoblogWerkaandemuur.nlMoestuincursus.nlTwitter


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jep het werkt helemaal goed... Het rare aan het geheel vond ik nietzozeer dat 1em werkt, maar eerder dat (bijv.) 10 px niet werkt. Tenminste, niet in mijn code.

@Zoefff: Volgens mij is iedereen wel eens chagrijnig, laten we het daar op houden ;-)

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Zoefff schreef op vrijdag 16 juli 2010 @ 13:53:
Je opmerking 'leer technische specificaties lezen' schiet me dan ook, zacht uitgedrukt, behoorlijk in het verkeerde keelgat. Ik denk dat het verstandig is om je niet uit te laten over het kennisniveau van andere gebruikers zonder dat je daar een daadwerkelijk juiste inschatting over kan maken.
Je hebt helemaal gelijk. Dat was inderdaad wel erg bot van me.

Die dag een baaldag gehad, juist omdat ik ook weet dat er niets 'magisch' aan CSS is. Ondertussen wel stoeien met voorgaand werk waar zaken onnodig met slechte copy&paste hacks aan elkaar hangen. Het raakte een beetje een zenuw toen ik de 'ik weet niet waarom, maar het werkt tenminste'-mentaliteit ook hier dacht tegen te komen.

Mijn welgemeende excuses. :)

Acties:
  • 0 Henk 'm!

  • Zoefff
  • Registratie: September 2001
  • Laatst online: 22:13

Zoefff

❤ 

Ok :)

[ Voor 37% gewijzigd door Zoefff op 17-07-2010 20:15 ]


FotoblogWerkaandemuur.nlMoestuincursus.nlTwitter

Pagina: 1