| 

.NET C# Java Javascript Exception

1
Hi,
kann man in css irgendwie ein Farbschema definieren?
Also ich will an einer zentralen Stelle 6 Farben definieren und die css Klassen sollen das dann referenzieren.
Grüße ace

(Es handelt sich um eine ASP.NET Webforms-Anwendung)
22.09.2009
ace 31 1 2
5 Antworten
4
Du könntest einen Handler verwenden. Also anstatt "style.css" in Deine Seite einzubinden, schreibst Du Dir einen Handler (IHttpHandler) z.B. für die Datei style.axd und bindest die ein.

Beim Request auf style.axd lädst Du dann den Inhalt der style.css, ersetzt Variablen wie z.B. @ROTE_FARBE@ mit Werten aus der web.config oder ähnlichem und gibst den so veränderten Text als Response.OutputStream aus.

Die Frage ist allerdings, ob das performant ist...
22.09.2009
Kiko 541 1 3
Kiko 541 1 3
2
Wenn man ein paar Grundregeln beachtet und z.B. Caching und Last-Modified Header korrekt setzt, damit die Caching-Mechanismen des Browsers greifen können oder die einmal "compilierte" css-Datei zwischenspeichert und nur bei Änderungen an der Konfiguration oder der style.css diese neu generiert, dann sollte es auch mit der Performance klappen.
FalkP 22.09.2009
3
Ein Projekt das sich sowas vorgenommen hat ist LessCSS.

Ist zwar Ruby und wird nicht zur Laufzeit kompiliert, gibt dir aber vielleicht Anstöße, wie du sowas umsetzen kannst.
Die Idee von licht_micha aufgreifend: Wenn auch nicht mit PHP, so ist die automatische Generierung von CSS sicher möglich. Vor allem bei großen Mengen an Daten, ließe sich da per GET übergeben, welche Farben wo eingesetzt werden sollten.
Ob das performant ist, wäre jedoch zu bezweifeln.

Ein anderer Weg ist eine durchdachte CSS-Struktur. Eine Klasse im Body-Tag kann beispielsweise als Flag dienen. Zusätzlich zum eigentlichen CSS kämen dann noch Infos die nur greifen, wenn wenn die entsprechende Gesetzt ist, und nötige Änderungen an den Farben vornehmen.

Folgende HTML-Beispiel-Struktur:
<body>
<div id="header">
<p>Willkommen</p>
</div>
</body>


CSS dazu:
#header{
height:100px;
margin: 30px;
padding:30px;
border:1px solid #f00;
background-color:#000;
}
#header p{
color:#fff;
}

body.inverted #header{
background-color:#000;
}
body.inverted #header p{
color:#000;
}


Die letzten beiden Regeln bleiben unbeachtet, solange body keine Klasse besitzt.

Lautet das HTML aber:
<body class="inverted">
<div id="header">
<p>Willkommen</p>
</div>
</body>


Werden die Farben überschrieben. Aufteilung und Bilder bleiben erhalten.

Es kann sein dass, solche Farbschema-Regeln noch ein !important benötigen, um in jedem Fall das allgemeine CSS zu überschreiben.

Ich hoffe, das ist das was du dir vorgestellt hast.
bis dann
huckepick
22.09.2009
huckepick 887 2 8
2
Da asp.net alle Möglichkeiten bietet, Seiten dynamisch aufzubauen, sollte es möglich sein, in die Seite ein beliebiges Farbschema einzubinden. Ich empfehle, alle Farben in eine eigene css Datei auszulagen und für jedes Farbschema eine spezielle Datei zu erstellen. z.B.
css/skin/blau.css
css/skin/gruen.css
css/skin/rot.css
In die Seite wird dann dynamisch das gewählte Farbschema eingebunden.
22.09.2009
BeachBlocker 617 3
2
Es gibt zwar keine Variablen im CSS, aber in gewissem Rahmen kann man mit reinem CSS einen ähnlichen Effekt erzielen in dem man den entsprechenden Elementen mehrere Klassen zuweist, die man getrennt voneinander bearbeiten kann.

So lassen sich einzelne Eigenschaften über genau eine Klasse steuern, ohne dass man das komplette CSS anpassen muss. Dies erfordert natürlich eine saubere Zuweisung der Klassen.
25.09.2009
Vash 440 2 6
0
CSS unterstützt leider keine Variablen

Du könntest natürlich die CSS-Datei per php erstellen/parsen lassen.

oder manuell halt per suchen+ersetzten
22.09.2009
licht_micha 364 1 3
1
[quote]Du könntest natürlich die CSS-Datei per php erstellen/parsen lassen.[/quote]
Wie soll das gehen wenn es sich um eine ASP.NET Webforms-Anwendung handelt?
FalkP 22.09.2009
1
Wo ein Wille ist, ist auch ein Weg ;)
Kiko 22.09.2009

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH