CSS  »  Guide  »  Guida CSS di base 

Le @-rules



Le cosiddette @-rules sono tipi particolari di costrutti che hanno una caratteristica comune: sono tutti introdotti dal simbolo della chiocciola. La pronuncia è identica a quella usata per gli indirizzi e-mail, ovvero at-import, at-media, etc.

Per quanto riguarda la funzione rappresentano vie alternative, ma spesso più flessibili e potenti, per realizzare cose attuabili in altri modi. Abbiamo già visto, nella lezione dedicata a come "inserire i css in un documento", come il costrutto @import sia una valida alternativa all'elemento <LINK> per collegare fogli di stile esterni.

A livello sintattico le @-rules posono essere definite o nel corpo del documento, per l'esattezza all'interno dell'elemento <STYLE>:

<style type="text/css">
@rule
</style>

o direttamente nel codice di un CSS esterno.

Ognuna delle diverse @-rules presenta poi scopi e criteri diversi di costruzione. Esaminiamoli.

@import

@import viene usata innanzitutto per collegare un foglio di stile esterno al documento. La sintassi generica è la seguente:

<style type="text/css">
@import url(foglio_di_stile.css);
</style>

Come si vede la direttiva è accompagnata dall'indicazione url che precede l'indirizzo del CSS. Questo è racchiuso tra parentesi tonde. La @-rule deve presentare alla fine il punto e virgola di chiusura.

Altre possibili sintassi, accettate dai browser recenti, ma problematiche con quelli più datati:

URL con virgolette:

@import url("stile.css");

Direttiva senza l'indicazione url:

@import "stile.css";

L'url del foglio di stile può essere relativo, come negli esempi precedente, o assoluto, come in questo:

<style type="text/css">
@import url(http://www.miosito.it/foglio_di_stile.css);
</style>

Un principio fondamentale è che all'interno del tag <STYLE> @import deve essere la prima regola definita. In pratica, se si scrive così la direttiva non funzionerà e il CSS non sarà caricato in quanto @import è preceduta da una regola che applica uno stile all'elemento <H1>:

<style type="text/css">
h1 { color: black; }
@import url(foglio_di_stile.css);
</style>

Il modo giusto è dunque questo:

<style type="text/css">
@import url(foglio_di_stile.css);
h1 { color: black; }
</style>

È possibile invece importare all'interno di un singolo tag <STYLE> più fogli di stile:

<style type="text/css">
@import url(foglio_di_stile.css);
@import url(foglio_di_stile2.css);
</style>

Le regole di tutti i CSS collegati in questo modo saranno applicate al documento secondo l'ordine e i criteri stabiliti dalle norme sull'importanza e la specificità che vedremo tra poco in una prossima lezione.

Un uso interessante di @import è che può essere usata anche all'interno di un foglio di stile per incorporare un altro CSS esterno:

@import url(foglio.css)
h1 { color: black; }

Supponendo che questo sia un CSS, avremo il risultato di incorporare al suo interno il contenuto del secondo foglio di stile (foglio.css). Si veda la pagina di esempio.

È possibile definire all'interno della direttiva @import anche il supporto cui applicare il CSS, in modo simile a quanto abbiamo visto a proposito dell'attributo media. Per fare ciò basta far seguire all'url del CSS l'indicazione di uno dei media previsti nella specifica:

<style type="text/css">
@import url(foglio_stampa.css) print;
@import url(foglio_schermo.css) screen, handheld;
</style>

@media

Lo stesso risultato (un CSS per ogni dispositivo) si può ottenere con la direttiva @media. La sintassi generica è questa:

@media <valore> {regole CSS}

@media va quindi seguito dal nome di uno dei supporti scelti come target specifico e dalle regole di stile racchiuse tra parentesi graffe. Esempio:

<style type="text/css">
@media screen {
h1 {color: black;}
p {color: red;}
}
@media print {
h1 {color: red;}
p {color: black;}
}
</style>

Anche questo costrutto va inserito, come si vede, all'interno del tag <STYLE>. Un uso più potente, però, è quello di inserire la direttiva nel codice di un foglio esterno. Immaginate di avere un foglio di stile per formattare le vostre pagine e che vogliate impostare colori diversi per un elemento a seconda che si visualizzi il testo sullo schermo o su carta stampata. Invece di costruire due fogli di stile potete creare in un solo CSS esterno queste regole e diversificare l'aspetto dell'elemento:

@media print {
h1 {
color: black;
}
}
@media screen {
h1 {
color: red;
}
}

I risultati li potete valutare in questo documento.

@charset

La direttiva @charset serve a specificare l'impostazione relativa alla codifica dei caratteri di un documento. Svolge in pratica la stessa funzione che in (X)HTML è possibile ottenere con l'uso dei meta-tag:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

La sintassi è semplicissima:

@charset "iso-8859-1"

La direttiva non può essere usata in fogli incorporati. Quando si vuole usarla in un foglio esterno essa deve essere la prima dichiarazione del CSS.

@font-face

La direttiva @font-face può essere usata per descrivere un font usato nel documento. È un argomento molto complesso e conoscere i dettagli della questione non aggiunge nulla che possa davvero accrescere la vostra conoscenza dei CSS. In genere potrebbe essere usata per specificare l'url di un carattere particolare da scaricare su una macchina che non lo veda presente tra i suoi font. La sintassi classica è infatti questa:

@font-face {
font-family: Santiago;
src: url("http://www.mioserver.it/fonts/santiago.tt");
}

Il supporto non è garantito e l'utilità effettiva poco più che nulla.

Ultimi articoli CSS

Bordi multipli con 'box-shadow' di CSS3

Il modo più rapido e semplice per circondare un box con più bordi di...

Sfumature lineari su IE6-9, linear-gradient CSS3 e un po' di SVG

Utilizzare la funzione linear-gradient CSS per creare sfumature...

Stili specifici per l'orientamento dell'iPad con le Media Queries

Gestire con gli stili e le media queries le modalità di...

Campo per la ricerca con i CSS

Dedicare la giusta attenzione al modulo per le ricerche, componente...

Box model 'naturale' con border-box

Dimenticare per sempre i problemi legati al box model grazie ad un...

Altri articoli

Guide CSS

Responsive Desing, la guida

Progettare siti da fruire su dispositivi diversi è imprescindibile...

Guida CSS3

Scoprire e usare al meglio tutte le novità dell'ultima versione dei...

Guida CSS Tecniche essenziali

Testo, immagini, layout, form, liste, tabelle: soluzioni pronte per...

Altre guide

Newsletter @CSS

Ogni mercoledì, direttamente nella tua e-mail: guide, articoli, tutorial, FAQ e approfondimenti tecnici su CSS e Web Design.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti