Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[CSS] #define's?

Pagina: 1
Acties:
  • 109 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Weet je wat CSS nodig heeft? #defines, of iets wat er op lijkt.

Voornamelijk als het gaat over een consistent kleurenschema in je site houden, lijkt het me zo makkelijk om het volgende te kunnen doen (syntax verzin ik ter plekke):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define color1 #ABC
#define color2 #FF9eb3
#... etc...

body {
  background-color: {color1};
}

th {
  background-color: {color2};
  color: {color1};
}

...etc...


Oftewel: vaker voorkomende code uitfactoriseren. Dat is netter, en makkelijker te onderhouden. Door de definities bovenaan te veranderen kun je je hele kleurenschema zonder veel moeite aanpassen (in tegenstelling tot een zware search/replace).

Voor zover ik weet, bestaat zo'n feature nog niet. Of vergis ik me hierin?

Maar ik zou 'm wel verdomde fijn vinden...

  • coubertin119
  • Registratie: Augustus 2002
  • Laatst online: 24-11 11:42
Je kan dingen die per se dezelfde kleur nodig hebben toch combineren in 1 selector. Probleem opgelost.

En nee, deze feature is er nog niet, en staat ook niet gepland voor CSS3 voor zover ik weet.

Skat! Skat! Skat!


Verwijderd

Topicstarter
coubertin119 schreef op 12 augustus 2004 @ 17:22:
Je kan dingen die per se dezelfde kleur nodig hebben toch combineren in 1 selector. Probleem opgelost.

En nee, deze feature is er nog niet, en staat ook niet gepland voor CSS3 voor zover ik weet.
Ja, maar erg overzichtelijk is dat niet. En wat als je bij het ene element de voorgrondkleur gelijk wilt laten zijn aan de achtergrondkleur van een ander? Dat trek je niet met alleen selectors.

  • klokop
  • Registratie: Juli 2001
  • Laatst online: 20-11 11:52

klokop

swiekie swoeng

Ik juig dit van harte toe!
Tot nu toe is het altijd behelpen met een soort van mix van, in mijn geval PHP, en CSS, door de stylesheet bla.css.php te noemen, een header mee te geven, en daarin dan wat kleuren e.d. definieren, en 't ding te includen.

Zo dus ongeveer:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*dit is een stylesheet */
<?php
//ff een header meegeven, anders weet 'men' niet dat 't een css is.
Header ("Content-type: text/css");

//defineer wat variablen:
$color_a = '#000';
$bg_a = 'red';
?>
body {
  color: <?=$color_a;?>;
  }
a {
  background: <?=$bg_a?>;
  border-bottom: 1px solid green;
  }
/* tot zover de stylesheet */

"Passing silhouettes of strange illuminated mannequins"


  • Little Penguin
  • Registratie: September 2000
  • Laatst online: 08-06 20:43
Helaas kan ik hier niet direct het nut van inzien, zoals al eerder aangegeven is kun je veel doen met selectors.

Verder loop je al gauw het risico dat je meer ruimte kwijt bent met de definities terwijl je aan overzichtelijkheid niet veel wint.

De meeste winst is te behalen door goed over je HTML ontwerp (semantiek) na te denken, daarna heb je voor CSS geen voorgedefinieerde kleuren meer nodig, bij een goed HTML ontwerp zul je een element op je gehele site van dezelfde CSS code voorzien.

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Little Penguin schreef op 12 augustus 2004 @ 17:33:
De meeste winst is te behalen door goed over je HTML ontwerp (semantiek) na te denken, daarna heb je voor CSS geen voorgedefinieerde kleuren meer nodig, bij een goed HTML ontwerp zul je een element op je gehele site van dezelfde CSS code voorzien.
Zou je dat willen toelichten? Ik snap namelijk geen snars van wat je hier nu probeert te zeggen :? 8)7

Wat ik wel een fijne optie zou vinden is om niet telkens hele reeksen descendant/child/... selectors te moeten herhalen. Zeker bij wat uitgebreidere stylesheets wil dat nog wel eens een hell zijn om allemaal bij te houden. Bijvoorbeeld:
code:
1
2
#workspace div.newsfeature a { color: #000; }
#workspace div.newsfeature a:hover { color: #f00; }

