H HTML5 είναι εδώ (μέρος 1ο) : SVG

Όλο και περισσότερος κόσμος αρχίζει και ασχολείται με την HTML5, τις νέες δυνατότητες που προσφέρει, καθώς και τις λύσεις που θα δώσει - μαζί με τo CSS3 - στα καθημερινά προβλήματα και περιορισμούς που αντιμετωπίζουν οι web desiners/developers ανά την υφήλιο. Οι περισσότεροι ρίχνουν μια γρήγορη ματιά στα νέα tags έτσι ώστε να ξέρουν τι τους περιμένει, ενώ συνήθως δεν εμβαθύνουν στις νέες παράπλευρες τεχνολογίες και API τα οποία δίνουν απίστευτες δυνατότητες στην νέα markup.

H καινούργια έκδοση της HTML έχει φτιαχτεί έτσι ώστε να βοηθήσει τους developers να χτίσουν καλύτερες και πιο δομημένες web εφαρμογές και όχι μόνο έγγραφα (documents), ενώ η δύναμη της πηγάζει κυρίως από τις προσθήκες API και τεχνολογιών που προσφέρουν ελευθερία και έλεγχο στους developers, και όχι τόσο από τα νέα tags, τα οποία είναι και το ευκολότερο μέρος εκμάθησης της νέας markup.

Στην σειρά άρθρων που θα ακολουθήσει λοιπόν, θα προσπαθήσω να παρουσιάσω τις πιο ενδιαφέρουσες νέες δυνατότητες και τεχνολογίες που εμφανίζονται στην HTML5. Όσοι θέλετε να δείτε πως δουλεύουν τα νέα tags/attributes, καλύτερα να ρίξετε μια ματιά σε άλλα άρθρα, γιατί  δυστυχώς δεν έχω σκοπό να ασχοληθώ πολύ με αυτά (ίσως σε κάποιο μελλοντικό άρθρο). Αντιθέτως στην σειρά άρθρων που ακολουθεί θα παρουσιάσω τεχνολογίες και APIs που ξεχωρίζουν στην HTML5 και που με έχουν εντυπωσιάσει.

Γι' αυτούς που γκρινιάζουν πως βιαζόμαστε κάπως και πως όλα αυτά θα αργήσουν πολύ να χρησιμοποιηθούν σε κανονικά sites, απλά τους ενημερώνω πως τα παραδείγματα που θα παρουσιαστούν θα παίζουν σε όλους τους μοντέρνους browsers (ναι σωστά διαβάσετε), πράγμα που σημαίνει πως η HTML5 είναι πολύ πιο κοντά από ότι πολλοί νομίζουν. Επίσης μην ξεχνάτε πως μεγάλα sites και web applications, όπως το Google Wave, το επίσημο site της Apple, αλλά και πολλά ακόμα που ετοιμάζονται, κάνουν αρκετά εκτεταμένη χρήση της HTML5 και των νέων τεχνολογιών που έρχονται μαζί της. Μετά λοιπόν από αυτήν την βαρετή αλλά αναγκαία εισαγωγή, ας δούμε το πρώτο εντυπωσιακό χαρακτηριστικό που μας φέρνει η HTML5.

Vector γραφικά και web

Η αλήθεια είναι πως ποτέ μέχρι σήμερα δεν είχαμε την πολυτέλεια να προσθέσουμε πραγματικά vector γραφικά στο web site/εφαρμογή μας. Τώρα πολλοί θα ρωτήσουν τι είναι τα vector γραφικά και τι παραπάνω μπορούν να μας προσφέρουν, ενώ άλλοι θα σπεύσουν να συμπληρώσουν πως τα παλιά καλά και συμβατά JPEG, GIF και PNG μπορούν να καλύψουν άνετα τις ανάγκες μιας σύγχρονης web εφαρμογής.

