To sprite or not to sprite!

Ας μάθουμε πως να κάνουμε τις σελίδες μας με στιλ. Τα Cascading Style Sheets είναι ο τρόπος για να το επιτύχουμε.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
apsuh0s
Script Master
Δημοσιεύσεις: 410
Εγγραφή: 01 Νοέμ 2005 21:38
Τοποθεσία: Ηράκλειο
Επικοινωνία:

To sprite or not to sprite!

Δημοσίευση από apsuh0s » 09 Νοέμ 2011 12:18

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

- Στο navigation menu θα χρησιμοποιηθούν εικόνες για 3 states των list items (link,hover,active)
- Slider με 4-5 φωτογραφίες, που μπορεί να γίνουν 7-8 στο μέλλον
- Σκόρπιες φωτογραφίες από δω και από κει
- Headings με περίεργα fonts και γραφικά
- Ότι άλλο βάλει το μυαλό σας που μπορεί να βρίσκεται στη σελίδα και να αποτελεί μη μεταβαλλόμενο περιεχόμενο.

Πως προσεγγίζετε ένα τέτοιο project όσον αφορά το markup και το css;

Το πρώτο ζήτημα σίγουρα θα ήταν να ξεχωρίσω ποια από τα παραπάνω στοιχεία που αναφέρω, αποτελούν μέρος της πληροφορίας που θέλω να περάσω στο χρήστη και ποια αποτελούν καθαρά presentational περιεχόμενο.

Το δεύτερο που θα με απασχολούσε θα ήταν με ποιο format θα σωθούν αυτά τα γραφικά.

Το τρίτο και τελευταίο θα ήταν αν θα έπρεπε για μερικά από τα παραπάνω γραφικά να χρησιμοποιήσω image replacement τεχνικές.

Ας υποθέσουμε πως τα λύνεται τα παραπάνω και καταλήγετε στο ότι:

- Oι φωτογραφίες του slider αποτελούν πληροφορία περιεχομένου και επομένως οφείλουν να βρίσκονται στο markup. Ταυτόχρονα, επειδή είναι φωτογραφίες αποφασίζετε πως το καταλληλότερο format είναι .jpg.

- Κάποια icons υπάρχουν καθαρά για διακοσμητικούς λόγους και αποφασίζετε να τα ορίσετε στο css. Το format που επιλέγετε για αυτά είναι .gif

- Δυο τρεις φωτογραφίες σκόρπιες στο σχέδιο οι οποίες δεν εξυπηρετούν την πληροφορία του περιεχομένου αλλά και αυτές βρίσκονται εκεί καθαρά για διακοσμητικούς λόγους. Αυτές, όπως και προηγουμένως αποφασίζετε να τις ορίσετε μέσω του css. Γι αυτές το καταλληλότερο format είναι το .jpg.

- Κάποια περίεργα headings που υπάρχουν στο σχέδιο, αντιλαμβάνεστε πως δεν είναι δυνατόν να φτιαχτούν με css και παίρνετε την απόφαση να χρησιμοποιήσετε image replacement τεχνικές. Ωστόσο τα θέλετε transparent για κάποιο λόγο και γι' αυτό το format που επιλέγετε είναι png-24. Συνεπώς, στο markup ορίζετε κανονικά τα headings και μέσω css τα αντικαθιστάτε.

Βλέπουμε στο παραπάνω σενάριο πως ήδη έχουμε πάρει απόφαση να χρησιμοποιήσουμε 3 format για τα γραφικά, τις φωτογραφίες μας και πως μέρος αυτών αποτελούν πληροφορία περιεχομένου και μέρος αυτών presentational περιεχόμενο.

Τέλος μια σημαντική απόφαση που πρέπει να πάρουμε είναι πως θα οργανώσουμε τα sprites των εικόνων μας. Πως θα το προσεγγίζατε αν αποφασίζατε πως αυτή είναι η οδός που πρέπει να ακολουθήσετε;

Θα σας απασχολούσε να αφιερώσετε χρόνο και να οργανώσετε όλα αυτά τα δεδομένα με στόχο να βρείτε τη χρυσή τομή μεταξύ απόδοσης και εμφάνισης; Αυτό που βλέπω να γίνετε κατά κόρον είναι, να μην απασχολεί τον designer που γράφει τον κώδικα, τα http requests που γίνονται στο server και το αποτέλεσμα αναμφίβολα δεν είναι ότι καλύτερο όσον αφορά το user experience.

Σε ένα παρόμοιο σενάριο εσείς πως θα αντιδρούσατε;
.ninja { color: black; visibility: hidden !important; }

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

To sprite or not to sprite!

Δημοσίευση από cherouvim » 09 Νοέμ 2011 13:38

apsuh0s έγραψε:[...]να ξεχωρίσω ποια από τα παραπάνω στοιχεία που αναφέρω, αποτελούν μέρος της πληροφορίας που θέλω να περάσω στο χρήστη και ποια αποτελούν καθαρά presentational περιεχόμενο.
Ναι. Γραφικά της σελίδας πρέπει να φορτώνονται με CSS. Εικόνες του περιεχόμενου με <img/>
apsuh0s έγραψε:[...] με ποιο format θα σωθούν αυτά τα γραφικά.
Αυτό θέλει λίγο τέχνη.

Αυτά που μοιάζουν με φωτογραφίες συνήθως θέλουν JPG. Αυτά που μοιάζουν με γραφικά, διαγράμματα, συμπαγείς επιφάνειες και gradients συνήθως θέλουν PNG. Παίζει ρόλο και το μέγεθος εικόνας αλλά και αν στο τέλος θέλεις να τα βάλεις όλα αυτά σε ένα sprite.
apsuh0s έγραψε:[...] αν θα έπρεπε για μερικά από τα παραπάνω γραφικά να χρησιμοποιήσω image replacement τεχνικές.
Όλα τα γραφικά της σελίδας με CSS και image replacement. Μπορεί να υπάρχουν εξαιρέσεις, πχ το logo της σελίδας σε περίπτωση που θέλουμε να φαίνεται στην εκτύπωση αν και προσωπικά το αποφεύγω.
apsuh0s έγραψε:[...] στο css. Το format που επιλέγετε για αυτά είναι .gif
Προτίμησε το PNG με ανάλογες ρυθμίσεις παλέτας και transparency. Το gif δεν έχει λόγο ύπαρξης πλέον παρά μόνο για εύκολα animated images.
apsuh0s έγραψε:Πως θα το προσεγγίζατε αν αποφασίζατε πως αυτή είναι η οδός που πρέπει να ακολουθήσετε;
Με τα μούτρα :) Στρώσου και φτιάχνε. Δες και το http://spriteme.org/
apsuh0s έγραψε:Θα σας απασχολούσε να αφιερώσετε χρόνο και να οργανώσετε όλα αυτά τα δεδομένα με στόχο να βρείτε τη χρυσή τομή μεταξύ απόδοσης και εμφάνισης;
Ναι, ειδικά αν μιλάμε για σοβαρό project. Φυσικά υπάρχουν πάντα όρια. Δεν θα φας ημέρες προσπαθώντας να πας τα speed tests από 97% σε 98%.
apsuh0s έγραψε:Αυτό που βλέπω να γίνετε κατά κόρον είναι, να μην απασχολεί τον designer που γράφει τον κώδικα, τα http requests που γίνονται στο server και το αποτέλεσμα αναμφίβολα δεν είναι ότι καλύτερο όσον αφορά το user experience.
Ο γραφίστας δεν είναι ευαισθητοποιημένος σε τέτοια θέματα εκ φύσεως. Χρειάζεται να δουλέψεις κοντά του για να του εξηγήσεις τι προβλήματα προκύπτουν όταν παίζουν τσαπατσουλιές τέτοιου τύπου.

Σε μικρά και low traffic projects δεν έχει και πολύ σημασία. Σε μεγάλα όμως έχει.
apsuh0s έγραψε:Σε ένα παρόμοιο σενάριο εσείς πως θα αντιδρούσατε;
Εξηγώντας τι επιπτώσεις έχει στο host billing και στο experience των χρηστών τέτοιες παραλήψεις. Όλα χρειάζονται παρακολούθηση και βελτίωση και ο γραφίστας δεν υπάρχει περίπτωση να τα ξέρει αυτά ούτε να τα παρακολουθεί από μόνος του.

Έχε υπόψιν βέβαια οτι περισσότερη βελτιστοποίηση έχεις να δεις και με σωστή χρήση των cache headers (και των απαραίτητων cache killers αργότερα) στο server.

Γενικά αν θες να το δεις σοβαρά το θέμα παρακολούθα τη δουλειά του http://stevesouders.com/ και πάρε τα βιβλία του:
http://www.amazon.com/High-Performance- ... 0596529309
http://www.amazon.com/Even-Faster-Web-S ... 0596522304

Άβαταρ μέλους
apsuh0s
Script Master
Δημοσιεύσεις: 410
Εγγραφή: 01 Νοέμ 2005 21:38
Τοποθεσία: Ηράκλειο
Επικοινωνία:

To sprite or not to sprite!

Δημοσίευση από apsuh0s » 09 Νοέμ 2011 14:35

Σε ευχαριστώ για τα links στο τέλος της απάντησης.

Το παρόν thread το έκανα διότι είχα την απορία να δω με ποιο τρόπο σκέφτονται άλλοι όσον αφορά τη βελτιστοποίηση της σελίδας και ειδικότερα όσον αφορά τη διαχείριση των εικόνων και των γραφικών. Γενικότερα η όλη προσέγγιση στο θέμα της βελτιστοποίησης θα απαιτούσε να θίξουμε το θέμα από πολλές πλευρές.

Αυτά που απαντάς στην πλειοψηφία τους με βρίσκουν απόλυτα σύμφωνο. Το μόνο στο οποίο έχω τις ενστάσεις μου είναι το εξής:
apsuh0s έγραψε:Θα σας απασχολούσε να αφιερώσετε χρόνο και να οργανώσετε όλα αυτά τα δεδομένα με στόχο να βρείτε τη χρυσή τομή μεταξύ απόδοσης και εμφάνισης;
Ναι, ειδικά αν μιλάμε για σοβαρό project.
Δεν θεωρείς πως η δουλειά που κάνεις οφείλει να έχει συνέπεια και να εφαρμόζεις τις σωστότερες τεχνικές ώστε να παραδόσεις ένα αψεγάδιαστο - όσο αυτό είναι δυνατό - στον πελάτη σου, όποιο κι αν είναι το έργο αυτό; Είτε δηλαδή πρόκειται για μια απλή παρουσίαση στο διαδίκτυο είτε για το επόμενο project που θα ταράξει τα νερά της σκηνής..

Φυσικά δεν λες κάτι αντίθετο στο quote που παραθέτω πιο πάνω, αλλά αυτό το "ειδικά" προκαλεί παρερμηνείες.

Αντιλαμβάνομαι πως οι πραγματικές συνθήκες μπορεί να είναι τέτοιες ώστε οι παράμετροι που καθορίζουν το τελικό αποτέλεσμα να μη σου επιτρέπουν να δώσεις το 100% της προσπάθειας σου. Τα χρήματα μπορεί να είναι λίγα, μπορεί να να μην υπάρχει χρόνος, μπορεί να είναι απαιτητικός ο πελάτης και ταυτόχρονα κακοπληρωτής και 1002 άλλοι λόγοι που δε σου επιτρέπουν να συμβαδίζεις με τις τελευταίες τάσεις ή να επιλέγεις να μην το κάνεις..

Ωστόσο αυτό που παρατηρώ είναι πως η συντριπτική πλειοψηφία προτιμάει να παίξει σε ασφαλή μονοπάτια και συνεπώς να παίξει σε πιο γρήγορα μονοπάτια. Πράμα που με κάνει να σκεφτώ πως δεν μπορεί όλοι οι πελάτες να είναι παράξενοι, αλλά πως οι designers δεν συνεχίζουν το διάβασμα..

