Standaard CSS?

Status
Niet open voor verdere reacties.

Jori13

Gebruiker
Lid geworden
18 jan 2010
Berichten
159
Hallo,

Ik ben bezig met een BB-code parser. Het lettertype kan je bijvoorbeeld instellen met de [*font=...*] tags, dat vervangt hij dan door <font face="...">. Maar als ik nou de volgende BB code heb:

Code:
[*FONT*="Courier New"]Een tekst en een [*URL*=www.www.com]Link[/*URL*].[/*FONT*]

Interpreteert hij dit als:

HTML:
<font face="Courier New">Een tekst en een <a href="www.www.com">Link</a>.</font>

Dan wordt de het lettertype van normale tekst keurig 'Courier New' maar wordt de link 'Lucida Console', omdat ik in mijn .css bestand heb staan:

HTML:
a
    {
        font-family:    "Lucida Console", "Arial";
        font-weight:    normal;
        font-size:    10pt;
    }

Hoe kan ik er voor zorgen dat hij niet de stijl uit mijn .css bestand overneemt, maar van de bovenliggende tag <font face="Courier New">?


Alvast bedankt, Jori.
 
Laatst bewerkt:
Antwoord op je vraag weet ik niet direct, maar probeer het valid te houden door gewoon CSS te gebruiken:

Code:
[*FONT*="Courier New"]Een tekst en een [*URL*=www.www.com]Link[/*URL*].[/*FONT*]

wordt:

Code:
<span style="font-family: 'Courier New'">Een tekst een een <a href="www.www.com">Link</a></span>

Wat je eventueel zou kunnen doen (hele lelijke oplossing), is dit:

Code:
[*FONT*="Courier New"]Een tekst en een [*URL*=www.www.com]Link[/*URL*].[/*FONT*]

wordt:

Code:
<style type="text/css">
.dynamic1, dynamic1 * {
  font-family: Courier New;
}
</style>
<span class="dynamic1">Een tekst een een <a href="www.www.com">Link</a></span>
 
Hoi-hoi,
Ik zat een andere kant op te denken. Als ik het goed begrijp, zijn er op de pagina twee soorten teksten:
  1. de gewone teksten (met daarin de links in het Lucida Console-font), en
  2. de BB-teksten (waar [via BB_codes] eigen styles gehanteerd moeten kunnen worden, die niet overschreven mogen worden door algemene styles).
Dan lijkt me de voor de hand liggende oplossing: "isoleren die hap!" :)
Oftewel die pagina-delen waar wel een Lucida-link mag/moet komen, krijgen een extra selector (class, bijvoorbeeld). Dus niet:
Code:
a
    {
        font-family:    "Lucida Console", "Arial";
        font-weight:    normal;
        font-size:    10pt;
    }
maar:
Code:
.gewoontjes a 
    {
        font-family:    "Lucida Console", "Arial";
        font-weight:    normal;
        font-size:    10pt;
    }
Het BB-deel heeft dan niet deze class="gewoontjes", dus daar heeft een <a> niet automatisch een Lucida, en moet de <a> daar de fontfamily van zijn parent volgen.
Zo zou je gehoorzame kinderen moeten krijgen, dacht ik: de ouders opvoeden! ;)

Werkt dit in jouw geval?

Met vriendelijke groet,
CSShunter
_____________
PS:
Hé, zie ik daar in mijn ooghoeken een fixed font-size in punten? Strafpunten! :D

PS-2:
Als er niet een <div> op de juiste plek voorhanden is om de class="gewoontjes" aan vast te knopen, kan je die gewoon in een grote container gooien: om dat gedeelte heen waar de Lucida moet komen.
HTML:
<div class="gewoontjes">
... alles wat er al is
</div>
 
Laatst bewerkt:
Bedankt voor jullie antwoorden!

Ik zal de oplossingen uitproberen :p


PS:
Hé, zie ik daar in mijn ooghoeken een fixed font-size in punten? Strafpunten! :D

Ik begrijp je niet helemaal, volgens de CSS validator van w3 is dit geldige CSS :p.
 
CSShunter:
Hé, zie ik daar in mijn ooghoeken een fixed font-size in punten? Strafpunten! :D
Jori13:
Ik begrijp je niet helemaal, volgens de CSS validator van w3 is dit geldige CSS :p

Jahaa! Maar de css-validator gaat er van uit dat browsers de vereisten van de css-specificaties precies opvolgen.
En sinds de oertijd van de eerste css-specificatie doen ze dat niet allemaal helemaal...
Of om het anders te stellen: Internet Explorer komt maar héél langzaam in de buurt. Op PIE (Position Is Everything) staan de IE-bugs en andere IE-afwijkingen op een rijtje waar je niet echt vrolijk van wordt: www.positioniseverything.net/ie-primer.html en www.positioniseverything.net/explorer.html.

Het foutieve hanteren van de font-size eigenschap door IE is er daar één van. IE neemt het "fixed" heel letterlijk, en gaat daarmee regelrecht in tegen het principe dat de surfer baas moet kunnen zijn van de lettergrootte op zijn eigen computer. De css-validator kan daar niets aan doen, want die kan niet alle bugs en mis-interpretaties van alle browsers testen.
Voor de css-validator is het goed als een pagina aan de css-specificaties voldoet: niet meer en niet minder. En dat geeft dus nog geen garantie op een in alle browsers toonbare en bruikbare webpagina!
Ook op andere punten laten de validators het (noodgedwongen, ze kunnen niet alles) afweten als het gaat om de accessibility (toegankelijkheid) en usability (gebruiksvriendelijkheid) van websites.
Met vriendelijke groet,
CSShunter
 
Bedankt voor je uitvoerige antwoord.

Ik zal je antwoord zeker nog uitvoeriger lezen als ik tijd heb :).


@ErikBooy007, beide oplossingen werken niet :p. De browser (zowel IE als FF) blijven hardnekkig de CSS volgen.

De enige oplossing lijkt die van CSSHunter (of hoe je in het echt ook heet :)?), het enige nadeel is dat het erg veel tijd kost om alle honderden links van een CSS class te voorzien.

Groeten,
Jori.
 
Hoi Jori XIII,
het enige nadeel is dat het erg veel tijd kost om alle honderden links van een CSS class te voorzien.
Aha...
Maar kan mijn PS-2 uit reactie nr.#4 geen oplossing bieden?
  • Of heb je anders een voorbeeld-pagina online waar we de code met al die honderden links in kunnen zien?
Wie weet is er nog een andere oplossing - css is erg flexibel, of misschien moet er een beetje javascript aan te pas komen om te helpen (waarschijnlijk is javascript toch al noodzakelijk voor de pagina, dus voor <noscript> hoeft dan niets verzonnen te worden).

Met vriendelijke groet,
CSShunter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan