The Law
The law on throwing items through windows is very clear...
Alla som är involverade i webbdesign eller utveckling kommer att ha stött på termen "semantisk" med hänvisning till HTML5 och webben i allmänhet. Detta ofta problematiska begrepp är förståeligt förvirrande för många av oss, särskilt eftersom det finns en tydlig brist på konsensus om dess definition i vissa sammanhang.
I den här artikeln kommer vi att undersöka vad som gör HTML5 mer semantisk än dess föregångare, och beskriva vad det innebär för webbutveckling nu och i framtiden.
Semantikbegreppet kommer från lingvistikens område som är avsedd för studie av mening. Med naturliga språk som engelska skiljer vi mellan syntax (eller grammatik) och mening. Om du tänker på en mening betyder betydelsen hur folk tolkar det:
"Mannen kastade datorn genom fönstret."
Semantiken avser aspekten av meningen som låter människor läsa den för att förstå meddelandet som finns i det. Semantiken är tillsammans med syntaxen en stor del av det som underlättar kommunikationen via språk. När vi pratar om semantik i förhållande till HTML talar vi om kommunikation mellan datorprogram, inte människor. Semantisk HTML är huvudsakligen inriktad på att förbättra omfattningen av applikationer som kan bearbeta eller tolka webbinnehåll. Tänk på följande webbutdrag som innehåller några av de längre HTML-strukturerna:
The man threw the computer through the window.
Elementen (och attributen) ger webbläsarens information om hur man presenterar innehållet för användaren. Styckelement visas som standard med whitespace över och under dem, bildelement visas med hjälp av bildfilen som ingår i src-attributet och så vidare. När webbläsaren möter varje av dessa element gör det innehållet på ett visst sätt som bestäms av de taggar som används.
Det är viktigt att förstå att HTML5 inte introducerar semantik till HTML för första gången. HTML hade redan en nivå av semantik inbyggd. De befintliga HTML-strukturerna är meningsfulla i varierande grad. Om du tittar på det här kända HTML-elementet som ingår i ovanstående utdrag ser du vad jag menar:
Även om det förkortas, indikerar elementet img något meningsfullt om innehållet i taggen, det vill säga att det är en bild. På så sätt kan du tänka på den semantiska aspekten av HTML som liknar metadata, eftersom elementetiketten och attributnamnen beskriver data (data på en webbsida är elementet och attributinnehållet).
Några av de strukturer som vi har använt i HTML berätta för webbläsaren hur man stilar innehållsobjekten på en sida. När tiden har gått, har vi uppmanats att skilja formateringen av en sida från innehållet.
Till exempel ersatte vi taggen med em, vilket är mer meningsfullt och berättar inte webbläsaren exakt hur texten ska visas inuti elementet. Syftet med att använda em istället för jag är att förmedla information om innehållet i innehållet snarare än information om styling den. Ämnet påverkar naturligtvis stilen, vilket är den främsta anledningen till att vi använder det, men det lämnar detaljerna i stilen upp till webbläsaren och / eller CSS-koden idealiskt åtskild från sidmarkeringen.
Semantisk HTML5 är ett större steg i denna process. Det yttersta målet är att skapa ett system där applikationer har tillgång till en större meningsnivå - det här är inte AI men det handlar bara om att inkludera beskrivande information om dataposter inom kodstrukturerna som modellerar dem.
Om du har använt XML tidigare har du förtrogenhet med begreppen i semantisk markup. När du till exempel designar ett XML-dokument (eller schema) för en dataset väljer du element och attribut för modellobjekt i data. Helst definierar elementet och attributnamnen dataelementen på ett meningsfullt sätt:
Jim Smith 23 November 2012
Utvecklaren här har valt namn som intuitivt beskriver de datavärden som modelleras. Med HTML5 kan du inte välja dina egna element, eftersom det inte är fritt utdragbart. De strukturer som valts ut för det har helt enkelt mer inneboende betydelse jämfört med tidigare versioner.
Vi har pratat om mening men i själva verket finns det olika sätt på vilka ett element eller annat kodutdrag kan vara meningsfullt.
Img-taggen är meningsfull eftersom den berättar något om elementinnehållet och beskriver vad det är.
Några av de nya HTML5-elementen, som sidhuvud och sidfot, är meningsfulla eftersom de anger något om elementets roll eller syfte i den totala strukturen på en sida.
Så vad innebär den här förbättrade meningsfulla aspekten av HTML5? I grunden HTML5 har några nya element som du kan inkludera mer semantisk information i din sidmarkering. Det finns en massa nya element, bara några av vilka vi kommer att titta på här. Sidhuvudet anger information om elementets innehåll och om dess roll inom sidstrukturen:
Man in Window Outburst
Rubrikelementet kan innehålla andra element och tenderar att innehålla minst ett rubrikelement. Footer-taggen är liknande, med taggen igen som uttrycker något meningsfullt om innehållet i elementet och dess relation till resten av sidan:
Nav- taggen beskriver syftet med en sidavdelning, det vill säga att den innehåller navigeringslänkar:
Sektionselementet innehåller typiskt en grupp av objekt på samma tema, ofta tillsammans med en rubrik. Sektionselementet har en ganska abstrakt betydelse, men det är ändå meningsfullt:
What happened
Police officers apprehended the man at 3.30pm...
Artikelelementet är likartat, används för att definiera ett objekt som är fristående:
The Law
The law on throwing items through windows is very clear...
En sidospår indikerar elementets roll i förhållande till dess sammanhang inom sidan, som i följande utökade version av artikeln ovan:
The Law
The law on throwing items through windows is very clear...
Dessa är bara några av de nya HTML5-elementen som erbjuder semantiska förbättringar, andra inkluderar medie- och användarinmatningselement samt ytterligare attribut. Inkluderingen av mikrodata i HTML5 ger också ökat utrymme för att inkludera semantisk information på webbsidor och applikationer. Som du kan se är några av dessa nya element meningsfulla både vad gäller innehåll och struktur.
Tänk på några av de äldre taggarna (många av dem är fortfarande kvar), som div. Div-elementet är helt enkelt en bit av en sida - namnet på namnet berättar absolut ingenting om elementets innehåll eller dess roll inom sidan. Med andra ord, taggen ger mycket liten mening. Massor av de långvariga taggarna förmedlar antingen nästan ingen mening alls eller i vissa fall generisk, löst definierad betydelse. Varje objekt på en webbsida fanns i en av en uppsättning av mycket generella elementskategorier. Nyckeln till att göra något meningsfullt är att vara specifik. De nya HTML5-taggarna tillåter oss att definiera webbinnehåll med hjälp av mer specifika termer.
Om du har skapat webbsidor i rimlig tid kan vissa av de nya HTML5-elementen ringa några klockor till dig. I verkligheten byggde utvecklare redan en meningsnivå i sina sidor med hjälp av elementattributen, särskilt klass och ID. Till exempel, om du någonsin har gett ett element ett klass eller ID-attribut för "footer" eller "header" är du säkert inte ensam. Med HTML5 förmedlas denna mening i själva uppmärkningen snarare än i attributvärden. Om du använde dessa attribut för att implementera särskilda stylingegenskaper, gjorde du effektivt något manuellt som är inbyggt i HTML5 ur lådan - och med semantiska element finns det ytterligare fördelar ...
OK, det här är mycket bra, men du skulle bli förlåtad för att fråga varför vi kommer till allt detta problem för något som verkar väsentligen begreppsmässigt / akademiskt. Tja, du kan vara säker på att det finns goda skäl att flytta i en mer semantisk riktning. Som vi har sett tillåter HTML5 semantik oss att skapa kodkod som beskriver innehållsobjekt. Denna beskrivande aspekt av koden tillåter andra program att effektivisera användningen av innehållet, med olika tillämpningar:
När jag var på uni (för några år sedan) kommer jag ihåg en föreläsare som berättade att området för akademisk forskning skulle revolutioneras av framsteg inom sökandet. Han pratade om den semantiska webben - det behöver inte sägas att det inte har hänt just nu. Att ta någon form av fokuserad ny riktning med något så olikt och oregelbundet som World Wide Web kommer alltid att vara en svår uppgift. Men genom att komma ombord med ideen om semantisk markering åtminstone kan vi som utvecklare agera för att påverka rörelsen mot en framtida webb som är mer tillgänglig, sökbar och konsekvent för alla användare.
Använder du HTML5s semantiska element? Ger fokus på semantik en produkt av högre kvalitet? Låt oss veta vad du tycker i kommentarerna.
Utvalda bild / miniatyrbild, använder språkbild via Shutterstock.