Wordt dan iets als (*zuigt aan duim):
code:
1
2
3
4
5
#workspace div.newsfeature 
{
    a { color: #000; }
    a:hover { color: #f00; }
}

Of bestaat dat al en/of ben ik gewoon niet slim bezig? Kan ook :D

[ Voor 4% gewijzigd door Annie op 12-08-2004 18:01 ]

Today's subliminal thought is:


  • Blaise
  • Registratie: Juni 2001
  • Niet online
Je hebt toch gewoon iets als "Replace All" (Ctrl+H). Voldoet in de meeste gevallen prima.

Verwijderd

Annie, bestaat niet. Maar kan dat niet '#workspace a' worden? Of zitten er veel meer DIV elementen in die '#workspace'? Er zal wel wat optimalisatie mogelijk zijn.

Op www-style is echter meerdere malen duidelijk gemaakt dat CSS deze functionaliteit niet zal krijgen. Dit soort dingen kunnen een goede editor doen en daar hoeft CSS geen oplossing voor te vinden (het is immers geen programmeertaal). Een editor die hier ondersteuning voor heeft is topstyle.

  • Little Penguin
  • Registratie: September 2000
  • Laatst online: 08-06 20:43
Annie schreef op 12 augustus 2004 @ 17:58:
[...]
Zou je dat willen toelichten? Ik snap namelijk geen snars van wat je hier nu probeert te zeggen :? 8)7
Ik geef toe dat het woord 'semantiek' duur klinkt, maar wat ik bedoel is dat je eerst heel erg goed je document moet bestuderen en daarna het juiste HTML element moet kiezen.
De semantiek houdt zich bezig met de betekenis van symbolen
(Bron: nl.wikipedia.org)
Een voorbeeldje:
Een lijstje met links kun je in een tabel (table) stoppen, als je de links over 2 kolommen wilt verdelen - je misbruikt hierbij een tabel vanwege de eigenschappen die een table heeft. Je kunt echter ook een ongeordende lijst (ul) gebruiken en deze daarna via een stylesheet zo van opmaak voorzien dat er 2 kolommen ontstaan.

Zo'n lijstje van links ziet er dan als het volgt uit in HTML:
code:
1
2
3
4
5
<ul id="links">
  <li><a href="...">...</a>
  <li><a href="...">...</a>
  <li><a href="...">...</a>
</ul>


En de CSS hiervoor is:
code:
1
2
3
4
5
ul#links li {
  display:block;
  float: left;
  width:50%;
}


Je kunt nog verder gaan, maar dan ga ik te ver weg van het onderwerp - de topic starter denkt dat #defines toevoegen aan CSS noodzakelijk/gemakkelijk/wenselijk is terwijl ik denk dat door je documenten eerst goed te bestuderen en daarna het juiste HTML elementen te kiezen dit niet zo is. Ofwel: Dat CSS dan voor een heel erg groot deel voor staat.

Anne heeft in zijn Signature staan: "Standaarden zijn er op toegepast te worden" - ik denk dat het er vooral op gaat dat ze goed toegepast worden...

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

^^ Sorry hoor dat ik je post zo samenvat... Maar je bent of in het verkeerde topic of je begrijpt niet wat TS wilt :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Little Penguin schreef op 12 augustus 2004 @ 19:10:

Je kunt nog verder gaan, maar dan ga ik te ver weg van het onderwerp - de topic starter denkt dat #defines toevoegen aan CSS noodzakelijk/gemakkelijk/wenselijk is terwijl ik denk dat door je documenten eerst goed te bestuderen en daarna het juiste HTML elementen te kiezen dit niet zo is. Ofwel: Dat CSS dan voor een heel erg groot deel voor staat.
En stel je wilt een border, een achtergrondkleur, en een voorgrondkleur meerdere keren laten terugkomen, laten we het een 'color theme' noemen. Dan zou ik ook graag op één plek die kleur willen kunnen aangeven. XSL is ook een stylesheet taal, en die kent parameters, van buitenaf dus.

