tsevdos.com

Web design, internet news and blogging tips

Front-end development: Libraries, frameworks και άλλα εργαλεία

| Filed under css development inspiration javascript markup web design

H εποχή που με έναν απλό και ταπεινό text editor ξεκινάγαμε να γράφουμε από την αρχή τα πάντα έχει τελειώσει εδώ και πολύ καιρό. Πλέον για την δημιουργία ακόμα και του πιο απλού HTML template είναι σχεδόν υποχρεωτικό να χρησιμοποιήσουμε τουλάχιστον ένα CSS-reset καθώς και αρκετά javascript files, έτσι ώστε να προσθέσουμε συμβατότητα σε παλιότερους browsers, να ελέγξουμε τι υποστηρίζει ο κάθε browser κτλ κτλ. Παρακάτω περιγράφω τι διαδικασία, και φυσικά τα εργαλεία, libraries, scripts και snippets που χρησιμοποιώ σχεδόν σε κάθε νέο project, από το πιο μικρό μέχρι το πιο μεγάλο…

Markup

Ίσως το πιο εύκολο κομμάτι του puzzle. Μέχρι και πέρσι, συνήθως χρησιμοποιούσα ένα δικό μου template (βασισμένο σε Strict XHTML), ωστόσο μιας και προσπαθώ να το γυρίσω σε HTML5, πιάνω τον εαυτό μου να χρησιμοποιεί όλο και πιο συχνά το HTML5 boilerplate του Paul Irish. Το μόνο κακό που του βρίσκω είναι πως δεν μου φαίνεται και τόσο “boilerplate”, και συνήθως μου παίρνει αρκετή ώρα στο να διαγράφω αρχεία και κώδικα έτσι ώστε να το φέρω στα μέτρα μου. Σιγά-σιγά θέλω να φτιάξω και την δική μου λύση, ωστόσο μέχρι τότε το HTML5 boilerplate κάνει μια χαρά την δουλειά του.

CSS

Το πρώτο πράγμα που χρειάζομαι είναι ένα καλό CSS-reset. Αν η markup μου είναι HTML5, χρησιμοποιώ το HTML5 reset του HTML5 Doctor, αν όχι χρησιμοποιώ το παλιό καλό HTML reset του Eric Meyer . Πολλές φορές αν το project “βιάζεται”, χρησιμοποιώ και σαν βάση την τυπογραφία κάποιου έτοιμου CSS framework, συνήθως του Blueprint ή του HTML5 boilerplate. Τέλος, αν το project βιάζεται απελπιστικά ή θέλω κάποιο γρήγορο prototype εδώ και τώρα, χρησιμοποιώ και το grid system του Blueprint (είναι και το μόνο που έχω μάθει!). Τέλος, συνήθως περνάω και τα media queries του Andy Clarke αλλά και ένα print-only style που περιέχει όλη την βασική τυπογραφία για εκτύπωση, για να υπάρχουν (αργά ή γρήγορα θα χρειαστούν)…

Javascript

Και εφόσον κλείσαμε από markup και CSS το μόνο που μας μένει είναι η Javascript μας. Εάν το project έχει HTML5 markup, το html5shiv είναι το πρώτο “must” script που πρέπει να φορτώσουμε. Από εκεί και πέρα συνήθως περνάω το modernizr και το jQuery γιατί όλο και κάπου θα χρειαστούν. Τώρα τελευταία μου αρέσει πολύ σαν ιδέα και το selectivizr μιας και σε βοηθάει πολύ στο να κρατάς την markup σου ακόμα πιο καθαρή, ωστόσο μπορώ να ζήσω και χωρίς αυτό. Τέλος, υπάρχει πιθανότητα (πάντα ανάλογα το project και εάν ο πελάτης είναι περίεργος/φανατικός χρήστης IE) να χρησιμοποιήσω και το Respond.js, έτσι ώστε τα media queries να παίζουν και σε IE 6-7-8…

Αυτά τα λίγα σχετικά με το front-end κομμάτι των site. Όπως καταλαβαίνεται, ακόμα και μικρά projects μπορεί να θέλουν όλα τα παραπάνω και ακόμα περισσότερα για να στηθούν και να λειτουργήσουν όπως πρέπει. Τέλος αν κάποιος χρησιμοποιεί φανατικά κάποιο εργαλείο/library που δεν αναφέρω παραπάνω, ας αφήσει ένα σχόλιο έτσι ώστε το τεστάρουμε και εμείς…

Mobile app vs native app

| Filed under mobile web design

Ο τίτλος θα μπορούσε να είναι και “θέλω να φτιάξω ένα site που να παίζει σε όλους τους browsers, κινητά και tablets που υπάρχουν στην αγορά”. Δυστυχώς όμως μερικά πράγματα δεν γίνονται όσο μαγικά θέλουμε… Αλλά καλύτερα ας πάρουμε τα πράγματα από την αρχή. Το mobile web έχει μπει για τα καλά στην ζωή μας, μιας και μπορούμε πολύ εύκολα είτε με ένα smartphone είτε με ένα tablet να κάνουμε σχεδόν τα πάντα και μάλιστα ενώ είμαστε μακριά από το γραφείο μας. Η πλειοψηφία των παραπάνω συσκευών λειτουργεί με μόλις 2 λειτουργικά, το iOS της Apple που είναι ενσωματωμένο σε όλες τις συσκευές της (iPhone, iPad, κτλ.) και το Androind OS το οποίο είναι η πρώτη σοβαρή και open source επιλογή για τους υπόλοιπους κατασκευαστές.

