Translations: English · বাংলা · Dansk · Deutsch · Español · فارسی · Français · Indonesia · 日本語 · 한국어 · Português (BR) · Română · Русский · Türkçe · Українська · Tiếng Việt · 简体中文 · 正體中文
For writing maintainable and scalable HTML documents
DOCTYPE er påkrævet for at aktivere no-quirks mode.
Dårligt:
<html>
...
</html>
Godt:
<!DOCTYPE html>
<html>
...
</html>
DOCTYPE bruges ikke længere til DTD. Gør det simpelt!
Dårligt:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Godt:
<!DOCTYPE html>
Are you sure you want to write XHTML?
Dårligt:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE html>
Godt:
<!DOCTYPE html>
Hvis du skriver et HTML dokument med UTF-8 encoding, vil næsten alle karakterer (Emojis inkluderet) kunne anvendes direkte
Dårligt:
<p><small>Copyright © 2014 W3C<sup>®</sup></small></p>
Godt:
<p><small>Copyright © 2014 W3C<sup>®</sup></small></p>
Disse karakterer bær altid "escapes" (med tilsvarende HTML) for at sikre HTML uden bugs.
Dårligt:
<h1>The "&" character</h1>
Godt:
<h1>The "&" character</h1>
Disse karakterer er ofte nemt forvekslet med andre karakterer. Endvidere, HTML specifikationen garanterer ikke en menneskevenlig definition for disse karakterer
Dårligt:
<p>This book can read in 1 hour.</p>
Godt:
<p>This book can read in 1 hour.</p>
Nogle karakterer kan ikke anvendes som første og sidste karakter i en HTML kommentar.
Dårligt:
<!--This section is non-normative-->
Godt:
<!-- This section is non-normative -->
Ethvert HTML-element skal lukkes korrekt for at sikre læsbarhed
Dårligt:
<html>
<body>
...
Godt:
<html>
<body>
...
</body>
</html>
Sikrer læsbarhed.
Dårligt:
<img alt="HTML Best Practices" src="/img/logo.png">
<hr />
Godt:
<img alt="HTML Best Practices" src="/img/logo.png">
<hr>
Det er der ikke nogen grund til.
Dårligt:
<h1 class=" title " >HTML Best Practices</h1>
Godt:
<h1 class="title">HTML Best Practices</h1>
Sikrer konsistens
Dårligt:
<a HREF="#general">General</A>
Godt:
<a href="#general">General</a>
OgsågGodt:
<A HREF="#general">General</A>
Samme som ovenfor
Dårligt:
<img alt="HTML Best Practices" src='/img/logo.jpg'>
Godt:
<img alt="HTML Best Practices" src="/img/logo.jpg">
Dårligt:
<input name="q" type="search">
Godt:
<input name="q" type="search">
Det er møj' nemmere blot at skrive attributtens key, såfremt den er sand.
Dårligt:
<audio autoplay="autoplay" src="/audio/theme.mp3">
Godt:
<audio autoplay src="/audio/theme.mp3">
SVG and MathML kan anvendes direkte i et HTML dokument.
Dårligt:
<svg xmlns="http://www.w3.org/2000/svg">
...
</svg>
Godt:
<svg>
...
</svg>
Det er HTML vi skriver!
Dårligt:
<span lang="ja" xml:lang="ja">...</span>
Godt:
<span lang="ja">...</span>
for at sikre læsbarhed, bør de ovennævnte attribut-typer grupperes for sig.
Dårligt:
<img alt="HTML Best Practices" data-height="31" data-width="88" itemprop="image" src="/img/logo.png">
Godt:
<img alt="HTML Best Practices" src="/img/logo.png" data-width="88" data-height="31" itemprop="image">
Nogle elementer har en implicit ARIA role
-attribut. Undlad at specificere dem unødigt.
Dårligt:
<nav role="navigation">
...
</nav>
<hr role="separator">
Godt:
<nav>
...
</nav>
<hr>
lang
attributten hjælper med at oversætte et HTML-dokument.
Dårligt:
<html>
Godt:
<html lang="da-DK">
Dansk er ofte kun brugt i Danmark. Landekoden er derfor ikke nødvendig.
Dårligt:
<html lang="da-DK">
Godt:
<html lang="da">
En passende attribut håndteres bedre af browseren
Dårligt:
<span data-language="french">chemises</span>
...
<strong data-type="warning">Do not wash!</strong>
Godt:
<span title="French"><span lang="fr">chemises</span></span>
...
<strong class="warning">Do not wash!</strong>
Et title
-element bruges af adskillige applikationer - ikke kun browseren.
Dårligt:
<head>
<meta charset="UTF-8">
</head>
Godt:
<head>
<meta charset="UTF-8">
<title>HTML Best Practices</title>
</head>
En absolut sti eller URL er mere sikker for både udviklere og brugere
Dårligt:
<head>
...
<base href="/blog/">
<link href="hello-world" rel="canonical">
...
</head>
Godt:
<head>
...
<link href="/blog/hello-world" rel="canonical">
...
</head>
Dette giver applikationen eller browser et hint om hvad det linkede indholds type er
Dårligt:
<link href="/pdf" rel="alternate">
<link href="/feed" rel="alternate">
<link href="/css/screen.css" rel="stylesheet">
Godt:
<link href="/pdf" rel="alternate" type="application/pdf">
<link href="/feed" rel="alternate" type="application/rss+xml">
<link href="/css/screen.css" rel="stylesheet">
Stortset alle browsere henter automatisk /favicon.ico
asynkront.
Dårligt:
<link href="/favicon.ico" rel="icon" type="image/vnd.microsoft.icon">
Godt:
<!-- Placer `favicon.ico` i serverens rod. -->
Tilføj apple-touch-icon
link
Standard-stien for request af touch icon blev ændret efter iOS 8, og Safari henter ikke automatisk fra den gamle standard-sti i roden af et website.
Dårligt:
<!-- Hey Apple! Please download `/apple-touch-icon-precomposed.png`! -->
Godt:
<link href="/apple-touch-icon.png" rel="apple-touch-icon">
En label der er læselig for mennesker hjælper bla. folk med fx synshandicap til at vælge et passende stylesheet.
Dårligt:
<link href="/css/screen.css" rel="stylesheet">
<link href="/css/high-contrast.css" rel="alternate stylesheet">
Godt:
<link href="/css/screen.css" rel="stylesheet">
<link href="/css/high-contrast.css" rel="alternate stylesheet" title="High contrast">
En værdi af en href
-attibut læses som en URL
Dårligt:
<section itemscope itemtype="http://schema.org/BlogPosting">
<meta content="https://example.com/blog/hello" itemprop="url">
...
</section>
Godt:
<section itemscope itemtype="http://schema.org/BlogPosting">
<link href="/blog/hello" itemprop="url">
...
</section>
UTF-8 er ikke standarden i alle browsere (endnu).
Dårligt:
<head>
<title>HTML Best Practices</title>
</head>
Godt:
<head>
<meta charset="UTF-8">
<title>HTML Best Practices</title>
</head>
HTTP-headers bør specificeres af serveren.
Dårligt:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Godt:
<meta charset="UTF-8">
Specifikationen forventer, at character encoding specificeres inden for de første 1024 bytes af dokumentet
Dårligt:
<head>
<meta content="width=device-width" name="viewport">
<meta charset="UTF-8">
...
</head>
Godt:
<head>
<meta charset="UTF-8">
<meta content="width=device-width" name="viewport">
...
</head>
Med UTF-8, kan du frit bruge emojis.
Dårligt:
<meta charset="Shift_JIS">
Godt:
<meta charset="UTF-8">
I HTML er standardværdien af type
attributten text/css
.
Dårligt:
<style type="text/css">
...
</style>
Godt:
<style>
...
</style>
Dette er "gammel strøm" der stammer fra gamle browsere
Dårligt:
<style>
<!--
...
-->
</style>
Godt:
<style>
...
</style>
I særlige tilfælde vil script
-elementer blokere for konstruktionen af DOM.
Dårligt:
<script src="/js/jquery.min.js"></script>
<link href="/css/screen.css" rel="stylesheet">
<script src="/js/main.js"></script>
Godt:
<link href="/css/screen.css" rel="stylesheet">
<script src="/js/jquery.min.js"></script>
<script src="/js/main.js"></script>
Også Godt:
<script src="/js/jquery.min.js"></script>
<script src="/js/main.js"></script>
<link href="/css/screen.css" rel="stylesheet">
Af og til vil body
elementet blive suppleret uventet af en browser.
Dårligt:
<html>
<head>
...
</head>
...
</html>
Godt:
<html>
<head>
...
</head>
<body>
...
</body>
</html>
Dette element bruges ikke særlig ofte.
Dårligt:
<hgroup>
<h1>HTML Best Practices</h1>
<h2>For writing maintainable and scalable HTML documents.</h2>
</hgroup>
Godt:
<h1>HTML Best Practices</h1>
<p>For writing maintainable and scalable HTML documents.</p>
address
-element er til email-adresser, social media konti, fysisk addresse, telefonnummer eller noget der kan bruges til at kontakte med
Dårligt:
<address>No rights reserved.</address>
Godt:
<address>Contact: <a href="https://twitter.com/hail2u_">Kyo Nagashima</a></address>
Det første linjeskift bliver ignoreret i browseren, men andet og senere linjer bliver anvendt.
Dårligt:
<pre>
<!DOCTYPE html>
</pre>
Godt:
<pre><!DOCTYPE html>
</pre>
blockquote
-elementers indhold forventes at være et citat. Ikke blot en bunke karakterer.
Dårligt:
<blockquote>For writing maintainable and scalable HTML documents.</blockquote>
Godt:
<blockquote>
<p>For writing maintainable and scalable HTML documents.</p>
</blockquote>
blockquote
-elementets indhold er blot et citat
Dårligt:
<blockquote>
<p>For writing maintainable and scalable HTML documents.</p>
<p>— HTML Best Practices</p>
</blockquote>
Godt:
<blockquote>
<p>For writing maintainable and scalable HTML documents.</p>
</blockquote>
<p>— HTML Best Practices</p>
Også Godt:
<figure>
<blockquote>
<p>For writing maintainable and scalable HTML documents.</p>
</blockquote>
<figcaption>— HTML Best Practices</figcaption>
</figure>
Laaaaaaaaaaaaaaaaaaaaaaaaaaaaaannnnnnnnnnnnnnnnnnnnge linjer er svære at lææææææææææææææææææææææææææææææææææææææææææææææææse
Dårligt:
<ul>
<li>General</li><li>The root Element</li><li>Sections</li>...
</ul>
Godt:
<ul>
<li>General</li>
<li>The root Element</li>
<li>Sections</li>
...
</ul>
Brug type
-attributten til at bestemme hvilken type markering hver linje i en liste skal anvende, for at sikre fremtidige referencer.
Dårligt:
<head>
<style>
.toc {
list-style-type: upper-roman;
}
</style>
</head>
<body>
<ol class="toc">
<li>General</li>
<li>The root Element</li>
<li>Sections</li>
...
</ol>
</body>
Godt:
<body>
<ol type="I">
<li>General</li>
<li>The root Element</li>
<li>Sections</li>
...
</ol>
</body>
dl
-element er begrænset til association list i HTML.
Dårligt:
<dl>
<dt>Costello</dt>
<dd>Look, you gotta first baseman?</dd>
<dt>Abbott</dt>
<dd>Certainly.</dd>
<dt>Costello</dt>
<dd>Who’s playing first?</dd>
<dt>Abbott</dt>
<dd>That’s right.</dd>
<dt>Costello becomes exasperated.</dd>
<dt>Costello</dt>
<dd>When you pay off the first baseman every month, who gets the money?</dd>
<dt>Abbott</dt>
<dd>Every dollar of it.</dd>
</dl>
Godt:
<p>Costello: Look, you gotta first baseman?</p>
<p>Abbott: Certainly.</p>
<p>Costello: Who’s playing first?</p>
<p>Abbott: That’s right.</p>
<p>Costello becomes exasperated.</p>
<p>Costello: When you pay off the first baseman every month, who gets the money?</p>
<p>Abbott: Every dollar of it.</p>
HTML specifikationen foryder at placere figcaption
inden i et figure
element.
Dårligt:
<figure>
<img alt="Front cover of the “HTML Best Practices” book" src="/img/front-cover.png">
<figcaption>“HTML Best Practices” Cover Art</figcaption>
<img alt="Back cover of the “HTML Best Practices” book" src="/img/back-cover.png">
</figure>
Godt:
<figure>
<img alt="Front cover of the “HTML Best Practices” book" src="/img/front-cover.png">
<img alt="Back cover of the “HTML Best Practices” book" src="/img/back-cover.png">
<figcaption>“HTML Best Practices” Cover Art</figcaption>
</figure>
main
elementet ckan bruges til at omslutte det generelle indhold.
Dårligt:
<div id="content">
...
</div>
Godt:
<main>
...
</main>
div
elementet er en sidste udvej
Dårligt:
<div class="chapter">
...
</div>
Godt:
<section>
...
</section>
a
elementer kan omkranse næsten alle elementer (undtagen interaktive elementer som en form-kontrol eller et andet a
element) .
Dårligt:
<h1><a href="https://whatwg.org/">WHATWG</a></h1>
<p><a href="https://whatwg.org/">A community maintaining and evolving HTML since 2004.</a></p>
Godt:
<a href="https://whatwg.org/">
<h1>WHATWG</h1>
<p>A community maintaining and evolving HTML since 2004.</p>
</a>
Det tvinger browseren til at downloade en linked sti til enhedens lager
Dårligt:
<a href="/downloads/offline.zip">offline version</a>
Godt:
<a download href="/downloads/offline.zip">offline version</a>
Disse hints hjælper apps med at håndtere en linked resurse
Dårligt:
<a href="/ja/pdf">Japanese PDF version</a>
Godt:
<a href="/ja/pdf" hreflang="ja" rel="alternate" type="application/pdf">Japanese PDF version</a>
Label til et link bør beskrive hvad der linkes til.
Dårligt:
<p><a href="/pdf" rel="alternate" type="application/pdf">Click here</a> to view PDF version.</p>
Godt:
<p><a href="/pdf" rel="alternate" type="application/pdf">PDF version</a> is also available.</p>
Disse omhandler vigtighed og seriøsitet. Derfor er et strong
element mere passende
Dårligt:
<em>Caution!</em>
Godt:
<strong>Caution!</strong>
disse elementers semantik er for vanskelige at læse for mennesker (udviklere)
Dårligt:
<i class="icon-search"></i>
Godt:
<span class="icon-search" aria-hidden="true"></span>
Anførselstegn bliver tilføjet af browseren.
Dårligt:
<q>“For writing maintainable and scalable HTML documents”</q>
Godt:
<q>For writing maintainable and scalable HTML documents</q>
Også Godt:
“For writing maintainable and scalable HTML documents”
Der er ikke nogen anden måde at repræsentere dens udvidelse
Dårligt:
<abbr>HBP</abbr>
Godt:
<abbr title="HTML Best Practices">HBP</abbr>
ruby
element er ikke understøttet på tværs af moderne browsere.
Dårligt:
<ruby>HTML<rt>えいちてぃーえむえる</ruby>
Godt:
<ruby>HTML<rp> (</rp><rt>えいちてぃーえむえる</rt><rp>) </rp></ruby>
når datetime
attribut ikke eksisterer, er formatet af time
elementets indhold begrænset
Dårligt:
<time>Dec 19, 2014</time>
Godt:
<time datetime="2014-12-19">Dec 19, 2014</time>
Dette er ikke en formel måde, men spec nævner det.
Dårligt:
<code><!DOCTYPE html></code>
Godt:
<code class="language-html"><!DOCTYPE html></code>
Indlejring af kbd
elementer i rekursive niveauer er for svært for mennesker at læse
Dårligt:
<kbd><kbd>Ctrl</kbd>+<kbd>F5</kbd></kbd>
Godt:
<kbd>Ctrl+F5</kbd>
span
element er en sidste udvej.
Dårligt:
HTML <span class="best">Best</span> Practices
Godt:
HTML <em>Best</em> Practices
Linjeskift bør tilføjes når der anvendes et br
element. Læsbarhed.
Dårligt:
<p>HTML<br>Best<br>Practices</p>
Godt:
<p>HTML<br/>
Best<br/>
Practices</p>
br
elementet er ikke til linjeskift af synsmæssige årsager, men til at lave ophold i indhold.
Dårligt:
<p><label>Rule name: <input name="rule-name" type="text"></label><br>
<label>Rule description:<br>
<textarea name="rule-description"></textarea></label></p>
Godt:
<p><label>Rule name: <input name="rule-name" type="text"></label></p>
<p><label>Rule description:<br>
<textarea name="rule-description"></textarea></label></p>
Elementet kan ikke strække sig til andre elementer.
Dårligt:
<p>For writing maintainable and scalable HTML documents.<del> And for mental stability.</p>
<p>Don’t trust!</p></del>
Godt:
<p>For writing maintainable and scalable HTML documents.<del> And for mental stability.</del></p>
<del><p>Don’t trust!</p></del>
Understøttelsen af picture
element er ikke gennemført endnu.
Dårligt:
<picture>
<source srcset="/img/logo.webp" type="image/webp">
<source srcset="/img/logo.hdp" type="image/vnd.ms-photo">
<source srcset="/img/logo.jp2" type="image/jp2">
<source srcset="/img/logo.jpg" type="image/jpg">
</picture>
Godt:
<picture>
<source srcset="/img/logo.webp" type="image/webp">
<source srcset="/img/logo.hdp" type="image/vnd.ms-photo">
<source srcset="/img/logo.jp2" type="image/jp2">
<img src="/img/logo.jpg">
</picture>
alt
attribut helps those who cannot process images or have image loading disabled.
alt
attribut hjælper dem der ikke kan processere billedindhold eller har hentning af billedindhold slået fra.
Dårligt:
<img src="/img/logo.png">
Godt:
<img alt="HTML Best Practices" src="/img/logo.png">
Hvis billedet blot supplementerer indholdet, kan ekvivalent indhold findes i nærdheden af billedet. Anvendes fx for screenreaders af tilgængelighedshensyn (synshandicap.)
Dårligt:
<img alt="Question mark icon" src="/img/icon/help.png"> Help
Godt:
<img alt="" src="/img/icon/help.png"> Help
Af og til vides det korrekte indhold til en alt
attribut ikke.
Dårligt:
<img alt="CAPTCHA" src="captcha.cgi?id=82174">
Godt:
<img src="captcha.cgi?id=82174" title="CAPTCHA">
(Hvis du ikke kan se billedet, kan du bruge en <a href="?audio">audio</a> test istedet.)
Der er nogle begrænsninger i indholdet af en iframe
. Det er altid sikkert at lade denne være tom.
Dårligt:
<iframe src="/ads/default.html">
<p>If your browser support inline frame, ads are displayed here.</p>
</iframe>
Godt:
<iframe src="/ads/default.html"></iframe>
Dette indhold bliver præsenteret for en screen reader (skærmlæser, for folk med synshandicap)
Dårligt:
<map name="toc">
<a href="#general">General</a>
<area alt="General" coords="0, 0, 40, 40" href="#General"> |
<a href="#the_root_element">The root element</a>
<area alt="The root element" coords="50, 0, 90, 40" href="#the_root_element"> |
<a href="#sections">Sections</a>
<area alt="Sections" coords="100, 0, 140, 40" href="#sections">
</map>
Godt:
<map name="toc">
<p>
<a href="#general">General</a>
<area alt="General" coords="0, 0, 40, 40" href="#General"> |
<a href="#the_root_element">The root element</a>
<area alt="The root element" coords="50, 0, 90, 40" href="#the_root_element"> |
<a href="#sections">Sections</a>
<area alt="Sections" coords="100, 0, 140, 40" href="#sections">
</p>
</map>
Indhold der kan faldes tilbage på sikrer bagudkompatibilitet for indholdstyper der for nyligt er tilføjet til HTML.
Dårligt:
<video>
<source src="/mov/theme.mp4" type="video/mp4">
<source src="/mov/theme.ogv" type="video/ogg">
...
</video>
Godt:
<video>
<source src="/mov/theme.mp4" type="video/mp4">
<source src="/mov/theme.ogv" type="video/ogg">
...
<iframe src="//www.youtube.com/embed/..." allowfullscreen></iframe>
</video>
Lange linjer er svære at læse og overskue.
Dårligt:
<tr>
<td>General</td><td>The root Element</td><td>Sections</td>
</tr>
Godt:
<tr>
<td>General</td>
<td>The root Element</td>
<td>Sections</td>
</tr>
Dette bør ikke undlades
Dårligt:
<table>
<thead>
<tr>
<td><strong>Element</strong></td>
<td><strong>Empty</strong></td>
<td><strong>Tag omission</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td><strong><code>pre</code></strong></td>
<td>No</td>
<td>Neither tag is omissible</td>
</tr>
<tr>
<td><strong><code>img</code></strong></td>
<td>Yes</td>
<td>No end tag</td>
</tr>
</tbody>
</table>
Godt:
<table>
<thead>
<tr>
<th>Element</th>
<th>Empty</th>
<th>Tag omission</th>
</tr>
</thead>
<tbody>
<tr>
<th><code>pre</code></th>
<td>No</td>
<td>Neither tag is omissible</td>
</tr>
<tr>
<th><code>img</code></th>
<td>Yes</td>
<td>No end tag</td>
</tr>
</tbody>
</table>
label
elementet hjælper brugeren med at fokusere på elementet
Dårligt:
<p>Query: <input name="q" type="text"></p>
Godt:
<p><label>Query: <input name="q" type="text"></label></p>
label
element can contain some form elements.
Dårligt:
<label for="q">Query: </label><input id="q" name="q" type="text">
Godt:
<label>Query: <input name="q" type="text"></label>
Med passende type
, giver browseren relevante features til input
elementer.
Dårligt:
<label>Search keyword: <input name="q" type="text"></label>
Godt:
<label>Search keyword: <input name="q" type="search"></label>
Standardlabel for en submit-knap er ikke standardiseret på tværs af browsere og sprog.
Dårligt:
<input type="submit">
Godt:
<input type="submit" value="Søg">
Hvis input tekst ikke stemmer overens med pattern
attribut, skal værdien af en title
attribut vises som et hint.
Dårligt:
<input name="security-code" pattern="[0-9]{3}" type="text">
Godt:
<input name="security-code" pattern="[0-9]{3}" title="A security code is a number in three figures." type="text">
label
element anvendes til etiketter, placeholder
attribut er til et kort hint.
Dårligt:
<input name="email" placeholder="Email" type="text">
Godt:
<label>Email: <input name="email" placeholder="[email protected]" type="text"></label>
Lange linjer er svære at overskue.
Dårligt:
<datalist id="toc">
<option label="General"><option label="The root element"><option label="Sections">
</datalist>
Godt:
<datalist id="toc">
<option label="General">
<option label="The root element">
<option label="Sections">
</datalist>
Med max
attribut, kan value
attributten blive skrevet i et nemt og mere passende format.
Dårligt:
<progress value="0.5"> 50%</progress>
Godt:
<progress max="100" value="50"> 50%</progress>
Med min
and max
attributterne, kan value
attributterne blive skrevet i et nemt og mere passende format.
Dårligt:
<meter value="0.5"> 512GB used (1024GB total)</meter>
Godt:
<meter min="0" max="1024" value="512"> 512GB used (1024GB total)</meter>
Dårligt:
<fieldset>
<p><label>Is this section useful?: <input name="usefulness-general" type="checkbox"></label></p>
...
<legend>About "General"</legend>
</fieldset>
Godt:
<fieldset>
<legend>About "General"</legend>
<p><label>Is this section useful?: <input name="usefulness-general" type="checkbox"></label></p>
...
</fieldset>
I HTML er standardværdien af en type
attribut i et script
element
text/javascript
.
Dårligt:
<script type="text/javascript">
...
</script>
Godt:
<script>
...
</script>
Dette er gammel strøm fra gamle browsere
Dårligt:
<script>
/*<![CDATA[*/
...
/*]]>*/
</script>
Also Dårligt:
<script>
<!--
...
// -->
</script>
Godt:
<script>
...
</script>
async
attribut er det bedste for både simplicitet of performance.
Dårligt:
<script>
var script = document.createElement("script");
script.async = true;
script.src = "//example.com/widget.js";
document.getElementsByTagName("head")[0].appendChild(script);
</script>
Godt:
<script async defer src="https://example.com/widget.js"></script>
Korrekt indentering er vigtig for læsbarhed.
Dårligt:
<html>
<head>
...
</head>
<body>
...
</body>
</html>
Godt:
<html>
<head>
...
</head>
<body>
...
</body>
</html>
En absolut sti virker bedre på en lokal maskine uden internetforbindelse.
Dårligt:
<link rel="apple-touch-icon" href="http://you.example.com/apple-touch-icon-precomposed.png">
...
<p>You can find more at <a href="//you.example.com/contact.html">contact page</a>.</p>
Godt:
<link rel="apple-touch-icon" href="/apple-touch-icon-precomposed.png">
...
<p>You can find more at <a href="/contact.html">contact page</a>.</p>
Med den korrekte protokol kan man loade eksterne resurser pålideligt og sikkert.
Dårligt:
<script src="//example.com/js/library.js">
Godt:
<script src="https://example.com/js/library.js">