Gibt es ein Tool, das CSS in less.css konvertiert?


21

Ich habe eine ziemlich große CSS-Datei, die ich in weniger konvertieren möchte. Als ich das CSS geschrieben habe, wusste ich nicht less.css, aber jetzt möchte ich immer noch mein altes CSS verwenden.

Gibt es ein Tool, mit dem ich es automatisch konvertieren kann?


Siehe meine Änderungen unten.
Fatnjazzy

Sie sollten die Antwort von @Simone Carletti überprüfen und vielleicht etwas näher auf Ihre Fragen eingehen. Möglicherweise ist keine eigentliche "Konvertierung" erforderlich, außer der Umbenennung Ihrer Datei.
Su‘

Interessant, aber ich frage mich, ob es sich lohnt, 33 KB JS-Code (less.js) hinzuzufügen, um die Größe von CSS-Dateien zu verringern.
Marco Demaio

1
Ich benutze den JavaScipt-Compiler offensichtlich nicht. Und die Größe des CSS ist nicht der Grund, warum ich es benutze. Wartbarkeit ist der Grund. :)
js-coder

Antworten:



15

Tatsächlich benötigen Sie kein Konvertierungstool, um mit LESS zu arbeiten. Die LESS-Syntax ist abwärtskompatibel mit CSS . Das bedeutet, dass jede CSS-Datei auch eine gültige WENIGER-Datei ist.

Holen Sie sich einfach Ihr CSS und benennen Sie es in eine WENIGER-Datei um. Verwenden Sie dann WENIGER-spezifische Funktionen zusammen mit Ihren Änderungen. Je öfter Sie die Datei aktualisieren, desto mehr können Sie WENIGER Funktionen verwenden.

Ich habe dasselbe für SCSS und ein sehr großes Projekt mit 10 CSS-Dateien gemacht. Es war fast unmöglich (und eine enorme Zeitverschwendung), alles CSS mit SCSS neu zu schreiben. Ich habe es einfach umbenannt. Jedes Mal, wenn ich an der CSS-Datei arbeitete, führte ich ein kleines Refactoring des Codes durch, um Mixins, Variablen usw. zu nutzen.


Dies bringt einen wirklich guten Punkt. Die Antworten scheinen bisher auf dem „convert“ Teil der Frage konzentriert zu werden, tun Mixins etc. und nicht nur , ob die aktuelle Datei kann verwendet in einem Schalter auf LESS - Workflow.
,

6

Hast du dich wenigstens umgesehen? CSS kann viel besser konvertiert werden als Lessify. Insbesondere optimiert Lessify Ihre Klassen nicht sehr gut. Es kopierte die Zurücksetzung des Browsers auf alle generierten Mixins und erzeugte redundante Attribute. Es ist klar, dass es sich noch im experimentellen Stadium befindet. Keine der Dienstprogramme kann die Semantik bestimmen, sodass sie keine Werte in Ausdrücke, Variablen oder parametrische Mixins konvertieren können.

Am wenigsten optimiert es besser und scheint funktionaler zu sein. Es behandelt sogar Pseudoklassen für Sie:

http://toki-woki.net/p/least/

Diese Tools eignen sich ideal für die Arbeit mit großen, bereits vorhandenen CSS-Dateien. Ich empfehle die folgenden Schritte, um CSS in LESS zu konvertieren (stellen Sie sicher, dass Sie eine Kopie der ursprünglichen CSS-Dateien behalten):

  1. Wenn Sie mit mehreren additiven CSS-Dateien arbeiten, fügen Sie diese zu einer einzigen CSS-Datei zusammen. Dies stellt sicher, dass alles gemeinsam WENIGER und optimiert wird.

  2. Führen Sie den resultierenden CSS-Code über ein Online-CSS-Bereinigungsprogramm aus. Ich habe mit cleancss gute Ergebnisse erzielt: http://www.cleancss.com/ . Dadurch werden alle überflüssigen und redundanten Markups entfernt, die möglicherweise nicht von einem WENIGER-Konverter erfasst werden.

  3. Entfernen Sie @Media und alle Stile, die Sie in der CSS-Datei gespeichert haben. Sie können Probleme verursachen oder mögliche Redundanzen verursachen. Es ist wahrscheinlich eine gute Idee, die Resets in einer separaten Datei zu speichern.

  4. Fügen Sie die resultierende CSS-Datei in Least ein und beobachten Sie das Biest.

  5. Führen Sie Ihre Zurücksetzungen und @screen erneut ein.

  6. Nachdem Sie fertig sind, durchsuchen Sie jedes der Attribute und suchen Sie nach geeigneten Kandidaten für das Refactoring, um sie in WENIGER-Variablen und -Ausdrücke umzuwandeln. CSS-Farb- und Schriftattribute lassen sich am einfachsten ausklammern, einfaches globales Suchen und Ersetzen funktioniert problemlos. Am Ende können Sie entscheiden, ob Sie die einzelne Datei in kleinere logische Dateien aufteilen möchten. Möglicherweise werden Sie durch diesen Vorgang veranlasst, Ihre Dateien auf eine andere Weise neu zu organisieren.

Ich bin nicht der Autor von Least, sondern nur jemand, der nach einem ähnlichen Werkzeug sucht, und habe beschlossen, der Welt davon zu erzählen.


Verstehen diese Konverter nicht @import? Ich dachte, dass LESS in der Lage ist, @importAnweisungen zu analysieren und alle Ihre Stylesheets in einem einzigen CSS zu konsolidieren, wenn Ihre LESS-Dateien kompiliert werden. Es scheint, als würde das Speichern Ihres gesamten übersichtlichen CSS in einem einzigen riesigen Stylesheet, um es in WENIGER zu konvertieren, ein Rückschritt für die Wartbarkeit sein.
Lèse Majesté

Diese Tools sind zwar vorhanden, Sie müssen sie jedoch ausschneiden und in ein Textfeld einfügen, damit sie nicht auf Ihre externen Stylesheets zugreifen können.
Joel Rodgers

Ah, ich habe nicht wirklich auf die Links geklickt. Ich hatte angenommen, es handelte sich um Desktop-Tools. Das macht dann Sinn.
Majestätsbeleidigung

5

Ich glaube nicht, dass ein Konverter wissen kann, was Sie mit einem Großteil des Codes machen wollen.

Beispielsweise würde es nicht unbedingt wissen, welche Variablen Sie verwenden möchten. Oder wie man Mixins oder Funktionen generiert.

Ich denke, mit diesem müssen Sie es manuell tun.


Einverstanden. Hier ist eine gewisse Schlussfolgerung und Kenntnis Ihrer Absicht erforderlich, für die Computer einfach nicht geeignet sind. Sie werden in der Lage sein, einige Aufgaben zu automatisieren (siehe den Link von @dotweb) und möglicherweise Dinge wie Farbwerte in einer einzigen Variablen zu konsolidieren, aber das ist wahrscheinlich auch schon alles.
Su‘

Ja, aber die Konvertierung von WENIGER zu CSS ist eine 1 zu 1-Konvertierung, daher gibt es theoretisch einen Algorithmus, der optimierten WENIGER-Code aus CSS erstellen kann ... Jemand muss ihn nur schreiben.
Trusktr

Mixins können in beide Richtungen ausgeführt werden, da es für den Computer einfach ist, Selektoren zu sammeln, zu gruppieren und zu verschachteln. Glücklicherweise ist dies der langwierigste Teil der Konvertierung und dies ist berechenbar (siehe meine Antwort). Ungeachtet dessen kann CSS aufgrund der Kaskadierung anders gerendert werden als das ursprüngliche CSS. Variablen und Ausdrücke sind nicht möglich. Computer können Absichten oder Semantiken nicht bestimmen. Wie kann ein Computer herausfinden, dass Breite: 400 in CSS tatsächlich Breite: Seitenbreite / 2 in WENIGER ist? Ein Konverter könnte Farben und Schriftarten in Variablen konvertieren.
Joel Rodgers

@ JoelRodgers, warum impliziert die Kaskadierung von CSS, dass "Dekompilierer" fehlerhaft sein werden? (Offensichtlich ist ein Dekompiler möglicherweise fehlerhaft, aber im Prinzip ist es nicht schwer zu sagen, ob eine Neuordnung von Begriffen die Semantik ändert).
Peter Taylor

Ich spreche von Klassendeklarationen und Attributen. Sie müssen sie in genau der gleichen Reihenfolge deklarieren, da sonst unterschiedliche Ergebnisse erzielt werden. Schlechter Fehler, ich meinte verschachtelte Regeln anstelle von Mixins.
Joel Rodgers

3

Wie wäre es mit Suchen und Ersetzen?

wenn Sie haben color:#ffffffund Sie es ändern möchten@color

einfach suchen color:#ffffffoder color : #ffffffersetzen mit @color.

Normalerweise vertraue ich diesen Werkzeugen nicht.

Oder Sie können ein wirklich einfaches PHP-Skript schreiben, das damit umgeht.

Update 1 :
Oder Sie können die http://nex-3.com/posts/96-scss-sass-is-a-css-extension verwenden, die der Erweiterung less ähnelt und über ein Konvertierungstool verfügt.


Ja, darüber habe ich schon nachgedacht. Aber es ist eine ziemlich große Datei, daher möchte ich sicherstellen, dass dies der einfachste Weg ist. ;) Denken Sie an Mixins etc.

Oder Sie können ein wirklich einfaches PHP-Skript schreiben, das damit umgeht.
fatnjazzy

1
Sie werden kein Tool finden, das reines CSS zuverlässig in weniger Mixins konvertiert.
Alex

Du hast recht. Automatische Variablen und Mischen sind unsinnig.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.