Translations: English · বাংলা · Dansk · Deutsch · Español · فارسی · Français · Indonesia · 日本語 · 한국어 · Português (BR) · Română · Русский · Türkçe · Українська · Tiếng Việt · 简体中文 · 正體中文
Pour rédiger des documents HTML maintenables et extensibles.
DOCTYPE est nécessaire pour activer le mode standard
Mal :
<html>
...
</html>
Bon :
<!DOCTYPE html>
<html>
...
</html>
DOCTYPE n’est plus pour la DTD, soyez simple.
Mal :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Bon :
<!DOCTYPE html>
Êtes-vous sûr de vouloir écrire XHTML ?
Mal :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE html>
Bon :
<!DOCTYPE html>
Si vous écrivez un document HTML avec UTF-8, presque tous les caractères (y compris les emojis) peuvent être écrits directement.
Mal :
<p><small>Copyright © 2014 W3C<sup>®</sup></small></p>
Bon :
<p><small>Copyright © 2014 W3C<sup>®</sup></small></p>
Il faut toujours éviter ces caractères pour un document HTML sans bugs.
Mal :
<h1>The "&" character</h1>
Bon :
<h1>The "&" character</h1>
Ces caractères sont facilement confondus avec d'autre caractères. En outre, la spécification ne garantit pas la définition d’un nom lisible par l’homme pour ces caractères.
Mal :
<p>This book can read in 1 hour.</p>
Bon :
<p>This book can read in 1 hour.</p>
Quelques caractères ne peuvent pas être utilisés immédiatement après l'ouverture ou avant la fermeture du commentaire.
Mal :
<!--This section is non-normative-->
Bon :
<!-- This section is non-normative -->
Peut-être que vous ne comprenez pas les règles pour omettre la balise de fermeture.
Mal :
<html>
<body>
...
Bon :
<html>
<body>
...
</body>
</html>
La consistance est la clé pour un code lisible.
Mal :
<img alt="HTML Best Practices" src="/img/logo.png">
<hr />
Bon :
<img alt="HTML Best Practices" src="/img/logo.png">
<hr>
Il n’y a aucune raison de faire cela.
Mal :
<h1 class=" title " >HTML Best Practices</h1>
Bon :
<h1 class="title">HTML Best Practices</h1>
Pour la consistance aussi
Mal :
<a HREF="#general">General</A>
Bon :
<a href="#general">General</a>
Egalement Bon :
<A HREF="#general">General</A>
Comme ci-dessus.
Mal :
<img alt="HTML Best Practices" src='/img/logo.jpg'>
Bon :
<img alt="HTML Best Practices" src="/img/logo.jpg">
Ta règle de formatage bizarre peut embrouiller quelqu’un.
Mal :
<input name="q" type="search">
Bon :
<input name="q" type="search">
C'est facile à écrire, non?
Mal :
<audio autoplay="autoplay" src="/audio/theme.mp3">
Bon :
<audio autoplay src="/audio/theme.mp3">
SVG et MathML peuvent être utilisés directement dans un document HTML.
Mal :
<svg xmlns="http://www.w3.org/2000/svg">
...
</svg>
Bon :
<svg>
...
</svg>
Nous sommes en train d'écrire un document HTML.
Mal :
<span lang="ja" xml:lang="ja">...</span>
Bon :
<span lang="ja">...</span>
Un texte dans une balise peut devenir très compliqué. Cette règle simple aide à lire ces textes.
Mal :
<img alt="HTML Best Practices" data-height="31" data-width="88" itemprop="image" src="/img/logo.png">
Bon :
<img alt="HTML Best Practices" src="/img/logo.png" data-width="88" data-height="31" itemprop="image">
Quelques élements ont implicitement un role
dans un document HTML, ne les spécifiez pas.
Mal :
<nav role="navigation">
...
</nav>
<hr role="separator">
Bon :
<nav>
...
</nav>
<hr>
lang
aide à traduire un document HTML.
Mal :
<html>
Bon :
<html lang="en-US">
Le Japonais n'est utilisé que dans le Japon. Donc, le code pays n'est pas nécessaire.
Mal :
<html lang="ja-JP">
Bon :
<html lang="ja">
Un attribut approprié peut être traité correctement par les navigateurs.
Mal :
<span data-language="french">chemises</span>
...
<strong data-type="warning">Do not wash!</strong>
Bon :
<span title="French"><span lang="fr">chemises</span></span>
...
<strong class="warning">Do not wash!</strong>
Une valeur pour l'éément title
est utilisée par plusieurs applications, et non pas seulement les navigateurs
Mal :
<head>
<meta charset="UTF-8">
</head>
Bon :
<head>
<meta charset="UTF-8">
<title>HTML Best Practices</title>
</head>
Un chemin absolu ou une URL est plus sûr pour les développeurs et les utilisateurs.
Mal :
<head>
...
<base href="/blog/">
<link href="hello-world" rel="canonical">
...
</head>
Bon :
<head>
...
<link href="/blog/hello-world" rel="canonical">
...
</head>
C’est un conseil sur la façon dont l’application gère cette ressource.
Mal :
<link href="/pdf" rel="alternate">
<link href="/feed" rel="alternate">
<link href="/css/screen.css" rel="stylesheet">
Bon :
<link href="/pdf" rel="alternate" type="application/pdf">
<link href="/feed" rel="alternate" type="application/rss+xml">
<link href="/css/screen.css" rel="stylesheet">
Presque tous les navigateurs vont chercher /favicon.ico
automatiquement et de façon asynchrone.
Mal :
<link href="/favicon.ico" rel="icon" type="image/vnd.microsoft.icon">
Bon :
<!-- Place `favicon.ico` in the root directory. -->
Indique quelle icône les plateformes iOS utilisent pour représenter le site.
Mal :
<!-- Hey Apple! Please download `/apple-touch-icon.png`! -->
Bon :
<link href="/apple-touch-icon.png" rel="apple-touch-icon">
Une balise lisible par l’homme aide les gens à choisir la feuille de style appropriée.
Mal :
<link href="/css/screen.css" rel="stylesheet">
<link href="/css/high-contrast.css" rel="alternate stylesheet">
Bon :
<link href="/css/screen.css" rel="stylesheet">
<link href="/css/high-contrast.css" rel="alternate stylesheet" title="High contrast">
Une valeur pour l'attribut href
attribute peut être résolue en tant qu’URL.
Mal :
<section itemscope itemtype="http://schema.org/BlogPosting">
<meta content="https://example.com/blog/hello" itemprop="url">
...
</section>
Bon :
<section itemscope itemtype="http://schema.org/BlogPosting">
<link href="/blog/hello" itemprop="url">
...
</section>
UTF-8 n’est pas encore par défaut sur tous les navigateurs.
Mal :
<head>
<title>HTML Best Practices</title>
</head>
Bon :
<head>
<meta charset="UTF-8">
<title>HTML Best Practices</title>
</head>
Les en-têtes HTTP doivent être spécifiés par un serveur, soyez simples.
Mal :
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Bon :
<meta charset="UTF-8">
La spécification exige que l’encodage des caractères soit défini dans les 1024 premiers octets du document.
Mal :
<head>
<meta content="width=device-width" name="viewport">
<meta charset="UTF-8">
...
</head>
Bon :
<head>
<meta charset="UTF-8">
<meta content="width=device-width" name="viewport">
...
</head>
Avec UTF-8, tu peux utiliser des Emojis
Mal :
<meta charset="Shift_JIS">
Bon :
<meta charset="UTF-8">
Sur HTML, la valeur par défaut de l'attribut type
de la balise style
est text/css
.
Mal :
<style type="text/css">
...
</style>
Bon :
<style>
...
</style>
Ce rituel n'est nécessaire que pour les anciens navigateurs
Mal :
<style>
<!--
...
-->
</style>
Bon :
<style>
...
</style>
Parfois, l'élément script
bloque la construction du DOM.
Mal :
<script src="/js/jquery.min.js"></script>
<link href="/css/screen.css" rel="stylesheet">
<script src="/js/main.js"></script>
Bon :
<link href="/css/screen.css" rel="stylesheet">
<script src="/js/jquery.min.js"></script>
<script src="/js/main.js"></script>
Egalement Bon :
<script src="/js/jquery.min.js"></script>
<script src="/js/main.js"></script>
<link href="/css/screen.css" rel="stylesheet">
Ne pas utiliser l’élément body
pour envelopper le contenu de la page peut provoquer des comportements inattendus dans les navigateurs.
Mal :
<html>
<head>
...
</head>
...
</html>
Bon :
<html>
<head>
...
</head>
<body>
...
</body>
</html>
Cet élément n'est pas trop utilisé
Mal :
<hgroup>
<h1>HTML Best Practices</h1>
<h2>For writing maintainable and scalable HTML documents.</h2>
</hgroup>
Bon :
<h1>HTML Best Practices</h1>
<p>For writing maintainable and scalable HTML documents.</p>
L'élément address
est pour les adresses e-mail, réseaux sociaux, domicile, numéro de téléphone et autres moyens de contact.
Mal :
<address>No rights reserved.</address>
Bon :
<address>Contact: <a href="https://twitter.com/hail2u_">Kyo Nagashima</a></address>
La première ligne sera ignorée dans les navigateurs, mais la seconde et les suivantes seront affichées.
Mal :
<pre>
<!DOCTYPE html>
</pre>
Bon :
<pre><!DOCTYPE html>
</pre>
Le contenu de l'élément blockquote
est une citation et non pas un bloc de caractères
Mal :
<blockquote>For writing maintainable and scalable HTML documents.</blockquote>
Bon :
<blockquote>
<p>For writing maintainable and scalable HTML documents.</p>
</blockquote>
Le contenu de l'élément blockquote
est une citation
Mal :
<blockquote>
<p>For writing maintainable and scalable HTML documents.</p>
<p>— HTML Best Practices</p>
</blockquote>
Bon :
<blockquote>
<p>For writing maintainable and scalable HTML documents.</p>
</blockquote>
<p>— HTML Best Practices</p>
Egalement Bon :
<figure>
<blockquote>
<p>For writing maintainable and scalable HTML documents.</p>
</blockquote>
<figcaption>— HTML Best Practices</figcaption>
</figure>
Une ligne looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongue est difficiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiile à lire.
Mal :
<ul>
<li>General</li><li>The root Element</li><li>Sections</li>...
</ul>
Bon :
<ul>
<li>General</li>
<li>The root Element</li>
<li>Sections</li>
...
</ul>
Parfois, le marqueur est référencé par le contenu à proximité. Si vous changez le type du marqueur avec l’attribut type, vous serez en sécurité avec ces références.
Mal :
<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>
Bon :
<body>
<ol type="I">
<li>General</li>
<li>The root Element</li>
<li>Sections</li>
...
</ol>
</body>
L'élément dl
est utilisé pour les listes descriptives en HTML.
Mal :
<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>
Bon :
<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>
Les spécifications n'autorisent pas l'élément figcaption
au milieu de l'élément figure
.
Mal :
<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>
Bon :
<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>
L'élément main
peut être utilisé pour envelopper le contenu.
Mal :
<div id="content">
...
</div>
Bon :
<main>
...
</main>
L'élément div
est un élément de dernier recours.
Mal :
<div class="chapter">
...
</div>
Bon :
<section>
...
</section>
L'élément a
peut envelopper presque tous les éléments (sauf les éléments interactifs
tels que les contrôles d’un formulaire et l'élément a
).
Mal :
<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>
Bon :
<a href="https://whatwg.org/">
<h1>WHATWG</h1>
<p>A community maintaining and evolving HTML since 2004.</p>
</a>
Il forcera les navigateurs à télécharger la ressource liée au stockage.
Mal :
<a href="/downloads/offline.zip">offline version</a>
Bon :
<a download href="/downloads/offline.zip">offline version</a>
Ces pistes aident les applications à gérer la ressource liée.
Mal :
<a href="/ja/pdf">Japanese PDF version</a>
Bon :
<a href="/ja/pdf" hreflang="ja" rel="alternate" type="application/pdf">Japanese PDF version</a>
Le texte du lien doit être l’étiquette de sa ressource liée.
Mal :
<p><a href="/pdf" rel="alternate" type="application/pdf">Click here</a> to view PDF version.</p>
Bon :
<p><a href="/pdf" rel="alternate" type="application/pdf">PDF version</a> is also available.</p>
Ce sont des choses sérieuses. Donc, l'élément strong
est plus approprié
Mal :
<em>Caution!</em>
Bon :
<strong>Caution!</strong>
La sémantique de ces éléments est difficile pour les humains
Mal :
<i class="icon-search"></i>
Bon :
<span class="icon-search" aria-hidden="true"></span>
Les guillements sont fournis par le navigateur.
Mal :
<q>“For writing maintainable and scalable HTML documents”</q>
Bon :
<q>For writing maintainable and scalable HTML documents</q>
Egalement Bon :
“For writing maintainable and scalable HTML documents”
Il n’y a pas d’autre façon de représenter son expansion.
Mal :
<abbr>HBP</abbr>
Bon :
<abbr title="HTML Best Practices">HBP</abbr>
Le support de l’élément ruby
n’est pas complet parmi les navigateurs modernes.
Mal :
<ruby>HTML<rt>えいちてぃーえむえる</ruby>
Bon :
<ruby>HTML<rp> (</rp><rt>えいちてぃーえむえる</rt><rp>) </rp></ruby>
Ajouter l'attribut datetime
à l’élément time
si vous utilisez des formats non reconnaissables par l'ordinateur
Quand l'attribut datetime
n'est pas présent, le format du contenu de
l'élément time
est restreint.
Mal :
<time>Dec 19, 2014</time>
Bon :
<time datetime="2014-12-19">Dec 19, 2014</time>
Ce n’est pas formel, mais la spécification le mentionne ainsi.
Mal :
<code><!DOCTYPE html></code>
Bon :
<code class="language-html"><!DOCTYPE html></code>
Imbriquer l'élément kbd
est difficile pour les humains.
Mal :
<kbd><kbd>Ctrl</kbd>+<kbd>F5</kbd></kbd>
Bon :
<kbd>Ctrl+F5</kbd>
L'élément span
est un élément de dernier recours.
Mal :
HTML <span class="best">Best</span> Practices
Bon :
HTML <em>Best</em> Practices
Un saut de ligne doit être nécessaire lorsque l’élément br
est utilisé.
Mal :
<p>HTML<br>Best<br>Practices</p>
Bon :
<p>HTML<br>
Best<br>
Practices</p>
L'élément br
est pour donner des sauts de ligne au contenu.
Mal :
<p><label>Rule name: <input name="rule-name" type="text"></label><br>
<label>Rule description:<br>
<textarea name="rule-description"></textarea></label></p>
Bon :
<p><label>Rule name: <input name="rule-name" type="text"></label></p>
<p><label>Rule description:<br>
<textarea name="rule-description"></textarea></label></p>
Les éléments ne peuvent pas déborder d’autres éléments.
Mal :
<p>For writing maintainable and scalable HTML documents.<del> And for mental stability.</p>
<p>Don’t trust!</p></del>
Bon :
<p>For writing maintainable and scalable HTML documents.<del> And for mental stability.</del></p>
<del><p>Don’t trust!</p></del>
Le support de l’élément picture
n’est pas encore bon.
Mal :
<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>
Bon :
<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>
L'attribut alt
aide ceux qui ne peuvent pas traiter les images
ou dont le chargement des images est désactivé.
Mal :
<img src="/img/logo.png">
Bon :
<img alt="HTML Best Practices" src="/img/logo.png">
Si l’image est supplémentaire, il y a du contenu équivalent à proximité.
Mal :
<img alt="Question mark icon" src="/img/icon/help.png"> Help
Bon :
<img alt="" src="/img/icon/help.png"> Help
Parfois, vous ne savez pas quel texte convient à l’attribut alt
.
Mal :
<img alt="CAPTCHA" src="captcha.cgi?id=82174">
Bon :
<img src="captcha.cgi?id=82174" title="CAPTCHA">
(If you cannot see the image, you can use an <a href="?audio">audio</a> test instead.)
Il y a une certaine restriction dans son contenu. Vide est toujours sûr.
Mal :
<iframe src="/ads/default.html">
<p>If your browser support inline frame, ads are displayed here.</p>
</iframe>
Bon :
<iframe src="/ads/default.html"></iframe>
Ce contenu se présente à un lecteur d’écran.
Mal :
<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>
Bon :
<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>
Un contenu alternatif est nécessaire pour les éléments nouvellement introduits en HTML.
Mal :
<video>
<source src="/mov/theme.mp4" type="video/mp4">
<source src="/mov/theme.ogv" type="video/ogg">
...
</video>
Bon :
<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>
Les longues lignes sont difficiles à lire
Mal :
<tr>
<td>General</td><td>The root Element</td><td>Sections</td>
</tr>
Bon :
<tr>
<td>General</td>
<td>The root Element</td>
<td>Sections</td>
</tr>
Il n’y a aucune raison d’éviter cela.
Mal :
<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>
Bon :
<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>
L'élément label
aide à focaliser l’élément de forme.
Mal :
<p>Query: <input name="q" type="text"></p>
Bon :
<p><label>Query: <input name="q" type="text"></label></p>
L'élément label
peut contenir certains éléments du formulaire.
Mal :
<label for="q">Query: </label><input id="q" name="q" type="text">
Bon :
<label>Query: <input name="q" type="text"></label>
Avec un type
approprié, les navigateurs offrent des fonctions supplémentaires aux éléments input
.
Mal :
<label>Search keyword: <input name="q" type="text"></label>
Bon :
<label>Search keyword: <input name="q" type="search"></label>
Le texte par défaut pour le bouton d’envoi n’est pas standardisé dans différents navigateurs et langues.
Mal :
<input type="submit">
Bon :
<input type="submit" value="Search">
Si le texte saisi ne correspond pas à l’attribut pattern
, la valeur de l’attribut title
s’affichera comme indice.
Mal :
<input name="security-code" pattern="[0-9]{3}" type="text">
Bon :
<input name="security-code" pattern="[0-9]{3}" title="A security code is a number in three figures." type="text">
L'élément label
est pour une étiquette, l'attribut placeholder
est pour un petit indice.
Mal :
<input name="email" placeholder="Email" type="text">
Bon :
<label>Email: <input name="email" placeholder="[email protected]" type="text"></label>
Les longues lignes sont difficiles à lire.
Mal :
<datalist id="toc">
<option label="General"><option label="The root element"><option label="Sections">
</datalist>
Bon :
<datalist id="toc">
<option label="General">
<option label="The root element">
<option label="Sections">
</datalist>
Avec l'attribut max
, l'attribut value
peut être écrit dans un format simple.
Mal :
<progress value="0.5"> 50%</progress>
Bon :
<progress max="100" value="50"> 50%</progress>
Avec les attributs min
et max
, l'attribut value
peut être écrit dans un
format simple
Mal :
<meter value="0.5"> 512GB used (1024GB total)</meter>
Bon :
<meter min="0" max="1024" value="512"> 512GB used (1024GB total)</meter>
C'est nécessaire.
Mal :
<fieldset>
<p><label>Is this section useful?: <input name="usefulness-general" type="checkbox"></label></p>
...
<legend>About "General"</legend>
</fieldset>
Bon :
<fieldset>
<legend>About "General"</legend>
<p><label>Is this section useful?: <input name="usefulness-general" type="checkbox"></label></p>
...
</fieldset>
Dans HTML, la valeur par défaut de l'attribut type
de l'élément script
est
text/javascript
.
Mal :
<script type="text/javascript">
...
</script>
Bon :
<script>
...
</script>
Ce rituel est pour les navigateurs anciens
Mal :
<script>
/*<![CDATA[*/
...
/*]]>*/
</script>
Aussi mal :
<script>
<!--
...
// -->
</script>
Bon :
<script>
...
</script>
L'attribut async
est le meilleur pour la simplicité et la performance.
Mal :
<script>
var script = document.createElement("script");
script.async = true;
script.src = "//example.com/widget.js";
document.getElementsByTagName("head")[0].appendChild(script);
</script>
Bon :
<script async defer src="https://example.com/widget.js"></script>
L'indentation est importante pour la lisibilité.
Mal :
<html>
<head>
...
</head>
<body>
...
</body>
</html>
Bon :
<html>
<head>
...
</head>
<body>
...
</body>
</html>
Un lien absolu fonctionne mieux sur votre localhost sans connexion Internet.
Mal :
<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>
Bon :
<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>
Avec le protocole, vous pouvez charger des ressources externes de manière fiable et en toute sécurité.
Mal :
<script src="//example.com/js/library.js">
Bon :
<script src="https://example.com/js/library.js">