Η αλήθεια είναι πως μέχρι και την HTML4/XHTML, δεν μπορούσαμε με κάποιον προγραμματιστικό τρόπο να σχεδιάσουμε κάτι στον browser. Οι παραπάνω τύποι αρχείων που υποστηρίζονται από τους browsers, κάνουν απλά embed (και τίποτα παραπάνω) κάποιο αρχείο γραφικού/εικόνας που έχει ήδη παραχθεί με κάποιον τρόπο. Έτσι τα γραφικά στο web μέχρι τώρα δεν ήταν αρκετά interactive, μιας και δεν ήταν μέρος της markup - δεν ήταν φτιαγμένα με markup - αλλά απλά ένα ενσωματωμένο εξωτερικό αρχείο. Φυσικά υπάρχουν πολλές μη web standard τεχνολογίες (όπως Flash, Silverlight κτλ.) που δημιουργήθηκαν και μεγάλωσαν λόγω αυτής της αδυναμίας του web, αλλά όπως προανέφερα οι συγκεκριμένες τεχνολογίες δεν είναι web standards, αλλά εμπορικές λύσεις οι οποίες στηρίζονται σε browser plug ins.

Η HTML5 μας δίνει για πρώτη φορά την δυνατότητα να έχουμε γραφικά που δημιουργούνται κατευθείαν από την markup μας, κατευθείαν με κώδικα δηλαδή, τα οποία είναι μέρος της HTML και του DOM (πράγμα που σημαίνει πως θα αλληλεπιδρούν πολύ καλύτερα με τα υπόλοιπα elements της σελίδας μας, καθώς και με τα υπόλοιπα standards όπως για παράδειγμα CSS/Javascript) και που φυσικά είναι web standard.

Scalable Vector Graphics ή απλά SVG

Η πρώτη και πιο απλή τεχνολογία που μας προσφέρει η HTML5 ονομάζεται SVG (Scalable Vector Graphics), και στην ουσία πρόκειται για ένα καινούργιο tag (svg), το οποίο μπορεί να χρησιμοποιηθεί για να σχεδιάσουμε vector σχήματα κατευθείαν στον browser. Στο παρακάτω παράδειγμα σχεδιάζω ένα παραλληλόγραμμο με στρογγυλεμένες γωνίες, και το κείμενο "CSS3.gr" το οποίο είναι και αυτό μέρος του SVG γραφικού.

Το μεγαλύτερο πλεονέκτημα του SVG, σε σύγκριση με τους κλασικούς τύπους αρχείων που έχουμε αυτήν την στιγμή, είναι πως τα vector γραφικά δεν έχουν να κάνουν με pixels, μιας και σχεδιάζονται με μαθηματικές συναρτήσεις, οπότε δεν επηρεάζονται από τις αναλύσεις των οθονών. Το παραπάνω γραφικό είτε το δούμε στην οθόνη ενός iPhone, είτε σε κάποιο monitor υψηλής ανάλυσης, θα φαίνεται και στις δύο περιπτώσεις ακριβώς το ίδιο. Φανταστείτε πόσο βολικό θα είναι κάτι τέτοιο στο λογότυπο του site μας, το οποίο είναι σίγουρα είναι vector-based (όπως και τα περισσότερα άλλωστε interface γραφικά, όπως σχήματα με gradients, στρογγυλεμένες γωνίες, κτλ.). Εκτός από αυτό το πλεονέκτημα, το γραφικό θα γίνεται πολύ πιο γρήγορα render από τον browser λόγο του μικρότερου μεγέθους του (πρόκειται απλά για κώδικα και όχι για φόρτωμα κάποιου εξωτερικού αρχείου εικόνας), ενώ ο server μας θα δέχεται λιγότερα hits για τον ίδιο ακριβώς λόγο.

Η υποστήριξή αυτή την στιγμή βρίσκεται σε πολύ καλό επίπεδο μιας και οι περισσότεροι μοντέρνοι browsers (εκτός από τον Internet Explorer 8) υποστηρίζουν εγγενώς το συγκεκριμένο tag, αν και με ορισμένες παραξενιές. Προς το παρόν λοιπόν κανείς δεν υποστηρίζει κατευθείαν SVG markup μέσα στο document, πράγμα που σημαίνει πως πρέπει να κάνουμε embed τον SVG κώδικα. Ο Opera, ο Safari και ο Chrome μπορούν να κάνουν render SVG κώδικα μέσω του γνωστού μας image tag (img), ωστόσο ο Firefox - μέχρι αυτήν την στιγμή τουλάχιστον - "καταλαβαίνει" τον SVG κώδικα μόνο όταν γίνεται embed είτε μέσω του object tag (object) είτε μέσω iframe (iframe) (ρίξτε μια ματιά στο παράδειγμα). Οι browsers της Microsoft τώρα μπορούν να κάνουν render SVG κώδικα μόνο με την βοήθεια κάποιου εξωτερικού plug in, όπως του Adobe SVG Viewer.

