Ενημερώσεις

{less} is more

Προγραμματιστική λογική σε css;

Γιατί όχι; Πόσες φορές αλήθεια δεν ψάξατε μέσα σε ένα τεράστιο .css αρχείο για να βρείτε το χρώμα #3357FF και μετά κάνατε search and replace στον text editor για να το αντικαταστήσετε παντού; Πολλές; Ωραία, τότε συνεχίστε να διαβάζετε, γιατί με την less μπορούμε να έχουμε μεταβλητές, mixins (functions), operations (πράξεις) και nested rules όταν γράφουμε css. Ισχύουν όλοι οι συντακτικοί κανόνες που ξέρουμε για τα css και απλά προστίθενται μερικές ευκολίες προγραμματιστικής λογικής.

Μεταβλητές

Στο παραπάνω παράδειγμα αρκεί να έχουμε στην αρχή ενός .less αρχείου ορίσει μία μεταβλητή ως εξής:

 

@dark_color: #3357FF;

 

και μετά να το χρησιμοποιήσουμε όσες φορές θέλουμε π.χ.

 

div.important { 
	border: 5px solid @dark_color;
} 

 

 

div.emphasis { 
	color: @light_color;
	background: @dark_color;
}

 

Mixins (functions)

Ορίζουμε ένα mixin ως κλάση (που όπως βλέπετε μπορεί να δέχεται και μεταβλητές)...

 

.rounded_corners (@radius: 5px) { 
	-moz-border-radius: @radius; 
	-webkit-border-radius: @radius; 
	border-radius: @radius; 
}

και μετά το χρησιμοποιούμε πολύ απλά ως rule σε κάποιο άλλο αντικείμενο.

div.emphasis { 
	color: @light_color;
	background: @dark_color;
 
	.rounded_corners(15px); 
}

 

Nested rules

Μπορούμε να γράψουμε...

div.emphasis {
   color: @light_color;
   background: @dark_color;
 
   a {
       font-weight: bold;
   }
}

Αντί για...

div.emphasis { 
	color: @light_color;
	background: @dark_color; 
} 
 
div.emphasis a{ 
	font-weight: bold; 
}

 

 

Πείστηκα! Τί χρειάζομαι;

Έναν text editor για να σώνετε τα αρχεία σας σε .less και να χρησιμοποιείτε στο project σας ruby, php... ή javascript!

Ruby: http://lesscss.org/

PHP: http://leafo.net/lessphp/

Javascript: http://github.com/cloudhead/less.js

Και ένα σύντομο tutorial για τη less.js εδώ: http://net.tutsplus.com/tutorials/html-css-techniques/quick-tip-you-need-to-check-out-less-js/

Εν ολίγοις, τα .less αρχεία, θα πρέπει τελικά να μεταφραστούν σε καθαρό css κώδικα με μία από τις παραπάνω γλώσσες, είτε "on the fly" είτε "offline" πριν ανεβάσετε τα τελικά .css αρχεία στον server σας. Για όσους ανησυχούν για το overhead που μπορεί να υπάρχει στον σέρβερ "μεταφράζοντας" κάθε φορά τα .less αρχεία όταν φορτώνει μία σελίδα, υπάρχουν λύσεις. Για παράδειγμα αν χρησιμοποιείτε PHP μπορείτε με αυτό το scriptaki να δημιουργείτε χειροκίνητα τα .css αρχεία πριν τα ανεβάσετε. Απλά βάλτε το στο φάκελο με τα .less αρχεία μαζί με το less.inc.php και καλέστε το από το localhost.

Για ό,τι άλλο χρειαστείτε, εδώ είμαστε...

8 Ιουλ 10 - 6:10 // Bookmark and Share

11 Σχόλια

Εικόνα: lexx

Πάρα πολύ βολικό φαίνεται αυτό. Είδα ότι υπάρχει και αντίστοιχο module για drupal. http://drupal.org/project/less

Να προσθέσω ότι η js έκδοση του script είναι πολύ γρηγορότερη από το ruby και το php parser.

