Επιλογείς (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 Επιλέγει όλα τα λινκ που έχει επισκευτεί ο χρήστης