CSS is niet zo heel uitgebreid, dat is de zwakte van CSS. De taal laat niet veel toe, en er zijn veel te weinig properties beschikbaar. Maar ook CSS3 zal niet alle problemen van nu verhelpen.

Je kunt prima 'juiste' HTML schrijven, en dat vind ik zeer belangrijk, maar je kunt daar niet een paar tekortkomingen van CSS mee verhelpen.

  • Dark Blue
  • Registratie: Februari 2001
  • Laatst online: 19-11 13:12

Dark Blue

Compositionista!

Alpenmeisje

BtM909 schreef op 12 augustus 2004 @ 19:13:
[...]


^^ Sorry hoor dat ik je post zo samenvat... Maar je bent of in het verkeerde topic of je begrijpt niet wat TS wilt :)
Ik begrijp wel zeker wat hij bedoelt, hij wijkt alleen iets van het topic af.
Oké, semantisch verantwoord bezig zijn 8)7 klinkt moeilijk, maar het is wel waar. Als jij je divjes allemaal '#div1' '#div2' etc. noemt zul je ook je kleuren niet herkennen want dan moet je eerst je juiste divje erbij zoeken.

Er van uitgaand dat de TS zijn CSS al duidelijk heeft ingedeeld zijn de kleuren idd nog iets waar je best over kunt struikelen. Er zijn Hex codes die erg veel op elkaar lijken. Maar dat zie je dan echt wel direct aan je layout toch :D

Een find en replace lijkt me altijd nog het snelste gaan.

heidiulrich.nl | adventura.nl : rugzakavonturen | pathwise.nl : prepping geeks to get jobs


  • Little Penguin
  • Registratie: September 2000
  • Laatst online: 08-06 20:43
BtM909 schreef op 12 augustus 2004 @ 19:13:
[...]
^^ Sorry hoor dat ik je post zo samenvat... Maar je bent of in het verkeerde topic of je begrijpt niet wat TS wilt :)
Ik begrijp precies wat de TS wilt - maar ik probeer duidelijk te maken dat je dit ook op een andere manier kunt bereiken. Wellicht dat mijn voorbeeld niet zo handig gekozen is en nogal afdwaalt van de opmerkingen van de TS.

Als je de HTML goed ingericht hebt, dan heb je voor 90% aan algemene CSS selectors genoeg, en heb je die defines helemaal niet nodig omdat je de kleuren dan maar een paar keer definieert.

Verder kun je heel veel bereiken door Find & Replace...

  • Switch
  • Registratie: December 2001
  • Laatst online: 09-12-2024
klokop schreef op 12 augustus 2004 @ 17:28:
Ik juig dit van harte toe!
Tot nu toe is het altijd behelpen met een soort van mix van, in mijn geval PHP, en CSS, door de stylesheet bla.css.php te noemen, een header mee te geven, en daarin dan wat kleuren e.d. definieren, en 't ding te includen.

Zo dus ongeveer:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*dit is een stylesheet */
<?php
//ff een header meegeven, anders weet 'men' niet dat 't een css is.
Header ("Content-type: text/css");

//defineer wat variablen:
$color_a = '#000';
$bg_a = 'red';
?>
body {
  color: <?=$color_a;?>;
  }
a {
  background: <?=$bg_a?>;
  border-bottom: 1px solid green;
  }
/* tot zover de stylesheet */
Wat je nu dus hebt is dat je meer tekens intikt en meer moeite doet terwijl je gewoon 'red' kon invullen in plaats van '<?=bg_a?>;'. Eerlijk gezegt zie ik het nut niet in van jouw oplossing, of die van de TS. Is het nou zoveel moeite?