Προσωπικά πιστεύω πως πολύ σύντομα οι περισσότεροι browsers θα μπορούν να κάνουν και κατευθείαν rendering SVG γραφικών, αν και γενικά το embed μέσω του image tag είναι ίσως σωστότερο τόσο σημασιολογικά όσο και πρακτικά (το ξεχωρίζουμε από την markup). Είναι λοιπόν θέμα χρόνου να δούμε τις νέες δυνατότητες που μας προσφέρει το SVG και στα site.

Επίλογος

Σε αυτό το πρώτο άρθρο, παρουσιάστηκε το πως λειτουργεί το SVG tag, σε τι χρησιμεύει και ποια είναι η μέχρι τώρα υποστήριξη από τους γνωστότερους browsers. Τα γραφικά καθώς και ο τρόπος που δημιουργούνται στην HTML5 είναι ένα αρκετά ριζοσπαστικό θέμα, μιας και για πρώτη φορά οι developers έχουν στην διάθεση τους κάτι περισσότερο από απλά αρχεία εικόνων, κάτι που αλλάζει τα μέχρι τώρα δεδομένα. Μείνετε συντονισμένοι, γιατί στο επόμενο άρθρο θα παρουσιάσουμε μια πολύ περίπλοκη αλλά και πολύ δυνατή τεχνολογία που έρχεται μαζί με την HTML5 και δεν είναι άλλη από το canvas - την δεύτερη τεχνολογία που έχει να κάνει με vector γραφικά στην HTML5.

{ Δείτε το demo ή Κατεβάστε τα αρχεία }
author

Γιάννης Τσεβδός

Ο Γιάννης θεωρεί τον εαυτό του ευαγγελιστή των web standards και κάνει ότι περνάει από το χέρι του για να τα διαδώσει στο ελληνικό κοινό! Πιστεύει πως κάποτε θα τα καταφέρει…

guest
Θέλεις το επόμενο κείμενο να είναι το δικό σου;

ΜΑΘΕ ΠΕΡΙΣΣΟΤΕΡΑ

{6 σχόλια ως τώρα } + Νέο σχόλιο

thdooris

Σήμερα βρήκα αυτό το link σχετικά με το παραπάνω άρθρο: http://www.amplesdk.com/

athineos

Πολύ ενδιαφέρουσες αυτές οι εξελίξεις! Έτσι όπως τα λες, μοιάζει η html να μπορεί να ξεπεράσει τις κατασκευαστικές αγκυλώσεις των βασικών της προδιαγραφών (όπως λες σήμερα συμπεριφέρεται περισσότερο ως κείμενο και λιγότερο ως εφαρμογή). Αυτή την αλλαγή το web, κατά τη γνώμη μου, την έχει ΠΡΑΓΜΑΤΙΚΑ ανάγκη.

Βέβαια εσένα αυτά που περιγράφεις μπορεί να σε ενθουσιάζουν, αλλά η flash διαθέτει αυτές τις αρετές χρόνια τώρα. Με το συμπάθιο στις διαφαινόμενες απόψεις σου, είτε η flash είναι web standard, είτε όχι, ο flash κατασκευαστής διαθέτει τα εργαλεία για να φτιάξει αξιόλογες λειτουργικές ιστοσελίδες (όχι documents). Αρκεί να το θέλει και να μπορεί (μια άλλη συζήτηση).