Το πρόβλημα συνήθως ξεκινάει με το πως θα φαίνεται το site μας σε μια τέτοια συσκευή. Για κάποιο περίεργο λόγο, οι περισσότεροι χρήστες/πελάτες είναι αρκετά μπερδεμένοι, μιας και δεν ξέρουν τι λύσεις υπάρχουν (και υπάρχουν λύσεις για όλα τα budgets), ποια είναι τα πλεονεκτήματα και μειονεκτήματα τους, και γενικότερα επικρατεί μια σύγχυση για το θέμα, με αποτέλεσμα να δημιουργούνται προβλήματα και παρεξηγήσεις. Ελπίζω το παρακάτω άρθρο να ξεδιαλύνει κάπως το τοπίο έτσι ώστε να επωφεληθούμε όλοι. Σε αυτό το σημείο θα ήθελα να τονίσω πως δεν είμαι κανένας φοβερός mobile guru/expert, και ίσως κάπου κάνω λάθος, γι’ αυτόν τον λόγο όποιος έχει να συμπληρώσει/προσθέσει κάτι, απλά ας μου αφήσει ένα σχόλιο. Έχουμε και λέμε λοιπόν, το site μας μπορεί να εμφανιστεί στο smartphone/tablet μας με δύο τρόπους.

Web app

Επιλέγοντας αυτήν την λύση, εννοούμε πως θα χρησιμοποιούμε τον browser της συσκευής μας (smartphone/tablet) για να δούμε το site μας. Μια αρκετά απλή λύση μπορεί να είναι η χρήση κάποιων CSS queries (Responsive Web Design) έτσι ώστε το site μας να φαίνεται λίγο πιο μαζεμένο και optimised στις συσκευές (οθόνες) που έχουμε αποφασίσει να υποστηρίξουμε. Αυτό δεν σημαίνει πως μπορούμε να φτάσουμε μέχρι εκεί. Ανάλογα με τις ανάγκες του project, και φυσικά το budget του, το mobile site μπορεί να γίνει όσο πολύπλοκο θέλουμε, χρησιμοποιώντας όσο καλύτερα γίνεται τις δυνατότητες της συσκευής και του browser που μας παρέχει. Για παράδειγμα η Google (λόγω και του Android), αποφεύγει τις native εφαρμογές, προσφέρει όμως σχεδόν σε όλες της τις υπηρεσίες ειδικά διαμορφωμένες web εφαρμογές για κινητά και tablets (μπείτε στο Gmail από τον browser του κινητού σας και θα καταλάβετε τι εννοώ).

Τα πλεονεκτήματα μιας web app είναι αρκετά. Το πρώτο και σημαντικότερο είναι πως δεν χρειάζεστε κάποιο συγκεκριμένο SDK (όπως πχ. το iOS SDK) για να δημιουργήσετε την web εφαρμογή σας. Μπορείτε να χρησιμοποιήσετε web τεχνολογίες όπως HTML (HTML5 καλύτερα), CSS και Javascript! Σε αυτό το σημείο αξίζει να σημειώσω πως οι browsers των κινητών/tablet (των σοβαρών κατασκευαστών τουλάχιστον) είναι φοβερά εξελιγμένοι και με πολλά χαρακτηριστικά, πράγμα που σημαίνει πως ήδη υποστηρίζουν πολλά HTML5 και CSS3 καλούδια. Το δεύτερο πλεονέκτημα μιας web app είναι πως, αν είναι καλοσχεδιασμένη φυσικά (βλέπε Progressive enhancement, Responsive Web Design, κτλ. κτλ.), μπορεί να καλύψει την πλειοψηφία των συσκευών και των browser που υπάρχουν! Αυτό σημαίνει πως με μόλις μία εφαρμογή μπορεί να καλυφθούν όλα τα κινητά και tablets ανεξαρτήτου κατασκευαστή και λειτουργικού συστήματος. Τέλος ακόμα ένα πλεονέκτημα μπορεί να θεωρηθεί και η ανεξάρτητη διανομή, μιας και στην ουσία η εφαρμογή ζει στο web και όχι σε κάποιο store (o χρήστης απλά συνδέεται με την εφαρμογή χρησιμοποιώντας τον browser του). Χαρακτηριστικό παράδειγμα φοβερής web εφαρμογής που ήθελε να παρακάμψει το γνωστό για την εκκεντρικότητα του Apple App Store, είναι η εφαρμογή της Financial Times. Ρίξτε οπωσδήποτε μια ματιά από το κινητό σας και δείτε τι φανταστική δουλειά έχουν κάνει…

Τα μειονεκτήματα τώρα (ναι υπάρχουν και αυτά) έχουν να κάνουν κυρίως στο ότι δεν είναι εγγενής (native) εφαρμογή (τι έγραψα τώρα!). Οι web εφαρμογές λοιπόν, είναι συνήθως λίγο πιο αργές σε ανταπόκριση, μιας και στέλνουν σε έναν server κάποιο request και περιμένουμε απάντηση, ενώ συνήθως δεν έχουν και την “γυαλάδα” του native user interface. Επίσης οι web εφαρμογές μπορούν να κάνουν μόνο ότι μπορεί να καταλάβει ο browser της εκάστοτε συσκευής, δεν έχουν με άλλα λόγια πρόσβαση σε πιο advanced χαρακτηριστικά της συσκευής (όπως πχ. camera, GPS, πυξίδα, γυροσκόπιο, κτλ.).

