033.1 Μάθημα 1
Πιστοποιητικό: |
Web Development Essentials |
---|---|
Έκδοση: |
1.0 |
Θέμα: |
033 Styling Περιεχομένου CSS |
Σκοπός: |
033.1 Βασικά Στοιχεία CSS |
Μάθημα: |
1 απο 1 |
Εισαγωγή
Όλα τα προγράμματα περιήγησης αποδίδουν σελίδες HTML χρησιμοποιώντας προεπιλεγμένους κανόνες παρουσίασης που είναι πρακτικοί και απλοί, αλλά όχι ελκυστικοί οπτικά. Το HTML από μόνο του προσφέρει λίγα χαρακτηριστικά για τη σύνταξη περίπλοκων σελίδων με βάση τις σύγχρονες έννοιες της εμπειρίας ενός χρήστη. Αφού γράψετε απλές σελίδες HTML, πιθανότατα έχετε συνειδητοποιήσει ότι είναι αντιαισθητικές σε σύγκριση τις με καλοσχεδιασμένες σελίδες που βρίσκονται στο Internet. Αυτό συμβαίνει επειδή, στο σύγχρονο HTML, ο markup κώδικας που προορίζεται για τη δομή και τη λειτουργία των elements στο έγγραφο (δηλαδή, το semantic content) είναι ξεχωριστός από τους κανόνες που καθορίζουν πώς πρέπει να φαίνονται τα elements (το presentation). Οι κανόνες για την παρουσίαση είναι γραμμένοι σε διαφορετική γλώσσα που ονομάζεται Cascading Style Sheets (CSS). Σας επιτρέπει να αλλάξετε σχεδόν όλες τις οπτικές πτυχές του εγγράφου, όπως γραμματοσειρές, χρώματα και την τοποθέτηση των elements στην σελίδα.
Τα HTML έγγραφα δεν προορίζονται, στις περισσότερες περιπτώσεις, να εμφανίζονται με σταθερό layout όπως ένα αρχείο PDF. Αντίθετα, οι ιστοσελίδες που βασίζονται σε HTML πιθανότατα θα αποδοθούν σε μεγάλη ποικιλία μεγεθών οθόνης ή ακόμη και θα εκτυπωθούν. Το CSS παρέχει συντονίσιμες επιλογές για να διασφαλίσει ότι η ιστοσελίδα θα αποδοθεί όπως προβλέπεται, προσαρμοσμένη στη συσκευή ή την εφαρμογή που την ανοίγει.
Εφαρμογή Styles
Υπάρχουν διάφοροι τρόποι για να συμπεριλάβετε το CSS σε ένα έγγραφο HTML: γράψτε το απευθείας στο tag του element, σε μια ξεχωριστή ενότητα του source code της σελίδας ή σε ένα εξωτερικό αρχείο που θα αναφέρεται από την HTML σελίδα.
Το Attribute style
Ο απλούστερος τρόπος για να τροποποιήσετε το style ενός συγκεκριμένου element είναι να το γράψετε απευθείας στο tag του element χρησιμοποιώντας το attribute style
. Όλα τα ορατά HTML elements επιτρέπουν ένα style
attribute, του οποίου η τιμή μπορεί να είναι ένας ή περισσότεροι κανόνες CSS, γνωστοί και ως properties. Ας ξεκινήσουμε με ένα απλό παράδειγμα, ένα element παραγράφου:
<p>My stylized paragraph</p>
Η βασική σύνταξη ενός προσαρμοσμένου CSS property είναι property: value
, όπου το property
είναι η συγκεκριμένη πτυχή που θέλετε να αλλάξετε στο element και το value
ορίζει την αντικατάσταση της προεπιλεγμένης επιλογής που γίνεται από το πρόγραμμα περιήγησης. Ορισμένα properties ισχύουν για όλα τα elements και ορισμένα properties ισχύουν μόνο για συγκεκριμένα elements. Ομοίως, υπάρχουν κατάλληλες τιμές που πρέπει να χρησιμοποιηθούν σε κάθε property.
Για παράδειγμα, για να αλλάξουμε το χρώμα της απλής παραγράφου μας, χρησιμοποιούμε το property color
. Το property color
αναφέρεται στο foreground χρώμα, δηλαδή στο χρώμα των γραμμάτων της παραγράφου. Το ίδιο το χρώμα μπαίνει στο τμήμα τιμής του κανόνα και μπορεί να καθοριστεί σε πολλές διαφορετικές μορφές, συμπεριλαμβανομένων απλών ονομάτων όπως red
, green
, blue
, yellow
κ.λπ. Έτσι, για να γίνει το γράμμα της παραγράφου purple
, προσθέστε το προσαρμοσμένο property color: purple
στο attribute style
του element:
<p style="color: purple">My first stylized paragraph</p>
Άλλα προσαρμοσμένα properties μπορούν να μπούν στο ίδιο style
property, όμως πρέπει να διαχωρίζονται με ερωτηματικά. Για παράδειγμα, εάν θέλετε να κάνετε το μέγεθος της γραμματοσειράς μεγαλύτερο, προσθέστε το font-size: larger
στο style
property:
<p style="color: purple; font-size: larger">My first stylized paragraph</p>
Note
|
Δεν είναι απαραίτητο να προσθέσετε κενά γύρω από τις άνω και κάτω τελείες και τα ερωτηματικά, αλλά μπορούν να διευκολύνουν την ανάγνωση του CSS κώδικα. |
Για να δείτε το αποτέλεσμα αυτών των αλλαγών, αποθηκεύστε το ακόλουθο HTML σε ένα αρχείο και, στη συνέχεια, ανοίξτε το σε ένα πρόγραμμα περιήγησης (τα αποτελέσματα εμφανίζονται στην Figure 1):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>CSS Basics</title>
</head>
<body>
<p style="color: purple; font-size: larger">My first stylized paragraph</p>
<p style="color: green; font-size: larger">My second stylized paragraph</p>
</body>
</html>
Μπορείτε να φανταστείτε κάθε element στη σελίδα ως ένα ορθογώνιο ή ένα πλαίσιο του οποίου τις γεωμετρικές ιδιότητες και τις διακοσμήσεις μπορείτε να χειριστείτε με CSS. Ο μηχανισμός απόδοσης χρησιμοποιεί δύο βασικές τυπικές έννοιες για την τοποθέτηση των elements: τοποθέτηση block και inline τοποθέτηση. Τα block elements καταλαμβάνουν όλο τον οριζόντιο χώρο του parent element και τοποθετούνται διαδοχικά, από πάνω προς τα κάτω. Το ύψος τους (η vertical dimension τους, που δεν πρέπει να συγχέεται με την _ top_ θέση τους στη σελίδα) εξαρτάται γενικά από την ποσότητα περιεχομένου που διαθέτουν. Τα inline elements ακολουθούν τη μέθοδο από αριστερά προς τα δεξιά παρόμοια με τις δυτικές γραπτές γλώσσες: τα elements τοποθετούνται οριζόντια, από αριστερά προς τα δεξιά, έως ότου δεν υπάρχει άλλος χώρος στη δεξιά πλευρά, οπότε το element συνεχίζει σε μια νέα γραμμή ακριβώς κάτω από την τρέχουσα . Elements όπως p
, div
και section
τοποθετούνται ως blocks από προεπιλογή, ενώ elements όπως span
, em
, a
και μεμονωμένα γράμματα τοποθετούνται inline. Αυτές οι βασικές μέθοδοι τοποθέτησης μπορούν να τροποποιηθούν θεμελιωδώς από τους κανόνες του CSS.
Το ορθογώνιο που αντιστοιχεί στο element p
, στο body του δείγματος εγγράφου HTML θα είναι ορατό εάν προσθέσετε τo property background-color
στον κανόνα (Figure 2):
<p style="color: purple; font-size: larger; background-color: silver">My first stylized paragraph</p>
<p style="color: green; font-size: larger; background-color: silver">My second stylized paragraph</p>
Καθώς προσθέτετε νέα προσαρμοσμένα CSS properties στο attribute style
, θα παρατηρήσετε ότι ο συνολικός κώδικας αρχίζει να γίνεται ακατάστατος. Η σύνταξη πάρα πολλών κανόνων CSS στο attribute style
υπονομεύει τον διαχωρισμό δομής (HTML) και παρουσίασης (CSS). Επιπλέον, σύντομα θα συνειδητοποιήσετε ότι πολλά styles μοιράζονται μεταξύ διαφορετικών elements και δεν είναι συνετό να τα επαναλαμβάνετε σε κάθε element.
Κανόνες CSS
Αντί να διαμορφώνετε τα elements απευθείας στα style
attributes τους, είναι πολύ πιο πρακτικό να πείτε στο πρόγραμμα περιήγησης για ολόκληρη τη συλλογή elements στα οποία ισχύει το προσαρμοσμένο style. Το κάνουμε προσθέτοντας ένα selector στα προσαρμοσμένα properties, αντιστοιχίζοντας elements ανά type, class, unique ID, σχετική θέση κ.λπ. Ο συνδυασμός ενός selector και των αντίστοιχων προσαρμοσμένων properties — επίσης γνωστών ως declarations — ονομάζεται CSS rule. Η βασική σύνταξη ενός CSS rule είναι selector { property: value }
. Όπως και στο attribute style
, τα properties που χωρίζονται με ερωτηματικά μπορούν να ομαδοποιηθούν, όπως στο p { color: purple; font-size: larger }
. Αυτός ο κανόνας ταιριάζει με κάθε element p
στη σελίδα και εφαρμόζει τα προσαρμοσμένα properties color
και font-size
.
Ένας κανόνας CSS για ένα parent element θα ταιριάζει αυτόματα με όλα τα children elements του. Αυτό σημαίνει ότι θα μπορούσαμε να εφαρμόσουμε τα προσαρμοσμένα properties σε όλο το κείμενο της σελίδας, ανεξάρτητα από το αν είναι μέσα ή έξω από ένα tag <p>
, χρησιμοποιώντας εναλλακτικά τον selector body
: body { color: purple; font-size: larger }
. Αυτή η στρατηγική μάς απαλλάσσει από το να γράψουμε ξανά τον ίδιο κανόνα για όλα τα children του, αλλά μπορεί να χρειαστεί να γράψουμε πρόσθετους κανόνες για το “undo” ή την τροποποίηση των κληρονομημένων κανόνων.
Το Tag style
Το tag <style>
μας επιτρέπει να γράψουμε κανόνες CSS μέσα στη σελίδα HTML που θέλουμε να διαμορφώσουμε. Επιτρέπει στο πρόγραμμα περιήγησης να διαφοροποιήσει τον κώδικα CSS από τον κώδικα HTML. Το tag <style>
πηγαίνει στην ενότητα head
του εγγράφου:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>CSS Basics</title>
<style type="text/css">
p { color: purple; font-size: larger }
</style>
</head>
<body>
<p>My first stylized paragraph</p>
<p>My second stylized paragraph</p>
</body>
</html>
Το attribute type
λέει στο πρόγραμμα περιήγησης τι είδους περιεχόμενο βρίσκεται μέσα στο tag <style>
, π.χ. τον MIME τύπο του. Επειδή κάθε πρόγραμμα περιήγησης που υποστηρίζει CSS υποθέτει ότι ο τύπος του tag <style>
είναι text/css
από προεπιλογή, η συμπερίληψη του attribute type
είναι προαιρετική. Υπάρχει επίσης ένα attribute media
που υποδεικνύει το μέσο — για παράδειγμα, οθόνες υπολογιστών ή εκτύπωση — στο οποίο ισχύουν οι κανόνες CSS στο tag <style>
. Από προεπιλογή, οι κανόνες CSS ισχύουν για οποιοδήποτε μέσο στο οποίο αποδίδεται το έγγραφο.
Όπως και στον κώδικα HTML, τα line breaks και το indentation του κώδικα δεν αλλάζουν τον τρόπο με τον οποίο ερμηνεύονται οι κανόνες CSS από το πρόγραμμα περιήγησης. Ο κώδικας:
<style type="text/css">
p { color: purple; font-size: larger }
</style>
έχει το ίδιο ακριβώς αποτέλεσμα με τον κώδικα:
<style type="text/css">
p {
color: purple;
font-size: larger;
}
</style>
Τα επιπλέον byte που χρησιμοποιούνται από τα κενά διαστήματα και τα line breaks έχουν μικρή διαφορά στο τελικό μέγεθος του εγγράφου και δεν έχουν σημαντικό αντίκτυπο στο χρόνο φόρτωσης της σελίδας, επομένως η επιλογή του layout είναι θέμα προτίμησης. Σημειώστε το ερωτηματικό μετά το τελευταίο declaration (font-size: larger;
) του κανόνα CSS. Αυτό το ερωτηματικό δεν είναι υποχρεωτικό, αλλά το να το έχετε εκεί διευκολύνει την προσθήκη άλλου ένα declaration στην επόμενη γραμμή χωρίς να ανησυχείτε μήπως λείπουν ερωτηματικά.
Η ύπαρξη των declarations σε ξεχωριστές γραμμές βοηθά επίσης όταν χρειάζεται να κάνετε comment out ένα declaration. Όποτε θέλετε να απενεργοποιήσετε προσωρινά ένα declaration για λόγους αντιμετώπισης προβλημάτων, για παράδειγμα, μπορείτε να περικλείσετε την αντίστοιχη γραμμή με τα /*
και */
:
p {
color: purple;
/*
font-size: larger;
*/
}
ή:
p {
color: purple;
/* font-size: larger; */
}
Γραμμένο έτσι, το declaration font-size: larger
θα αγνοηθεί από το πρόγραμμα περιήγησης. Προσέξτε να ανοίξετε και να κλείσετε τα σχόλια σωστά, διαφορετικά το πρόγραμμα περιήγησης ενδέχεται να μην μπορεί να ερμηνεύσει τους κανόνες.
Τα σχόλια είναι επίσης χρήσιμα για τη σύνταξη υπενθυμίσεων σχετικά με τους κανόνες:
/* Texts inside <p> are purple and larger */
p {
color: purple;
font-size: larger;
}
Υπενθυμίσεις όπως αυτή στο παράδειγμα είναι αναλώσιμες σε stylesheets που περιέχουν μικρό αριθμό κανόνων, αλλά είναι απαραίτητες για να βοηθήσουν την πλοήγηση σε stylesheets με εκατοντάδες (ή περισσότερους) κανόνες.
Παρόλο που το attribute style
και το tag <style>
είναι επαρκή για τη δοκιμή προσαρμοσμένων styles και χρήσιμα για συγκεκριμένες καταστάσεις, δεν χρησιμοποιούνται συνήθως. Αντίθετα, οι κανόνες CSS συνήθως διατηρούνται σε ξεχωριστό αρχείο και μπορεί να γίνει αναφορά τους από το έγγραφο HTML.
CSS σε Εξωτερικά Αρχεία
Η προτιμώμενη μέθοδος για να συσχετίσετε τους ορισμούς CSS με ένα έγγραφο HTML, είναι να αποθηκεύσετε το CSS σε ένα ξεχωριστό αρχείο. Αυτή η μέθοδος προσφέρει δύο βασικά πλεονεκτήματα σε σχέση με τις προηγούμενες:
-
Οι ίδιοι κανόνες styling μπορούν να μοιράζονται μεταξύ διαφορετικών εγγράφων.
-
Το αρχείο CSS συνήθως γίνεται cached από το πρόγραμμα περιήγησης, βελτιώνοντας τους μελλοντικούς χρόνους φόρτωσης.
Τα αρχεία CSS έχουν την επέκταση .css
και, όπως τα αρχεία HTML, μπορούν να επεξεργαστούν από οποιοδήποτε πρόγραμμα επεξεργασίας απλού κειμένου. Σε αντίθεση με τα αρχεία HTML, τα αρχεία CSS δεν έχουν δομή ανώτατου επιπέδου με ιεραρχικά tags όπως <head>
ή <body>
. Αντίθετα, το αρχείο CSS είναι απλώς μια λίστα κανόνων που επεξεργάζονται με διαδοχική σειρά από το πρόγραμμα περιήγησης. Οι ίδιοι κανόνες που είναι γραμμένοι μέσα σε ένα tag <style>
θα μπορούσαν αντ 'αυτού να μπουν σε ένα αρχείο CSS.
Η συσχέτιση μεταξύ του εγγράφου HTML και των κανόνων CSS που είναι αποθηκευμένοι σε ένα αρχείο ορίζεται μόνο στο έγγραφο HTML. Για το αρχείο CSS, δεν έχει σημασία αν υπάρχουν elements που ταιριάζουν με τους κανόνες του, επομένως δεν χρειάζεται να απαριθμήσετε στο αρχείο CSS τα έγγραφα HTML με τα οποία είναι συνδεδεμένο. Απο την πλευρά του HTML, κάθε συνδεδεμένο stylesheet θα εφαρμοστεί στο έγγραφο, ακριβώς σαν να ήταν γραμμένοι οι κανόνες σε ένα tag <style>
.
Το HTML tag <link>
ορίζει ένα εξωτερικό stylesheet που θα χρησιμοποιηθεί στο τρέχον έγγραφο και θα πρέπει να βρίσκεται στην ενότητα head
του HTML εγγράφου:
<head>
<meta charset="utf-8" />
<title>CSS Basics</title>
<link href="style.css" rel="stylesheet">
</head>
Τώρα μπορείτε να τοποθετήσετε τον κανόνα για το element p
που χρησιμοποιήσαμε πριν στο αρχείο style.css
και τα αποτελέσματα που βλέπει ο επισκέπτης στην ιστοσελίδα θα είναι τα ίδια. Εάν το αρχείο CSS δεν βρίσκεται στον ίδιο κατάλογο με το έγγραφο HTML, καθορίστε το σχετικό ή το απόλυτο μονοπάτι του στο attribute href
. Το tag <link>
μπορεί να αναφέρεται σε διαφορετικούς τύπους εξωτερικών πόρων, επομένως είναι σημαντικό να καθορίσετε ποια σχέση έχει ο εξωτερικός πόρος με το τρέχον έγγραφο. Για εξωτερικά αρχεία CSS, η σχέση ορίζεται στο rel="stylesheet"
.
Το attribute media
μπορεί να χρησιμοποιηθεί με τον ίδιο τρόπο όπως για το tag <style>
: υποδεικνύει τα μέσα, όπως οθόνες υπολογιστών ή εκτύπωση, στα οποία πρέπει να ισχύουν οι κανόνες στο εξωτερικό αρχείο.
Το CSS μπορεί να αλλάξει εντελώς ένα element, αλλά εξακολουθεί να είναι σημαντικό να χρησιμοποιείτε το κατάλληλο element για τα στοιχεία της σελίδας. Διαφορετικά, οι υποστηρικτικές τεχνολογίες, όπως τα screen-readers, ενδέχεται να μην μπορούν να αναγνωρίσουν τα σωστά τμήματα της σελίδας.
Καθοδηγούμενες Ασκήσεις
-
Ποιες μέθοδοι μπορούν να χρησιμοποιηθούν για την αλλαγή της εμφάνισης των HTML elements χρησιμοποιώντας CSS;
-
Γιατί δεν συνιστάται η χρήση του attribute
style
του tag<p>
, εάν υπάρχουν παράγραφοι που θα πρέπει να έχουν την ίδια εμφάνιση; -
Ποια είναι η προεπιλεγμένη πολιτική τοποθέτησης, για την τοποθέτηση ενός
div
element; -
Ποιο attribute του tag
<link>
υποδεικνύει τη θέση ενός εξωτερικού αρχείου CSS; -
Ποια είναι η σωστή ενότητα για να εισάγετε το element
link
μέσα σε ένα έγγραφο HTML;
Ασκήσεις Εξερεύνησης
-
Γιατί δεν συνιστάται η χρήση ενός
<div>
tag για τον προσδιορισμό μιας λέξης σε μια συνηθισμένη πρόταση; -
Τι θα συμβεί αν ξεκινήσετε ένα σχόλιο με
/*
στη μέση ενός αρχείου CSS, αλλά ξεχάσετε να το κλείσετε με*/
; -
Γράψτε έναν κανόνα CSS για να κάνετε υπογράμμιση σε όλα τα
em
elements του εγγράφου. -
Πώς μπορείτε να υποδείξετε ότι ένα stylesheet από ένα
<style>
ή<link>
tag, θα πρέπει να χρησιμοποιείται μόνο από screen readers;
Σύνοψη
Αυτό το μάθημα καλύπτει τις βασικές έννοιες του CSS και τον τρόπο ενσωμάτωσής του με το HTML. Οι κανόνες που είναι γραμμένοι σε CSS stylesheets είναι η τυπική μέθοδος για την αλλαγή της εμφάνισης των εγγράφων HTML. Το CSS μας επιτρέπει να διατηρούμε το semantic περιεχόμενο ξεχωριστό από τις πολιτικές presentation. Αυτό το μάθημα περιλαμβάνει τις ακόλουθες έννοιες και διαδικασίες:
-
Πώς να αλλάξετε τα CSS properties χρησιμοποιώντας το attribute
style
. -
Τη βασική σύνταξη κανόνων CSS.
-
Την χρήση του tag
<style>
, για την ενσωμάτωση CSS κανόνων στο έγγραφο. -
Την χρήση του tag
<link>
, για την ενσωμάτωση εξωτερικών stylesheets στο έγγραφο.
Απαντήσεις στις Καθοδηγούμενες Ασκήσεις
-
Ποιες μέθοδοι μπορούν να χρησιμοποιηθούν για την αλλαγή της εμφάνισης των HTML elements χρησιμοποιώντας CSS;
Τρεις βασικές μέθοδοι: Γράψτε το απευθείας στο tag του element, σε ξεχωριστή ενότητα του source code της σελίδας ή σε ένα εξωτερικό αρχείο που θα αναφέρεται από τη σελίδα HTML.
-
Γιατί δεν συνιστάται η χρήση του attribute
style
του tag<p>
, εάν υπάρχουν παράγραφοι που θα πρέπει να έχουν την ίδια εμφάνιση;Το CSS declaration θα πρέπει να αναπαραχθεί στα άλλα
<p>
tags, κάτι που είναι χρονοβόρο, αυξάνει το μέγεθος του αρχείου και είναι επιρρεπές σε σφάλματα. -
Ποια είναι η προεπιλεγμένη πολιτική τοποθέτησης, για την τοποθέτηση ενός
div
element;Το element
div
, αντιμετωπίζεται ως block element από προεπιλογή, επομένως θα καταλαμβάνει όλο τον οριζόντιο χώρο του parent element του, και το ύψος του θα εξαρτάται από το περιεχόμενό του. -
Ποιο attribute του tag
<link>
υποδεικνύει τη θέση ενός εξωτερικού αρχείου CSS;Το attribute
href
. -
Ποια είναι η σωστή ενότητα για να εισάγετε το element
link
μέσα σε ένα έγγραφο HTML;Το element
link
πρέπει να βρίσκεται στην ενότηταhead
του εγγράφου HTML.
Απαντήσεις στις Ασκήσεις Εξερεύνησης
-
Γιατί δεν συνιστάται η χρήση ενός
<div>
tag για τον προσδιορισμό μιας λέξης σε μια συνηθισμένη πρόταση;Το tag
<div>
, παρέχει έναν semantic διαχωρισμό μεταξύ δύο διακριτών τμημάτων του εγγράφου και παρεμβαίνει στα εργαλεία προσβασιμότητας όταν χρησιμοποιείται για inline elements κειμένου. -
Τι θα συμβεί αν ξεκινήσετε ένα σχόλιο με
/*
στη μέση ενός αρχείου CSS, αλλά ξεχάσετε να το κλείσετε με*/
;Όλοι οι κανόνες μετά το σχόλιο θα αγνοηθούν από το πρόγραμμα περιήγησης.
-
Γράψτε έναν κανόνα CSS για να κάνετε υπογράμμιση σε όλα τα
em
elements του εγγράφου.em { text-decoration: underline }
ή
em { text-decoration-line: underline }
-
Πώς μπορείτε να υποδείξετε ότι ένα stylesheet από ένα
<style>
ή<link>
tag, θα πρέπει να χρησιμοποιείται μόνο από screen readers;Η τιμή του attribute
media
, πρέπει να είναιspeech
.