Πέμ, 2010-07-08 15:58
Εικόνα: fractalbit

Όντως έτσι λένε για τη javascript έκδοση αλλά εμένα μου έβγαζε error σε compatibility mode στον ΙΕ8, που σημαίνει ότι μάλλον δεν θα δουλεύει σε IE6 αλλά και IE7. Γι' αυτό προσοχή με τη javascript έκδοση όσο είναι ακόμα σε beta...

Πέμ, 2010-07-08 21:03
Εικόνα: PanosJee

Μόλις βγήκε και mac app http://incident57.com/less/
Παρατηρεί τα less αρχεία κάθε 4-5 δεπτερόλεπτα πχ και φτιάχνει το αντίστοιχο css

Το έχω χρησιμοποιήσει σε 1-2 rails projects και μου άρεσε πολύ γιατί μειώνει το verbosity και φυσικά να έχω όλα μου τα χρώματα σαν global μεταβλητές είναι killer

Πέμ, 2010-07-08 22:24
Εικόνα: lexx

Ήδη το χρησιμοποιώ σήμερα σε ένα νέο project και το βρίσκω καταπληκτικό!!

Παρ, 2010-07-09 00:22
Εικόνα: Ανώνυμος

πολύ καλή φάση. thanks for sharing.

Παρ, 2010-07-09 10:29
Εικόνα: Ανώνυμος

Δουλέυει και σε asp.net.
http://www.dotlesscss.com/

Σάβ, 2010-07-17 16:34
Εικόνα: Ανώνυμος

Χθες έπεσα πάνω σε αυτό (τελευταία παράγραφος):
http://fadeyev.net/2010/06/19/lessjs-will-obsolete-css/

H Less.js σου δίνει την δυνατότητα να κάνεις auto-refresh την CSS και μόνο τμηματικά.
Αρκετά χρήσιμο όταν δουλεύεις την εμφάνιση σελίδας με POST request και γενικά δυναμικά sites.

<script type="text/javascript" charset="utf-8">
	less.env = "development";
	less.watch();
</script>

Δεν κατάφερα να κάνω το watch() να δουλέψει σε Notepad++ και Win7, ας μας πει κάποιος αν το έχει δοκιμάσει.

Πέμ, 2010-07-29 14:59
Εικόνα: Ανώνυμος

Και απαντάω ο ίδιος, δουλεύει μόνο όταν βλέπεις την σελίδα από το path ("file:///") και όχι μέσω localhost.

Παρ, 2010-07-30 16:35
Εικόνα: lexx

2 πράγματα μου την σπάνε αυτή τη στιγμή. Όταν λειτουργώ με το firebug δεν παίζει καλά το line number και δεν εμφανίζει τα άδεια class, με αποτέλεσμα να είναι ολίγον δύσχρηστο.

Παρ, 2010-07-30 17:02
Εικόνα: fractalbit

Χρησιμοποιείς την js έκδοση? Μήπως θα ήταν προτιμότερη μια από τις server side λύσεις;

Τρί, 2010-08-03 02:31
Εικόνα: lexx

Χρησιμοποιώ την php!

Τρί, 2010-08-03 03:32

Πες μας την βασιλική σου γνώμη

Το περιεχόμενο αυτού του πεδίου παραμένει ιδιωτικό και δε θα εμφανίζεται δημόσια. If you have a Gravatar account, used to display your avatar.
  • Διευθύνσεις ιστού και e-mail μετατρέπονται αυτόματα σε παραπομπές.
  • Επιτρεπόμενες ετικέτες HTML: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <h2> <h3> <h4> <p> <img> <code> <blockquote>
  • Αυτόματες αλλαγές γραμμών και παραγράφων.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <c>, <cpp>, <css>, <drupal5>, <drupal6>, <html>, <java>, <javascript>, <php>, <python>, <robots>, <ruby>, <sql>, <xml>. The supported tag styles are: <foo>, [foo].

Περισσότερες πληροφορίες για τις επιλογές μορφοποίησης

© 2006-2010 Webz.gr | Designed by Alexander Lingris
Feedback