Native app

Εγγενείς (native) εφαρμογές ονομάζουμε αυτές που τις κατεβάζουμε και της εγκαθιστούμε στην συσκευή μας από κάποιο store (πχ. App Store), είτε δωρεάν, είτε πληρώνοντας κάποιο χρηματικό ποσό. Η κάθε εφαρμογή έχει φτιαχτεί ειδικά για την συγκεκριμένη συσκευή, πράγμα που σημαίνει πως εκμεταλλεύεται πολύ καλά τα χαρακτηριστικά της εκάστοτε συσκευής, αλλά όπως καταλαβαίνεται πρέπει να γράψετε τουλάχιστον 2 διαφορετικές εφαρμογές (και να δουλέψετε με 2 διαφορετικά SDK) έτσι ώστε να δημιουργήσετε εφαρμογές για τα 2 βασικά λειτουργικά των κινητών/tablet (iOS και Android).

Τα πλεονεκτήματα και εδώ είναι αρκετά, με πρώτο και σημαντικότερο πως δεν χρειάζεται να είσαι συνδεδεμένος στο internet για να χρησιμοποιήσεις την εφαρμογή (εκτός φυσικά και αν αυτό είναι requirement της ίδιας της εφαρμογής). Το user interface και η απόκρισή είναι πολύ πιο γρήγορα και συνήθως πιο εντυπωσιακά από τα αντίστοιχα μιας web εφαρμογής, ενώ μπορούμε να χρησιμοποιήσουμε και όλα τα advanced χαρακτηριστικά της εκάστοτε συσκευής όπως camera, GPS, πυξίδα, γυροσκόπιο, κτλ. (εδώ την έχει πατήσει λίγο το Android μιας και οι κατασκευαστές εκτός από ότι είναι πολλοί, προσφέρουν και διαφορετικά χαρακτηριστικά στις συσκευές τους, πράγμα που δημιουργεί αρκετά προβλήματα στους developers).

Το βασικότερο μειονέκτημα τώρα, το ανέφερα και πιο πάνω, δεν είναι άλλο από το γεγονός πως η εφαρμογή είναι platform-dependent, που σημαίνει πως πρέπει να γράψετε την ίδια εφαρμογή για πολλές πλατφόρμες (τουλάχιστον 2), χωρίς να κάνω λόγο για τις υποπεριπτώσεις τους (όπως πχ. τις αλλαγές που μπορεί να υπάρχουν σε hardware χαρακτηριστικά πχ. retina display, ή εντελώς διαφορετικά hardware setup σε android συσκευές). Τέλος ένα μικρό μειονέκτημα μπορεί να θεωρηθεί και το γεγονός πως για να γίνει update η εφαρμογή, πρέπει να ξανά-ανέβει στο εκάστοτε store (αφού εγκριθεί κτλ .κτλ.), να την ξανά-κατεβάσει και να την ξανά-κάνει install ο εκάστοτε χρήστης (στην περίπτωση της web app το update είναι πολύ πιο άμεσο).

Αυτά τα λίγα περί web και native εφαρμογών για κινητά και tablets. Ελπίζω να ξεκαθάρισα λιγάκι το τοπίο, μιας και για κάποιο ανεξήγητο λόγο τα πράγματα είναι αρκετά μπερδεμένα! Αν κάποιος θέλει να συμπληρώσει κάτι, ας αφήσει απλά ένα σχόλιο…

CSS3 και βοηθητικά εργαλεία…

| Filed under css freebies how to

Δεν υπάρχει πιο καλή περίοδος από αυτήν για να αρχίσουμε σιγά-σιγά να χρησιμοποιούμε όλο και περισσότερους CSS3 κανόνες. Οι καινούργιοι browsers είναι αρκετά ώριμοι για κάτι τέτοιο, οι mobile  browsers βρίσκονται σε εξίσου υψηλό επίπεδο, ενώ στους παλιότερους δεν πρόκειται να χαλάσει τίποτα, απλά δεν θα “βλέπουν” τα καινούργια καλούδια (δεν πρόκειται να χαλάσει κάτι).

Το μόνο αρνητικό στην παραπάνω υπόθεση είναι πως στις περισσότερες περιπτώσεις είτε το συντακτικό είναι κάπως δύσκολο στην εκμάθηση (κάθε αρχή και δύσκολη), είτε χρησιμοποιούνται διάφορα browser prefixes για να λειτουργήσουν σωστά, είτε οι κανόνες είναι αρκετά “visual”, οπότε θέλουμε να βλέπουμε άμεσα στον browser το αποτέλεσμα, και όχι να προσπαθούμε να μαντεύουμε τις ρυθμίσεις.