Ίσως τώρα που κι εσύ γνώρισες την σημασία δυνατοτήτων όπως ο πραγματικός έλεγχος ροής και τα ενσωματωμένα vector graphics, να αρχίζεις να καταλαβαίνεις τι εκτιμάει ο κατασκευαστής flash ιστοσελίδων και νιώθει τόσο μίζερα στην δυνατότητες ανάπτυξης μιας html ιστοσελίδας. Αν ή όταν η html5 μας δώσει ανάλογες δυνατότητες και μάλιστα στα πλαίσια των web standards, με χαρά μου να αλλάξω ή να εμπλουτίσω τα εργαλεία μου στο μέλλον. Και φαντάζομαι όχι μόνο εγώ...

Αλέξανδρος Λίγγρης

Έλεος πλέον με το flash. Ειδικά η ατάκα “αρκεί να το θέλει”. Γιατί δεν το θέλει κανείς τελικά; Ή αυτό το flash δεν είναι κατάλληλο ή οι φλασάδες είναι συνήθως χαζοί. Γιατί το ότι κάτι δεν πάει καλά είναι το μόνο σίγουρο.

Δεν πάει να λένε οι χαζοί οι άνθρωποι με τα στοιχεία ότι το flash δεν είναι για site εκτός αν είναι καμπάνια ουίσκι για 1002 λόγους. Οι φλασάδες υποστηρίζουν ότι μπορούν να κάνουν τα πάντα καλύτερα από όλες τις άλλες γλώσσες.

Έχετε μετοχές στην adobe?

athineos

Lexx φοβάμαι ότι βγαίνεις εκτός θέματος. Δεν βρίσκομαι εδώ για να απαντήσω αν οι φλασάδες είναι χαζοί κι αν το flash κάνει για καμπάνια ουίσκι. Ήρθα για να μάθω για το html5 και να γουστάρω μαζί σας! Απλά ανέφερα (δικαιολογημένα νομίζω) ότι χαίρομαι που ενθουσιάζεστε, θαυμάζετε και αντιλαμβάνεστε την αξία αυτών που περιγράφονται πιο πάνω. Είναι αυτά τα πράγματα που μέχρι χθες δεν σου άρεσε ούτε να ακούς, ούτε να ξέρεις!! Δεν πειράζει, κάλιο αργά παρά ποτέ!

Περιμένω την html5 με μεγάλο ενδιαφέρον και προσδοκία και εύχομαι στο μέλλον να γίνει το σημείο κοινής μας αποδοχής και ανταλλαγής απόψεων. Ποιος νομίζεις ότι προτιμά τα “τα σκάει” στις εταιρείες; Ποιος δεν θέλει τα ανοικτά πρότυπα όταν σου δίνουν ανάλογο ή και ακόμα καλύτερο (μακάρι Θεέ μου) αποτέλεσμα; Όχι φίλε μου, δεν έχω μετοχές της Adobe… Μετοχές athineos μόνο. Θέλεις;  :LOL:

Αλέξανδρος Λίγγρης

Απλά το ύφος σου μου φάνηκε σαρκαστικό. Δεν τίθεται συνολικό θέμα σύγκρισης των δύο προσεγγίσεων για μένα. Είναι διαφορετικά πράγματα για διαφορετικά χωράφια. Γι αυτό λέω ας μην τα μπλέκουμε...

athineos

Πιο πάνω δεν γράφει για προσεγγίσεις, αλλά για τα χαρακτηριστικά του τελικού προϊόντος (π.χ. ενσωμάτωση vector graphics). Σε αυτά αναφέρομαι εγώ.

Το τελικό προϊόν σήμερα απαιτεί καλύτερα χαρακτηριστικά από την html4 και η html5 μου δίνει την εντύπωση ότι χαράζει γραμμή με το παρελθόν της και ανοίγει νέους δρόμους στο μέλλον.

Θα θυμάσαι που έλεγα ότι η html έχει φτάσει στο τέλος της διαδρομής της. Μάλλον έκανα λάθος! Δεν θα βγάλω όμως αυτό το “μάλλον”, αν πρώτα δεν δω από κοντά την html5 (αφού πρώτα βέβαια λάβει πίστωση χρόνου να ωριμάσει).

Ευχαριστώ για την πολύτιμη ενημέρωση Γιάννη. Στο μέλλον, αν έχεις κουράγιο, αναμένω με ενδιαφέρον περισσότερα.

{ Προσθέστε το σχόλιό σας }

Commenting is not available in this weblog entry.