Θεωρώ πως δεν υπάρχει "ειδικό" project. Κάθε ένα εκφράζει τη προσωπικότητα σου και οφείλεις να το αντιμετωπίζεις ως το καλύτερο που έχεις αναλάβει. Αυτό σημαίνει πως δεν θα κάνεις εκπτώσεις ούτε στη δουλειά σου ούτε στο κόστος της δουλειάς σου.
Όλα χρειάζονται παρακολούθηση και βελτίωση και ο γραφίστας δεν υπάρχει περίπτωση να τα ξέρει αυτά ούτε να τα παρακολουθεί από μόνος του.
Μπορείς να μου πεις κάποιους λόγους για τους οποίους ο γραφίστας, ο οποίος αναλαμβάνει να σχεδιάζει μακέτες για websites δεν μπορεί να τα παρακολουθεί;

Εδώ βασικά θίγεται και ένα άλλο θέμα που αφορά το κατά πόσο ένας γραφίστας οφείλει να ξέρει - τα βασικά τουλάχιστον - HTML + CSS + JS. Αλλά αυτό σε άλλο thread!
Εξηγώντας τι επιπτώσεις έχει στο host billing και στο experience των χρηστών τέτοιες παραλήψεις
Αυτό είναι όλο το ζουμί κατά τη γνώμη μου. Έχει επιπτώσεις και στο host billing και στο user experience αλλά δεν βλέπω το λόγο γιατί να χρειάζεται να εξηγηθεί σε ένα επαγγελματία. Δεν οφείλει να τα ξέρει; Κι αν τα ξέρει, ενσωματώνει αυτή τη γνώση στα projects που αναλαμβάνει επιλεκτικά;

Ξέρω πως αυτά που αναφέρω δεν έχουν άμεση σχέση με το πρώτο post που έκανα αλλά αποτελούν προέκταση όλων όσων σκεφτόμουν όταν το έκανα. Κουβέντα να γίνεται..
.ninja { color: black; visibility: hidden !important; }

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

To sprite or not to sprite!

Δημοσίευση από cherouvim » 09 Νοέμ 2011 15:22

apsuh0s έγραψε:Δεν θεωρείς πως η δουλειά που κάνεις οφείλει να έχει συνέπεια και να εφαρμόζεις τις σωστότερες τεχνικές ώστε να παραδόσεις ένα αψεγάδιαστο - όσο αυτό είναι δυνατό - στον πελάτη σου, όποιο κι αν είναι το έργο αυτό;
Ναι, οφείλει. Στο πραγματικό κόσμο όμως (όπου τα deadlines τρέχουν και τα projects μεταβάλλονται συνεχώς) οφείλεις να ακολουθείς και το ρητό premature optimization is the root of all evil. Οπότε γενικά κάνεις μια καλή βάση αλλά πχ δεν τρως 8 ημέρες για το spriting.
apsuh0s έγραψε:[...] αλλά αυτό το "ειδικά" προκαλεί παρερμηνείες.
Το ειδικά το έβαλα γιατί υπάρχουν projects με τέτοιο traffic και απαιτήσεις που αν δεν κάνεις optimizations θα συμβεί κάτι κακό. πχ δεν θα παίζει το site.
apsuh0s έγραψε:Θεωρώ πως δεν υπάρχει "ειδικό" project. Κάθε ένα εκφράζει τη προσωπικότητα σου και οφείλεις να το αντιμετωπίζεις ως το καλύτερο που έχεις αναλάβει. Αυτό σημαίνει πως δεν θα κάνεις εκπτώσεις ούτε στη δουλειά σου ούτε στο κόστος της δουλειάς σου.
Μαζί σου είμαι. Αν μάθεις να δουλεύεις σωστά τότε δεν έχει σημασία αν κάνεις κάτι μικρό ή κάτι μεγάλο.
apsuh0s έγραψε:Μπορείς να μου πεις κάποιους λόγους για τους οποίους ο γραφίστας, ο οποίος αναλαμβάνει να σχεδιάζει μακέτες για websites δεν μπορεί να τα παρακολουθεί;
Συνήθως δεν μπορεί γιατί 1) δεν είναι technical οπότε δεν το καταλαβαίνει ή δε τον νοιάζει 2) δεν είναι κοντά στο σύστημα, δηλαδή δεν βλέπει το billing ή το CPU ή τα threads του apache στο live server, ούτε γίνεται αποδέκτης κραξίματος όταν υπάρχει πρόβλημα διαθεσιμότητας του site 3) γιατί συνήθως κάνει development στο file:/// και όχι στο http:// οπότε και να θέλει δεν μπορεί να δει τα 404, τα πολλά requests και το μέγεθος αυτών στο firebug.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