Παρακάτω έχω μαζέψει κάποια online εργαλεία που χρησιμοποιώ για την γρήγορη επίλυση των παραπάνω περιπτώσεων. Έχουμε και λέμε λοιπόν :

  • CSS3 Please! : Ένα απλό αλλά πολύ περιεκτικό site για να αντιγράψετε εύκολα και γρήγορα τους CSS3 κανόνες που θέλετε (μαζί με όλα τα browser prefixes). Γρήγορο, minimal και “to the point”. Είναι συνήθως ο πρώτος μου σταθμός όταν ψάχνω κάποιο prefix για CSS3 κανόνα.
  • CSS3 Generator : Εξίσου καλό εργαλείο, ωστόσο μερικές φορές πρέπει να κάνεις κάποια click παραπάνω για να πάρεις αυτό που θέλεις…
  • Font Squirrel : Απλά το καλύτερο εργαλείο για μετατροπή γραμματοσειρών σε web fonts (@font-face). Δεν έχω χρησιμοποιήσει ποτέ μου άλλο εργαλείο γι’ αυτήν την δουλειά.
  • Layer Style : Ένα πολύ-εργαλείο που προσφέρει γραφικό περιβάλλον (σε στυλ “Photoshop”) για την δημιουργία των κανόνων μας, αλλά και live preview! Πολύ έξυπνη ιδέα και υλοποίηση, που θα βοηθήσει πολλούς γραφίστες και όχι μόνο…
  • Drop Shadow Generator : Πιο εξειδικευμένο στις σκιές, ωστόσο τα έτοιμα presets του είναι φανταστικά, ενώ μπορείτε να δείτε και σε live preview το πως θα φαίνεται η σκιά σας. Προσωπικά το χρησιμοποιώ συχνά γιατί δεν μπορώ να προβλέψω με τίποτα το πως θα φαίνονται οι σκιές στον browser!

Έχετε να προσθέσετε κάποιο άλλο εργαλείο, τότε απλά αφήστε ένα comment ;-)

Update : Προσθέτω ακόμα 2 πολύ καλά εργαλεία που συστήνει ο φίλος μου Γιάννης.

  • CSS3.0 Maker : Μια λύση “όλα σε ένα”, μιας και δημιουργεί κώδικα για τα πάντα, από border-radius μέχρι CSS animations. Μου αρέσει γιατί δείχνει και ποιοι browsers υποστηρίζουν τους CSS3 κανόνες.
  • Ultimate CSS Gradient Generator : Πολύ καλό εργαλείο για την δημιουργία gradients με πολλά presets και εύκολο UI.

CSS : Κληρονομικότητα (inheritance) και cascade

| Filed under articles css

Εάν θα μπορούσα να δηλώσω expert σε κάτι, αυτό θα ήταν σίγουρα το CSS. Δουλεύω με αυτό από την πρώτη του version και γενικά είναι μέρος της καθημερινότητας μου. Έχω γράψει άπειρες γραμμές σε πολύ μεγάλα αλλά και πολύ μικρά sites, και με ενθουσιάζει το γεγονός πως ένα τόσο φαινομενικά απλό πρότυπο, ζωντανεύει την markup μας. Στην προηγούμενη πρόταση γράφω “φαινομενικά απλό” γιατί το “γράφω CSS” από το “γνωρίζω CSS” έχει τεράστια διαφορά. Ένας γνώστης μπορεί να γράψει μέσα σε ελάχιστες γραμμές, αυτό που κάποιος newbie γράφει και ξαναγράφει! Το όλο μυστικό κρύβεται σε 2 χαρακτηριστικά του CSS που θέλουν λίγο χρόνο για να εξοικειωθείτε, η κληρονομικότητα (inheritance) και το cascade.

Στο παρακάτω αρθράκι λοιπόν, θα προσπαθήσω να εξηγήσω όσο καλύτερα γίνεται αυτά τα δύο χαρακτηριστικά του CSS, τα οποία ποτέ δεν μου εξήγησε κανείς και τελικά τα έμαθα με τον δύσκολο τρόπο (hard way που λένε και οι Εγγλέζοι). Το περίεργο είναι πως και ολόκληρα βιβλία αφιερωμένα στο θέμα, αποφεύγουν να τα εξηγήσουν αναλυτικά – μάλλον δεν θέλουν να γίνουν όλοι experts ;-) . Ας ξεκινήσουμε λοιπόν.

Κληρονομικότητα (Inheritance)

Γενικά δουλεύει όπως μπορείτε να φανταστείτε και όπως έχετε συνηθίσει και σε γλώσσες προγραμματισμού (αν έχετε ασχοληθεί τέλος πάντων). Είναι ο μηχανισμός με τον οποίο συγκεκριμένες ιδιότητες (properties) μεταφέρονται από το parent element στα “παιδιά” του. Είναι αρκετά εύκολο στην κατανόηση, και στην ουσία το μόνο πράγμα που προκαλεί μπέρδεμα είναι ποιες ιδιότητες (properties) κληρονομούνται τελικά, μιας και δεν κληρονομούνται όλες. Σε αυτόν τον πίνακα (κοιτάξτε την 5η στήλη) μπορείτε να δείτε ποιες από αυτές κληρονομούνται και ποιες όχι. Προσωπικά δεν τον θυμάμαι απέξω, άλλωστε δεν έχει και πολύ νόημα μιας και γιαυτό υπάρχουν οι DOM inspectros (όπως πχ. το firebug), ωστόσο κρατήστε πως ότι έχει να κάνει με fonts κληρονομείτε (γι’ αυτό και το declaration του font στο body είναι ο πιο σημαντικός CSS κανόνας ενός site).

Cascade

