มีเครื่องมือที่แปลง css เป็น less.css หรือไม่


21

ฉันมีไฟล์ CSS ขนาดใหญ่ที่ฉันต้องการแปลงให้น้อยลง เมื่อฉันเขียน CSS ฉันไม่รู้จัก less.css แต่ตอนนี้ฉันยังต้องการใช้ CSS เก่าของฉัน

มีเครื่องมือที่สามารถช่วยให้ฉันแปลงเป็นอัตโนมัติหรือไม่?


เห็นการแก้ไขของฉันร้อง
fatnjazzy

คุณควรตรวจสอบการตอบสนองของ @Simone Carletti และอาจขยายสิ่งที่คุณขอเพียงเล็กน้อย อาจไม่จำเป็นต้องมี "การแปลง" ที่แท้จริงนอกเหนือไปจากการเปลี่ยนชื่อไฟล์ของคุณ
Su '

น่าสนใจ แต่ฉันสงสัยว่าควรเพิ่ม 33KB ของรหัส JS (less.js) เพื่อลดขนาดไฟล์ CSS หรือไม่
Marco Demaio

1
ฉันไม่ได้ใช้คอมไพเลอร์ JavaScipt อย่างชัดเจน และขนาดของ CSS ไม่ใช่เหตุผลที่ฉันใช้มัน การบำรุงรักษาเป็นเหตุผล :)
js-coder

คำตอบ:



15

ที่จริงแล้วคุณไม่จำเป็นต้องใช้เครื่องมือแปลงใด ๆ เพื่อเริ่มทำงานกับ LESS น้อยไวยากรณ์จะย้อนกลับเข้ากันได้กับ CSS หมายความว่าไฟล์ CSS ใด ๆ ก็เป็นไฟล์ LESS ที่ถูกต้องเช่นกัน

รับ CSS ของคุณและเปลี่ยนชื่อเป็นไฟล์ LESS จากนั้นใช้คุณสมบัติที่เฉพาะเจาะจงน้อยลงพร้อมกับการเปลี่ยนแปลงของคุณ ยิ่งคุณอัปเดตไฟล์มากเท่าไหร่คุณก็จะสามารถใช้คุณสมบัติ LESS ได้มากขึ้นเท่านั้น

ฉันทำเช่นเดียวกันสำหรับ SCSS และโครงการใหญ่มากที่มีไฟล์ CSS 10 ไฟล์ เกือบเป็นไปไม่ได้ (และเสียเวลามาก) ในการเขียน CSS ทั้งหมดด้วย SCSS ฉันเปลี่ยนชื่อมันจากนั้นทุกครั้งที่ฉันทำงานกับไฟล์ CSS ฉันจะทำการปรับโครงสร้างโค้ดใหม่เพื่อใช้ประโยชน์จากมิกซ์อิน, ตัวแปรและอื่น ๆ


นี่เป็นจุดที่ดีจริงๆ คำตอบที่ดูเหมือนจะมุ่งเน้นไปที่ส่วน "แปลง" ของคำถามทำ mixins ฯลฯ และไม่เพียงแค่ว่าไฟล์ปัจจุบันสามารถใช้ในการสลับไปยังเวิร์กโฟลว์น้อยกว่า
Su '

6

คุณดูที่น้อยที่สุดหรือไม่? มันดีกว่าที่จะแปลง CSS เป็น Lessify โดยเฉพาะอย่างยิ่ง Lessify ไม่ได้ปรับปรุงคลาสของคุณได้ดีมาก มันคัดลอกเบราว์เซอร์รีเซ็ตไปยังมิกซ์อินที่สร้างขึ้นทั้งหมดสร้างแอตทริบิวต์ซ้ำซ้อน เป็นที่ชัดเจนว่ายังอยู่ในช่วงทดลอง ยูทิลิตี้ทั้งสองสามารถกำหนดซีแมนทิกส์ดังนั้นจึงไม่สามารถแปลงค่าเป็นนิพจน์ vars หรือมิกซ์อินพาราเมตริก

อย่างน้อยก็ทำงานได้ดีขึ้นของการเพิ่มประสิทธิภาพและดูเหมือนว่าจะทำงานได้มากขึ้น มันยังจัดการ pseudoclasses สำหรับคุณ:

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