To sprite or not to sprite!

Δημοσίευση από cherouvim » 09 Νοέμ 2011 15:32

Για την ιστορία παραθέτω ένα από τα πιο γνωστά sprites.
http://www.google.com/images/nav_logo95.png

Εικόνα

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

To sprite or not to sprite!

Δημοσίευση από dva_dev » 09 Νοέμ 2011 16:11

apsuh0s έγραψε:- Κάποια icons υπάρχουν καθαρά για διακοσμητικούς λόγους και αποφασίζετε να τα ορίσετε στο css. Το format που επιλέγετε για αυτά είναι .gif
Προσωπικά δεν θα χρησιμοποιούσα ποτέ gifs. Αν χρειάζομαι διαφάνεια θα επέλεγα png που δίνει τα ίδια (και αναλόγως το πρόγραμμα π.χ. fireworks) και καλύτερα αποτελέσματα.

Για την ιστορία http://www.gnu.org/philosophy/gif.html

Άβαταρ μέλους
apsuh0s
Script Master
Δημοσιεύσεις: 410
Εγγραφή: 01 Νοέμ 2005 21:38
Τοποθεσία: Ηράκλειο
Επικοινωνία:

To sprite or not to sprite!

Δημοσίευση από apsuh0s » 09 Νοέμ 2011 17:09

Ναι, οφείλει. Στο πραγματικό κόσμο όμως (όπου τα deadlines τρέχουν και τα projects μεταβάλλονται συνεχώς) οφείλεις να ακολουθείς και το ρητό premature optimization is the root of all evil. Οπότε γενικά κάνεις μια καλή βάση αλλά πχ δεν τρως 8 ημέρες για το spriting.
Αυτός ο πραγματικός κόσμος! Προφανώς μιλάμε για projects που κινούνται στο μέσο όρο παραγωγής και με αυτό στο μυαλό, θεωρώ λίγο ακραίο το ότι η μεταβολή που αναφέρεις θα σου φάει τόσο πολύ χρόνο ώστε να αλλάξει το χρονοδιάγραμμα του έργου σε σημαντικό βαθμό. Ωστόσο, συμφωνώ πως το να φτιάξεις μια σωστή βάση αποτελεί προτεραιότητα.
apsuh0s έγραψε: [...] αλλά αυτό το "ειδικά" προκαλεί παρερμηνείες.
Το ειδικά το έβαλα γιατί υπάρχουν projects με τέτοιο traffic και απαιτήσεις που αν δεν κάνεις optimizations θα συμβεί κάτι κακό. πχ δεν θα παίζει το site.
Λάθος το κατάλαβα επομένως

Όσο για τους λόγους που αναφέρεις για τον γραφίστα, μου τους έχουν αναφέρει ατο παρελθόν και δυστυχώς δεν μπορώ να τους κατανοήσω με τίποτα.

Σε αυτό που τείνω να καταλήξω μετά από πολλές συζητήσεις, είναι το γεγονός πως δεν μπορεί να υπάρξει σωστό one-man-show. Είναι τόσοι πολλοί οι παράμετροι που πρέπει να ληφθούν υπόψιν και καλώς ή κακώς υπάρχει αλματώδης ανάπτυξη στο συγκεκριμένο τομέα που καθιστά δύσκολη αν όχι αδύνατη τη πλήρη ενημέρωση, παρακολούθηση και ενσωμάτωση της γνώσης σε real life projects. Έκαστος στο είδος του, ένα πράμα! Βεβαίως αυτό το λέω έχοντας λάβει υπόψιν μου τους χρόνους και τη διάθεση που σε αφήνει να έχεις η πραγματικότητα..

