Non tutte le funzionalità HTML5 o CSS3 hanno un supporto browser diffuso, naturalmente. Per compensare questo, gli sviluppatori intraprendenti hanno creato una serie di strumenti che consentono di utilizzare queste tecnologie oggi, senza lasciare indietro gli utenti che vivono ancora nell'età della pietra.
La buona notizia è che, ad eccezione di Internet Explorer, è possibile creare più markup semantici utilizzando i nuovi elementi HTML5, anche nei browser che non li supportano ufficialmente. Ricorda solo di impostare la corretta modalità di visualizzazione: bloccare
. Il seguente snippet dovrebbe fare riferimento a tutti gli elementi necessari:
articolo, a parte, dettagli, figcaption, figure, footer, header, hgroup, menu, nav, section display: block;
L'implementazione di molte delle soluzioni in questo tutorial comporta l'inclusione di alcuni JavaScript per versioni specifiche di Internet Explorer. Ecco una rapida panoramica: l'espressione di test è racchiusa tra parentesi quadre. Possiamo verificare versioni o versioni specifiche sopra o sotto una versione indicata. lt
e gt
significare piu 'basso di e più grande di, rispettivamente, mentre lte
e gte
significare inferiore o uguale a e maggiore o uguale a.
Ecco alcuni esempi rapidi:
[se IE 6]
Controlla se il browser è Internet Explorer 6.
[if gt IE 6]
Controlla una versione di Internet Explorer maggiore di 6.
In qualsiasi cosa IE, escludendo la versione più recente (IE9), non è possibile applicare stili a elementi che il browser non riconosce. I tuoi elementi HTML5 nuovi e spericolati, in tutta la loro gloria, sono impermeabili alle regole CSS in quell'ambiente. È qui che html5shiv di Remy Sharp (a volte chiamato html5 shim) viene in soccorso. Inseriscilo semplicemente nella pagina sezione e sarete in grado di modellare perfettamente i nuovi elementi HTML5.
Si noti come i commenti condizionali caricano solo il codice html5shiv a condizione che la versione di Internet Explorer sia inferiore a 9. Altri browser, come Firefox e Chrome, ignoreranno anche questo tag e non eseguiranno lo script, risparmiando così la larghezza di banda.
html5 shiv si basa su una soluzione semplice: indirizza IE a creare gli elementi con JavaScript (non hanno nemmeno bisogno di essere inseriti nel DOM).
document.createElement ( 'intestazione');
A questo punto, possono essere disegnati normalmente. Inoltre, le versioni più recenti integrano IE Print Protector, che corregge un bug in cui gli elementi HTML5 scompaiono quando si stampa la pagina ...
Modernizr ti consente di fornire uno stile di "backup" nei browser che non supportano determinate funzionalità HTML5 e CSS3.
Modernizr è forse il più noto di questi strumenti, ma è anche abbastanza frainteso (il nome non aiuta). Fai un respiro profondo: contrariamente al malinteso popolare, Modernizr lo fa non abilitare funzionalità HTML5 e CSS3 nei browser che non li supportano (nonostante ciò fa includi html5shiv per permetterti di usare elementi HTML5 in IE < 9).
Oltre alla funzionalità html5shiv, Modernizr esegue solo una cosa e una cosa: esegue una serie di test di rilevamento delle funzionalità quando viene caricato, quindi inserisce i risultati nel
classe
attributo deletichetta.
Lo scopo principale di Modernizr è quello di consentire di offrire uno stile di "backup" nei browser che non supportano determinate funzionalità HTML5 e CSS3. Questo è in qualche modo diverso dal tradizionale degrado aggraziato, in cui usiamo lo stesso stile CSS in tutti i browser, e poi lo ingegniamo in modo che, quando mancano specifiche capacità, il risultato sia ancora accettabile.
Ora per un esempio di come funziona Modernizr: se un browser supporta border-radius
e il column-count
proprietà, verranno applicate le seguenti classi:
D'altra parte, se le stesse proprietà non sono supportate, ad esempio in IE7, troverai:
A questo punto, è possibile utilizzare queste classi per applicare uno stile unico nei browser con funzionalità diverse. Ad esempio, se desideri applicare uno stile diverso a un paragrafo, a seconda che siano supportate le colonne CSS, puoi eseguire:
.csscolumns p / * Stile quando le colonne sono disponibili * / .no-csscolumns p / * Stile quando le colonne non sono disponibili * /
Se un browser non supporta colonne, il .csscolumns
la classe non sarà presente nel corpo e il browser non avrà mai la possibilità di applicare la regola che la usa.
Alcuni potrebbero obiettare che questo ci riporta ai vecchi tempi della costruzione di un sito diverso per ogni browser. È vero che nulla ti impedisce di scrivere così tante dichiarazioni di stile che utilizzano funzionalità avanzate di CSS3 che il tuo foglio di stile diventa praticamente vuoto quando queste regole non possono essere applicate.
Se si desidera utilizzare Modernizr in un modo che abbia senso, è necessario affidarsi al proprio talento progettuale per concepire stili alternativi che non infrangano il design e non richiedano di buttare via il resto del foglio di stile. Ad esempio, potresti provare a sostituire le ombre sulle lettere quando non sono disponibili, con un carattere grassetto o una trasparenza con un colore diverso.
Per utilizzare Modernizr, includere il file minificato e applicare una classe di no-js
al elemento. Quest'ultima precauzione ti consente di fornire stili per quando JavaScript è completamente disattivato; ovviamente, in quei casi, Modernizr non può aiutarti affatto. Se JavaScript è abilitato, Modernizr eseguirà e sostituirà il file
no-js
con i risultati delle sue operazioni di rilevamento delle caratteristiche.
...
Se sei disposto ad accettare che tutti i siti web non debbano essere visualizzati in modo identico su tutti i browser, scoprirai che Modernizr è uno strumento essenziale nella tua fascia di sviluppo del web!
Sulla stessa nota, il designer Andy Clarke ha ideato una soluzione elegante per risolvere la mancanza di conformità standard di IE6. Denominato "Universal IE6", questo foglio di stile si concentra esclusivamente sulla tipografia. La chiave è usare i commenti condizionali per nascondere tutti gli altri fogli di stile da IE 6.
/ * Fogli di stile per browser diversi da Internet Explorer 6 * /
Nota importante: Ricorda di includere l'ultima versione, poiché le istruzioni per le versioni precedenti sono ancora presenti sul Web. I risultati finali sembrano così:
Non hai lavoro da fare per supportare IE 6 su un nuovo sito.
Questo approccio ha un vantaggio piuttosto ovvio rispetto ai classici fogli di stile alternativi: non hai lavoro da fare per supportare IE 6 su un nuovo sito. Lo svantaggio, ovviamente, è che il sito mostra molto poco del tuo design. Inoltre, anche le basi HTML devono essere solide, in modo che la pagina sia utilizzabile anche con la maggior parte degli stili disabilitati.
Si noti che Universal IE6 CSS non include alcuno stile per elementi solo HTML5 come o
. Non è un problema a meno che tu non stia facendo affidamento su questi elementi esclusivamente per ottenere la visualizzazione a livello di blocco per alcune parti della pagina. In genere, si avvolge sempre il testo anche in un paragrafo o in un elemento di elenco.
Questa soluzione non è chiaramente per tutti, e potresti trovare clienti che non concordano con il loro aspetto del sito rottose visto in IE6.
Potresti anche obiettare che, a questo punto, puoi anche abbandonare del tutto il supporto IE6. Andy Clarke ha riassunto qui le sue risposte a queste obiezioni.
Questo approccio funziona meglio per i siti incentrati sui contenuti e in modo catastrofico per le applicazioni Web; ma poi di nuovo, costruire una moderna applicazione web per funzionare bene su IE 6 è una sfida in sé.
Il nostro prossimo campione è un'utilità JavaScript che ha lo scopo di introdurre nuove funzionalità nei browser più vecchi (beh, in realtà solo IE 6-8): Selectivizr funziona in tandem con altre librerie JavaScript come jQuery, Dojo o MooTools per aggiungere supporto a una gamma di altri selettori CSS avanzati.
Ne ho elencati alcuni in seguito, ma tieni presente che l'elenco completo delle funzionalità dipenderà dalla tua libreria JavaScript preferita.
: hover
:messa a fuoco
:Primogenito
:ultimo bambino
:prima linea
:prima lettera
Per usare Selectivizr, scaricalo dalla loro home page e includilo nel tuo sezione, insieme a una delle librerie di supporto. Ecco un esempio con jQuery:
Selectivizr funziona in tandem con altre librerie JavaScript per fornire supporto CSS3 per IE 6-8.
Questo punto è molto importante: Selectivizr non può lavorare da solo; richiede che la tua libreria preferita sia presente. Fortunatamente, è compatibile con la stragrande maggioranza delle popolari librerie JavaScript. È probabile che, se stai usando JavaScript sul tuo sito, probabilmente hai già una libreria appropriata inclusa.
D'altra parte, se non si utilizzerà anche una libreria, una soluzione alternativa è usare DOMAssistant leggero, sebbene si possa ancora preferire la solita libreria JavaScript per una maggiore facilità nella gestione dei file.
Attenzione però, poiché i selettori precisi che Selectivizr rende disponibili dipendono dalla libreria di supporto scelta. Secondo la home page, al momento la gamma più ampia di selettori è disponibile con MooTools, mentre sfortunatamente jQuery rende disponibile il minor numero di selettori. Va anche detto che alcuni dei selettori che non sono disponibili con jQuery sono piuttosto esotici e raramente usati nell'uso del mondo reale. Fai riferimento al nostro articolo "30 selettori CSS che devi memorizzare" per un elenco completo di selettori.
Come accade, con la maggior parte delle soluzioni JavaScript per i problemi dei CSS, si applicano alcune restrizioni.
elemento per includere i fogli di stile (al contrario di
).CSS3Pie migliora anche le funzionalità [6-8] di Internet Explorer, ma in un modo molto più nativo, in quanto abilita in modo efficace l'uso di una serie di proprietà CSS3 spiffy, come border-radius, linear-gradient, box-shadow, border-image
così come aggiunge il supporto per più sfondi. Usa CSS3Pie e dì addio agli angoli arrotondati affettati e posizionati manualmente.
CSS3Pie: dì addio agli angoli arrotondati affettati e posizionati manualmente.
Il modo in cui funziona è sfruttando le estensioni Microsoft proprietarie poco note: il CSS comportamento
proprietà e file di componenti HTML (documentazione ufficiale). Questa estensione ti consente di allegare JavaScript a determinati elementi HTML usando CSS. Il codice JavaScript è incluso insieme ad alcuni tag proprietari Microsoft, in .htc
file a cui si fa riferimento all'interno delle regole di stile.
Solo per questo motivo, molti sviluppatori potrebbero sostenere che non si dovrebbe usare CSS3Pie. I tag proprietari di Internet Explorer sono pesanti e producono un output meno attraente.
Perché CSS3Pie non usa semplicemente JavaScript? Bene, esiste una versione specifica per JS, sebbene il team ne sconsiglia l'utilizzo, poiché il JavaScript blocca l'analisi della pagina.
Con la corrente .htc
soluzione, l'implementazione è abbastanza semplice: devi solo caricare un singolo file dalla distribuzione CSS3Pie, PIE.htc
, al tuo server. In seguito, ogni volta che utilizzi una delle proprietà CSS3 supportate, aggiungi il seguente codice:
comportamento: url (path / to / PIE.htc);
Sopra, path / to / PIE.htc
è il percorso, relativo al file HTML che viene servito; non il foglio di stile.
Certamente, CSS3Pie può fare la sua magia solo su Internet Explorer. Ha anche bisogno di un po 'di attenzione e di alimentazione lato server:
PIE.htc
il file è servito con un text / x-component
tipo di contenuto. La distribuzione include uno script PHP che può occuparsi di questo se non ti è permesso modificare la configurazione del tuo server, ad esempio su un host condiviso. PIE.htc
può anche attivare avvisi ActiveX, di solito quando lo si verifica sul localhost. Questo ultimo problema richiede la soluzione del contrassegno del Web da risolvere.CSS3Pie è ancora, al momento della stesura di questo, in modalità beta - poiché ci sono ancora alcuni nodi da risolvere.
HTML5 Boilerplate va ben oltre i tuoi modelli di avvio standard.
HTML5 Boilerplate può essere descritto come un insieme di modelli per aiutarti a iniziare a costruire siti Web HTML5 moderni il più rapidamente possibile. Ma HTML5 Boilerplate va ben oltre i tuoi modelli di avvio standard.
Ad esempio, raggruppa l'ultima versione di Modernizr (lo stesso creatore) e l'HTML collega anche agli ultimi jQuery ospitati da Google, Yahoo profiler e script di Google Analytics per te. Il CSS contiene le consuete regole di reset, ma anche una vasta gamma di query @media per iniziare con il responsive web design rivolto ai dispositivi mobili.
La caratteristica più unica è che, oltre alla configurazione del client, si ottiene anche il lato server: i file di configurazione per Apache e Nginx. Ciò consente di ottimizzare la velocità di download e ottimizzare la consegna di video HTML5. In particolare, il .htaccess i file per Apache potrebbero essere molto convenienti da inserire in un account di hosting condiviso, come spesso accade gzip
compressione e scade
non sono attivi per impostazione predefinita.
Alcune persone potrebbero obiettare che HTML5 Boilerplate prende un po 'troppe decisioni per loro (diavolo, la configurazione di Apache taglia automaticamente www. Di fronte al nome di dominio!) O che è in qualche modo incentrata su Google, tuttavia, è sempre interessante studiare i file e scoprire quali problemi hanno previsto gli autori.
Inoltre, sei certamente incoraggiato ad abbatterlo per le tue esigenze personali. Questo è semplicemente un boilerplate per iniziare.
Se desideri una descrizione dettagliata di tutto ciò che include l'HTML5 Boilerplate, Paul Irish ha registrato uno screencast esclusivo per Nettuts+.
Una versione completamente commentata è disponibile su html5boilerplate.com.
Spesso, la paura di implementare funzionalità che non godono del supporto completo del browser scoraggia i progettisti dall'adottare le ultime tecnologie. Mentre i dati demografici del tuo pubblico devono essere considerati attentamente, così come i desideri del tuo cliente, se accetti che i siti non debbano essere uguali in tutti i browser, oggi è possibile utilizzare pienamente HTML5 e CSS3.
Pensaci in questo modo: se aspetti che CSS3 "sia completo", ti aspetterò per sempre. CSS2 non è ancora completamente supportato su tutti i browser! Il principio guida qui è che ogni utente dovrebbe ottenere il massimo dal suo investimento: se utilizza un browser all'avanguardia, perché non sfruttare tutte le funzionalità offerte dal browser?
Fateci sapere cosa ne pensate di questi problemi nei commenti. Grazie mille per la lettura!