[ Voor 14% gewijzigd door Switch op 12-08-2004 19:43 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Little Penguin schreef op 12 augustus 2004 @ 19:38:
[...]

Ik begrijp precies wat de TS wilt - maar ik probeer duidelijk te maken dat je dit ook op een andere manier kunt bereiken. Wellicht dat mijn voorbeeld niet zo handig gekozen is en nogal afdwaalt van de opmerkingen van de TS.

Als je de HTML goed ingericht hebt, dan heb je voor 90% aan algemene CSS selectors genoeg, en heb je die defines helemaal niet nodig omdat je de kleuren dan maar een paar keer definieert.

Verder kun je heel veel bereiken door Find & Replace...
Je zegt dus 2 verschillende dingen:
1. Goed HTML gebruik en 2. Find & Replace werken ook

Opmerking 1 slaat dus nergens op... Ik heb stylesheets waar ongeveer 50 kleuren in kunnen zitten, dat ga ik niet kleiner maken met goed HTML / CSS gebruik hoor ;)

Ik zeg niet dat ik het met TS eens ben... Ik gebruik Topstyle en daarin heb je een overzicht van alle kleuren die je gebruikt. Het enige wat daar nog in mist, is het aanpassen van een kleur in een keer (tenminste, heb het nog niet gevonden).

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

* Anne dacht toch echt dat hij dat wel voor elkaar kreeg in z'n topstyle dagen

Anyway, 50 kleuren?!

O, en als je PHP gebruikt, geef dan ook gelijk even de 'charset' parameter mee.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op 12 augustus 2004 @ 20:27:
* Anne dacht toch echt dat hij dat wel voor elkaar kreeg in z'n topstyle dagen
Ik start Topstyle op and you're totally right!. Er zit gewoon een knopje Replace all in properties :D

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
[bijdehand]
Er zit ook gewoon een knopje replace all in kladblok :?

:+

