Questa nuova versione dei fogli di stile non è ancora stata ufficializzata, ma molte delle ultime release dei moderni browser supportano i CSS3 in maniera non ufficiale: quanto si è visto fino ad ora lascia ben sperare perchè le nuove caratteristiche che sono state introdotte permetto di realizzare dei layout che fino a prima sarebbero stati impossibili, o estremamente complicati da implementare.
Attualemente il supporto alle nuove caratteristiche dei CSS3 è limitato alle ultime release dei più moderni browser, ma anche nella migliore delle situazioni il supporto è ancora parziale.
Qui sotto una tabella comparativa sul supporto ai CSS3 sulle ultime versioni dei browser:
| Firefox 3.5 | Google Chrome | Internet Explorer 8 | Safari 4 | Opera 10 | |
|---|---|---|---|---|---|
| PROPRIETA | |||||
| @font-face | SI | NO | SI | SI | SI |
| Canvas | SI | SI | NO | SI | SI |
| Canvas Text | SI | SI | NO | SI | NO |
| HTML5 Audio | SI | SI | NO | NO | NO |
| HTML5 Video | SI | SI | NO | NO | NO |
| rgba() | SI | SI | NO | SI | SI |
| hsla() | SI | SI | NO | SI | SI |
| border-image | SI | SI | NO | SI | NO |
| border-radius | SI | SI | NO | SI | NO |
| box-shadow | SI | SI | NO | SI | NO |
| Multiple backgrounds | NO | SI | NO | SI | NO |
| opacity | SI | SI | NO | SI | SI |
| CSS Animations | NO | SI | NO | SI | NO |
| CSS Columns | SI | SI | NO | SI | NO |
| CSS Gradients | NO | SI | NO | SI | NO |
| CSS Reflections | NO | SI | NO | SI | NO |
| CSS 2D Transorms | SI | SI | NO | SI | NO |
| CSS 3D Transforms | NO | SI | NO | SI | NO |
| CSS Transitions | NO | SI | NO | SI | NO |
| Geolocation API | SI | SI | NO | NO | NO |
Come si può vedere dalla tabella qui sopra a farla da leone è Google Chrome, seguito da Firefox 3.5 e Safari 4 che offrono un supporto solo discreto. Deludono invece Opera 10 e soprattutto Internet Explorer 8…com’era facile aspettarsi!
Non essendo ancora state confermate le specifiche dei CCS3 è normale che il supporto possa essere parziale o addirittura inesistente: la speranza è che dopo l’ufficializzazione di tutte le specifiche tutti i browser si aggiornino per fornire un pieno supporto.
Di seguito una breve carrellata sulle nuove funzionalità.
Selectors
I selettori servono per individuare all’interno della vostra pagina elementi a cui poter poi applicare degli stili: il vantaggio è che tramite questi nuovi strumenti avanzati è possibile lasciare il codice molto più pulito, con meno ID e classi associate agli elementi, ottenendo una migliore separazione tra la struttura e la presentazione della pagina.
Attribute selectors
- [att^="value"]
Individua gli elementi che hanno un attributo che inizia con il valore specificato - [att$="value"]
Individua gli elementi che hanno un attributo che finisce con il valore specificato - [att*="value"]
Individua gli elementi che hanno un attributo che contiene il valore specificato
Pseudo-Classes
- :nth-child(n)
Permette di individuare un elemento basandosi sulla sua posizione all’interno della lista degli elementi figli di un elemento padre. Può essere utilizzato un numero, un’espressione o le keywords odd e even. - :nth-last-child(n)
Individua l’ultimo figlio di un elemento padre. Anche in questo caso utilizzare espressioni numeriche. - :last-child
Individua l’ultimo figlio di un elemento padre. E’ equivalende alla formula :nth-last-child(1) - :checked
Individua gli elementi che sono selezionati come ad esempio checkbox e radio button. - :empty
Individua gli elementi che non hanno figli o sono vuoti - :not(s)
Individua tutti gli elementi che non corrispondono alla dichiarazione s.
Pseudo-Elements
L’unico elemento introdotto è il selettore ::selection che permette di individuare gli elementi selezionati dall’utente.
Link utili
- Selectors Level 3: W3C Working Draft
- CSS3: Attribute selectors: CSS3.info
- Compatibility table: CSS3 Selectors
- CSS selectors and pseudo selectors browser compatibility
- CSS3 Attribute Selectors
- ::selection
- General Sibling Selector
- CSS3 Pseudo-classes
RGBA e opacità
Questa nuova caratteristica permette di specificare un colore con il suo codice RGBA e la relativa opacità.
Esempio:
p{
background: rgba(164, 173, 183, .15);
}
Link utili:
- CSS Color Module Level 3: W3C Working Draft
- RGBA colors: CSS3.info
- RGBa Browser Support
- RGBA color space
- Is CSS3 RGBa ready to rock?
- Super-Awesome Buttons with CSS3 and RGBA
Layout a più colonne
E possibile creare un layout a più colonne utilizzando un solo DIV specificando il numero delle colonne, la loro larghezza, la spaziatura e un eventuale elemento da utilizzare come separatore verticale.
Link utili:
- CSS3 module: Multi-column layout: W3C Working Draft
- Columns
- CSS3 – Multi-Column Layout Demonstration
- CSS3 Columns
- Designing tweetCC
- Introduction to CSS3 – Part 5: Multiple Columns
Background multipli
Questa proprietà permette di applicare allo stesso elemento più di un’immagine di sfondo, potendo specificare per ognuna di esse le seguenti caratteristiche:
- background-image
- background-repeat
- background-size
- background-position
- background-origin
- background-clip
Link utili:
- Layering multiple background images
- Multiple backgrounds with CSS3 and CSS3.info
- Introduction to CSS3, Part 6: Backgrounds
Word wrap
Questa proprietà permette di specificare se utilizzare il classico comportamento o se permettere di dividere una parola per evitare che esca dai margini prestabiliti.
Link utili:
- Force Wrapping: the ‘word-wrap’ property — CSS Text Level 3: W3C Working Draft
- word-wrap: CSS3.info
- CSS word-wrap
- word-wrap: Mozilla Developer Center
Ombre dei testi
La possibilità di applicare ombreggiature ai testi era già presente nella versione 2 dei fogli di stile, ma ora il supporto è migliorato e con la release definitiva dei CSS3 dovrebbe essere supportato da tutti i browser.
Link utili:
- Text Shadows: the ‘text-shadow’ property — W3C Working Draft
- Text shadows: Web Style Sheets CSS tips and tricks
- Text-shadow, Photoshop like effects using CSS — CSS3.info
- Make Cool And Clever Text Effects With CSS Text-Shadow
- Safari’s Text-Shadow Anti-Aliasing CSS Hack
- text-shadow
- text-shadow: Mozilla Developer Center
L’attributo @font-face
Anche questa proprietà è supportata non ufficialmente dai browser già dalla versione 2 dei fogli di stile ma il supporto ufficiale dovrebbe arrivare solo con la nuova versione. I problemi collegati a questa proprietà, che permette di utilizzare font non di sistema all’interno delle proprie pagine web, riguardano i diritti d’autore sull’utilizzo di alcuni font.
Link utili:
- Font Descriptions and @font-face — W3C Working Draft
- Web fonts with @font-face
- @font-face — Sitepoint
- Fonts available for @font-face embedding
- @font-face
- beautiful fonts with @font-face
- Introducing Typekit
Bordi arrotondati
Questa proprietà permette di arrontondare i bordi degli elementi HTML senza dover utilizzare Javascript, immagini o introducendo codice superfluo solo per ottenere questo effetto.
Link utili:
- border-radius: W3C Working Draft
- Border-radius: create rounded corners with CSS! — CSS3.info
- Introduction to CSS3, Part 2: Borders
- An Ode to border-radius
- CSS3 Border-Radius and Rounded Corners
Bordi delle immagini
Questa proprietà permette di specificare dei bordi personalizzati da utilizzare per le proprie immagini: bordi molto più articolati di quelli che fino ad ora potevano essere definiti con l’attributo border.
Link utili:
- The ‘border-image’ property: W3C Working Draft
- Border-image: using images for your border — CSS3.info
- border-image in Firefox
- border-image demonstration page
- Replicating iPhone Buttons the “webkit” way!
Ombre dei box
Come per altre proprietà appena viste quest’ultima permette di implementare in modo molto più semplice, pulito per il markup e soprattutto veloce ombre per i box.
Link utili:
- The ‘box-shadow’ property — W3C Working Draft
- Box-shadow, one of CSS3’s best new features — CSS3.info
- Apple’s Navigation bar using only CSS
- Box Shadow — Surfin’ Safari blog
Dimensionamento dei box
Questa proprietà, assieme ad un futuro pensionamento di Internet Explorer 6, risolverà molti grattacapi per noi sviluppatori web. Infatti benchè introdotta già dalla versione 2.1 dei CSS, la futura versione 3 dovrebbe ufficializzare e rattificare le regole sul dimensionamento dei box: padding e bordi dovranno essere considerati quando si specificano le dimensioni di un box.
Link utili:
- ‘box-sizing’ property: W3C Candidate Recommendation
- Box-sizing, box-model fixes for the simple people: CSS3.info
- CSS3 box-sizing attribute
Media queries
Queste regole condizionali permetteranno di specificare all’interno dei fogli di stile caratteristiche differenti a seconda della tipologia di dispositivo che sta navigando all’interno del sito.
Link utili:
- Media Queries: W3C Candidate Recommendation
- Extensions to CSS 3 Media Queries
- Media Queries: CSS3.info
- The bleeding edge of web: media queries
- Safe media queries
- Media types
Speech
Sarà possibile specificare le caratteristiche dell’audio per i programmi che si occupano di leggere il contenuto delle pagine web come volume, bilanciamento, velocità e molte altre.
Link utili:
- CSS3 Speech Module — W3C Working Draft
- CSS3 Speech — CSS3.info
- Aural CSS: Support for CSS 2 Aural Style Sheets / CSS 3 Speech Module

complimenti IE8!
Come accennavo nell’articolo le specifiche CSS3 non sono ancora state ratificate, per cui il supporto a queste funzionalità dovrebbe essere solo ufficioso.