2010-12-05 5 views
1

Normalerweise arbeite ich an mehr Back-End-Sachen, also habe ich nie wirklich darüber nachgedacht, aber gestern arbeitete ich auf einer Website für einen Freund und nach einigem Frust fiel mir ein, dass es keinen Grund gibt, dass HTML-Dateien die einzigen sind kann serverseitig dynamisch generiert werden.Warum ist dynamic css nicht beliebter?

Ich sehe Leute reden über Javascript-Lösungen um Einschränkungen von CSS zu umgehen, aber warum kann das CSS nicht dynamisch "hart-codiert" werden?

Ich weiß, dass ich nicht der erste bin, der es erfunden hat, denn nachdem ich darüber nachgedacht habe, habe ich nachgeschaut und es gab einige Beispiele, aber keine Tonnen, und ich habe es auch hier auf StackOverflow nicht erwähnt.

Gibt es Nachteile im Vergleich zu Größenänderung Elemente mit JavaScript vor dem Laden der Seite? Irgendwelche anderen potenziellen Fehler, die ich beachten sollte?

Ich mache es in Django, aber die Frage ziemlich Framework/Sprache agnostisch.

Durch Fragen in der dynamischen -CSS-Tag hier sah ich {less} für Ruby, die ziemlich cool aussieht, aber insgesamt gibt es nicht viel reden über CSS-Dateien serverseitig generiert.

EDIT: Ich denke, einige Leute können verwirrt sein über die Absicht, was ich mit dynamischen CSS. Ich meine nicht, dass sich das aufgrund von Benutzerinhalten oder irgendetwas ändert. Dies ist ein Beispiel, das ich von gefunden, wie ein Bild zum Zentrum:

img {    
    position: absolute;    
    top: 50%; 
   left: 50%; 
   width: 500px; 
   height: 500px; 
   margin-top: -250px; /* Half the height */ 
   margin-left: -250px; /* Half the width */ 
} 

Das ist alles toll, aber das bedeutet, die Größe des Bildes in der CSS zu kennen. Außerdem bedeutet es einen anderen Eintrag für unterschiedlich große Bilder. Wenn die Höhe und Breite variabel waren und die Größe des Bildes serverseitig bestimmt wurde, wird es generischer und wiederverwendbar.

Ich bin sicher, es gibt andere Beispiele dafür, wo das hilfreich wäre, aber nicht mit css zu viel gearbeitet, das ist das erste, mit dem ich Probleme hatte, das gut mit dynamischem CSS funktioniert.

Darüber hinaus, wenn Leistung zu einem Problem wurde, bin ich mir sicher, dass es mit ein wenig Arbeit richtig zwischengespeichert werden konnte.

Antwort

1

Suchen Sie etwas wie Sass? http://sass-lang.com/

+0

+1 für Sass. Soweit es mich betrifft, ist es nur die ideale Lösung für dieses Problem. –

+0

Nicht wirklich eine Antwort auf die ganze Frage. –

+0

Ich bin nicht wirklich auf der Suche nach einer spezifischen Lösung, so sehr, warum die Technik nicht verwendet wird (oder zumindest darüber gesprochen). – Davy8

0

Ich denke, es ist eine ziemlich clevere Lösung, und obwohl viele anderer Meinung sind, hoffe ich, dass die Zukunft von CSS eher so aussehen wird. Allerdings ändern sich die Standards nur sehr langsam und obwohl es Frameworks wie "weniger" gibt, sind sie nicht weit genug verbreitet.

In gewissem Sinne ist es einfacher, eine Menge Dinge mit Javascript zu handhaben. Was ich damit meine ist, dass wenn Sie bereits Animationen oder andere Dinge mit JS machen, Sie auch alle Ihre dynamischen Änderungen damit machen könnten. Verwenden Sie eine Bibliothek wie jQuery und es wird nur besser.

0

Wir haben ein bisschen CSS gemacht, um die Internationalisierung zu unterstützen. Es gibt viele kleine Details in CSS, die sich entsprechend dem Gebietsschema ändern müssen, in dem Sie eine Seite bereitstellen: hauptsächlich Hintergrundbilder (die wir häufig für Navigationsschaltflächen verwenden und daher über Text verfügen) und Breiten von Formularbeschriftungen (die muss auf Deutsch viel größer sein - obwohl wir wirklich clevereres CSS verwenden sollten, um zu vermeiden, dass wir sie explizit dimensionieren müssen. Anstatt N verschiedene Stylesheets beizubehalten, haben wir eins, aber füllen die variablen Bits dynamisch aus Werten aus, die in einer Datenbank gespeichert sind.

2

Ich stimme dem zu, was andere geschrieben haben.HTML wird serverseitig erzeugt, weil der Inhalt dynamisch ist und niemand nach Facebook, Google, Youtube oder fast überall sonst gehen würde, wenn sie immer den gleichen HTML-Code hätten. Mit der serverseitigen Generierung können Sie Inhalte veröffentlichen und anzeigen, wenn sie von Benutzern bereitgestellt und verbessert werden.

CSS auf der anderen Seite, wird nur selten von anderen Nutzern beigetragen, und wenn es heißt, sie sind Web-Designer aufgerufen und erzeugen nur statische Themen oder Dateien und werden von dem Webseiten-Inhaber gezahlt. Es gibt einige Seiten, wo dies passiert, wie csszengarden, aber die Dateien sind immer noch statisch. Der Hauptunterschied besteht jedoch darin, dass die Benutzer nicht den Eindruck haben, dass ihr einziger Beitrag zu einer Website die Position von Elementen auf einer Seite und anderen Farben ist. Einer der ganzen Punkte von CSS ist Konsistenz. Hey, stackoverflow kann die css jedes Mal ändern, wenn jemand eine Antwort gepostet hat, alle Tasten verschieben und die ganze Seite in ltr ändern, anstatt nur anders html zu bedienen. Zu sagen, das wäre ärgerlich, wäre die größte Untertreibung des Jahrhunderts.

Allerdings glaube ich nicht, dass Sie danach gefragt haben. Der große Vorteil von dynamischem CSS ist wie erwähnt: Sie können es dynamisch hart codieren. dot-less-css hat einige großartige Beispiele auf seiner Homepage. Auf diese Weise können Sie CSS in einer einfacheren Zwischenform schreiben, wobei Farben in Variablen anstelle von ständig wiederholten, verschachtelten Regeln und anderen Features gespeichert werden, um das Codieren zu vereinfachen. Das sind Eigenschaften, die viele Programmierer gerne von allen Browsern unterstützen würden. Daher haben einige Leute das Bedürfnis geklärt und ihre eigenen Frameworks erstellt, um sie gemeinsam zu "hacken". Irgendwie sagen viele, JQuery ist, wie javscript die ganze Zeit funktioniert haben sollte.

Gibt es Schattenseiten zu dieser bevor die Seite geladen Ändern der Größe Elemente mit Javascript zu sagen verglichen? Irgendwelche andere potentielle Gotchas ich sollte bewusst sein?

Das größte Problem bei der dynamischen Größenanpassung ist, dass es schwierig und fehleranfällig ist. Wenn du es nicht richtig machst, kann es für dich und deine Zuschauer schmerzhaft sein. Wenn der coole dynamische Faktor den erheblichen Mehraufwand für Sie wert ist, dann machen Sie weiter. Wie Sie entscheiden, macht keinen großen Unterschied. Javascript ist mehr versucht und wahr, serverseitige dynamische CSS ist eine andere coole Möglichkeit, das gleiche zu tun. Es hängt davon ab, was Sie überzeugt sind und wie mutig Sie sind.

1

CSS neigt zwischengespeichert zu werden, so a) Caching von CSS müssen ausgeschaltet würde es im laufenden Betrieb zu erzeugen und b) viel mehr Server-Overhead erzeugen.

Ich nehme an, es ist ziemlich üblich, den CSS-Link in HTML im laufenden Betrieb zu generieren, je nachdem, welcher Browser anruft, aber immer noch auf eine der statischen CSS-Dateien zeigt.

Schließlich ist der eigentliche Grund, es Server generiert wird nicht wahrscheinlich, dass es in der Regel von einem Designer geschrieben, jemand nicht Back-End-Code zu tun, es ist nur eine Frage der Rollen.