Και για να υπάρχει μια απάντηση στο ερώτημα μου, φυσικά "to sprite". Ο καθένας που θα έκανε "sprite" σε αυτό που ξέρει καλά θα ήταν πολύ πιο σωστά τα πράματα(imho)

@dva_dev Αυτό για τα gif, δεν το ήξερα και το link που παρέθεσες με εξέπληξε ευχάριστα
.ninja { color: black; visibility: hidden !important; }

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

To sprite or not to sprite!

Δημοσίευση από skeftomilos » 10 Νοέμ 2011 00:16

Για να φτιάξει sprites ο front-end developer χρειάζεται χρόνο, ο οποίος ως γνωστόν είναι χρήμα. Το traffic volume μεταφράζεται επίσης χρήμα. Το κακό user experience σημαίνει απώλεια επισκεπτών (δηλαδή χρήμα). Το χάσιμο ενός deadline συνεπάγεται απώλεια αξιοπιστίας, που είναι χρήμα. Και πάει λέγοντας. Οπότε είναι απλά τα πράγματα, λύνεις την εξίσωση με τις χίλιες παραμέτρους και βρίσκεις αν πρέπει να βάλεις sprites ή όχι. Επειδή όμως η ζωή είναι μικρή, καλύτερα να ακολουθείς απλά το ένστικτό σου και να ελπίζεις για το καλύτερο. :-)

Σχετικά με το δίλημμα μεταξύ gif και png, προσωπικά δεν απορρίπτω τα gif. Τα μικρά εικονίδια 16x16 ή 32x32 συμπιέζονται εξίσου καλά τόσο με gif όσο και με png, οπότε προτιμώ να τα σώσω σε gif για να μπορώ μετά κοιτώντας μόνο το όνομά τους να ξέρω ότι είναι 8μπιτα paletted, και όχι τίποτα fat 24μπιτα ή 32μπιτα.

Άβαταρ μέλους
viktoras
Δημοσιεύσεις: 963
Εγγραφή: 05 Απρ 2001 03:00
Τοποθεσία: Γαλάτσι, Αθήνα
Επικοινωνία:

To sprite or not to sprite!

Δημοσίευση από viktoras » 10 Νοέμ 2011 02:09

Αν και έχει πάει προς συγκεκριμένο κομμάτι η συζήτηση, παρατήρησα ότι κανείς δεν σχολίασε κάτι από το 1ο post:

navigation και headings με images; Αυτό από μόνο του είναι "αυτοκτονία" άσχετα με την χρήση sprites ή όχι και τα επιμέρους format των γραφικών/φωτογραφιών.

Για το "ζουμί" του θέματος με κάλυψε ο skeftomilos αν και εγώ προτιμώ μόνο png για γραφικά. [ ακόμα και 8bit για κάποια icons ]
<?="Hello Freestuff";?>
Quality hosting by Cityhost

Άβαταρ μέλους
apsuh0s
Script Master
Δημοσιεύσεις: 410
Εγγραφή: 01 Νοέμ 2005 21:38
Τοποθεσία: Ηράκλειο
Επικοινωνία:

To sprite or not to sprite!

Δημοσίευση από apsuh0s » 10 Νοέμ 2011 09:47

Υποθετικό σενάριο ήταν για τις ανάγκες του παραδείγματος αλλά γιατί το χαρακτηρίζεις αυτοκτονία; Τι πρόβλημα υπάρχει;

edit:

Κώδικας: Επιλογή όλων

#mainContent h2&#123;
	background&#58;url&#40;../images/imageTade.jpg&#41; 0 0 no-repeat;
	width&#58;200px;
	height&#58;200px;
&#125;
.ir&#123;
	display&#58;block;
	text-indent&#58;-999em;
	overflow&#58;hidden;
	background-repeat&#58;no-repeat;
	text-align&#58;left;direction&#58;ltr;
&#125;

<div id="mainContent">
       <h2 class="ir">Title</h2>
</div><!-- #mainContent -->

Και με ένα παρόμοιο τρόπο το navigation..
.ninja { color: black; visibility: hidden !important; }

Απάντηση

Επιστροφή στο “CSS - Cascading Style Sheets”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες