Αρχίγραμμα με CSS

18 03 2008

Υπάρχει ένα css pseudo-element που δεν είναι ευρέως γνωστό, παρ,ότι πολύ χρήσιμο: To :first-letter. Στην προκειμένη περίπτωση μας σώζει από extra non-semantic markup (και server-side κώδικα, στην περίπτωση δυναμικής σελίδας) για να δημιουργήσουμε αρχίγραμμα σε κάποια κείμενα. Έστω πχ ότι το εν λόγω κείμενο βρίσκεται μέσα σε ένα div με class “content”. O css selector μας θα είχε ως εξής:

div.content:first-letter

Το βασικό για τη δημιουργία αρχιγράμματος είναι οι δύο παρακάτω δηλώσεις:

display:block;
float:left;

Αυτές του δίνουν τη δομή που θέλουμε. Συνήθως χρειάζεται και η

line-height:100%;

για όσους βαριούνται, ή αν δεν βαριέστε, για καλύτερο αποτέλεσμα, στην τιμή της line-height μπορείτε να δώσετε το ακριβές αποτέλεσμα του πλήθους των γραμμών που θέλετε να καταλαμβάνει το αρχίγραμμα επί το line-height του κανονικού κειμένου. Πχ στην δική μου περίπτωση, το line-height ήταν 24px και ήθελα το αρχίγραμμα να καταλαμβάνει σε ύψος 3 γραμμές κειμένου, οπότε έδωσα line-height:72px;.

Τα υπόλοιπα αφορούν εμφανισιακές λεπτομέρειες που επαφίενται στην δική σας δημιουργικότητα. Προσέξτε μόνο να δώσετε κάποιο margin (αλλιώς θα κολλάει στο κείμενο) και ένα font-size σε ems (ώστε να λειτουργεί σωστά σε κάθε μέγεθος κειμένου, και να μεγαλώνει μαζί με τα γράμματα, όταν ο χρήστης προσπαθήσει να τα μεγαλώσει). Στην περίπτωση μου, όλος ο css rule είχε ως εξής:

.post .post_content:first-letter
{
    display:block;
    float:left;
    font-size:6em;
    margin:0px 8px 1px 0px;
    line-height: 72px;
    font-family:Georgia, "Times New Roman", Times, serif;
    color:#97bac8;
    font-style:italic;
}

Και το αποτέλεσμα το βλέπετε στην εικόνα παρακάτω (από ΙΕ7).
arxigramma.gif

Highlights: Δεν χαλάει το validation, και δουλεύει και σε ΙΕ6, προς μεγάλη μου έκπληξη!


Ενέργειες

Πληροφορίες

7 απαντήσεις

31 03 2008
_hopelesscase_

Πρώτη φορά μπαίνω στο μπλογκ και σίγουρα όχι και τελευταία.
Ωραίο το αρχίγραμμα, μόλις το εφάρμοσα, αλλά… Καμία ιδέα για ΙΕ 6; Υπάρχει ελπίδα να δείξει κάτι σωστό;

31 03 2008
leaverou

Σε μένα δούλευε σε ΙΕ6 και μάλιστα παραξενεύτηκα διότι σπάνια ο ΙΕ6 υποστηρίζει κανέναν πιο “σπάνιο” selector. Εσύ το δοκίμασες και σε ΙΕ6 δεν δουλεύει;

7 04 2008
porcupine

Τα pseudo-elements δεν υποστηρίζονται από ΙΕ6. That’s for sure.

Ωραίο blog. Congrats!

7 04 2008
leaverou

Χμμ θα το ξανακοιτάξω…
Ίσως φταίει ότι δεν έχω “κανονικό” ΙΕ6, αλλά αυτόν από εδώ: http://tredosoft.com/Multiple_IE

Ευχαριστώ porcupine για τα καλά σου λόγια για το blog μου :)

Παρεμπιπτόντως, ίσως παρατηρήσατε ότι έχω αρκετές μέρες να γράψω. Ο λόγος γι’αυτό είναι ότι μου προέκυψαν αρκετές υποχρεώσεις εκτός δουλειάς, οπότε αφού δεν δουλεύω πολύ αυτές τις μέρες, δεν ανακαλύπτω και κανένα tip. Ελπίζω να ανακάμψω μετά τις 18/4 :)

10 04 2008
e.

Κι όμως, ειδικά το :first-letter (όπως και το :first-line) θεωρητικά υποστηρίζεται στον ΙΕ6 όπως αναφέρεται στο Browser CSS support table του Site Point. Κι εγώ απ’ όσο θυμάμαι το έχω δοκιμάσει.
Πολύ καλαισθητο το αποτέλεσμα στο παράδειγμά σου.

14 04 2008
_hopelesscase_

Παιδιά, το προσπάθησα και δεν μου είχε δουλέψει. Ήταν απογοητευτικό στον ΙΕ6, επίσης υπήρχαν διαφορές στο αποτέλεσμα μεταξύ Opera και FF, οπότε βαρέθηκα να φτιάχνω το’ να και να μου χαλάει το άλλο. Κατέληξα να δίνω class με άλλη μορφοποίηση στο αρχικό γράμμα -ο πελάτης είχε λυσσάξει να του το βάλω όπως το έβλεπε στο Word….
Και μια απορία που ίσως δεν έχει θέση εδώ: Δεν μπορώ να’χω τον ΙΕ6 μαζί με τον 7 στο ίδιο PC, ε;

14 04 2008
leaverou

Ναι, υπάρχουν κάποιες μικροδιαφορές μεταξύ των browsers, αλλά δεν είχα παρατηρήσει κάτι τόσο κραυγαλέο όσο περιγράφεις.
Ναι μπορείς να έχεις τον ΙΕ6 και τον ΙΕ7 στο ίδιο pc, διάβασε το παραπάνω σχόλιο μου, δίνω και λινκ ;)

Γράψτε ένα σχόλιο