Inte alla HTML5- eller CSS3-funktioner har utbrett webbläsarstöd, naturligtvis. För att kompensera för detta har entreprenörskapsutvecklare skapat ett antal verktyg för att låta dig använda dessa teknologier idag, utan att lämna kvar användare som fortfarande bor i stenåldern.
Den goda nyheten är att förutom Internet Explorer kan du skapa mer semantisk markering genom att använda de nya HTML5-elementen - även i webbläsare som inte officiellt stöder dem. Kom bara ihåg att ange rätt visningsläge: blockera
. Följande kod ska referera till alla nödvändiga element:
artikel, åtgärd, detaljer, figcaption, figur, footer, header, hgroup, meny, nav, avsnitt display: block;
Genomförandet av många av lösningarna i den här handledningen innebär att vissa JavaScript ingår för specifika Internet Explorer-utgåvor. Här är en snabb översikt: testuttrycket är inneslutet i kvadratkonsoler. Vi kan söka efter specifika versioner eller versioner ovanför eller under en angiven version. lt
och gt
betyda lägre än och större än, respektive, medan lte
och gte
betyda lägre än eller lika med och större än eller lika med.
Här är några snabba exempel:
[om IE 6]
Kontrollerar om webbläsaren är Internet Explorer 6.
[om gt IE 6]
Kontrollerar en version av Internet Explorer större än 6.
I allt IE, med undantag för den senaste versionen (IE9), kan du inte tillämpa format på element som webbläsaren inte känner igen. Dina spiffiga, nya HTML5-element, i all sin ära, är ogenomträngliga för CSS-reglerna i den miljön. Det här är Remy Sharps html5shiv (ibland kallad html5 shim) kommer till räddning. Helt enkelt inkludera det i din sida avsnittet och du kommer att kunna ställa in de nya HTML5-elementen perfekt.
Observera hur de villkorliga kommentarerna bara laddar html5shiv-koden under förutsättning att versionen av Internet Explorer är lägre än 9. Andra webbläsare, som Firefox och Chrome, kommer också att ignorera den här taggen och kommer inte att exekvera manuset, vilket sparar bandbredd.
html5 shiv bygger på en enkel lösning: den styr IE för att skapa element med JavaScript (de behöver inte ens infogas i DOM).
document.createElement ( 'header');
Vid denna tidpunkt kan de stylas normalt. Dessutom integrerar de senaste versionerna IE Print Protector, vilket fixar ett fel där HTML5-elementen försvinner när du skriver ut sidan ...
Modernizr låter dig tillhandahålla "backup" -styling i webbläsare som inte stöder vissa HTML5- och CSS3-funktioner.
Modernizr är kanske det mest kända för dessa verktyg, men det är också ganska missförstått (namnet hjälper inte). Ta djupt andetag: i motsats till populär missuppfattning, gör Modernizr inte aktivera HTML5 och CSS3-funktioner i webbläsare som inte stöder dem (även om det gör Inkludera html5shiv så att du kan använda HTML5-element i IE < 9).
Bortsett från html5shiv-funktionaliteten, gör Modernizr en sak och en sak: den kör en serie av funktionstesttest när den laddas och sätter sedan in resultaten i
klass
attribut avmärka.
Modernizrs primära syfte är att låta dig erbjuda "backup" -styling i webbläsare som inte stöder vissa HTML5- och CSS3-funktioner. Det här är något annorlunda än traditionell graciös nedbrytning, där vi använder samma CSS-styling i alla webbläsare, och sedan konstruerar den så att resultatet, då specifika funktioner saknas, fortfarande är acceptabelt.
Nu för ett exempel på hur Modernizr fungerar: om en webbläsare stöder border-radius
och den kolonn-count
egendom, kommer följande klasser att tillämpas:
Å andra sidan, om samma egenskaper inte stöds - säg i IE7 - hittar du:
Vid den här tiden kan du använda dessa klasser för att tillämpa unik styling i webbläsare med olika funktioner. Om du till exempel vill tillämpa en annan stil på ett stycke kan du göra beroende på om CSS-kolumner stöds.
.csscolumns p / * Stil när kolumner är tillgängliga * / .no-csscolumns p / * Stil när kolumner inte är tillgängliga * /
Om en webbläsare inte stöder kolumner, kommer den .csscolumns
klassen kommer inte att finnas i kroppen, och webbläsaren kommer aldrig att ha chans att tillämpa regeln som använder den.
Vissa kan motsätta sig att det här tar oss tillbaka till de gamla tiderna för att bygga en annan webbplats för varje webbläsare. Det är sant att ingenting hindrar dig från att skriva så många stildeklarationer som använder avancerade CSS3-funktioner som ditt stylesheet blir nästan tomt när dessa regler inte kan tillämpas.
Om du vill använda Modernizr på ett sätt som är meningsfullt måste du förlita dig på din designtalang för att tänka på alternativa stilar som inte bryter mot designen och inte kräver att du slänger resten av stilarket. Du kan till exempel försöka ersätta droppskuggor i bokstäver, när de inte är tillgängliga, med en fet skrift eller genomskinlighet med en annan färg.
För att använda Modernizr, inkludera den minifierade filen och tillämpa en klass av no-js
till element. Den här sista försiktighetsåtgärden låter dig skapa stilar för när JavaScript är helt avaktiverat. självklart, i sådana fall kan Modernizr inte hjälpa dig alls. Om JavaScript är aktiverat kommer Modernizr att sparka in och ersätta
no-js
med resultaten av dess funktionsdetekteringsoperationer.
...
Om du är villig att acceptera att alla webbplatser inte behöver visas identiskt över alla webbläsare, hittar du att Modernizr är ett viktigt verktyg i ditt web dev!
På samma anteckning har designer Andy Clarke utformat en elegant lösning för att lösa IE6: s brist på standardkompatibilitet. Kallas "Universal IE6", den här stilen fokuserar uteslutande på typografi. Nyckeln är att använda villkorliga kommentarer för att dölja alla andra stylesheets från IE 6.
/ * Stylesheets för andra webbläsare än Internet Explorer 6 * /
Viktig notering: Kom ihåg att inkludera den senaste versionen, eftersom instruktioner för äldre fortfarande flyter runt på webben. De slutliga resultaten ser ut så här:
Du har inget arbete att göra för att stödja IE 6 på en ny webbplats.
Detta tillvägagångssätt har en ganska uppenbar fördel jämfört med klassiska alternativa stylesheets: du har inget arbete att göra för att stödja IE 6 på en ny webbplats. Nackdelen är naturligtvis att webbplatsen visar mycket lite av din design. Dessutom måste din HTML-grundläggning vara solid, så att sidan kan användas även om de flesta styling är inaktiverade.
Observera att Universal IE6 CSS inte innehåller någon styling för HTML5-bara element som eller
. Det är inte ett problem om du inte lita på dessa element uteslutande för att få visning av blocknivå för vissa delar av sidan. I allmänhet skulle du alltid omsluta din text också åtminstone i ett stycke eller listelement.
Denna lösning är uppenbarligen inte för alla, och du kan hitta kunder som inte är överens med deras webbplats brutennär den ses i IE6.
Du kan också hävda att du just nu kan släppa IE6-stöd helt och hållet. Andy Clarke har sammanfattat sina svar på dessa invändningar här.
Denna metod fungerar bäst för innehållscentrerade webbplatser och katastrofalt för webbapplikationer. men sedan bygga en modern webbapplikation på att fungera bra på IE 6 är en utmaning i sig.
Vår nästa mästare är ett JavaScript-verktyg som syftar till att införa nya möjligheter i äldre webbläsare (ja, faktiskt bara IE 6-8): Selectivizr fungerar i takt med andra JavaScript-bibliotek som jQuery, Dojo eller MooTools för att lägga till stöd för en rad fler avancerade CSS-väljare.
Jag har listat några nedan, men notera att den fullständiga listan över funktioner kommer att vara beroende av ditt föredragna JavaScript-bibliotek.
:sväva
:fokus
:förstfödde
:sista barnet
:Första linjen
:första bokstaven
För att använda Selectivizr, ladda ner den från deras hemsida och inkludera den i din avsnittet, tillsammans med ett av supportbiblioteken. Här är ett exempel med jQuery:
Selectivizr fungerar i takt med andra JavaScript-bibliotek för att tillhandahålla CSS3-stöd för IE 6-8.
Denna punkt är mycket viktig: Selectivizr kan inte fungera ensam; Det kräver att ditt föredragna bibliotek ska vara närvarande. Lyckligtvis är det kompatibelt med den stora majoriteten av populära JavaScript-bibliotek. Chansen är att om du använder JavaScript på din webbplats har du förmodligen ett lämpligt bibliotek som redan finns med.
Å andra sidan, om du inte kommer att använda ett bibliotek också, är en alternativ lösning att använda den lätta DOMAssistanten, även om du fortfarande föredrar ditt vanliga JavaScript-bibliotek för att göra det lättare att hantera filer.
Var försiktig, eftersom de exakta väljare som Selectivizr gör tillgängliga beror på vilket stödjande bibliotek som väljs. Enligt hemsidan är just nu det största utbudet av väljare tillgängliga med MooTools, medan jQuery tyvärr gör det lägsta antalet selektörer tillgängliga. Det måste också sägas att några av de väljare som inte är tillgängliga med jQuery är ganska exotiska och sällan används i den verkliga användningen. Se våra "30 CSS Selectors du måste memorera" artikel för en fullständig lista över selektorer.
Som det händer, med de flesta JavaScript-lösningar för CSS woes, gäller vissa restriktioner.
element för att inkludera dina stylesheets (i motsats till
).CSS3Pie förbättrar även Internet Explorer s [6-8] funktioner, men på ett mycket mer inbyggt sätt, eftersom det effektivt möjliggör användningen av ett antal spiffiga CSS3 egenskaper, som gränslinje, linjär gradient, boxskugga, gränsbild
samt lägger till stöd för flera bakgrunder. Använd CSS3Pie och säga adjö till manuellt skivade och placerade avrundade hörn.
CSS3Pie: säg farväl att manuellt skivas och placeras avrundade hörn.
Hur det fungerar är att utnyttja lite kända, proprietära Microsoft-tillägg: CSS beteende
egendom och HTML-komponentfiler (officiell dokumentation). Denna förlängning låter dig bifoga JavaScript till vissa HTML-element med hjälp av CSS. JavaScript är inkluderat tillsammans med vissa Microsoft-märkesvaror, i .htc
filer som refereras inom stilreglerna.
Av denna anledning kan många utvecklare argumentera för att du inte ska använda CSS3Pie. Internet Explorers egna taggar är prestanda tunga och producerar mindre attraktiva utdata.
Varför använder inte CSS3Pie vanlig JavaScript? Tja, det finns en JS-specifik version, men laget ger råd mot användningen, på grund av att JavaScript blockerar parsningen av sidan.
Med strömmen .htc
lösning är implementeringen ganska enkel: du behöver bara ladda upp en enda fil från CSS3Pie-distributionen, PIE.htc
, till din server. Efteråt, varje gång du använder en av de stödda CSS3-egenskaperna, lägg till koden nedan:
beteende: url (sökväg / till / PIE.htc);
Ovan, sökväg / till / PIE.htc
är sökvägen i förhållande till HTML-filen som serveras inte stilarket.
Naturligtvis kan CSS3Pie bara göra sin magi i Internet Explorer. Det behöver också lite omsorg och matning på serverns sida:
PIE.htc
filen serveras med a text / x-komponenten
innehållstyp. Distributionen innehåller ett PHP-skript som kan ta hand om detta om du inte får ändra din serverkonfiguration, till exempel på en gemensam värd. PIE.htc
kan också utlösa ActiveX-varningar, vanligtvis när du testar det på ditt lokala värd. Det här sista problemet kräver att Mark of the Web-lösningen ska lösas.CSS3Pie är fortfarande vid skrivningstillfället i beta-läge - eftersom det fortfarande finns några kinks att strykas ut.
HTML5 Boilerplate går mycket längre än dina vanliga startmallar.
HTML5 Boilerplate kan beskrivas som en uppsättning mallar som hjälper dig att komma igång med att bygga moderna HTML5-webbplatser så snabbt som möjligt. Men HTML5 Boilerplate går mycket längre än dina vanliga startmallar.
Exempelvis bunter den den senaste versionen av Modernizr (samma skapare) och HTML-länkarna till de senaste Google-hostade jQuery, Yahoo profilerna och Google Analytics-skript för dig. CSS innehåller de vanliga återställningsreglerna, men också en mängd @media-frågor för att komma igång med lyhörda webbdesign som riktar in mobila enheter.
Den mest unika funktionen är att du, utöver kundkonfigurationen, också får serverns sida: konfigurationsfiler för Apache och Nginx. Detta gör att du kan maximera nedladdningshastigheter och optimera HTML5-videoförsändning. I synnerhet .htaccess filer för Apache kan vara mycket praktiska att släppa in i ett gemensamt webbhotell, så ofta saker som gzip
kompression och löper ut
är inte aktiv som standard.
Vissa människor kan hävda att HTML5 Boilerplate tar lite för många beslut för dem (helvete, Apache-konfigurationen raderar även automatiskt www. Framför domännamnet!) Eller att det är något Google-centrerat, men det är ändå alltid intressant att studera filerna och hitta vilka problem författarna har förväntat sig.
Vidare uppmuntras du verkligen att bryta ner det för dina personliga behov. Det här är helt enkelt en panna för att komma igång.
Om du vill ha en detaljerad sammanfattning av allt som HTML5 Boilerplate innehåller, noterade Paul Irish en exklusiv screencast för Nettuts+.
En fullständigt kommenterad version finns tillgänglig på html5boilerplate.com.
Ofta räddar rädslan för att implementera funktioner som inte åtnjuter fullständigt webbläsarstöd designers från att anta den senaste tekniken. Medan din publiks demografi måste övervägas noggrant, såväl som din kunds önskemål, om du accepterar att webbplatser inte behöver se likadant ut i alla webbläsare, är det möjligt att utnyttja HTML5 och CSS3 idag.
Tänk på det här sättet: Om du väntar tills CSS3 "är klar", väntar du alltid. CSS2 är inte ens fullt stödd för alla webbläsare än! Den ledande principen är att varje användare ska få det bästa för pengarna: om han använder en blödande kant-webbläsare, varför inte utnyttja alla funktioner som webbläsaren tillhandahåller?
Låt oss veta vad du tycker om dessa problem i kommentarerna. Tack så mycket för att läsa!