Η κληρονομικότητα όπως είδατε είναι αρκετά εύκολη στην κατανόηση. Ας εξηγήσουμε όμως και το Cascade το οποίο είναι κάπως πιο πολύπλοκο. Το Cascade (δεν νομίζω να μπορεί μεταφραστεί κάπως αξιόλογα στα ελληνικά) είναι ίσως το πιο δυσνόητο κομμάτι του CSS γιατί κρύβει αρκετή θεωρία από πίσω του, ωστόσο είναι και το πιο σημαντικό και γι αυτόν τον λόγο αποτελεί και την πρώτη λέξη του ακρώνυμου CSS (Cascading Style Sheets). To Casade λοιπόν αποτελείται από 3 βασικές έννοιες οι οποίες καθορίζουν πως το CSS θα εφαρμόσει τελικά τους κανόνες των style sheets μας. Οι 3 έννοιες είναι οι παρακάτω :

  • Importance (σπουδαιότητα)
  • Specificity (ειδικότητα)
  • Η σειρά που εμφανίζονται μέσα στον κώδικα

Και για να μην μπερδευτούμε ας τα πάρουμε ένα-ένα.

Importance (Σπουδαιότητα)

Η σπουδαιότητα έχει να κάνει με το που δηλώθηκε ο CSS κανόνας. Οι κανόνες που θα κάνουν conflict μεταξύ τους θα εφαρμοστούν με την παρακάτω σειρά, με τις νεότερες να υπερισχύσουν :

  1. User agent style sheets
  2. Κανονικοί style sheet κανόνες συγγραφέα (author)
  3. Κανονικοί style sheet κανόνες χρήστη (user)
  4. Σημαντικοί style sheet κανόνες συγγραφέα (author)
  5. Σημαντικοί style sheet κανόνες χρήστη (user)

Αλλά ας εξηγήσουμε λίγο τι είναι τα παραπάνω style sheets και από που έρχονται!

Λέγοντας user agent style sheets εννοούμε όλα τα ενσωματωμένα (default) style sheet του browser (πχ. margin/padding σε headers, παραγράφους, λίστες, χρώματα link, κτλ.).

Οι style sheet κανόνες συγγραφέα (author), είναι τα κλασικά style sheets που γράφουν οι web designers του εκάστοτε site.

Οι style sheet κανόνες χρήστη (user), είναι κάποιοι ειδικοί κανόνες που μπορεί να θέσει ο ίδιος ο χρήστης. Οι περισσότεροι browsers δεν επιτρέπουν τέτοιου είδους κανόνες, ωστόσο πιο ειδικοί browsers (πχ. για δυσλεκτικούς ή screen readers οι οποίοι επιτρέπουν κυρίως aural style sheets) δίνουν αρκετές επιλογές και δυνατότητες στον ίδιο χρήστη (και μάλιστα υπερτερούν!).

Τέλος, τα δύο τελευταία είδη style sheet, μπορούν να εφαρμοστούν είτε ως κανονικοί (normal) κανόνες, είτε ως σημαντικοί (important) κανόνες (πχ. p { font-size: 1em !important; }), με τους δεύτερους να είναι ισχυρότεροι από τους πρώτους.

Γενικότερα εμείς που ασχολούμαστε με την κατασκευή web sites δεν έχουμε να κάνουμε και πολλά πράγματα με την σπουδαιότητα, γιατί πολύ απλά δεν είναι στο χέρι μας, ωστόσο θα πρέπει να έχουμε στο μυαλό μας τι style sheets δέχεται ένα document, τι είναι τα user agent style sheets, ή πως λειτουργεί ο !important κανόνας.

Specificity (ειδικότητα)

Η ειδικότητα είναι το πιο σημαντικό κομμάτι του cascade, και αυτό που πρέπει να κατανοήσει ο κάθε web designer. Ο γενικός κανόνας είναι σχετικά απλός, όσο πιο συγκεκριμένος (ειδικός) είναι o selector ενός κανόνα, ο συγκεκριμένος κανόνας υπερισχύει! Αν και είναι εύκολο και λογικό, κάποιος νέος στον χώρο μπορεί να χάσει πολύ εύκολα την μπάλα σε ένα πολύπλοκο έγγραφο (document), και να καταντήσει να γράφει ξανά και ξανά τα ίδια πράγματα.

Ο πιο συγκεκριμένος selector, ο οποίος αναιρεί όλους τους άλλους, αλλά δεν πρέπει να χρησιμοποιούμε ποτέ, είναι το style attribute σε οποιοδήποτε element. Δεν το χρησιμοποιούμε για να μην μπλέκουμε την markup με τα styles, και για πολλούς άλλους λόγους που έχουμε εξηγήσει σε άλλα posts. Από εκεί και πέρα έχουμε ένα περίεργο point system για το κάθε selector, το οποίο παίζει ως εξής:

  • Το κάθε element (ή pseudo-element) που εμφανίζεται στον selector μας παίρνει 1 βαθμό
  • Η κάθε κλάση (class) που που εμφανίζεται στον selector μας παίρνει 10 βαθμούς
  • Το κάθε id που εμφανίζεται στον selector μας παίρνει 100 βαθμούς

Εδώ μπορείτε να βρείτε και μια πιο χιουμοριστική εξήγηση του point system που περιγράφω, ωστόσο με τα παρακάτω παραδείγματα του πίνακα, πιστεύω πως θα καταλάβετε καλύτερα το πως δουλεύει.