เครื่องมือเหล่านี้เหมาะอย่างยิ่งสำหรับการทำงานกับไฟล์ CSS ที่มีมาก่อน นี่คือขั้นตอนที่ฉันแนะนำให้แปลง CSS เป็น LESS (ตรวจสอบให้แน่ใจว่าคุณเก็บสำเนาของไฟล์ CSS ดั้งเดิม):

  1. หากคุณกำลังทำงานกับไฟล์ CSS เพิ่มเติมหลายไฟล์ให้รวมเป็นไฟล์ CSS ไฟล์เดียว สิ่งนี้ทำให้มั่นใจได้ว่าทุกอย่างได้รับการปรับปรุงน้อยลง

  2. เรียกใช้โค้ด CSS ที่เป็นผลลัพธ์ผ่านยูทิลิตี้การทำความสะอาด CSS ออนไลน์ ฉันได้มีผลดีกับ cleancss: http://www.cleancss.com/ สิ่งนี้จะลบมาร์กอัปที่ไม่เกี่ยวข้องและซ้ำซ้อนซึ่งอาจไม่ถูกใช้โดยตัวแปลง LESS

  3. ลบ @Media และสไตล์ใหม่ที่คุณมีในไฟล์ CSS พวกเขาอาจสร้างปัญหาหรือแนะนำซ้ำซ้อนที่เป็นไปได้ อาจเป็นความคิดที่ดีที่จะเก็บการตั้งค่าไว้ในไฟล์แยกกัน

  4. วางไฟล์ CSS ผลลัพธ์ลงใน Least และดูสัตว์ร้าย

  5. สร้างชุดรีเซ็ตและ @screen ขึ้นมาอีกครั้ง

  6. ตอนนี้คุณทำเสร็จแล้วไปยังแต่ละคุณสมบัติและหาผู้สมัครที่ดีสำหรับการ refactoring และเปลี่ยนพวกเขาเป็นตัวแปรน้อยและการแสดงออก คุณสมบัติ CSS สีและแบบอักษรเป็นสิ่งที่ง่ายที่สุดในการแยกตัวออกค้นหาทั่วโลกและเปลี่ยนได้ง่าย ในตอนท้ายคุณสามารถตัดสินใจได้ว่าคุณต้องการแยกไฟล์เดี่ยวออกเป็นไฟล์โลจิคัลที่เล็กกว่าหรือไม่ คุณอาจพบว่ากระบวนการทำให้คุณจัดระเบียบไฟล์ของคุณในวิธีที่แตกต่างกัน

ฉันไม่ใช่ผู้แต่งของ Least เพียงคนที่กำลังมองหาเครื่องมือที่คล้ายกันและตัดสินใจที่จะบอกให้โลกรู้เกี่ยวกับมัน


ตัวแปลงเหล่านั้นไม่เข้าใจ@importหรือไม่? ฉันคิดว่า LESS สามารถแยกวิเคราะห์@importงบและรวมสไตล์ชีททั้งหมดของคุณไว้ใน CSS เดียวเมื่อไฟล์ LESS ของคุณถูกคอมไพล์ ดูเหมือนว่าการทิ้ง CSS ที่จัดระเบียบอย่างเรียบร้อยของคุณทั้งหมดลงในสไตล์ชีตยักษ์เดียวเพื่อที่จะแปลงเป็น LESS นั้นจะเป็นการย้อนกลับไปเพื่อการบำรุงรักษา
Lèsemajesté

พวกเขาทำ แต่จำไว้ว่าเครื่องมือเหล่านี้มีอยู่ออนไลน์ดังนั้นคุณต้องตัดและวางลงในช่องข้อความดังนั้นมันจะไม่สามารถเข้าถึงสไตล์ภายนอกของคุณได้
Joel Rodgers

อ่าฉันไม่ได้คลิกที่ลิงก์ ฉันคิดว่ามันเป็นเครื่องมือเดสก์ท็อป มันสมเหตุสมผลแล้ว
Lèsemajesté

5

ฉันไม่คิดว่าจะมีวิธีใดที่ตัวแปลงจะรู้ว่าคุณต้องการทำอะไรกับโค้ดส่วนใหญ่

ตัวอย่างเช่นไม่จำเป็นต้องรู้ว่าคุณต้องการใช้ตัวแปรใด หรือวิธีการสร้างมิกซ์อินหรือฟังก์ชั่น

ฉันคิดว่าสิ่งนี้คุณจะต้องทำด้วยตนเอง


