Επιλογείς (selectors)
Προκειμένου να δώσουμε στιλ σε μία ή περισσότερες ετικέτες, πρέπει πρώτα να την ή τις επιλέξουμε με κάποια εντολή.
Παρακάτω δίνονται αυτές οι εντολές επιλογής.
Επιλογέας ετικέτας (tag selector ή element selector)
Επιλέγει το σύνολο των ετικετών με συγκεκριμένο όνομα ετικέτας. Για παράδειγμα όλες οι ετικέτες p.
p {
color: blue;
line-height: 1.5;
}
Επιλογέας id (id selector)
Εάν έχετε δώσει id σε μια ετικέτα τότε μπορείτε να την επιλέξετε ως εξής:
#green {
color: green;
}
Η παραπάνω εντολή θα επιλέξει την ετικέτα που έχει αυτό το id. Για παράδειγμα:
<p id="green">Αυτή είναι μια παράγραφος με κλάση τύπου id.</p>
Μπορείτε επίσης να γράψετε:
p#green {
color: green;
}
Επιλογέας κλάσης (class selector)
Εάν έχετε δώσει την ιδιότητα class σε μία ή περισσότερες ετικέτες τότε μπορείτε να τις επιλέξετε ως εξής:
.green {
color: green;
}
Η παραπάνω εντολή θα επιλέξει τις ετικέτες που έχουν την ιδιότητα class = "green". Για παράδειγμα:
<p class="green">Αυτή είναι μια παράγραφος με κλάση green.</p>
ή/και
<div class="green">Αυτό είναι ένα div με κλάση green.</div>
Μπορείτε επίσης να γράψετε:
p.green {
color: green;
}
αν θέλετε αυτός ο επιλογέας κλάσης να ισχύει μόνο για p (paragraphs).
Ομάδες (Grouping Selector)
Μπορείτε να ομαδοποιήσετε επιλογείς με κοινές ιδιότητες χωρίζοντάς τες με κόμμα όπως στο παρακάτω παράδειγμα.
h1, h2, h3, h4, h5, h6 { color: green; }
ή
.green, .red {
font-size: 16p;
line-height: 1.5;
}
.green {
color: green;
}
.red {
color: red;
}
Συνδυασμός επιλογέων (combinators) ή children selectors
Μπορούμε να συνδυάσουμε επιλογείς για πιο σύνθετες και ειδικές επιλογές στοιχείων html.
Υπο-επιλογέας (χωρίζεται με διάστημα)
Επιλέγει στοιχεία που βρίσκονται μέσα σε έναν άλλο επιλογέα (children).
Στο παράδειγμα, επιλέγονται μόνο τα p που βρίσκονται μέσα σε div.
div p {
text-align: center;
color: blue;
font-family: arial;
}
Επίσης
nav#top-menu a {
text-decoration: none;
color: pink;
padding: 5px 10px;
}
Στο παραπάνω παράδειγμα, επιλέγονται μόνο τα a που βρίσκονται μέσα στο nav με id = "top-menu".
Μπορεί να έχουμε περισσότερα επίπεδα υπο-επιλογών
nav#top-menu div a {
text-decoration: none;
color: pink;
padding: 5px 10px;
}
Επιλογέας άμεσων παιδιών (direct children selector (>))
Ισχύει ό,τι και για τον υπο-επιλογέα αλλά μόνο για τα πρώτα (άμεσα) παιδιά.
Ο παρακάτω επιλογέας επιλέγει μόνο τα p που βρίσκονται μέσα σε div αλλά μόνο σε πρώτο επίπεδο (παιδιά).
div > p {
text-align: center;
color: blue;
font-family: arial;
}
Και εδώ μπορεί να έχουμε περισσότερα επίπεδα.
div > article > p {
text-align: center;
color: blue;
font-family: arial;
}
Επιλογέας επόμενων
Επιλέγει τα ακριβώς επόμενα στοιχεία
Στο παράδειγμα, επιλέγονται τα p που βρίσκονται ακριβώς μετά τα h1.
h1 + p {
font-weight: bold;
color: blue;
}
Επιλογέας αδελφών (Sibling Selector (~))
Επιλέγει στοιχεία που είναι διπλανά ή αδέλφια.
Στο παράδειγμα, επιλέγονται τα p που είναι αδέλφια με div.
Δηλαδή, πρέπει να υπάρχει ένα div και να ακολουθούν τα p στο ίδιο επίπεδο.
div ~ p {
background-color: orange;
}
Στο παρακάτω παράδειγμα οι παράγραφοι 3 και 4 είναι siblings.
<p>Paragraph 1</p> <div> <p>Paragraph 2</p> </div> <p>Paragraph 3</p> <p>Paragraph 4</p>
Ψευδο-κλάσεις (Pseudo-classes)
Χρησιμοποιούνται για επιλογή στοιχείων που βρίσκονται σε κάποια κατάσταση ή έχει προκύψει κάποιο συμβάν. Για παράδειγμα όταν ο δείκτης βρίσκεται επάνω σε ένα λινκ ή όταν έχουμε επιλέξει κείμενο σε μια γραμμή κειμένου.
Η ψευδοκλάση προστίθεται σε έναν επιλογέα με το σύμβολο :.
a:hover {
color: #FF00FF;
}
a:active {
color: #0000FF;
}
div:hover p {
display: block;
}
Συνολικά έχουμε τις παρακάτω ψευδοκλάσεις.
| Επιλογέας | Παράδειγμα | Περιγραφή |
|---|---|---|
| :active | a:active | Επιλέγει το ενεργό λινκ |
| :checked | input:checked | Επιλέγει τα στοιχεία που είναι checked |
| :disabled | input:disabled | Επιλέγει τα στοιχεία που είναι disabled |
| :empty | p:empty | Επιλέγει τα στοιχεία που δεν έχουν παιδιά |
| :enabled | input:enabled | Επιλέγει τα enabled στοιχεία |
| :first-child | p:first-child | Επιλέγει τα στοιχεία που είναι πρώτα παιδιά |
| :first-of-type | p:first-of-type | Επιλέγει τα στοιχεία που είναι πρώτα παιδιά και ορισμένου τύπου |
| :focus | input:focus | Επιλέγει το στοιχείο που έχει το focus |
| :hover | a:hover | Επιλέγει τα λινκ όταν έχουμε mouse over |
| :in-range | input:in-range | Επιλέγει τα στοιχεία με τιμή μέσα σε ορισμένα όρια |
| :invalid | input:invalid | Επιλέγει τα στοιχεία με μη έγκυρη τιμή |
| :lang(language) | p:lang(it) | Επιλέγει τα στοιχεία με συγκεκριμένη τιμή για την ιδιότητα lang |
| :last-child | p:last-child | Επιλέγει τα στοιχεία που είναι τελευταία παιδιά |
| :last-of-type | p:last-of-type | Επιλέγει τα στοιχεία που είναι τελευταία παιδιά συγκεκριμένου τύπου |
| :link | a:link | Επιλέγει τα στοιχεία λινκ |
| :not(selector) | :not(p) | Επιλέγει όλα τα στοιχεία εκτός από αυτά που προσδιορίζανται με τον επιλογέα |
| :nth-child(n) | p:nth-child(2) | Επιλέγει το στοιχείο που είναι παιδί με βάση τη σειρά του αρχίζοντας από το 1 |
| :nth-last-child(n) | p:nth-last-child(2) | Επιλέγει το στοιχείο που είναι παιδί με βάση τη σειρά του αρχίζοντας από το 1 αλλά από το τέλος |
| :nth-last-of-type(n) | p:nth-last-of-type(2) | Όπως και παραπάνω αλλά για συγκεκριμένο τύπο |
| :nth-of-type(n) | p:nth-of-type(2) | Όπως και παραπάνω αλλά για συγκεκριμένο τύπο |
| :only-of-type | p:only-of-type | Επιλέγει όλα τα στοιχεία μόνο συγκεκριμένου τύπου |
| :only-child | p:only-child | Επιλέγει όλα τα στοιχεία που είναι τα μόνα παιδιά (μοναχοπαίδια) |
| :optional | input:optional | Επιλέγει όλα τα στοιχεία με την ιδιότητα optional |
| :out-of-range | input:out-of-range | Επιλέγει όλα τα στοιχεία με τιμές εκτός ορίων |
| :read-only | input:read-only | Επιλέγει όλα τα στοιχεία με την ιδιότητα "readonly" |
| :read-write | input:read-write | Επιλέγει όλα τα στοιχεία με την ιδιότητα "read-write" |
| :required | input:required | Επιλέγει όλα τα στοιχεία με την ιδιότητα "required" |
| :root | root | Επιλέγει το στοιχείο root |
| :target | #news:target | Επιλέγει τα στοιχεία με ορισμένο anchor name |
| :valid | input:valid | Επιλέγει όλα τα στσιχεία με έγκυρη value |
| :visited | a:visited | Επιλέγει όλα τα λινκ που έχουν επισκευτεί |
Ψευδο-στοιχεία (Pseudo Elements)
Χρησιμοποιούνται για την επιλογή μέρους ενός στοιχείου. Για παράδειγμα το αρχίγραμμα μιας παραγράφου.
Η ψευδοκλάση προστίθεται σε έναν επιλογέα με το σύμβολο ::.
p::first-letter {
color: #ff0000;
font-size: xx-large;
}
p::first-line {
color: #ff0000;
font-variant: small-caps;
}
| Επιλογέας | Παράδειγμα | Περιγραφή |
|---|---|---|
| ::after | p::after | Εισάγει κάτι μετά το περιεχόμενο του στοιχείου |
| ::before | p::before | Εισάγει κάτι πριν το περιεχόμενο του στοιχείου |
| ::first-letter | p::first-letter | Επιλέγει το πρώτο γράμμα |
| ::first-line | p::first-line | Επιλέγει την πρώτη γραμμή |
| ::marker | ::marker | Επιλέγει τα σημάδια (marker) μιας λίστας |
| ::selection | p::selection | Επιλέγει το κείμενο που έχει επιλέξει ο χρήστης |
Πίνακας με σύνολο προτύπων και παραδείγματα επιλογέων
| Επιλογέας | Παράδειγμα | Περιγραφή |
|---|---|---|
| .class | .intro | Επιλέγει όλα τα στοιχεία με class="intro" |
| #id | #firstname | Επιλέγει το στοιχείο με id="first-name" |
| * | * | Επιλέγει όλα τα στοιχεία (global selector) |
| element (tag) | p | Επιλέγει όλα τα στοιχεία <p> |
| element, element | div, p | Επιλέγει όλα τα στοιχεία <div> και όλα τα στοιχεία <p> |
| element element | div p | Επιλέγει όλα τα στοιχεία <p> που βρίσκονται μέσα στο στοιχείο <div> |
| element > element | div > p | Επιλέγει όλα τα στοιχεία <p> που είναι "άμεσα" παιδιά του στοιχείου <div> |
| element + element | div + p | Επιλέγει όλα τα στοιχεία <p> που βρίσκονται αμέσως μετά το στοιχείο <div> |
| element1 ~ element2 | p ~ ul | Επιλέγει όλα τα στοιχεία <ul> που βρίσκονται κάπου μετά το στοιχείο <p> |
| [attribute] | [target] | Επιλέγει όλα τα στοιχεία με ίδιότητα target |
| [attribute = value] | [target = _blank] | Επιλέγει όλα τα στοιχεία με target="_blank" |
| [attribute ~= value] | [title ~= flower] | Επιλέγει όλα τα στοιχεία με ίδιότητα title που περιέχει τη λέξη flower |
| [attribute |= value] | [lang |= en] | Επιλέγει όλα τα στοιχεία που η τιμή ιδιότητας lang αρχίζει με en ή en- |
| [attribute ^= value] | a[href ^= "https"] | Επιλέγει όλα τα στοιχεία a που η τιμή ιδιότητας href αρχίζει με https |
| [attribute $= value] | a[href $= ".pdf"] | Επιλέγει όλα τα στοιχεία a που η τιμή ιδιότητας href τελειώνει με .pdf |
| [attribute *= value] | a[href *= "tutor"] | Επιλέγει όλα τα στοιχεία a που η τιμή ιδιότητας href περιέχει τη λέξη tutor |
| :active | a:active | Επιλέγει το ενεργό (active) λινκ |
| ::after | a::after { content: " οκ"; } | Προσθέτει το οκ στό τέλος κάθε στοιχείου a |
| ::before | a::before { content: "οκ "; } | Προσθέτει το οκ στην αρχή κάθε στοιχείου a |
| :checked | input:checked | Επιλέγει όλα τα στοιχεία input που είναι checked |
| :disabled | input:disabled | Επιλέγει όλα τα στοιχεία input που είναι disabled |
| :empty | p:empty | Επιλέγει όλα τα στοιχεία p που δεν έχουν παιδιά ούτε κείμενο |
| :enabled | input:enabled | Επιλέγει όλα τα στοιχεία input που είναι enabled |
| :first-child | p:first-child | Επιλέγει όλα τα στοιχεία p που είναι πρώτα παιδιά |
| ::first-letter | p::first-letter | Επιλέγει το πρώτο γράμμα από κάθε στοιχείο p |
| ::first-line | p::first-line | Επιλέγει την πρώτη γραμμή από κάθε στοιχείο p |
| :first-of-type | p:first-of-type | Επιλέγει όλα τα στοιχεία τύπου p που είναι πρώτα παιδιά |
| :focus | input:focus | Επιλέγει το στοιχείο που έχει το focus |
| :hover | a:hover | Επιλέγει το λινκ που έχει το mouse over |
| :in-range | input:in-range | Επιλέγει τα στοιχεία input με τιμή σε ορισμένο όριο |
| :invalid | input:invalid | Επιλέγει όλα τα στοιχεία input με τιμή invalid |
| :lang(language) | p:lang(it) | Επιλέγει όλα τα στοιχεία p με lang="it" |
| :last-child | p:last-child | Επιλέγει όλα τα στοιχεία p που είναι τελευταίο παιδιά |
| :last-of-type | p:last-of-type | Επιλέγει όλα τα στοιχεία τύπου p που είναι τελευταία παιδιά |
| :link | a:link | Επιλέγει όλα τα λινκ που δεν έχουν επισκευτεί |
| :not(selector) | :not(p) | Επιλέγει όλα τα στοιχεία που δεν είναι <p> |
| :nth-child(n) | p:nth-child(2) | Επιλέγει όλα τα παιδιά <p> που είναι δεύτερα στη σειρά |
| :nth-last-child(n) | p:nth-last-child(2) | Επιλέγει όλα τα παιδιά <p> που είναι δεύτερα στη σειρά από το τέλος |
| :nth-last-of-type(n) | p:nth-last-of-type(2) | Επιλέγει όλα τα παιδιά τύπου <p> που είναι δεύτερα στη σειρά από το τέλος |
| :nth-of-type(n) | p:nth-of-type(2) | Επιλέγει όλα τα δεύτερα παιδιά τύπου <p> |
| :only-of-type | p:only-of-type | Επιλέγει όλα τα παιδιά τύπου <p> που είναι και τα μοναδικά |
| :only-child | p:only-child | Επιλέγει όλα τα παιδιά <p> που είναι και τα μοναδικά |
| :optional | input:optional | Επιλέγει όλα τα στοιχεία <input> χωρίς την ιδιότητα required |
| :out-of-range | input:out-of-range | Επιλέγει όλα τα στοιχεία <input> με τιμή εκτός ορισμένων ορίων |
| :read-only | input:read-only | Επιλέγει όλα τα στοιχεία <input> με ιδιότητα read-only |
| :read-write | input:read-write | Επιλέγει όλα τα στοιχεία <input> χωρίς ιδιότητα read-only |
| :required | input:required | Επιλέγει όλα τα στοιχεία <input> με ιδιότητα required |
| :root | :root | Επιλέγει όλα τα στοιχεία |
| ::selection | ::selection | Επιλέγει στοιχεία από τα οποία έχει επιλεγεί κείμενο από τον χρήστη |
| :target | #news:target | Επιλέγει στοιχεία a με ιδιότητα target |
| :valid | input:valid | Επιλέγει όλα τα στοιχεία <input> με έγκυρη τιμή |
| :visited | a:visited | Επιλέγει όλα τα λινκ που έχει επισκευτεί ο χρήστης |