Το Point system της ειδικότητας (specificity)
Selector id class element Specificity
p 0 0 1 001
.class 0 1 0 010
p.class 0 1 1 011
#id 1 0 0 100
#id .class 1 1 0 110
#id p.class 1 1 1 111
p a 0 0 1+1 002
.classa .classb 0 1+1 0 020

Κάπως έτσι υπολογίζεται το specificity και ο selector με τον μεγαλύτερο αριθμό υπερτερεί.

Η σειρά που εμφανίζονται μέσα στον κώδικα

Τι γίνεται όμως όταν 2 κανόνες έχουν ακριβώς το ίδιο specifity; Για παράδειγμα :

.nav a { color:green; }
.nav a { color:red; }

Και οι 2 παραπάνω selectors έχουν 011, ωστόσο όλοι οι browsers θα κάνουν rendering τα links με κόκκινο χρώμα για τον πολύ απλό λόγο πως ήταν ο πιο πρόσφατος κανόνας που συναντήθηκε. Το μόνο που πρέπει να έχουμε υπόψη μας εδώ είναι πως εάν έχουμε πολλά style sheets η σειρά που φορτώνονται έχει σημασία, οπότε το προσέχουμε και αυτό.

Αυτά τα λίγα για την κληρονομικότητα (inheritance) και το cascade. Ελπίζω να ξεκαθαρίσατε κάποια πράγματα που έχουν να κάνουν με την θεωρία που κρύβεται πίσω από το CSS, η οποία πολλές φορές δεν αναφέρεται και δεν εξηγείτε όπως θα έπρεπε.

CSS3 και CSSS

| Filed under css inspiration web design

Δεν ξέρω πόσοι από εσάς το πείραν χαμπάρι, αλλά η “δική” μας Λία ήταν ομιλήτρια στο τελευταίο Front-Trends Conference, το οποίο έγινε στην Βαρσοβία. Περισσότερα για τo θέμα μπορείτε να διαβάσετε στο post της (πάντα στα αγγλικά), ωστόσο εάν ασχολείστε έστω και λίγο με το web – και για να διαβάζετε αυτό το blog μάλλον ασχολείστε – πρέπει οπωσδήποτε να παρακολουθήσετε την παρουσίαση της ή ακόμα καλύτερα να την κατεβάσετε! Προσωπικά πιστεύω πως είναι μια από τις καλύτερες και πιο επεξηγηματικές παρουσιάσεις για το τι είναι το CSS3, τι λύσεις δίνει και τι νέες δυνατότητες παρέχει σε όλους εμάς. Καιρό είχα να παρακολουθήσω μια τόσο καλοφτιαγμένη και δομημένη παρουσίαση, και για να πω την αλήθεια στεναχωρήθηκα που δεν κατάφερα να την δω live, ωστόσο ελπίζω ακόμα σε κάποιο video της παρουσίασης…

Πέρα από αυτό και για τις ανάγκες της ίδιας της παρουσίασης, η Λία δημιούργησε και το δικό της slideshow system το οποίο ακούει στο όνομα CSSS. Όπως εύκολα καταλαβαίνει κάποιος στηρίζεται κυρίως σε CSS3 χαρακτηριστικά (και Javascript φυσικά), ενώ μπορεί να το κατεβάσει και να το  χρησιμοποιήσει ο καθένας για τις παρουσιάσεις του (απορώ ποιοι χρησιμοποιούν ακόμα Powerpoint!). Και πάλι συγχαρητήρια και μακάρι να δούμε ανάλογου επιπέδου events και στην Ελλάδα (αν και το βλέπω πάρα πολύ δύσκολο)…

Τα καλύτερα links – Δεκέμβριος 09

| Filed under links

Το συγκεκριμένο post θα είναι και το τελευταίο της σειράς, μιας και τα αγαπημένα μου links θα δημοσιεύονται πλέον κατευθείαν στον twitter λογαριασμό μου (ναι είναι ενεργός επιτέλους)! Καλή χρονιά σε όλους και μην ξεχάσετε να με ακολουθείτε στο twitter ;-)

Έμπνευση

  • Wolfram|Alpha : Μια νέα, πολύ εντυπωσιακή που πολλές φορές καταντάει και τρομακτική search engine. Δείτε οπωσδήποτε και το τρομακτικό video της

Web Design

  • Easy- front end framework : Ακόμα ένα CSS framework το οποίο προσφέρει πολλές “out of the box” javascript λύσεις (με την βοήθεια του jQuery).
  • Clearbox 3 : H καινούργια version είναι ακόμα καλύτερη…
  • Markup Generator : Ένας καινούργιος τρόπος γραφής markup. Θα ήθελα να το δω και σε text-editors/IDEs, μιας και θα με βόλευε πολύ…
  • Google Browser Size : Για να βλέπεται πως φαίνεται το site σας σε διάφορες αναλύσεις. Ίσως το μοναδικό Google εργαλείο για sites που δεν με εντυπωσίασε ιδιαίτερα…
  • @font-face Generator : Το καλύτερο εργαλείο που έχω βρει μέχρι στιγμής για την μετατροπή, αλλά και το editing web γραμματοσειρών. Γενικότερα το Font-Squirrel κάνει φανταστική δουλειά στα web fonts

Web Development

  • IxEdit : Ένα φανταστικό εργαλείο για την συγγραφή jQuery κώδικα, κατευθείαν μέσα στην ιστοσελίδα και μέσω γραφικού περιβάλλοντος! Θεωρητικά δεν χρειάζεται να ξέρετε καν jQuery! Τι άλλο θα δούμε…
  • BackPress : Μια PHP library που θα απλοποιήσει πολλά tasks. Την χρησιμοποιούν πολλά γνωστά open source projects όπως το WordPress και το bbPress.

Tools

  • Screenpresso : Ένα δωρεάν εργαλείο για screenshots με πολλά χαρακτηριστικά.  Είναι από τα καλύτερα που έχω δει (ειδικά σε λειτουργικό Windows, στο οποίο τέτοια εργαλεία είναι λιγότερα και με ελάχιστα χαρακτηριστικά)…
  • Ένα δωρεάν Sketching & Wireframing Kit, διαθέσιμο σε πολλά διαφορετικά formats (PDF, EPS, SVG κτλ.).

Accessibility/Usability

  • To WAVE (όχι της Google, βγαίνει από τα αρχικά  Web Accessibility Evaluation Tool), είναι μια δωρεάν υπηρεσία αξιολόγησης προσβασημότητας, κατασκευασμένη από το WebAIM.

WordPress

  • Το Carrington αυτοαποκαλείται CMS theme Framework για το WordPress. Η ιδέα είναι πολύ καλή, ωστόσο το βρήκα πολύ πολύπλοκο για την δουλειά που κάνει (απλά φτιάχνει themes!), ενώ χρειάζεται και αρκετή μελέτη…
  • WP Test data import : Ένα WP XML αρχείο για περάσετε γρήγορα στο blog σας μερικά test posts. Πολύ χρήσιμο ειδικότερα εάν δουλεύεται σε κάποιο καινούργιο theme…

Plug ins

  • jQuery Masonry : Ένα έξυπνο layout plug in που αλλάζει την default λειτουργία των floats.
  • Το Superfun είναι ένα εντυπωσιακό jQuery plug in. Ρίξτε του μια ματιά…
  • Google Page Speed : Ένα plug in/add on για το Firebug, με το οποίο μπορείτε να βρείτε και να βελτιώσετε τα αρχεία που καθυστερούν τις ιστοσελίδες σας. Προσωπικά προτιμώ την λύση της Yahoo, YSlow
  • Art Direction : Ένα WordPress plug in με το οποίο μπορείτε να δώσετε σε κάθε post σας ξεχωριστό CSS αρχείο (έτσι ώστε κάθε post σας να δείχνει διαφορετικό). Δοκιμάστε το εάν δεν βαριέστε…
  • TufteGraph : Ακόμα ένα jQuery plug in για charts/graphs…
  • Captify : Ένα απλό και πρακτικό jQuery plugin, για την προβολή των alt text στις φωτογραφίες σας.
  • jSnow : Και ένα jQuery plugin για χιόνι! Μάλλον άργησα να το παρουσιάσω…

Διάφορα links

  • Experts-Zone : Ένα ενδιαφέρον blog που προστέθηκε πρόσφατα στον RSS reader μου.
  • Academic Earth : Το εν λόγο site προβάλει (δωρεάν πάντα) video από παρουσιάσεις/lectures, των κορυφαίων ακαδημαϊκών της γης! Τα video είναι χωρισμένα σε κατηγορίες μαθημάτων, οι οποίες καλύπτουν όλο το φάσμα των επιστημών. Είναι κάτι που δεν πρόκειται να δω ούτε σε 30 χρόνια στην Ελλάδα…

Styling HTML5 elements

| Filed under markup web design

Όσοι έχετε δοκιμάσει να παίξετε με την HTML5 θα έχετε πέσει σε διάφορες παραξενιές της. Χτες έπεσα σε μία από αυτές που μου έφαγε πολύ χρόνο, ενώ μου προκαλεσε και εντύπωση το γεγονός πως πολλά HTML5 άρθρα και posts δεν αναφέροντε στο συγκεκριμένο πρόβλημα όσο ξεκάθαρα θα έπρεπε (μέχρι και το Google με απογοήτευσε στις αναζητήσεις μου).

Το πρόβλημα που είχα, ήταν πως ενώ η HTML5 markup μου ήταν σωστή (και valid), elements όπως header, section, footer και aside, δεν καταλάβαιναν τους styling κανόνες που τους έβαζα! Οι μοντέρνοι και HTML5-ready browsers έδειχναν να μην κάνουν σωστό rendering τα καινούργια elements (ο Firefox και ο Chrome τουλάχιστον, αν και έχω την αίσθηση πως και οι υπόλοιποι θα έχουν ανάλογα προβλήματα). Η λύση τελικά είναι πανεύκολη, απλά δίνουμε στα καινούργια elements display:block.

header, section, footer, aside, nav, article, figure { display: block; }

Από ότι κατάλαβα για κάποιο περίεργο λόγο, οι browsers κάνουν τα παραπάνω στοιχεία rendering ως inline elements, οπότε με τον παραπάνω απλό κανόνα καθαρίσαμε. Μπορεί έχασα ένα ολόκληρο απόγευμα, ωστόσο πιστεύω πως άξιζε τον χρόνο. Άλωστε μόνο έτσι μαθαίνεις…

Τα καλύτερα links – Οκτώβριος 09

| Filed under links