ตกลง มีการอนุมานและความรู้เกี่ยวกับเจตนาของคุณที่จำเป็นในจำนวนนี้ที่คอมพิวเตอร์ไม่เหมาะกับ คุณจะสามารถทำงานบางอย่างโดยอัตโนมัติ(ดูลิงก์จาก @dotweb) และอาจรวมสิ่งต่าง ๆ เช่นค่าสีให้เป็นตัวแปรเดียว แต่นั่นอาจเกี่ยวกับมัน
Su '

ใช่ แต่การแปลงจาก LESS เป็น CSS เป็นการแปลงที่ 1 ถึง 1 ดังนั้นในทางทฤษฎีแล้วมีอัลกอริทึมบางอย่างที่สามารถสร้างโค้ด LESS ที่เหมาะสมจาก CSS ... มีคนต้องการเขียนมัน
trusktr

Mixins สามารถไปได้ด้วยวิธีใดวิธีหนึ่งเนื่องจากเป็นการง่ายสำหรับคอมพิวเตอร์ในการรวบรวมและจัดกลุ่มตัวเลือกเข้าด้วยกัน โชคดีที่นี่เป็นส่วนที่น่าเบื่อที่สุดของการแปลงและนี่คือการคำนวณ (ดูคำตอบของฉัน) ไม่ว่าจะกำหนดลักษณะที่ลดหลั่นของ CSS อย่างไรมันอาจแสดงผลที่แตกต่างจาก CSS ดั้งเดิม ตัวแปรและนิพจน์เป็นไปไม่ได้ คอมพิวเตอร์ไม่สามารถระบุเจตนาหรือความหมายได้ คอมพิวเตอร์จะหาความกว้างนั้นได้อย่างไร: 400 ใน CSS เป็นความกว้างจริง: pagewidth / 2 ใน LESS มันจะเป็นไปได้สำหรับตัวแปลงเพื่อแปลงสีและแบบอักษรเป็นตัวแปร
Joel Rodgers

@JoelRodgers เหตุใดลักษณะที่เรียงซ้อนกันของ CSS จึงหมายความว่า "decompilers" จะเป็นบั๊กซี (เห็นได้ชัดว่า decompiler อาจมีบั๊ก แต่โดยหลักการแล้วมันไม่ยากเลยที่จะบอกว่าการเรียงคำศัพท์ใหม่จะเปลี่ยนความหมาย)
Peter Taylor

ฉันกำลังพูดถึงการประกาศในชั้นเรียนและคุณสมบัติ คุณต้องประกาศพวกเขาในลำดับเดียวกันแน่นอนมิฉะนั้นคุณจะได้ผลลัพธ์ที่แตกต่างกัน ความผิดพลาดที่ไม่ดีฉันหมายถึงกฎที่ซ้อนกันแทนมิกซ์อิน
Joel Rodgers

3

วิธีการเกี่ยวกับการค้นหาและแทนที่

ถ้าคุณมีcolor:#ffffffและคุณต้องการที่จะเปลี่ยนเป็น@color

เพียงค้นหาcolor:#ffffffหรือและแทนที่ด้วยcolor : #ffffff@color

ฉันมักจะไม่เชื่อถือเครื่องมือเหล่านี้

หรือคุณสามารถเขียนสคริปต์ PHP ที่ง่ายมากที่จัดการมัน

อัปเดต 1 :
หรือคุณสามารถใช้http://nex-3.com/posts/96-scss-sass-is-a-css-extensionซึ่งคล้ายกับน้อยกว่าและมีเครื่องมือแปลง


ใช่ฉันคิดเกี่ยวกับเรื่องนี้แล้ว แต่มันเป็นไฟล์ที่ค่อนข้างใหญ่ดังนั้นฉันต้องการแน่ใจว่านี่จะเป็นวิธีที่ง่ายที่สุด ;) คิดถึง mixins เป็นต้น

หรือคุณสามารถเขียนสคริปต์ PHP ที่ง่ายมากที่จัดการมัน
fatnjazzy

1
คุณจะไม่สามารถหาเครื่องมือที่แปลง CSS บริสุทธิ์ให้ใช้ mixins น้อยกว่าได้อย่างน่าเชื่อถือ
อเล็กซ์

คุณพูดถูก ตัวแปรอัตโนมัติและการผสมไม่มีความรู้สึก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.