edit: :(

[ Voor 17% gewijzigd door flashin op 12-08-2004 22:08 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

flashin schreef op 12 augustus 2004 @ 22:01:
[bijdehand]
Er zit ook gewoon een knopje replace all in kladblok :?

:+
[bijdehand back]
En wat als je alleen je border kleuren wilt wijzigen? ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
Ja, "Replace All" doet het wel, maar is voor mijn gevoel niet zo netjes. En het is ook niet duidelijk. Wat is nou duidelijker om je eraan te herinneren wat voor kleur je ook alweer aan het gebruiken was: "desat_maincol" of "#3e75bf" ?

Bovendien zou deze "feature" ook vast wel voor meer dingen te gebruiken zijn dan alleen kleuren (ik kan zo ff niks bedenken, maar ik ben nooit zo'n creatieve feature-misbruiker geweest :)).

Het lijkt er op dat de enige mogelijkheid om dit te bereiken het maken van een preprocessor is (bijvoorbeeld in PHP).

Misschien is het omdat ik oorspronkelijk een progammeur ben, maar ik vind het wel een gemis.

Verwijderd

Topicstarter
De daad bij het woord voegend heb ik nu maar een CSS preprocessor geschreven in PHP.

Op het moment verwerkt hij alleen nog #define's, maar ik ben van plan er in de toekomst conditionele preprocessor directives aan toe te voegen, zodat je ook bijvoorbeeld browser-afhankelijke CSS kan gaan specificeren:

code:
1
2
3
4
5
6
7
8
9
#if IE6
...
... Fix ie css quirks
...
#else
... 
... Andere css
...
#endif



Als iemand geïnteresseerd is, je kunt 'm hier downloaden (en even extensie aanpassen ;)).

Ik ben erg geïnteresseerd in eventuele feedback en/of bugreports.

  • Spruit_elf
  • Registratie: Februari 2001
  • Laatst online: 10-08 01:09

Spruit_elf

Intentionally left blank

ik ben opzich wel geintreseerd in een dergelijk systeem, want het bied namelijk een nieuwe dimensie aan css, dit is namelijk heem goed te gebruiken om templates te maken en dan dat je per template ook weer kan keizen uit een hoop kleuren schema's

net zoiets als bijvoorbeeld de winampskins, zie 1 css file als een skin die zegt waar alles moet komen qua layout en dan de #define regels, waarmee je templates kan maken zodat je van de zelfde layout meerdere kleurenschemas hebt.

hmm ideetje voor css4? :D
Verwijderd schreef op 16 augustus 2004 @ 16:58:
De daad bij het woord voegend heb ik nu maar een CSS preprocessor geschreven in PHP.

Op het moment verwerkt hij alleen nog #define's, maar ik ben van plan er in de toekomst conditionele preprocessor directives aan toe te voegen, zodat je ook bijvoorbeeld browser-afhankelijke CSS kan gaan specificeren:

code:
1
2
3
4
5
6
7
8
9
#if IE6
...
... Fix ie css quirks
...
#else
... 
... Andere css
...
#endif



Als iemand geïnteresseerd is, je kunt 'm hier downloaden (en even extensie aanpassen ;)).

Ik ben erg geïnteresseerd in eventuele feedback en/of bugreports.
ehm hoe gebruik ik dit? is dit een apache module? moet ik hem zelf nog compilen ?? wat kan ik hier mee?

edit: hmm php en dan? includen en de css aanroepen dmv dit script?

edit2: ik moet beter lezen, jah dus


hmmm werkt tot nu toe goed, geen vreemde dingen gezien, maar heb eigenlijk alleen nog een #define loze css file laten parsen

[ Voor 58% gewijzigd door Spruit_elf op 16-08-2004 17:48 ]

Those who danced were thought to be quite insane by those who could not hear the music.


Verwijderd

volgens mij hebben jullie het cascading idee van CSS nog niet helemaal door, je hoeft echt niet per element alles met 1 selector op te lossen, als verschillende dingen dezelfde kleur hebben ofzo gooi je die toch in 1 selector?

Cascading Stylesheet:
1
2
3
p.melp, h2, div#fiets, ul#mainmenu li {
   border-color: blue;
}

per element apart kan je dan nog eens aangeven hoe dik die border is en wat voor style enzo. Zo hoef je toch ook alle gemeenschappelijke dingen maar op 1 plaats neer te zetten

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 21:02

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Switch schreef op 12 augustus 2004 @ 19:41:
[...]


Wat je nu dus hebt is dat je meer tekens intikt en meer moeite doet terwijl je gewoon 'red' kon invullen in plaats van '<?=bg_a?>;'. Eerlijk gezegt zie ik het nut niet in van jouw oplossing, of die van de TS. Is het nou zoveel moeite?
Misschien was het bedoelt als een voorbeeld? Kortom, een echt gebruikt stylesheet kan zo 300 regels zijn waar bg_a veel vaker in voorkomt :)

Verwijderd

als je stylesheet 300 regels is heb je echt iets niet begrepen imho, groepeer dingen, maak slimme selectors en je bent echt al een heel eind op weg

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 20-11 21:40

Not Pingu

Dumbass ex machina

Voor niet-PHP kenners is het misschien handiger als je de term 'constants' gebruikt ipv. het PHP commando om een constant te declareren :)

Maar ik sluit me eigenlijk een beetje aan bij Little Penguin: als je je site goed ontwerpt heb je als het goed is nooit heel veel dezelfde kleurtoewijzingen nodig.

Bovendien is dit idee dan weer heel erg uitgaande van PHP. CSS werkt nou eenmaal niet zoals een programmeer- of scripttaal. Wat jij wilt is PHP denkwijze toepassen op CSS en nofi, maar dat komt denk ik toch door onervarenheid met CSS.

[ Voor 30% gewijzigd door Not Pingu op 16-08-2004 17:45 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Topicstarter
Verwijderd schreef op 16 augustus 2004 @ 17:26:
volgens mij hebben jullie het cascading idee van CSS nog niet helemaal door, je hoeft echt niet per element alles met 1 selector op te lossen, als verschillende dingen dezelfde kleur hebben ofzo gooi je die toch in 1 selector?

Cascading Stylesheet:
1
2
3
p.melp, h2, div#fiets, ul#mainmenu li {
   border-color: blue;
}

per element apart kan je dan nog eens aangeven hoe dik die border is en wat voor style enzo. Zo hoef je toch ook alle gemeenschappelijke dingen maar op 1 plaats neer te zetten
Ja. Dat heeft een paar belangrijke nadelen:
  • Als de kleur op verschillende elementen moet komen (bij de éne wordt het achtergrondkleur, bij de andere borderkleur en bij nog een andere tekstkleur), dan kom je er hier niet meer mee. Dan moet je dus nog die éne kleur 3 keer op gaan geven, en dat staat me een beetje tegen.
  • Zo'n selector lijst kan erg lang en onoverzichtelijk worden. Mwa, beetje een slap punt, maar het kan vervelend zijn.
  • Verschillende eigenschappen van hetzelfde element worden over de css file versnipperd. Als je divs hebt die een kleur eigenschap delen, dan moet je die kleur in een gezamelijk selector-blok zetten, en daarna voor elke div apart nog eens de niet-gedeelde stijlen gaan definiëren. Dat is vervelend combineren: alle eigenschappen van 1 logisch element staan niet bij elkaar in 1 blok, maar verspreid over X blokken afhankelijk van met hoeveel elementen ze die eigenschappen delen.

    Voorbeeld:
    code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    #div1, #div2 {
      background-color: Poop;
    }
    
    #div1 {
      font-size: x-large;
    }
    
    #div2 {
      font-size: small;
      color: Yellow;
    }


    is imho niet zo netjes als:

    code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    #div1 {
      background-color: POOP_COLOR;
      font-size: x-large;
    }
    
    #div2 {
      background-color: POOP_COLOR;
      font-size: small;
      color: Yellow;
    }
  • En in navolging van het vorige; naast het lezen ervan is het aanpassen van de selectors ook een vervelender werk. Als je iets aan een selector wilt veranderen (naam, nesting, verwijderen, noem maar op), dan is het vele malen makkelijker als dit op 1 plaats kan, en niet op X verschillende plekken door de file heen.
Nu valt er misschien wel aan te voeren dat dit allemaal gecompenseerd kan worden met een "goeie editor", maar imo is een flexe supereditor met compenseertruukjes geen substituut voor een goed ontworpen, leesbare taal en een all-purpose teksteditor.

Overigens zeg ik nu natuurlijk niet dat CSS slecht ontworpen is!

Verwijderd

Topicstarter
Gunp01nt schreef op 16 augustus 2004 @ 17:43:
Voor niet-PHP kenners is het misschien handiger als je de term 'constants' gebruikt ipv. het PHP commando om een constant te declareren :)
Um. Waar?

(En als je het over de '#define' syntax hebt, dat komt uit C en niet uit PHP, fyi)
Bovendien is dit idee dan weer heel erg uitgaande van PHP. CSS werkt nou eenmaal niet zoals een programmeer- of scripttaal. Wat jij wilt is PHP denkwijze toepassen op CSS en nofi, maar dat komt denk ik toch door onervarenheid met CSS.
Ik ben inderdaad van nature een programmeur. De principes die ik probeer te hanteren stammen niet per definitie uit PHP, maar zijn universeel over alle programmeertalen.

Het grootste goed in programmeren is het uitfactoriseren van "herhaling". Buiten haakjes halen, zo je wilt, zodat alles wat je wilt op 1 manier op 1 plek gespecificeerd wordt. Dat heeft het voordeel dat je code kleiner, duidelijker en beheersbaarder (makkelijker te begrijpen en aan te passen) wordt.

Bij het schrijven van HTML/CSS bekruipt me meer dan eens de gruwel dat ik aan het copy/pasten ben (*voeg toepasselijke rilling over rug hier in*), en dat is iets wat imho vermeden moet worden. In HTML gebeurt dit me ook, als bepaalde elementen van een pagina precies hetzelfde herhaald worden. Omdat de meeste sites die ik maak gegenereerd worden door PHP code op basis van templates, is het daar echter niet zo'n probleem, omdat ik met code kan zorgen dat ik alles maar één keer hoef te specificeren.