Web Design

  • Dive into HTML5 : Μια φανταστική πηγή εκμάθησης HTML5.
  • CSS παρουσιάσεις που πρέπει να δείτε : Απλά εξαιρετικές… Και τι δεν θα έδινα για να έβλεπα τις παρουσιάσεις  ”Efficient, Maintainable CSS” και “CSS Inheritance“, όταν πρωτο-ξεκίναγα και εγώ (δυστυχώς έπρεπε να τα μάθω με τον δύσκολο τρόπο)…

Web Development

  • Underscore.js : Ακόμα μια ελαφριά utility javascript library.
  • Mu Connect : Μια library αποκλειστικά φτιαγμένη για την εύκολη ενσωμάτωση του Facebook Connect στο site σας.
  • FireQuery : Σε beta ακόμη, αλλά το περιμένω πως και πως…
  • CSScaffold : Ένα πρωτοποριακό CSS framework γραμμένο σε PHP. Μου άρεσε πιο πολύ από αντίστοιχες λύσεις σε περίεργες γλώσσες που παίζουν δύσκολα και παραείναι πολύπλοκα. Το CSScaffold γίνεται install πανεύκολα και μπορείτε να το χρησιμοποιήσετε αμέσως!

Search Engine Optimization (SEO)

Tools

  • 5 δυνατοί WYSIWYG web editors : Όλο και κάποιος θα σας βολέψει…
  • WMD : Και ακόμα ένας, πολύ πιο ελαφρύς (μόλις μία σειρά κώδικα)!
  • The Printliminator : Ένα bookmarklet που βοηθάει (θεωρητικά) στο να τυπώνεται μόνο τις πληροφορίες  που θέλετε, από σελίδες με πολλές διαφημίσεις και άλλες άσχετες πληροφορίες…
  • Conjoon : Για αυτούς που αναζητούν λίγη οργάνωση…

WordPress

  • Pods CMS : Ένα CMS framework για το WordPress. Αν και είμαι κατά της χρήσης τέτοιων plug in (τα χρησιμοποιώ μόνο σαν έσχατη λύση), οφείλω να ομολογήσω πως το συγκεκριμένο είναι πολύ ενδιαφέρον. Προσωπικά περιμένω το WordPress να αποκτήσει επιτέλους μια δικιά του τέτοια – εγγενής πάντα, όχι μέσω plug in – αρχιτεκτονική.
  • Maintenance Mode : Γιατί τώρα τελευταία δεν κάνουμε άλλη δουλειά…

Δωρεάν/Freebies

  • PicApp : Ανακαλύψτε και χρησιμοποιήστε στο blog σας φωτογραφίες υψηλής ποιότητας. Φοβερό!
  • VirtualBox :  Ένα δωρεάν και open source vistual machine, που υποστηρίζει όλα τα γνωστά λειτουργικά συστήματα.

Διάφορα links

Τα καλύτερα links – Σεπτέμβρης 09

| Filed under links

Έμπνευση

  • BestWebFrameworks : Τα γνωστότερα frameworks για PHP, Ruby, JS και CSS, σε ευκολοδιάβαστους πίνακες (με χαρακτηριστικά κτλ.).
  • Μια πολύ καλή εισαγωγή στην HTML5, από τον Brad Neuberg της Google, που σίγουρα αξίζει να την δείτε από το πρώτο μέχρι το τελευταίο λεπτό!

Web Design

Web Development

  • Yahoo! Search BOSS : Φτιάξτε την δικιά σας custom search με την βοήθεια της Yahoo!…
  • IE7-JS : Μια javascript library που αναλαμβάνει να κάνει τις παλιότερες εκδόσεις του Internet Explorer (6 και κάτω) να συμπεριφέρονται όπως ο 7… Μπορεί να το έχω ξανά-παρουσιάσει αλλά δεν πειράζει.

Search Engine Optimization (SEO)

Tools

Τυπογραφία (Typography)

  • My Fontbook : Επιτέλους ένα όμορφος και πρακτικός on-line font viewer.

WordPress

  • Κερδίστε αρκετό χρόνο από τα WordPress style σας χρησιμοποιώντας το default WP CSS style!
  • To Status Updater αναλαμβάνει να σας γλιτώσει από την αγγαρεία του να postaρετε τα καινούργια άρθρα σας στις διάφορες social υπηρεσίες, όπως facebook, twitter, myspace κτλ.

Plug ins

  • jQTouch : Ένα jQuery plugin για mobile web development σε iPhone, Android, Palm Pre, και άλλες touch-based συσκευές.

Δωρεάν/Freebies

  • Screenr : Μια νέα υπηρεσία για εύκολο και δωρεάν screencasting. Το screencast εργαλείο της είναι εντυπωσιακό και δουλεύει κατευθείαν μέσω browser!
  • Piwik : Ένα open source και δωρεάν φυσικά, web analytics software. Για αυτούς που βαρέθηκαν το Mint και το Google Analytics

CSS selectors

| Filed under css

Κατάφερα επιτέλους να τελειώσω μια σειρά άρθρων που είχα ξεκινήσει εδώ και καιρό, η οποία παρουσιάζει όλους τους CSS selectors! Τα άρθρα είναι γραμμένα στα ελληνικά και είναι λεπτομερέστατα (άνετα θα μπορούσαν να μπουν σε κάποιο βιβλίο στο κεφάλαιο selectors) οπότε όποιοι ενδιαφέρεστε για CSS απλά διαβάστε τα. Τα άρθρα μπορείτε να τα βρείτε στο CSS3.gr και πιο συγκεκριμένα :

by John Tsevdos | tags : , | 0