Bij CSS heb (had :p) ik die luxe echter niet, dus daar was copy/pasten de enige mogelijkheid. Bovendien leek CSS me ook in een ideale positie te verkeren om deze functionaliteit te introduceren, omdat het van nature sterk declaratief is (ipv. instructief). Helaas bestaat het dus niet, en zit het er ook niet aan te komen, dus dan gaan we zelf maar aan de gang met duct tape en tie-rips ;).

[ Voor 5% gewijzigd door Verwijderd op 16-08-2004 18:03 ]


Verwijderd

je eerste voorbeeld is imho juist veel duidelijker, je bent niet iedere keer dezelfde dingen aan het definieren. De kracht van css is juist dat je de eigenschappen kan groeperen en ook nog eens de elementen, net hoe het je het beste uitkomt, in het geval dat een bepaald stijlelement (een gemeenschappelijke kleur ofzo) meerdere keren terug komt, hoef je dat maar op 1 plaats te definieren. Ik denk dat je teveel als een programmeur denkt, zoals
Gunp01nt al aangaf. CSS is geen programmeer- (of script-) taal.

ook met CSS moet je zo weinig mogelijk hoeven te copy/pasten, als je dat moet doen heb je de mogelijkheden niet door. Je kan juist op verschillende manieren groeperen, dat maakt het juist zo handig.

[ Voor 17% gewijzigd door Verwijderd op 16-08-2004 18:04 ]


  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 21:02

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Verwijderd schreef op 16 augustus 2004 @ 17:41:
als je stylesheet 300 regels is heb je echt iets niet begrepen imho, groepeer dingen, maak slimme selectors en je bent echt al een heel eind op weg
Moet je even crisp aanspreken dat hij 'het niet heeft begrepen' want voor de nieuwe lay-out telt de CSS een hoop regels ;) (lees: imo zegt 300 regels niks over 'het begrijpen'). Ik denk dat een beetje behoorlijke site zoiets best kan hebben en hiervoor lijkt me zo'n soort define best handig.

[ Voor 7% gewijzigd door We Are Borg op 16-08-2004 19:42 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Grappige is dat CSS mede bedacht is om dit soort dingen uit HTML te halen.. Vroegah zat je ook te klooien als de custom kleur blauw vervangen werd door rood ;)

Ik ben het deels met de grootste deel posters eens (:P) dat je nu niet die efficiency slag nog een keer kan uitvoeren op een CSS bestand.

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Bovendien is dit idee dan weer heel erg uitgaande van PHP. CSS werkt nou eenmaal niet zoals een programmeer- of scripttaal. Wat jij wilt is PHP denkwijze toepassen op CSS en nofi, maar dat komt denk ik toch door onervarenheid met CSS.
Dus markup genereren met PHP is niet erg, maar style wel?

Verwijderd

Verwijderd schreef op 12 augustus 2004 @ 18:15:
Op www-style is echter meerdere malen duidelijk gemaakt dat CSS deze functionaliteit niet zal krijgen. Dit soort dingen kunnen een goede editor doen en daar hoeft CSS geen oplossing voor te vinden (het is immers geen programmeertaal). Een editor die hier ondersteuning voor heeft is topstyle.
Jammer dat er zo over wordt gedacht door de ontwikkelaars, ik vind beide voorstellen die zijn aangehaald erg goed. Het zou goed zijn voor de snelheid van het ontwikkelen, en de overzichtelijkheid van css bestanden.

Er valt op zich wel wat te zeggen over het punt dat je logica en presentatie wederom gaat samenvoegen, maar zoals Annie al aangaf, je hebt situaties waar je enorm veel descendants hebt. Je kunt een en ander verbeteren door korte benamingen te gebruiken voor classnames, maar in vooral grote layouts is dat niet bepaald handig voor je medecollega's die je werk moeten overnemen bij ziekte.

Bijvoorbeeld ul li li a.classname:event en dat evt nog genest in andere elementen, dat wordt gewoon lang :)

Met topstyle kun je dit inderdaad goed managen, maar veel mensen schrijven toch liever met het handje het hele bestand uit in een niet css editor.

Ik zou uit oogpunt van schone kleine code, iets zoals een css scripting language, evt vervuld door javascript wel waarderen. :)
Pagina: 1