diff options
Diffstat (limited to 'files/fr/conflicting/learn')
44 files changed, 8396 insertions, 0 deletions
diff --git a/files/fr/conflicting/learn/common_questions/set_up_a_local_testing_server/index.html b/files/fr/conflicting/learn/common_questions/set_up_a_local_testing_server/index.html new file mode 100644 index 0000000000..d688fcce92 --- /dev/null +++ b/files/fr/conflicting/learn/common_questions/set_up_a_local_testing_server/index.html @@ -0,0 +1,244 @@ +--- +title: Mettre en place un environnement de travail +slug: Apprendre/Mettre_en_place_un_environnement_de_travail +tags: + - Beginner + - CodingScripting + - Guide + - Learn +translation_of: Learn/Common_questions/set_up_a_local_testing_server +translation_of_original: Learn/Common_questions/Set_up_a_basic_working_environment +--- +<div class="summary"> +<p>Cet article indique comment mettre en place un environnement de travail et de test afin d'organiser vos pages web.</p> +</div> + +<table class="learn-box standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devez au préalable savoir <a href="/fr/Apprendre/Qu_est-ce_qu_un_serveur_web">ce qu'est un serveur web</a>, <a href="/fr/Apprendre/Commencer_avec_le_web/Installation_outils_de_base">comment installer les outils de base</a> et <a href="/fr/Apprendre/Comprendre_noms_de_domaine">comment fonctionnent les noms de domaine</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Savoir comment installer un serveur local et mettre en place une hiérarchie de fichiers pour développer un site web.</td> + </tr> + </tbody> +</table> + +<p>En développement web, mieux vaut tester son site localement avant de le publier aux yeux du monde entier. Pour effectuer des tests sur votre ordinateur, vous pouvez installer un serveur local. Dans cet article nous verrons comment faire et comment organiser une hiérarchie de fichiers afin que ceux-ci soit organisés, même si le projet devient plus volumineux.</p> + +<h2 id="Pédagogie_active">Pédagogie active</h2> + +<p><em>Il n'existe pas encore de matériau interactif pour cet article. <a href="/fr/docs/MDN/Débuter_sur_MDN">N'hésitez pas à contribuer</a>.</em></p> + +<h2 id="Aller_plus_loin">Aller plus loin</h2> + +<h3 id="Installer_et_paramétrer_un_éditeur_de_texte">Installer et paramétrer un éditeur de texte</h3> + +<p>Ce point était l'objet d'un article précédent. Si ce n'est pas déjà fait, <a href="/fr/Apprendre/Commencer_avec_le_web/Installation_outils_de_base">voici quelques indications</a> sur comment procéder.</p> + +<h3 id="Installer_un_serveur_web_local">Installer un serveur web local</h3> + +<div class="note"> +<p><strong>Note :</strong> Il existe différents<a href="http://en.wikipedia.org/wiki/Comparison_of_web_server_software"> logiciels de serveurs web</a> qui sont disponibles (<a href="https://httpd.apache.org/" rel="external">Apache</a>, <a href="http://tomcat.apache.org/">Tomcat</a>, <a href="http://www.iis.net/" rel="external">IIS</a>, <a href="http://nginx.org/" rel="external">nginx</a>). Apache est libre et gratuit, disponible sur plusieurs plateformes et est simple à installer. Nous illustrerons donc les exemples de cet article avec Apache.</p> +</div> + +<h4 id="Comprendre_le_fonctionnement_de_localhost">Comprendre le fonctionnement de <em>localhost</em></h4> + +<p>Dans le monde du {{Glossary("DNS")}}, il existe une adresse spéciale connue par chaque ordinateur : <code>localhost</code>. Celle-ci fait référence au serveur situé sur l'ordinateur en question. Ainsi, il est possible d'accéder à un site situé sur <code>localhost</code> avec votre navigateur, même sans connexion à Internet.</p> + +<div class="note"> +<p><strong>Note : </strong>Pour être plus précis, <code>localhost</code> pointe vers une {{Glossary("adresse IP")}} dirigeant vers votre propre machine : <code>127.0.0.1</code> ({{Glossary("IPv4")}}) ou <code>::1</code> ({{Glossary("IPv6")}}).</p> +</div> + +<p>Essayez d'accéder à votre hôte local : <code><a href="http://localhost/">http://localhost</a></code>. Si vous obtenez un résultat semblable à l'image ci-après : félicitations ! Cela signifie que vous disposez déjà d'un serveur web installé sur votre ordinateur (par exemple Mac OS X inclut Apache préinstallé).</p> + +<p><img alt="Basic index from the Apache HTTP server" src="https://mdn.mozillademos.org/files/9275/index.jpg" style="height: 152px; width: 480px;"></p> + +<p>Si vous n'obtenez pas ce résultat, il faut installer Apache.</p> + +<p>Dans les deux cas, il faudra configurer Apache afin que celui-ci pointe vers votre répertoire de travail. Nous verrons comment faire dans la suite de cet article. Selon le système d'exploitation les opérations à effectuer varient légèrement. Nous commencerons par expliquer le mode opératoire à suivre pour Windows. Si vous n'utilisez pas Windows, vous pouvez directement aller aux sections pour <a href="#Ubuntu_Linux">Ubuntu/Linux</a> ou pour <a href="#Mac_OS_X">Mac OS X</a>.</p> + +<h4 id="Installer_et_lancer_son_serveur_local_sur_Windows">Installer et lancer son serveur local sur Windows</h4> + +<h5 id="Installer_Apache">Installer Apache</h5> + +<p>Sous Windows, installer Apache est légèrement compliqué. <a href="http://httpd.apache.org/docs/2.2/platform/windows.html">Cette page explique</a> comment installer un binaire Apache étape par étape.</p> + +<p>Après l'installation, allez à l'URL <a href="http://localhost/">http://localhost/</a> avec votre ordinateur afin de vérifier que votre serveur fonctionne. Sinon, n'hésitez pas à utiliser un moteur de recherche ou un forum d'aide. Si vous vous posez une question, il y a de grande chance que celle-ci ait déjà été posée et qu'une réponse y ait été apportée.</p> + +<h5 id="Déplacer_la_racine_de_l'hôte_local_vers_votre_répertoire_de_travail">Déplacer la racine de l'hôte local vers votre répertoire de travail</h5> + +<p>Sous le capôt, votre serveur web utilise {{Glossary("HTTP")}} pour afficher les fichiers situés sur votre ordinateur. Dans notre exemple, Apache affiche un fichier appelé <code>index.html</code> qui est situé dans un sous-répertoire des dossiers Apache. Cela serait plus utile si on pourrait utiliser un répertoire au choix.</p> + +<p>Tout d'abord, créons un dossier puis faisons pointer le serveur web vers ce répertoire :</p> + +<ol> + <li>Créez un dossier appelé <code>htdocs</code> dans votre répertoire utilisateur : <code>C:\Users\<strong>NomUtilisateur</strong>\htdocs</code>, où <em>NomUtilisateur </em>correspond à votre nom d'utilisateur. Si vous utilisez une version de Winows plus récente, ce dossier pourra être situé à l'emplacement suivant <code>C:\Documents and Settings\<strong>NomUtilisateur</strong>\htdocs</code>.</li> + <li>Modifiez le fichier de configuration Apache situé à l'emplacement suivant : <code>C:\Program Files\Apache Software Foundation\conf\httpd.conf</code>. Si nécessaire, fournissez les informations d'authentification pour l'administrateur.</li> + <li>Dans ce fichier, allez jusqu'à la ligne qui contient le texte suivant : <code><span style="background-color: #e6e6fa;">DocumentRoot "C:\</span><code><span style="background-color: #e6e6fa;">Users</span></code><span style="background-color: #e6e6fa;">\Apache Software Foundation\htdocs"</span></code>. Éditez cette ligne afin qu'elle pointe vers votre répertoire <code>htdocs</code> : <code><span style="background-color: #e6e6fa;">DocumentRoot "C:\</span><code><span style="background-color: #e6e6fa;">Documents and Settings\</span><strong><span style="background-color: #e6e6fa;">NomUtilisateur</span></strong><span style="background-color: #e6e6fa;">\htdocs</span></code><span style="background-color: #e6e6fa;">"</span></code></li> + <li>Dans le même fichier, repérez l'instruction <code><Directory></code> : <code><span style="background-color: #e6e6fa;"><Directory "</span><code><span style="background-color: #e6e6fa;">C:\</span><code><span style="background-color: #e6e6fa;">Users</span></code><span style="background-color: #e6e6fa;">\Apache Software Foundation\htdocs</span></code><span style="background-color: #e6e6fa;">"></span></code>. Là aussi, modifiez le répertoire pour qu'il pointe vers le dossier de travail : <code><span style="background-color: #e6e6fa;"><Directory "C:\</span><code><span style="background-color: #e6e6fa;">Documents and Settings\</span><strong><span style="background-color: #e6e6fa;">NomUtilisateur</span></strong><span style="background-color: #e6e6fa;">\htdocs</span></code><span style="background-color: #e6e6fa;">"></span></code></li> + <li>Sauvegardez le fichier.</li> + <li>Redémarrez Apache : <strong>Démarrer ➤ Apache ➤ Redémarrer Apache.</strong></li> + <li>Rechargez la page <code>localhost</code> dans votre navigateur. Si tout s'est passé comme prévu, vous devriez voir l'index du répertoire. Par défaut, l'index correspond à la liste des fichiers du répertoire. Nous verrons par la suite comment personnaliser cette page d'index. Vous pouvez passer <a href="#Page_index">les instructions pour Ubuntu et Mac</a>.</li> +</ol> + +<h4 id="Installer_et_lancer_son_serveur_local_sur_Ubuntu_(ou_plus_généralement_sur_Linux)"><a id="Ubuntu_Linux" name="Ubuntu_Linux">Installer et lancer son serveur local sur Ubuntu (ou plus généralement sur Linux)</a></h4> + +<h5 id="Installer_Apache_2">Installer Apache</h5> + +<p>Sous Ubuntu, lancez un terminal (vous pouvez utiliser le raccourci <kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>T</kbd>) puis lancez ces commandes (saisissez votre mot de passe si besoin) :</p> + +<pre class="brush: bash">sudo apt-get update +sudo apt-get install apache2</pre> + +<div class="note"> +<p><strong>Note : </strong>Si vous n'utilisez pas Ubuntu ou une distribution basée sur Debian, suivez <a href="http://httpd.apache.org/docs/2.2/install.html">ces sept étapes</a> pour compiler et installer Apache. Vous aurez peut-être à saisir votre mot de passe. Vous pouvez utiliser un éditeur graphique plutôt que <code>vi</code> pour éditer les fichiers de configuration.</p> +</div> + +<p>Après l'installation, accédez à <a href="http://localhost/">http://localhost/</a> avec votre navigateur afin de vérifier que le serveur fonctionne. Sinon, n'hésitez pas à utiliser un moteur de recherche ou un forum d'aide. Si vous vous posez une question, il y a de grande chance que celle-ci ait déjà été posée et qu'une réponse y ait été apportée.</p> + +<h5 id="Déplacer_la_racine_de_l'hôte_local_vers_votre_répertoire_de_travail_2">Déplacer la racine de l'hôte local vers votre répertoire de travail</h5> + +<p>Sous le capôt, votre serveur web utilise {{Glossary("HTTP")}} pour afficher les fichiers situés sur votre ordinateur. Dans notre exemple, Apache affiche un fichier appelé <code>index.html</code> qui est situé dans un sous-répertoire des dossiers Apache. Cela serait plus utile si on pourrait utiliser un répertoire au choix.</p> + +<p>Tout d'abord, créons un dossier puis faisons pointer le serveur web vers ce répertoire :</p> + +<ul> + <li>Créez un dossier appelé <code>htdocs</code> dans votre répertoire utilisateur : <code>/home/<strong>NomUtilisateur</strong>/htdocs</code>, où <em>NomUtilisateur </em>correspond à votre nom d'utilisateur.</li> + <li>Ouvrez le fichier de configuration Apache situé à cet emplacement : <code><code>/etc/apache2/sites-available/000-default.conf.</code></code> Si besoin, ouvrez ce fichier en tant qu'administrateur. Selon la version d'Ubuntu ou de Debian, le fichier peut se situer à l'un de ces deux emplacements <code>/etc/apache2/httpd.conf</code> or <code>/etc/httpd/conf/httpd.conf</code>.</li> + <li>Dans ce fichier et à la ligne suivante : <code><span style="background-color: #e6e6fa;">DocumentRoot /var/www/html</span></code>. Modifiez cette line afin que le répertoire corresponde au répertoire de travail <code>htdocs</code> : <code><span style="background-color: #e6e6fa;">DocumentRoot /home/</span><code><strong><span style="background-color: #e6e6fa;">NomUtilisateur</span></strong><span style="background-color: #e6e6fa;">/htdocs</span></code></code></li> + <li>Vous devriez également ajouter des restrictions d'accès aux fichiers. Pour cela, ajoutez les lignes suivantes sous la ligne avec <code>DocumentRoot</code> (n'oubliez pas de changer <code>USERNAME</code> avec votre nom d'utilisateur).</li> +</ul> + +<pre> <Directory /> + Options FollowSymLinks + AllowOverride None + Require all denied + </Directory> + <Directory /home/USERNAME/htdocs/> + Options Indexes FollowSymLinks MultiViews + AllowOverride None + Require all granted + </Directory></pre> + +<ul> + <li>Sauvegardez le fichier.</li> + <li>Redémarrez Apache avec la commande suivante <code><span style="background-color: #e6e6fa;">sudo apachectl restart</span></code>. Si nécessaire, saisissez votre mot de passe.</li> + <li>Rechargez la page <code>localhost</code> dans votre navigteur. Si tout s'est déroulé comme prévu, vous devriez pouvoir voir l'index du répertoire (cf. la capture d'écran ci-après). Par défaut, l'index sera la liste des fichiers du répertoire courant. Nous allons voir par la suite comment personnaliser cette page. Vous pouvez <a href="#Page_index">passer les instructions pour Mac</a>.</li> +</ul> + +<p><img alt="" src="https://mdn.mozillademos.org/files/9343/Screenshot%20from%202014-11-13%2015:13:33.png" style="height: 292px; width: 584px;"></p> + +<h4 id="Installer_et_lancer_son_serveur_local_sur_Mac_OS_X"><a id="Mac_OS_X" name="Mac_OS_X">Installer et lancer son serveur local sur Mac OS X</a></h4> + +<p>Apache est préinstallé avec Mac OS X. Mais il est toujours nécessaire de déplacer la racine <code>localhost</code> vers le répertoire de travail.</p> + +<p>Sous le capôt, votre serveur web utilise {{Glossary("HTTP")}} pour afficher les fichiers situés sur votre ordinateur. Dans notre exemple, Apache affiche un fichier appelé <code>index.html</code> qui est situé dans un sous-répertoire des dossiers Apache. Cela serait plus utile si on pourrait utiliser un répertoire au choix.</p> + +<p>Tout d'abord, créons un dossier puis faisons pointer le serveur web vers ce répertoire :</p> + +<ol> + <li>Créez un dossier appelé <code>htdocs</code> dans votre répertoire utilisateur : <code>/Users/<strong>NomUtilisateur</strong>/htdocs</code>, où <em>NomUtilisateur </em>correspond à votre nom d'utilisateur.</li> + <li>Ouvrez le fichier de configuration Apache situé à cet emplacement : <code>/etc/apache2/httpd.conf.</code></li> + <li>Dans ce fichier, trouvez la ligne <code><span style="background-color: #e6e6fa;">DocumentRoot "/Library/WebServer/Documents</span><span style="background-color: #e6e6fa;">"</span></code>. puis modifiez la afin qu'elle pointe vers votre répertoire <code>htdocs</code> : <code><span style="background-color: #e6e6fa;">DocumentRoot "/Users/</span><code><strong><span style="background-color: #e6e6fa;">NomUtilisateur</span></strong><span style="background-color: #e6e6fa;">/htdocs</span></code><span style="background-color: #e6e6fa;">"</span></code></li> + <li>Dans ce même fichier, trouvez l'instruction <code><Directory></code> : <code><span style="background-color: #e6e6fa;"><Directory "</span><code><span style="background-color: #e6e6fa;">/Library/WebServer/Documents</span></code><span style="background-color: #e6e6fa;">"></span></code> et modifiez cette ligne avec : <code><span style="background-color: #e6e6fa;"><Directory "/Users/<strong>NomUtilisateur</strong></span><code><span style="background-color: #e6e6fa;">/htdocs</span></code><span style="background-color: #e6e6fa;">"></span></code></li> + <li>Sauvegardez le fichier.</li> + <li>Redémarrez Apache avec la commande suivante <code><span style="background-color: #e6e6fa;">sudo apachectl restart</span></code>. Si nécessaire, saisissez votre mot de passe.</li> + <li>Rechargez la page <code>localhost</code> dans votre navigteur. Si tout s'est déroulé comme prévu, vous devriez pouvoir voir l'index du répertoire (cf. la capture d'écran ci-après).</li> +</ol> + +<p><img alt="Example of Apache serving a folder autoindexing" src="https://mdn.mozillademos.org/files/9277/projet.jpg" style="height: 183px; width: 480px;"></p> + +<h3 id="Ajouter_une_page_d'index"><a id="Page_index" name="Page_index">Ajouter une page d'index</a></h3> + +<p>Lorsque vous visitez un site web, vous vous attendez à y trouver plus qu'une simple liste de fichiers. Il est possible d'ajouter une page d'index personnalisée pour votre site web local. Ce fichier d'index est un fichier {{Glossary("HTML")}}, il doit être intitulé <code>index.html</code> et il doit être placé dans le répertoire <code>htdocs</code>.</p> + +<p>Pour cela, ouvrez votre éditeur de texte puis copiez le code HTML qui suit dans un nouveau fichier :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>Voici une page d'index</title> +</head> + +<body> + <p>Ma propre page d'index</p> +</body> +</html></pre> + +<p>Enregistrez ce fichier dans votre répertoire <code>htdocs</code> avec le nom <code>index.html</code> :</p> + +<p><img alt="Example of a custom index.html file" src="https://mdn.mozillademos.org/files/11721/Capture%20du%202015-10-11%2021-58-32.png" style="height: 453px; width: 632px;"></p> + +<p>Vous pouvez ouvrir la page <a href="http://localhost/" rel="external">http://localhost</a> dans votre navigateur, vous aurez alors :</p> + +<p><img alt="A custom index without any style" src="https://mdn.mozillademos.org/files/11723/Capture%20du%202015-10-11%2022-00-05.png" style="height: 178px; width: 381px;"></p> + +<h3 id="Organiser_ses_fichiers">Organiser ses fichiers</h3> + +<p>La structure et l'organisation des fichiers est critique pour n'importe quel site web. Il est très rare qu'un site web se compose uniquement de fichiers HTML. Vous aurez vraisemblablement à intégrer des images, à mettre en forme des pages avec des fichiers {{Glossary("CSS")}} ou d'ajouter des fonctionnalités avec des fichiers {{Glossary("JavaScript")}}. <em>Dès le début</em>, il est nécessaire d'organiser clairement ces fichiers pour ne pas s'y perdre par la suite.</p> + +<p>Bien entendu, vous pouvez suivre votre propre organisation mais la plus communément utilisée contient trois répertoires : <code>images</code> pour les images, <code>styles</code> pour les fichiers CSS et <code>scripts</code> pour les scripts. Simple et efficace.</p> + +<h4 id="Fichiers_d'exemples">Fichiers d'exemples</h4> + +<p>Dans les prochains articles, nous verrons <a href="/en-US/Learn/HTML/Write_a_simple_page_in_HTML">comment créer une page web</a>, <a href="/en-US/Learn/CSS/Using_CSS_in_a_web_page">comment utiliser CSS</a> puis <a href="https://developer.mozilla.org/en-US/Learn/Getting_started_with_the_web/JavaScript_basics">comment utiliser JavaScript</a>. Nul besoin de connaître ces langages pour placer quelques fichiers d'exemples qu'on modifiera par la suite. Cela vous permettra de mieux percevoir la structure qu'on souhaite mettre en place.</p> + +<p>Créons un nouveau fichier qui correspondra à votre feuille de style principale (là où vous écrirez toutes les règles CSS). Pour le moment, copiez-collez ce fragment de code dans un nouveau fichier dans votre éditeur de texte :</p> + +<pre class="brush: css">body { + font-family: sans-serif; +}</pre> + +<p>Puis enregistrez le fichier dans le répertoire <code>styles</code> sous le nom <code>basic.css</code> :</p> + +<p><img alt="Example of a custom basic.css file" src="https://mdn.mozillademos.org/files/11727/Capture%20du%202015-10-12%2008-42-36.png" style="height: 182px; width: 528px;"></p> + +<p>Ensuite, revenez à (ou réouvrez) votre page d'index pour y insérer une référence à la feuille de styles. Pour cela, on utilisera la balise {{HTMLElement("link")}} (qu'on reverra dans les prochains articles) :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>Voici une page d'index</title> + +<strong> <link rel="stylesheet" href="./styles/basic.css"></strong> +</head> + +<body> + <p>Ma propre page d'index</p> +</body> +</html></pre> + +<p>Maintenant, si vous réouvrez votre site local (vous pouvez simplement rafraîchir la page si vous avez laissé votre navigateur ouvert), vous verrez que la police a changé à cause de la feuille de style :</p> + +<p><img alt="A custom index with style applied" src="https://mdn.mozillademos.org/files/11725/Capture%20du%202015-10-12%2008-54-01.png" style="height: 146px; width: 285px;"></p> + +<h4 id="Structure_finale_pour_le_projet">Structure finale pour le projet</h4> + +<p>Reprenons. Votre structure de répertoires et de fichiers pour votre site devrait désormais ressembler à :</p> + +<ul> + <li><code>htdocs</code> (le dossier racine pour le projet) + + <ul> + <li><code>images</code> (le répertoire pour les images)</li> + <li><code>scripts</code> (le répertoire pour les différents scripts JavaScript)</li> + <li><code>styles</code> (le répertoire pour les feuilles de styles CSS) + <ul> + <li><code>basic.css</code> (la feuille de style principale)</li> + </ul> + </li> + <li><code>index.html</code> (la page d'index pour le site web local)</li> + </ul> + </li> +</ul> + +<p>Voici la structure minimale que vous devriez avoir et qui pourra s'adapter lorsque votre projet grandira. Au fur et à mesure des développements de votre projet, n'hésitez pas à adapter et à améliorer cette structure afin qu'elle soit optimale pour votre site.</p> + +<h2 id="Prochaines_étapes">Prochaines étapes</h2> + +<p>Maintenant que nous avons vu comment organiser les fichiers et que nous avons créé quelques uns, il est temps d'<a href="/en-US/Learn/HTML/Write_a_simple_page_in_HTML">écrire sa premère page web</a>.</p> diff --git a/files/fr/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html b/files/fr/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html new file mode 100644 index 0000000000..d5c4ea0ea9 --- /dev/null +++ b/files/fr/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html @@ -0,0 +1,110 @@ +--- +title: Cascade et héritage +slug: CSS/Premiers_pas/Cascade_et_héritage +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/CSS/Building_blocks/Cascade_and_inheritance +translation_of_original: Web/Guide/CSS/Getting_started/Cascading_and_inheritance +--- +<p> </p> +<p>Cette page met en évidence la façon dont les feuilles de style interagissent dans une cascade et comment les éléments héritent leur style de leurs parents.</p> +<p>Vous améliorerez votre feuille de style d'exemple en utilisant l'héritage pour changer le style de nombreuses parties de votre document à la fois.</p> +<h3 id="Information_:_cascade_et_h.C3.A9ritage" name="Information_:_cascade_et_h.C3.A9ritage">Information : cascade et héritage</h3> +<p>Le style final d'un élément peut être spécifié à de nombreux endroits, qui peuvent interagir de manière complexe. C'est ce qui rend CSS puissant, mais peut aussi le rendre déroutant et difficile à déboguer.</p> +<p>Trois sources principales d'information de style forment une cascade.</p> +<p>Celles-ci sont :</p> +<ul> + <li>Le style par défaut du navigateur pour le langage de balisage</li> + <li>Le style spécifié par l'utilisateur lisant le document</li> + <li>Le style lié au document par son auteur</li> +</ul> +<p>Le style de l'utilisateur modifie le style par défaut du navigateur. Le style de l'auteur du document modifie ensuite le style plus avant. Dans ce tutoriel, vous êtes l'auteur de votre document, et vous travaillez uniquement avec des feuilles de style d'auteur.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Lorsque vous lisez ce document dans votre navigateur, une partie du style visible vient des réglages par défaut de votre navigateur pour HTML. + <p>Une partie du style peut venir de vos paramètres utilisateur dans les Options, ou d'un fichier <code>userContent.css</code> dans le profil de votre navigateur Mozilla.</p> + <p>Enfin, une partie du style provient de feuilles de style liées au document par le serveur wiki.</p> + </td> + </tr> + </tbody> +</table> +<p><br> + Lorsque vous ouvrez votre document d'exemple dans le navigateur, les éléments STRONG sont en gras par rapport au reste du texte. Cela provient du style par défaut du navigateur pour HTML.</p> +<p>Les éléments STRONG sont rouges. Cela provient de votre propre feuille de style.</p> +<p>Les éléments STRONG héritent aussi en grande partie du style de l'élément P, étant ses enfants. De même, l'élément P hérite en grande partie du style de l'élément BODY.</p> +<p>Pour les styles dans la cascade, les feuilles de style de l'auteur ont priorité, ensuite ceux de l'utilisateur et enfin les réglages par défaut du navigateur.</p> +<p>Pour les styles hérités, le style propre d'un nœud enfant a priorité sur le style hérité de son parent.</p> +<p>Ce ne sont pas les seules priorités qui s'appliquent. Une prochaine page du tutoriel expliquera cela plus en détail.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4;"> + <caption> + Plus de détails</caption> + <tbody> + <tr> + <td>CSS fournit également une manière pour l'utilisateur de passer outre le style de l'auteur du document, en utilisant le mot-clé <code>!important</code>. + <p>Cela signifie qu'en tant qu'auteur du document, vous ne pouvez pas toujours prédire exactement ce que vos lecteurs verront.</p> + <p>Si vous voulez connaître tous les détails de la cascade et de l'héritage, consultez <a class="external" href="http://www.w3.org/TR/CSS21/cascade.html">Assigning property values, Cascading, and Inheritance</a> <span class="comment">note : ce lien existe(ra) peut-être quelque part en français</span> dans la spécification CSS.</p> + </td> + </tr> + </tbody> +</table> +<h3 id="Action_:_utilisation_de_l.27h.C3.A9ritage" name="Action_:_utilisation_de_l.27h.C3.A9ritage">Action : utilisation de l'héritage</h3> +<p>Éditez votre exemple de fichier CSS.</p> +<p>Ajoutez cette ligne à l'aide d'un copier-coller. Que vous la mettiez au dessus ou en dessous de la ligne déjà existante n'a pas grande importance. Cependant, l'ajouter en haut est plus logique étant donné que dans votre document l'élément P est le parent de l'élément STRONG :</p> +<pre>p {color: blue; text-decoration: underline;} +</pre> +<p>Maintenant, actualisez dans votre navigateur pour voir l'effet sur votre document. Le soulignement affecte tout le texte du paragraphe, y compris les lettres initiales. Les éléments STRONG ont hérité du style souligné depuis leur élément parent P.</p> +<p>Mais les éléments STRONG sont toujours rouges. La couleur rouge est leur propre style, il a donc priorité sur la couleur bleue de leur élément parent P.</p> +<table> + <tbody> + <tr> + <td> + <table style="border: 2px outset #36b; padding: 1em; margin-right: 2em;"> + <caption> + Avant</caption> + <tbody> + <tr> + <td><strong style="color: red;">C</strong>ascading <strong style="color: red;">S</strong>tyle <strong style="color: red;">S</strong>heets</td> + </tr> + </tbody> + </table> + </td> + <td> + <table style="border: 2px outset #36b; padding: 1em;"> + <caption> + Après</caption> + <tbody> + <tr> + <td style="color: blue; text-decoration: underline;"><strong style="color: red;">C</strong>ascading <strong style="color: red;">S</strong>tyle <strong style="color: red;">S</strong>heets</td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<p> </p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4;"> + <caption> + Challenge</caption> + <tbody> + <tr> + <td>Modifiez votre feuille de style afin que seules les lettres rouges soient soulignées : + <table style="border: 2px outset #36b; padding: 1em;"> + <tbody> + <tr> + <td style="color: blue;"><strong style="color: red; text-decoration: underline;">C</strong>ascading <strong style="color: red; text-decoration: underline;">S</strong>tyle <strong style="color: red; text-decoration: underline;">S</strong>heets</td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<p> </p> +<h4 id="Pour_continuer" name="Pour_continuer">Pour continuer</h4> +<p>Si vous avez eu des difficultés à comprendre cette page, ou avez des commentaires à son sujet, n'hésitez pas à contribuer à sa <a>page de discussion</a>.</p> +<p>Votre feuille de style d'exemple spécifie des styles pour les balises <code>P</code> et <code>STRONG</code>, qui changent le style des éléments correspondants au sein de votre document. La page suivante explique comment spécifier des styles de manière plus sélective : <b><a href="/fr/docs/CSS/Premiers_pas/Les_s%c3%a9lecteurs">Les sélecteurs</a></b>.</p> diff --git a/files/fr/conflicting/learn/css/building_blocks/index.html b/files/fr/conflicting/learn/css/building_blocks/index.html new file mode 100644 index 0000000000..fd147c876d --- /dev/null +++ b/files/fr/conflicting/learn/css/building_blocks/index.html @@ -0,0 +1,74 @@ +--- +title: Boîtes +slug: CSS/Premiers_pas/Boîtes +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/CSS/Building_blocks +translation_of_original: Web/Guide/CSS/Getting_started/Boxes +--- +<p> </p> +<p>Cette page explique comment utiliser CSS pour contrôler l'espace occupé par un élément lorsqu'il est affiché.</p> +<p>Dans votre document d'exemple, vous changerez l'espacement et ajouterez des règles décoratives.</p> +<h3 id="Information_:_les_bo.C3.AEtes" name="Information_:_les_bo.C3.AEtes">Information : les boîtes</h3> +<p>Lorsque votre navigateur affiche un élément, celui-ci prend une certaine place. L'espace occupé est divisé en quatre parties.</p> +<p>Au centre, l'espace dont l'élément a besoin pour afficher son contenu. Autour du contenu, il y a des marges internes (padding). Autour des marges internes, il y a une bordure (border). Autour des bordures, il y a des marges extérieures (margin).</p> +<table> <tbody> <tr> <td style="width: 26em;"> <div style="background-color: #eee; padding: 0px 2em 2em 2em; width: 20em;"> <p style="text-align: center; margin: 0px;">margin</p> <p style="text-align: center; margin: 0px 0px -.75em 0px;">border</p> <div style="background-color: #fff; padding: 0px 2em 2em 2em; border: 4px solid #fd9;"> <p style="text-align: center;">padding</p> <div style="background-color: #eee;"> <p style="text-align: center; padding: 0px; margin: 0px; font-size: 200%; font-weight: bold; color: #999;">élément</p> </div> </div> </div> <p><em>Une partie de la mise en page est visible en gris.</em></p> </td> <td> <div style="background-color: #fff; padding: 0px 2em 2em 2em; width: 20em;"> <p style="text-align: center; margin: 0px;"> </p> <p style="text-align: center; margin: 0px 0px -.75em 0px;"> </p> <div style="background-color: #fff; padding: 0px 2em 2em 2em; border: 4px solid #fd9;"> <p style="text-align: center;"> </p> <div style="background-color: #fff;"> <p style="text-align: center; padding: 0px; margin: 0px; font-size: 200%; font-weight: bold; color: #999;">élément</p> </div> </div> </div> <p><em>Ce qui apparait dans le navigateur.</em></p> </td> </tr> </tbody> +</table> +<p>Les marges intérieures, les bordures et les marges extérieures peuvent avoir des tailles différentes en haut, à droite, en bas et à gauche de l'élément. Chacune de ces tailles peut être zéro.</p> +<p>Les marges intérieures sont toujours de la même couleur que le fond de l'élément. Lorsque vous choisissez la couleur de fond, vous appliquez donc la couleur à l'élément lui-même et à ses marges intérieures. Celles-ci sont toujours transparentes.</p> +<table> <tbody> <tr> <td style="width: 22em;"> <div style="background-color: #eee; padding: 0px 2em 2em 2em; width: 16em;"> <p style="text-align: center; margin: 0px;">margin</p> <p style="text-align: center; margin: 0px 0px -.75em 0px;">border</p> <div style="background-color: #efe; padding: 0px 2em 2em 2em; border: 4px solid #fd9;"> <p style="text-align: center;">padding</p> <div style="background-color: #ded;"> <p style="text-align: center; padding: 0px; margin: 0px; font-size: 200%; font-weight: bold; color: #898;">élément</p> </div> </div> </div> <p><em>L'élément a un fond vert.</em></p> </td> <td> <div style="background-color: #fff; padding: 0px 2em 2em 2em; width: 16em;"> <p style="text-align: center; margin: 0px;"> </p> <p style="text-align: center; margin: 0px 0px -.75em 0px;"> </p> <div style="background-color: #efe; padding: 0px 2em 2em 2em; border: 4px solid #fd9;"> <p style="text-align: center;"> </p> <div style="background-color: #efe;"> <p style="text-align: center; padding: 0px; margin: 0px; font-size: 200%; font-weight: bold; color: #898;">élément</p> </div> </div> </div> <p><em>Ce qui apparaît dans le navigateur.</em></p> </td> </tr> </tbody> +</table> +<h4 id="Bordures" name="Bordures">Bordures</h4> +<p>Vous pouvez utiliser des bordures pour décorer des éléments avec des lignes ou des encadrements.</p> +<p>Pour spécifier la même bordure tout autour d'un élément, utilisez la propriété <code>border</code>. Spécifiez l'épaisseur (habituellement en pixels pour l'affichage à l'écran), le style et la couleur.</p> +<p>Les styles sont :</p> +<table style="margin-left: 2em;"> <tbody> <tr> <td style="width: 6em;"> <div style="border: 2px solid #4a4; margin: .5em; padding: .5em; width: 6em; text-align: center;"><code>solid</code> (trait plein)</div> </td> <td style="width: 6em;"> <div style="border: 2px dotted #4a4; margin: .5em; padding: .5em; width: 6em; text-align: center;"><code>dotted</code> (pointillés)</div> </td> <td style="width: 6em;"> <div style="border: 2px dashed #4a4; margin: .5em; padding: .5em; width: 6em; text-align: center;"><code>dashed</code> (trait interrompu)</div> </td> <td style="width: 6em;"> <div style="border: 4px double #4a4; margin: .5em; padding: .5em; width: 6em; text-align: center;"><code>double</code> (trait double)</div> </td> </tr> <tr> <td style="width: 6em;"> <div style="border: 2px inset #4a4; margin: .5em; padding: .5em; width: 6em; text-align: center;"><code>inset</code> (creux)</div> </td> <td style="width: 6em;"> <div style="border: 2px outset #4a4; margin: .5em; padding: .5em; width: 6em; text-align: center;"><code>outset</code> (en relief)</div> </td> <td style="width: 6em;"> <div style="border: 4px ridge #4a4; margin: .5em; padding: .5em; width: 6em; text-align: center;"><code>ridge</code> (bordure en relief)</div> </td> <td style="width: 6em;"> <div style="border: 4px groove #4a4; margin: .5em; padding: .5em; width: 6em; text-align: center;"><code>groove</code> (bordure en creux)</div> </td> </tr> </tbody> +</table> +<p>Vous pouvez également définir le style à <code>none</code> ou <code>hidden</code> pour enlever explicitement la bordure, ou mettre sa couleur à <code>transparent</code> pour rendre celle-ci invisible sans changer la mise en page.</p> +<p>Pour spécifier les bordures un côté à la fois, utilisez les propriétés : <code>border-top</code>, <code>border-right</code>, <code>border-bottom</code>, <code>border-left</code>. Vous pouvez utiliser celles-ci pour spéficier une bordure d'un seul côté, ou différentes bordures sur différents côtés.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> <caption>Exemples</caption> <tbody> <tr> <td>Cette règle change la couleur de fond et la bordure supérieure des éléments de titre : <div style="width: 40em;"> <pre class="eval">h3 { + border-top: 4px solid #7c7; /* vert moyen */ + background-color: #efe; /* vert pâle */ + color: #050; /* vert foncé */ + } +</pre> </div> <p>Le résultat ressemble à ceci :</p> <table> <tbody> <tr> <td> <p style="font-size: 133%; font-weight: bold; background-color: #efe; border-top: 4px solid #7c7; color: #050; padding-right: 6em;">Un titre avec du style</p> </td> </tr> </tbody> </table> <p><br> Cette règle rend les images plus faciles à voir en leur donnant une bordure grisée tout autour :</p> <div style="width: 30em;"> <pre class="eval">img {border: 2px solid #ccc;} +</pre> </div> <p>Le résultat ressemble à ceci :</p> <table> <tbody> <tr> <td>Image :</td> <td style="border: 2px solid #ccc;"><img alt="Image:ligne-bleue.png" class="internal" src="/@api/deki/files/1398/=Ligne-bleue.png"></td> </tr> </tbody> </table> </td> </tr> </tbody> +</table> +<h4 id="Marges_int.C3.A9rieures_et_ext.C3.A9rieures" name="Marges_int.C3.A9rieures_et_ext.C3.A9rieures">Marges intérieures et extérieures</h4> +<p>Utilisez les marges pour ajuster les positions des éléments et pour créer de l'espace autour d'eux.</p> +<p>Utilisez les propriétés <code>margin</code> et <code>padding</code> pour changer respectivement la largeur des marges extérieures et intérieures.</p> +<p>Si vous spécifiez une seule largeur, elle s'applique tout autour de l'élément (en haut, à droite, en bas et à gauche).</p> +<p>Si vous spécifiez deux largeurs, la première s'applique en haut et en bas, la seconde sur les côtés droits et gauches.</p> +<p>Vous pouvez spécifier les quatres largeurs dans cet ordre : haut, droite, bas, gauche.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> <caption>Exemple</caption> <tbody> <tr> <td>Cette règle marque les paragraphes de la classe <code>remarque</code> en leur donnant une bordure rouge tout autour. <p>Une marge intérieure (padding) sépare légèrement cette bordure du texte.</p> <p>Une marge extérieure (margin) à gauche met le paragraphe en retrait par rapport au reste du texte :</p> <div style="width: 30em;"> <pre class="eval">p.remarque { + border: 2px solid red; + padding: 4px; + margin-left: 24px; + } +</pre> </div> <p>Le résultat ressemble à ceci :</p> <table> <tbody> <tr> <td> <p>Ceci est un paragraphe normal.</p> <p style="border: 2px solid red; padding: 4px 6em 4px 4px; margin: 0px 0px 0px 24px;">Ceci est une remarque.</p> </td> </tr> </tbody> </table> </td> </tr> </tbody> +</table> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4; margin-bottom: 1em;"> <caption>Plus de détails</caption> <tbody> <tr> <td>Lorsque vous utilisez des marges pour ajuster la façon dont les éléments sont placés, vos règles de style interagissent avec les réglages par défaut du navigateur de différentes manières, qui sont parfois complexes. <p>Différents navigateurs peuvent placer les éléments différemment. Le résultat peut sembler similaire jusqu'à ce que votre feuille de style change des choses, et celle-ci peut parfois donner des résultats surprenants.</p> <p>Pour obtenir le résultat voulu, il se peut que vous ayez à changer le balisage de votre document. La page suivante de ce tutoriel donne plus d'informations à ce sujet.</p> <p>Pour des informations détaillées à propos des marges et des bordures, consultez <a class="external" href="http://www.w3.org/TR/CSS21/box.html">Box model</a> dans la spécification CSS.</p> </td> </tr> </tbody> +</table> +<h3 id="Action_:_ajout_de_bordures" name="Action_:_ajout_de_bordures">Action : ajout de bordures</h3> +<p>Éditez votre fichier CSS. Ajoutez cette règle pour dessigner une ligne en travers de la page au dessus de chaque titre :</p> +<div style="width: 30em;"> <pre class="eval">h3 {border-top: 1px solid gray;} +</pre> +</div> +<p>Si vous avez tenté le challenge sur la page précédente, modifiez la règle que vous aviez créée, sinon ajoutez cette nouvelle règle pour ajouter de l'espace sous chaque élément de liste :</p> +<div style="width: 30em;"> <pre class="eval">li { + list-style: lower-roman; + margin-bottom: 8px; + } +</pre> +</div> +<p>Actualisez dans votre navigateur pour voir le résultat :</p> +<table style="border: 2px outset #36b; padding: 1em; background-color: white;"> <tbody> <tr> <td> <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em; border-top: 1px solid gray;">(A) Les océans</p> <ul style=""> <li style="margin-bottom: 8px;">Arctique</li> <li style="margin-bottom: 8px;">Atlantique</li> <li style="margin-bottom: 8px;">Pacifique</li> <li style="margin-bottom: 8px;">Indien</li> <li style="margin-bottom: 8px;">Antarctique</li> </ul> <p style="font-weight: bold; font-size: 133%; margin-top: 1em; margin-bottom: .3em; padding: .4em 4em .16em 0; border-top: 1px solid gray;">(B) Paragraphes numérotés</p> <p><strong>1: </strong>Lorem ipsum</p> <p><strong>2: </strong>Dolor sit</p> <p><strong>3: </strong>Amet consectetuer</p> <p><strong>4: </strong>Magna aliquam</p> <p><strong>5: </strong>Autem veleum</p> </td> </tr> </tbody> +</table> +<p> </p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> <caption>Challenge</caption> <tbody> <tr> <td>Ajoutez une règle à votre feuille de style pour entourer les océans d'une bordure épaisse dans une couleur rapellant celle de la mer — quelque chose comme ceci : <table style="border: 2px outset #36b; padding: 1em; background-color: white;"> <tbody> <tr> <td> <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em; border-top: 1px solid gray;">(A) Les océans</p> <div style="border: 12px solid #69b; padding-left: 1em;"> <ul style=""> <li style="margin-bottom: 8px;">Arctique</li> <li style="margin-bottom: 8px;">Atlantique</li> <li style="margin-bottom: 8px;">Pacifique</li> <li style="margin-bottom: 8px;">Indien</li> <li style="margin-bottom: 8px;">Antarctique</li> </ul> </div> <p style="font-weight: bold; font-size: 133%; margin-top: 1em; margin-bottom: .3em; padding: .4em 4em .16em 0; border-top: 1px solid gray;">(B)Paragraphes numérotés</p> <p><strong>. . .</strong></p> </td> </tr> </tbody> </table> <p>(Il n'est pas nécessaire de retrouver exactement la même épaisseur et la même couleur qu'ici.)</p> </td> </tr> </tbody> +</table> +<h4 id="Pour_continuer" name="Pour_continuer">Pour continuer</h4> +<p>Si vous avez eu des difficultés à comprendre cette page, ou si vous avez d'autres commentaires à son sujet, n'hésitez pas à contribuer à sa <a href="/Talk:fr/CSS/Premiers_pas/Boîtes" title="Talk:fr/CSS/Premiers_pas/Boîtes">page de discussion</a>.</p> +<p>En spécifiant des marges, vous avez modifié la mise en page de votre document. À la page suivante, vous apprendrez d'autres manières de changer celle-ci : <strong><a href="/fr/CSS/Premiers_pas/Mise_en_page" title="fr/CSS/Premiers_pas/Mise_en_page">Mise en page</a></strong>.</p> +<p>{{ languages( { "en": "en/CSS/Getting_Started/Boxes", "pl": "pl/CSS/Na_pocz\u0105tek/Bloki", "pt": "pt/CSS/Como_come\u00e7ar/Caixas" } ) }}</p> diff --git a/files/fr/conflicting/learn/css/building_blocks/selectors/index.html b/files/fr/conflicting/learn/css/building_blocks/selectors/index.html new file mode 100644 index 0000000000..d3ab8e9794 --- /dev/null +++ b/files/fr/conflicting/learn/css/building_blocks/selectors/index.html @@ -0,0 +1,137 @@ +--- +title: Les propriétés CSS et comment s'en servir +slug: Apprendre/CSS/Les_propriétés_CSS +tags: + - Beginner + - CSS + - CodingScripting + - NeedsActiveLearning +translation_of: Learn/CSS/Building_blocks/Selectors +translation_of_original: Learn/CSS/CSS_properties +--- +<div>{{IncludeSubnav("/fr/Apprendre")}}</div> +<div class="summary"> +<p>{{Glossary("CSS")}} définit l'apparence d'une page web. Il utilise des règles prédéfinies à l'aide de sélecteurs et de propriétés pour appliquer différents styles aux éléments et groupes d'éléments HTML.</p> +</div> + +<table class="learn-box nostripe standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Comprendre les bases de {{Glossary("HTML")}}, <a href="/fr/Apprendre/HTML/Balises_HTML">des éléments HTML</a>, et <a href="/fr/Apprendre/CSS/Utiliser_CSS_dans_une_page_web#La_balise_link">comment lier des documents HTML aux feuilles de style CSS</a>.</td> + </tr> + <tr> + <th scope="row">Objectif :</th> + <td>Connaître différents sélecteurs et propriétés CSS afin d'appliquer une mise en forme simple sur une page web.</td> + </tr> + </tbody> +</table> + +<p>Séparer le contenu de la mise en forme rend le développement web plus rapide et facile. En définissant la structure du document uniquement dans votre fichier HTML, tandis que les informations de mise en forme sont indiquées pour leur part dans un fichier séparé (appelé feuille de style), vous pouvez mettre à jour la mise en forme de nombreux documents en une seule fois (et en profiter pour économiser des ressources ordinateur en même temps).</p> + +<p>La syntaxe CSS fait appel à des mots-clés intuitifs et faciles à utiliser.</p> + +<pre class="brush: css">p { + font-family: "Times New Roman", georgia, sans-serif; + font-size: 24px; +}</pre> + +<p>Dans l'exemple précédent, <code>p</code> est un sélecteur qui applique un style à tous les éléments <code>{{HTMLElement("p")}}</code> en même temps. Les propriétés CSS <code>font-family</code> et <code>font-size</code> sont incluses dans des accolades et les valeurs correspondantes, juste après les deux-points, déterminent le style à appliquer.</p> + +<p>Il existe plus de <a href="/fr/docs/Web/CSS/Reference">250 propriétés</a> pour mettre en forme votre document. Du texte à la mise en page complexe, (presque) tout est possible.</p> + +<h2 id="Pédagogie_active">Pédagogie active</h2> + +<p><em>Il n'y a, pour le moment, pas d'apprentissage actif pour cette section. <a href="/fr/docs/MDN/D%C3%A9buter_sur_MDN">Vous pouvez néanmoins contribuer</a>.</em></p> + +<h2 id="Aller_plus_loin">Aller plus loin</h2> + +<p>Si les propriétés sont plutôt simples à utiliser, il en va parfois autrement des sélecteurs. Ne vous inquiétez pas, ce n'est pas si ardu et les maitriser permet de tirer parti du grand potentiel du CSS. Dans les exemples qui suivent, nous allons faire connaissance avec les sélecteurs les plus courants.</p> + +<p>Pour définir une règle CSS, on utilise des sélecteurs qu'on associe à des propriétés. Ces sélecteurs déterminent quels élements vont recevoir les propriétés précisées dans la règle. Notez que plusieurs règles peuvent s'appliquer à un même élément. La cascade CSS (dont on reparlera plus tard) définit alors quelle règle s'appliquera en cas de conflit. Pour l'instant, retenez simplement que la règle contenant les <a href="/fr/docs/Web/CSS/Spécificité">sélecteurs les plus précis</a> prend le dessus sur les règles avec les sélecteurs plus basiques.</p> + +<h3 id="Le_sélecteur_d'élément">Le sélecteur d'élément</h3> + +<p>Les sélecteurs d'éléments désignent des éléments HTML uniquement par leur nom. De plus, comme tous les sélecteurs CSS, vous pouvez appliquer un ensemble de propriétés communes à plusieurs élements à la fois.</p> + +<p>Pour notre premier exemple, intéressons nous au fragment de code HTML suivant :</p> + +<pre class="brush: html"><h1>Je suis un exemple.</h1> +<p>Dans cet exemple, je suis un paragraphe.</p> +<p>Et je suis un second paragraphe.</p> +</pre> + +<p>Dans la règle CSS qui suit, le sélecteur d'élement <code>p</code> applique les styles définis à tous les éléments <code>{{HTMLElement("p")}}</code> de notre document HTML simultanément, évitant ainsi d'inutiles répétitions. On utilise la propriété {{cssxref("font-family")}} (qui définit la police avec laquelle le texte apparait) et {{cssxref("font-size")}} (qui définit pour sa part la taille du texte).</p> + +<pre class="brush: css">p { + font-family: "Helvetica", Arial, sans-serif; + font-size : 12px; +}</pre> + +<p>La prochaine règle CSS s'applique uniquement à l'élément<code> {{HTMLElement("h1")}}</code>. On fait appel à la propriété {{cssxref("font-size")}} pour que la taille du titre soit deux fois plus grande que celle du texte et à la propriété {{cssxref("font-weight")}} pour qu'il soit également en gras.</p> + +<pre class="brush: css">h1 { + font-size : 24px; + font-weight: bold; +}</pre> + +<p>La règle CSS suivante applique les styles demandés à la fois aux éléments <code>{{HTMLElement("h1")}}</code> et aux éléments <code>{{HTMLElement("p")}}</code>, cela permet potentiellement d'éviter des redondances inutiles dans le code. Cette façon de procéder est appelée « groupe de sélecteurs » ou « chaîne de sélecteurs ». Notez qu'un point virgule est nécessaire pour séparer les sélecteurs. Ici nous utilisons la propriété {{cssxref("color")}} pour appliquer la même couleur au texte des <code>h1</code> et à celui des paragraphes.</p> + +<pre class="brush: css">h1, p { + color: darkmagenta; +}</pre> + +<p>Voici le résultat obtenu avec ce code :</p> + +<p>{{EmbedLiveSample('Le_sélecteur_d\'élément')}}</p> + +<h3 id="Le_sélecteur_id">Le sélecteur <code>id</code></h3> + +<p>L'attribut <code>id</code><strong> </strong>d'un élément HTML donné permet d'identifier de façon unique cet élément. Par conséquent, un sélecteur <code>id</code> est utilisé uniquement lorsqu'un ensemble de règles de style s'applique à un seul élement.</p> + +<p>Pour notre prochain exemple, prenons le fragment de code HTML suivant :</p> + +<pre class="brush: html"><p id="coucou">Coucou monde !</p> </pre> + +<p>La règle CSS suivante s'applique exclusivement à cet élément, identifié et unique. Pour transformer un sélecteur ordinaire en sélecteur <code>id</code>, il suffit de placer un signe dièse (#) devant le nom de l'identifiant (<em>id</em>). Nous faisons appel à trois propriétés : {{cssxref("text-align")}} pour centrer le texte dans le paragraphe, {{cssxref("border")}} pour encadrer le paragraphe d'un cadre fin, et {{cssxref("padding")}} afin d'ajouter une marge intérieure supplémentaire entre le texte et le cadre.</p> + +<pre class="brush: css">#coucou { + text-align: center; + border : 1px solid black; + padding : 8px; +}</pre> + +<p>Voici le résultat final obtenu:</p> + +<p>{{EmbedLiveSample('Le_sélecteur_id')}}</p> + +<h3 id="Le_sélecteur_class">Le sélecteur <code>class</code></h3> + +<p>À l'intérieur du code HTML, l'attribut <code>class</code><strong> </strong>permet de donner des identifiants multiples aux élements HTML. Ces identifiants peuvent ainsi être combinés avec le CSS pour regrouper des élements en fonction de leur nom.</p> + +<p>Pour notre prochain exemple, analysez le fragment de code HTML suivant :</p> + +<pre class="brush: html"><h1 class="coucou">Coucou !</h1> +<p class="coucou salut">Retrouvons-nous !</p> +<p class="salut">Et déplaçons des montagnes.</p> +</pre> + +<p>Nous allons appliquer une règle CSS à tous les éléments contenant la classe <code>coucou</code>. Pour transformer un sélecteur en sélecteur class, placez simplement un point devant le nom de la classe (de la même manière que nous avions mis un signe dièse dans le cas précédent). Nous utilisons ici la propriété {{cssxref("font-style")}} pour mettre le texte en italique.</p> + +<pre class="brush: css">.coucou { + font-style: italic; +}</pre> + +<p>En voici une autre pour tous les éléments avec la classe <code>salut</code>. Ici, nous utilisons la propriété {{cssxref("text-decoration")}} pour barrer le texte d'une ligne.</p> + +<pre class="brush: css">.salut { + text-decoration: line-through; +}</pre> + +<p>Voici le résultat obtenu :</p> + +<p>{{EmbedLiveSample('Le_sélecteur_class')}}</p> + +<h2 id="Prochaines_étapes">Prochaines étapes</h2> + +<p>Nous venons de voir les bases pour commencer en CSS. Vous pouvez maintenant en <a href="/fr/Apprendre/CSS/formatage_texte_CSS">apprendre davantage sur le formatage du texte</a> ou commencer à explorer <a href="/fr/docs/Web/CSS/Tutorials">nos tutoriels CSS</a> dès maintenant.</p> diff --git a/files/fr/conflicting/learn/css/building_blocks/selectors_9bc80fea302c91cd60fb72c4e83c83e9/index.html b/files/fr/conflicting/learn/css/building_blocks/selectors_9bc80fea302c91cd60fb72c4e83c83e9/index.html new file mode 100644 index 0000000000..9371d826b3 --- /dev/null +++ b/files/fr/conflicting/learn/css/building_blocks/selectors_9bc80fea302c91cd60fb72c4e83c83e9/index.html @@ -0,0 +1,207 @@ +--- +title: Les sélecteurs +slug: CSS/Premiers_pas/Les_sélecteurs +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/CSS/Building_blocks/Selectors +translation_of_original: Web/Guide/CSS/Getting_started/Selectors +--- +<p> </p> + +<p>Cette page explique comment appliquer des styles de manière sélective, et les priorités des différents types de sélecteurs.</p> + +<p>Vous ajouterez quelques attributs aux balises de votre document exemple, et vous utiliserez ces attributs dans votre feuille de style.</p> + +<h3 id="Information_:_les_s.C3.A9lecteurs" name="Information_:_les_s.C3.A9lecteurs">Information : les sélecteurs</h3> + +<p>CSS a sa propre terminologie pour décrire le langage CSS. Précédemment dans ce tutoriel, vous avez créé une ligne dans votre feuille de style comme ceci :</p> + +<div style="width: 30em;"> +<pre>strong {color: red;} +</pre> +</div> + +<p>Dans la terminologie CSS, toute cette ligne est une <em>règle</em>. Cette règle commence avec <code>strong</code>, qui est un <em>sélecteur</em>. Celui-ci sélectionne les éléments dans le DOM sur lesquels la règle va s'appliquer.</p> + +<table style="background-color: #f4f4f4; border: 1px solid #3366bb; padding: 1em;"> + <caption>Plus de détails</caption> + <tbody> + <tr> + <td>La partie à l'intérieur des crochets courbes est la <em>déclaration</em>. + <p>Le mot-clé <code>color</code> est une <em>propriété</em>, et <code>red</code> est une <em>valeur</em>.</p> + + <p>Le point virgule après la valeur de propriété sépare celle-ci d'autres paires de propriétés/valeurs pour le même sélecteur.</p> + + <p>Ce tutoriel se réfère à un sélecteur comme <code>strong</code> comme à un sélecteur de <em>balise</em>. La spécification CSS s'y réfère comme à un sélecteur de <em>type</em>.</p> + </td> + </tr> + </tbody> +</table> + +<p><br> + Cette page du tutoriel donne plus de détails sur les sélecteurs utilisables dans les règles CSS. Outre les noms de balise, il est possible d'utiliser des valeurs d'attribut dans les sélecteurs. Cela permet au règles d'être plus spécifiques.</p> + +<p>Deux attributs ont un statut spécial pour CSS. Ce sont les attributs <code>class</code> et <code>id</code>.</p> + +<p>Utilisez l'attribut <code>class</code> dans une balise pour lui assigner une classe nommée. Vous pouvez choisir le nom qui vous convient pour cette classe.</p> + +<p>Dans votre feuille de style, entrez un point avant le nom de la classe lorsque vous l'utilisez dans un sélecteur.</p> + +<p>Utilisez l'attribut <code>id</code> dans une balise pour lui assigner un identifiant unique. Vous pouvez choisir le nom qui vous convient pour l'identifiant. Celui-ci doit cependant être unique au sein du document.</p> + +<p>Dans votre feuille de style, entrez un signe dièse (carré) avant l'identifiant lorsque vous l'utilisez dans un sélecteur.</p> + +<table style="background-color: #ffffee; border: 1px solid #3366bb; padding: 1em;"> + <caption>Exemples</caption> + <tbody> + <tr> + <td>Cette balise HTML a à la fois un attribut <code>class</code> et un attribut <code>id</code> : + <div style="width: 30em;"> + <pre> +<P class="clef" id="principale"> +</pre> + </div> + + <p>L'identifiant, <code>principale</code>, doit être unique dans le document, mais d'autres balises dans le document peuvent avoir le même nom de classe, <code>clef</code>.</p> + + <p>Dans une feuille de style CSS, cette règle rend tous les éléments de la classe <code>clef</code> verts. (Ils peuvent ne pas tous être des éléments <small>P</small> .)</p> + + <div style="width: 30em;"> + <pre> +.clef {color: green;} +</pre> + </div> + + <p>Cette règle rend l'élément avec l'identifiant <code>principale</code> gras :</p> + + <div style="width: 30em;"> + <pre> +#principale {font-weight: bolder;} +</pre> + </div> + </td> + </tr> + </tbody> +</table> + +<p>Si plus d'une règle s'applique à un élément et spécifie la même propriété, CSS donne la priorité à la règle ayant le sélecteur le plus spécifique. Un sélecteur id est plus spécifique qu'un sélecteur de classe, qui lui-même est plus spécifique qu'un sélecteur de balise.</p> + +<table style="background-color: #f4f4f4; border: 1px solid #3366bb; padding: 1em;"> + <caption>Plus de détails</caption> + <tbody> + <tr> + <td>Vous pouvez également combiner le sélecteurs, afin de créer un sélecteur plus spécifique. + <p>Par exemple, le sélecteur <code>.clef</code> sélectionne tous les éléments qui ont le nom de classe <code>clef</code>. Le sélecteur <code>p.clef</code> sélectionne seulement les éléments P qui ont le nom de classe <code>clef</code>.</p> + + <p>Vous n'êtes pas limité aux deux attributs spéciaux <code>class</code> et <code>id</code>. Vous pouvez spécifier d'autres attributs en utilisant des crochets droits. Par exemple, le sélecteur <code>{{ mediawiki.external('type=button') }}</code> sélectionne tous les éléments qui ont un attribut <code>type</code> avec la valeur <code>button</code>.</p> + + <p>Une prochaine page de ce tutoriel, (<a href="/fr/CSS/Premiers_pas/Tableaux" title="fr/CSS/Premiers_pas/Tableaux">Tableaux</a>) a des informations sur les sélecteurs complexes basés sur les relations.</p> + + <p>Pour une information complète sur les sélecteurs, consultez <a class="external" href="http://www.w3.org/TR/CSS21/selector.html">Selectors</a> dans la spécification CSS.</p> + </td> + </tr> + </tbody> +</table> + +<p><br> + Si la feuille de style a des règles conflictuelles et qui sont également spécifiques, alors CSS donne la priorité à la règle qui est définie plus tard dans la feuille de style.</p> + +<p>Lorsque vous avez un problème de conflit de règles, essayez de le résoudre en rendant une des règles plus spécifique, afin qu'elle aie la priorité. Si vous ne pouvez pas faire cela, essayez de déplacer l'une des règles plus près de la fin de la feuille de style pour lui donner la priorité.</p> + +<h3 id="Action_:_utilisation_des_s.C3.A9lecteurs_class_et_id" name="Action_:_utilisation_des_s.C3.A9lecteurs_class_et_id">Action : utilisation des sélecteurs class et id</h3> + +<p>Éditez votre fichier HTML, et dupliquez le paragraphe par copier-coller. Ajoutez ensuite des attributs id et class à la première copie, et un autre id à la seconde copie comme montré ci-dessous. Sinon, copiez et collez à nouveau l'entièreté du fichier :</p> + +<div style="width: 48em; color: gray;"> +<pre class="eval"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> +<HTML> + <HEAD> + <TITLE>Document exemple</TITLE> + <LINK rel="stylesheet" type="text/css" href="style1.css"> + </HEAD> + <BODY> + <P <strong style="color: black;">id="premier"</strong>> + <STRONG <strong style="color: black;">class="carotte"</strong>>C</STRONG>ascading + <STRONG <strong style="color: black;">class="epinard"</strong>>S</STRONG>tyle + <STRONG <strong style="color: black;">class="epinard"</strong>>S</STRONG>heets + </P> + <strong style="color: black;"><P id="second"> + <STRONG>C</STRONG>ascading + <STRONG>S</STRONG>tyle + <STRONG>S</STRONG>heets + </P></strong> + </BODY> +</HTML> +</pre> +</div> + +<p>Éditez à présent votre fichier CSS. Remplacez l'entièreté de son contenu par :</p> + +<div style="width: 40em;"> +<pre>strong {color: red;} +.carotte {color: orange;} +.epinard {color: green;} +#premier {font-style: italic;} +</pre> +</div> + +<p>Actualisez dans votre navigateur et voyez le résultat :</p> + +<table style="border: 2px outset #3366bb; padding: 1em;"> + <tbody> + <tr> + <td style="font-style: italic;"><strong style="color: orange;">C</strong>ascading <strong style="color: green;">S</strong>tyle <strong style="color: green;">S</strong>heets</td> + </tr> + <tr> + <td><strong style="color: red;">C</strong>ascading <strong style="color: red;">S</strong>tyle <strong style="color: red;">S</strong>heets</td> + </tr> + </tbody> +</table> + +<p>Vous pouvez essayer d'ordonner différemment les lignes dans votre fichier CSS pour constater que leur ordre n'a aucune importance.</p> + +<p>Les sélecteurs de classe <code>.carotte</code> et <code>.epinard</code> ont priorité sur le sélecteur de balise <code>strong</code>.</p> + +<p>Le sélecteur d'id <code>#premier</code> a priorité sur les sélecteurs de classe et de balise.</p> + +<table style="background-color: #fffff4; border: 1px solid #3366bb; padding: 1em;"> + <caption>Challenges</caption> + <tbody> + <tr> + <td>Sans modifier votre fichier HTML, ajoutez une seule règle à votre fichier CSS qui garde la même couleur pour toutes les lettres initiales que précédemment, mais rend le reste du texte du second paragraphe bleu : + <table style="background-color: white; border: 2px outset #3366bb; padding: 1em;"> + <tbody> + <tr> + <td style="font-style: italic;"><strong style="color: orange;">C</strong>ascading <strong style="color: green;">S</strong>tyle <strong style="color: green;">S</strong>heets</td> + </tr> + <tr> + <td style="color: blue;"><strong style="color: red;">C</strong>ascading <strong style="color: red;">S</strong>tyle <strong style="color: red;">S</strong>heets</td> + </tr> + </tbody> + </table> + + <p>À présent, changez la règle que vous venez d'ajouter (sans rien changer d'autre), pour rendre le premier paragraphe bleu également :</p> + + <table style="background-color: white; border: 2px outset #3366bb; padding: 1em;"> + <tbody> + <tr> + <td style="font-style: italic; color: blue;"><strong style="color: orange;">C</strong>ascading <strong style="color: green;">S</strong>tyle <strong style="color: green;">S</strong>heets</td> + </tr> + <tr> + <td style="color: blue;"><strong style="color: red;">C</strong>ascading <strong style="color: red;">S</strong>tyle <strong style="color: red;">S</strong>heets</td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> + +<p> </p> + +<h4 id="Pour_continuer" name="Pour_continuer">Pour continuer</h4> + +<p>Si vous avez eu des difficultés à comprendre cette page, ou avez d'autres commentaires à son sujet, n'hésitez pas à contribuer à sa <a href="/Talk:fr/CSS/Premiers_pas/Les_sélecteurs" title="Talk:fr/CSS/Premiers_pas/Les_sélecteurs">page de discussion</a>.</p> + +<p>Votre feuille de style d'exemple commence à avoir l'air dense et compliquée. La page suivante décrit des façons de rendre CSS plus facile à lire : <strong><a href="/fr/docs/CSS/Premiers_pas/Des_CSS_lisibles" title="fr/CSS/Premiers_pas/Des_CSS_lisibles">Des CSS lisibles</a></strong></p> diff --git a/files/fr/conflicting/learn/css/building_blocks/styling_tables/index.html b/files/fr/conflicting/learn/css/building_blocks/styling_tables/index.html new file mode 100644 index 0000000000..9fcc9dbd2d --- /dev/null +++ b/files/fr/conflicting/learn/css/building_blocks/styling_tables/index.html @@ -0,0 +1,602 @@ +--- +title: Tableaux +slug: CSS/Premiers_pas/Tableaux +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/CSS/Building_blocks/Styling_tables +translation_of_original: Web/Guide/CSS/Getting_started/Tables +--- +<p> </p> +<p>Cette page présente des sélecteurs plus avancés, et certaines manières spécifiques de styler les tableaux.</p> +<p>Vous créerez un nouveau document contenant un tableau, et une feuille de style pour celui-ci.</p> +<h3 id="Information_:_d.27autres_s.C3.A9lecteurs" name="Information_:_d.27autres_s.C3.A9lecteurs">Information : d'autres sélecteurs</h3> +<p>CSS propose plusieurs manières de sélectionner des éléments sur base de leur relation avec d'autres éléments. Vous pouvez utiliser celles-ci pour créer des sélecteurs plus spécifiques.</p> +<p>Voici un résumé des sélecteurs basés sur les relations :</p> +<table style="margin-left: 2em;"> + <tbody> + <tr> + <td style="width: 10em;"><strong>Sélecteur</strong></td> + <td><strong>Sélectionne</strong></td> + </tr> + <tr> + <td><code>A E</code></td> + <td>Tout élément E qui est un <em>descendant</em> d'un élément A (c'est-à-dire un enfant, ou l'enfant d'un enfant, <em>etc</em>.)</td> + </tr> + <tr> + <td><code>A > E</code></td> + <td>Tout élément E qui est un enfant direct d'un élément A</td> + </tr> + <tr> + <td><code>E:first-child</code></td> + <td>Tout élément E qui est le premier enfant de son parent</td> + </tr> + <tr> + <td><code>B + E</code></td> + <td>Tout élément E qui est le <em>frère</em> d'un élément B (c'est-à-dire l'enfant suivant du même parent)</td> + </tr> + </tbody> +</table> +<p>Vous pouvez combiner ceux-ci pour exprimer des relations complexes.</p> +<p>Vous pouvez également utiliser le symbole <code>*</code> (astérisque) pour désigner « n'importe quel élément. »</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Un tableau HTML a un attribut <code>id</code>, mais ses lignes et cellules n'ont pas d'identifiants individuels : + <div style="width: 30em;"> + <pre class="eval"> +<TABLE id="data-table-1"> +... +<TR> +<TD>Préfixe</TD> +<TD>0001</TD> +<TD>par défaut</TD> +</TR> +... +</pre> + </div> + <p>Ces règles rendent la première cellule de chaque ligne en gras, et la seconde cellule de chaque ligne en largeur fixe. Elles affectent un tableau spécifique dans le document :</p> + <div style="width: 45em;"> + <p><code>#data-table-1 td:first-child {font-weight: bolder;}</code> <code>#data-table-1 td:first-child + td {font-family: monospace;}</code></p> + </div> + <p>Le résultat ressemble à ceci :</p> + <table style="border: 2px outset #36b; padding: 1em; background-color: white;"> + <tbody> + <tr> + <td> + <table style="width: 18em; margin-right: 2em;"> + <tbody> + <tr> + <td><strong>Préfixe</strong></td> + <td><code>0001</code></td> + <td>par défaut</td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4; margin-bottom: 1em;"> + <caption> + Plus de détails</caption> + <tbody> + <tr> + <td>Comme d'habitude, si vous rendez un sélecteur plus spécifique, vous augmentez sa priorité. + <p>Si vous utilisez ces techniques, vous évitez le besoin de spécifier des attributs <code>class</code> ou <code>id</code> sur une énorme quantité de balises dans votre document. Au lieu de cela, c'est CSS qui fait tout le travail.</p> + <p>Dans de grosses mises en pages où la vitesse est importante, vous pouvez rendre vos feuilles de style plus performantes en évitant les règles complexes qui dépendent des relations entre éléments.</p> + <p>Pour plus de détails sur les sélecteurs, consultez <a class="external" href="http://www.w3.org/TR/CSS21/selector.html">Selectors</a> dans la spécification CSS.</p> + </td> + </tr> + </tbody> +</table> +<h3 id="Information_:_les_tableaux" name="Information_:_les_tableaux">Information : les tableaux</h3> +<p>Un tableau est un arrangement d'informations dans une grille rectangulaire. Certains tableaux peuvent être complexes, et pour des tableaux complexes les résultats peuvent être différents selon le navigateur.</p> +<p>Lorsque vous concevez votre document, utilisez un tableau pour exprimer les relations entre les pièces d'information. Dans ce cas, cela n'a pas d'importance si différents navigateurs présentent les informations de manière légèrement différente, puisque leur signification reste claire.</p> +<p>N'utilisez pas les tableaux de manière inhabituelle pour produire des mises en page visuelles particulières. Les techniques présentées sur la page précédente (<a href="/fr/CSS/Premiers_pas/Mise_en_page" title="fr/CSS/Premiers_pas/Mise_en_page">Mise en page</a>) sont plus appropriées pour cela.</p> +<h4 id="Structure_d.27un_tableau" name="Structure_d.27un_tableau">Structure d'un tableau</h4> +<p>Dans un tableau, chaque élément d'information est affiché dans une <em>cellule</em>.</p> +<p>Une rangée horizontale de cellules forme une <em>ligne</em>.</p> +<p>Dans certains tableaux, les lignes peuvent être groupées. Un groupe spécial de lignes au début du tableau est un <em>en-tête</em> (header) de tableau. Un groupe spécial de lignes en fin de tableau est un <em>pied</em> (footer) de tableau. Les lignes principales sont le <em>corps</em> (body) du tableau, et peuvent également former des groupes.</p> +<p>Les cellules alignées verticalement forment une <em>colonne</em>, mais les colonnes ont une utilisation limitée en CSS.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; width: 100%;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Le tableau des sélecteurs en début de page contient dix cellules réparties en cinq lignes. + <p>La première ligne est l'en-tête. Les quatre autres lignes sont le corps du tableau. Il n'y a pas de pied de tableau.</p> + <p>Il y a deux colonnes.</p> + </td> + </tr> + </tbody> +</table> +<p><br> + Ce tutoriel couvre uniquement les tableaux simples, où les résultats sont relativement prévisibles. Dans un tableau simple, chaque cellule occupe uniquement une ligne et une colonne. Vous pouvez utiliser CSS pour des tableaux complexes ou les cellules s'étendent au travers de plus d'une ligne ou colonne, mais de telles tables dépassent le sujet de ce tutoriel basique.</p> +<h4 id="Bordures" name="Bordures">Bordures</h4> +<p>Les cellules n'ont pas de marge extérieure (margin).</p> +<p>Les cellules ont des bordures et des marges intérieures (padding). Par défaut, les bordures sont séparées par la valeur de la propriété <code>border-spacing</code> du tableau. Vous pouvez également supprimer tout à fait cet espace en définissant la propriété <code>border-collapse</code> du tableau à <code>collapse</code>.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; width: 100%;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Voici trois tableaux. + <p>Le tableau de gauche a un espacement entre les bordures de 0.5 em. Le tableau central a un espacement nul entre ses bordures. Dans le tableau de droite, cet espacement a été supprimé avec <code>collapse</code> :</p> + <table style="border: 2px outset #36b; padding: 1em; background-color: white;"> + <tbody> + <tr> + <td style="padding-right: 2em;"> + <table style=""> + <tbody> + <tr> + <td style="border: 1px solid #c00; text-align: center;">Trèfle</td> + <td style="border: 1px solid #c00; text-align: center;">Cœur</td> + </tr> + <tr> + <td style="border: 1px solid #c00; text-align: center;">Carreau</td> + <td style="border: 1px solid #c00; text-align: center;">Pique</td> + </tr> + </tbody> + </table> + </td> + <td style="padding-right: 2em;"> + <table style=""> + <tbody> + <tr> + <td style="border: 1px solid #c00; text-align: center;">Trèfle</td> + <td style="border: 1px solid #c00; text-align: center;">Cœur</td> + </tr> + <tr> + <td style="border: 1px solid #c00; text-align: center;">Carreau</td> + <td style="border: 1px solid #c00; text-align: center;">Pique</td> + </tr> + </tbody> + </table> + </td> + <td style="padding-right: 6em;"> + <table style="border-collapse: collapse;"> + <tbody> + <tr> + <td style="border: 1px solid #c00; text-align: center;">Trèfle</td> + <td style="border: 1px solid #c00; text-align: center;">Cœur</td> + </tr> + <tr> + <td style="border: 1px solid #c00; text-align: center;">Carreau</td> + <td style="border: 1px solid #c00; text-align: center;">Pique</td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<h4 id="L.C3.A9gendes" name="L.C3.A9gendes">Légendes</h4> +<p>Une <em>légende</em> (caption) est un label qui s'applique à l'entièreté du tableau. Par défaut, elle est affichée en haut du tableau.</p> +<p>Pour la déplacer en bas, définissez sa propriété <code>caption-side</code> à <code>bottom</code> (en bas). La propriété est héritée, vous pouvez donc aussi la définir sur le tableau complet, ou un autre ancêtre de l'élément.</p> +<p>Pour styler le texte de la légende, utilisez n'importe laquelle des propriétés habituelles du texte.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; width: 100%;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Ce tableau a une légende placée en dessous : + <div style="width: 30em;"> + <pre class="eval"> +#demo-table > caption { + caption-side: bottom; + font-style: italic; + text-align: right; + } +</pre> + </div> + <table style="border: 2px outset #36b; padding: 1em 6em 1em 1em; background-color: white;"> + <tbody> + <tr> + <td> + <table> + <caption> + Suites</caption> + <tbody> + <tr> + <td> + <table style="border-collapse: collapse;"> + <tbody> + <tr> + <td style="border: 1px solid gray; text-align: center;">Trèfle</td> + <td style="border: 1px solid gray; text-align: center;">Cœur</td> + </tr> + <tr> + <td style="border: 1px solid gray; text-align: center;">Carreau</td> + <td style="border: 1px solid gray; text-align: center;">Pique</td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<h4 id="Cellules_vides" name="Cellules_vides">Cellules vides</h4> +<p>Il est possible d'afficher des cellules vides (c'est-à-dire leurs bordures et fonds) en spéficiant <code>empty-cells: show;</code> pour l'élément <code>table</code>.</p> +<p>Vous pouvez les masquer en spécifiant <code>empty-cells: hide;</code>. Dans ce cas, si un élément parent a un fond, il sera visible à travers la cellule vide.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; width: 100%;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Ces tableaux ont un fond vert pâle. Leurs cellules ont un fond gris pâle et des bords gris foncé. + <p>Dans le tableau de gauche, la cellule vide est affichée. Dans celui de droite, celle-ci est masquée :</p> + <table style="border: 2px outset #36b; padding: 1em; background-color: white;"> + <tbody> + <tr> + <td style="padding-right: 2em;"> + <table style="background-color: #dfd;"> + <tbody> + <tr> + <td style="border: 1px solid #555; background-color: #eee;"> </td> + <td style="border: 1px solid #555; background-color: #eee; text-align: center;">Cœur</td> + </tr> + <tr> + <td style="border: 1px solid #555; background-color: #eee; text-align: center;">Carreau</td> + <td style="border: 1px solid #555; background-color: #eee; text-align: center;">Pique</td> + </tr> + </tbody> + </table> + </td> + <td style="padding-right: 6em;"> + <table style="background-color: #dfd;"> + <tbody> + <tr> + <td> </td> + <td style="border: 1px solid #555; background-color: #eee; text-align: center;">Cœur</td> + </tr> + <tr> + <td style="border: 1px solid #555; background-color: #eee; text-align: center;">Carreau</td> + <td style="border: 1px solid #555; background-color: #eee; text-align: center;">Pique</td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<p> </p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4; margin-bottom: 1em;"> + <caption> + Plus de détails</caption> + <tbody> + <tr> + <td>Pour des informations détaillées concernant les tableaux, consultez <a class="external" href="http://www.w3.org/TR/CSS21/tables.html">Tables</a> dans la spécification CSS. + <p>Les informations qui s'y trouvent vont plus loin que ce tutoriel, mais elles ne couvrent pas les différences entre navigateurs qui peuvent affecter les tableaux complexes.</p> + </td> + </tr> + </tbody> +</table> +<h3 id="Action_:_habillage_d.27un_tableau" name="Action_:_habillage_d.27un_tableau">Action : habillage d'un tableau</h3> +<p>Créez un nouveau document HTML, <code>doc3.html</code>. Copiez et collez-y le contenu ci-dessous, en vous assurant de le faire défiler jusqu'en bas pour en obtenir la totalité :</p> +<div style="width: 48em; height: 12em; overflow: auto;"> + <pre><DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> +<HTML> +<HEAD> +<TITLE>Document exemple 3</TITLE> +<LINK rel="stylesheet" type="text/css" href="style3.css"> +</HEAD> +<BODY> + +<TABLE id="demo-table"> +<CAPTION>Les océans</CAPTION> + +<THEAD> +<TR> +<TH></TH> +<TH>Surface</TH> +<TH>Profondeur moyenne</TH> +</TR> +<TR> +<TH></TH> +<TH>millions de km<SUP>2</SUP></TH> +<TH>m</TH> +</TR> +</THEAD> + +<TBODY> +<TR> +<TH>Arctique</TH> +<TD>13 000</TD> +<TD>1 200</TD> +</TR> +<TR> +<TH>Atlantique</TH> +<TD>87 000</TD> +<TD>3 900</TD> +</TR> +<TR> +<TH>Pacifique</TH> +<TD>180 000</TD> +<TD>4 000</TD> +</TR> +<TR> +<TH>Indien</TH> +<TD>75 000</TD> +<TD>3 900</TD> +</TR> +<TR> +<TH>Antarctique</TH> +<TD>20 000</TD> +<TD>4 500</TD> +</TR> +</TBODY> + +<TFOOT> +<TR> +<TH>Total</TH> +<TD>361 000</TD> +<TD></TD> +</TR> +<TR> +<TH>Moyenne</TH> +<TD>72 000</TD> +<TD>3 800</TD> +</TR> +</TFOOT> + +</TABLE> + +</BODY> +</HTML> +</pre> +</div> +<p>Créez une nouvelle feuille de style, <code>style3.css</code>. Copiez et collez-y le code ci-dessous, en vous assurant de le faire défiler jusqu'en bas pour en obtenir la totalité :</p> +<div style="width: 48em; height: 12em; overflow: auto;"> + <pre>/*** Style pour doc3.html (Tables) ***/ + +#demo-table { + font: 100% sans-serif; + background-color: #efe; + border-collapse: collapse; + empty-cells: show; + border: 1px solid #7a7; + } + +#demo-table > caption { + text-align: left; + font-weight: bold; + font-size: 200%; + border-bottom: .2em solid #4ca; + margin-bottom: .5em; + } + + +/* règles de base partagées */ +#demo-table th, +#demo-table td { + text-align: right; + padding-right: .5em; + } + +#demo-table th { + font-weight: bold; + padding-left: .5em; + } + + +/* en-tête */ +#demo-table > thead > tr:first-child > th { + text-align: center; + color: blue; + } + +#demo-table > thead > tr + tr > th { + font-style: italic; + color: gray; + } + +/* taille des valeurs en exposant */ +#demo-table sup { + font-size: 75%; + } + +/* corps du tableau */ +#demo-table td { + background-color: #cef; + padding:.5em .5em .5em 3em; + } + +#demo-table tbody th:after { + content: " :"; + } + + +/* pied du tableau */ +#demo-table tfoot { + font-weight: bold; + } + +#demo-table tfoot th { + color: blue; + } + +#demo-table tfoot th:after { + content: " :"; + } + +#demo-table > tfoot td { + background-color: #cee; + } + +#demo-table > tfoot > tr:first-child td { + border-top: .2em solid #7a7; + } +</pre> +</div> +<p>Ouvrez le document dans votre navigateur. Il devrait être très semblable à ceci :</p> +<table style="border: 2px outset #36b; padding: 1em 6em 1em 1em; background-color: white;"> + <tbody> + <tr> + <td> + <div> + <p style="font: bold 200% sans-serif; text-align: left; border-bottom: .2em solid #4ca; margin: 0px 0px .5em 0px;">Les océans</p> + <div style="border: 1px solid #7a7; background-color: #efe;"> + <table style="font: 100% sens-serif; background-color: #efe; border-collapse: collapse; text-align: right; padding-right: .5em;"> + <tbody> + <tr style="text-align: center; color: blue;"> + <th> </th> + <th>Surface</th> + <th style="padding-left: .5em; padding-right: .5em;">Profondeur moyenne</th> + </tr> + <tr style="font-style: italic; color: gray;"> + <th> </th> + <th style="padding-left: .5em; padding-right: .5em;">millions de km<sup>2</sup></th> + <th style="padding-left: .5em; padding-right: .5em;">m</th> + </tr> + <tr> + <th style="padding-right: .5em;">Arctique :</th> + <td style="background-color: #cef; padding: .5em .5em .5em 3em;">13 000</td> + <td style="background-color: #cef; padding: .5em .5em .5em 3em;">1 200</td> + </tr> + <tr> + <th style="padding-right: .5em;">Atlantique :</th> + <td style="background-color: #cef; padding: .5em .5em .5em 3em;">87 000</td> + <td style="background-color: #cef; padding: .5em .5em .5em 3em;">3 900</td> + </tr> + <tr> + <th style="padding-right: .5em;">Pacifique :</th> + <td style="background-color: #cef; padding: .5em .5em .5em 3em;">180 000</td> + <td style="background-color: #cef; padding: .5em .5em .5em 3em;">4 000</td> + </tr> + <tr> + <th style="padding-right: .5em;">Indien :</th> + <td style="background-color: #cef; padding: .5em .5em .5em 3em;">75 000</td> + <td style="background-color: #cef; padding: .5em .5em .5em 3em;">3 900</td> + </tr> + <tr> + <th style="padding-left: .5em; padding-right: .5em;">Antarctique :</th> + <td style="background-color: #cef; padding: .5em .5em .5em 3em;">20 000</td> + <td style="background-color: #cef; padding: .5em .5em .5em 3em;">4 500</td> + </tr> + <tr> + <th style="padding-right: .5em; color: blue;">Total :</th> + <td style="background-color: #cee; padding: .5em .5em .5em 3em; border-top: .2em solid #7a7;">361 000</td> + <td style="background-color: #cee; padding: .5em .5em .5em 3em; border-top: .2em solid #7a7;"> </td> + </tr> + <tr> + <th style="padding-right: .5em; color: blue;">Moyenne :</th> + <td style="background-color: #cee; padding: .5em .5em .5em 3em;">72 000</td> + <td style="background-color: #cee; padding: .5em .5em .5em 3em;">3 800</td> + </tr> + </tbody> + </table> + </div> + </div> + </td> + </tr> + </tbody> +</table> +<p>Comparez les règles dans la feuille de style avec le tableau tel qu'il est affiché pour vous assurer que vous comprenez les effets de chaque règle. Si vous en trouvez une où ce n'est pas clair, mettez-la en commentaire et actualisez dans votre navigateur pour voir ce qui se produit.</p> +<p>Voici quelques notes à propos de ce tableau :</p> +<ul> + <li>La légende (caption) se trouve à l'extérieur de la bordure du tableau.</li> + <li>Si une taille minimale de police est définie dans les options, elle peut affecter l'exposant dans km<sup>2</sup>.</li> + <li>Trois cellules sont vides. Deux d'entre-elles laissent le fond du tableau visible. La troisème a un fond et une bordure supérieure.</li> + <li>Les deux points sont ajoutés par la feuille de style.</li> +</ul> +<p> </p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; width: 100%;"> + <caption> + Challenges</caption> + <tbody> + <tr> + <td>Modifiez la feuille de style afin que le tableau ressemble à ceci : + <table style="border: 2px outset #36b; padding: 1em 6em 1em 1em; background-color: white;"> + <tbody> + <tr> + <td> + <div> + <div style="border: 1px solid #7a7; background-color: #efe;"> + <table style="font: 100% sens-serif; background-color: #efe; border-collapse: collapse; text-align: right; padding-right: .5em;"> + <tbody> + <tr style="text-align: center; color: blue;"> + <th> </th> + <th>Surface</th> + <th style="padding-left: .5em; padding-right: .5em;">Profondeur moyenne</th> + </tr> + <tr style="font-style: italic; color: gray;"> + <th> </th> + <th style="padding-left: .5em; padding-right: .5em;">millions de km<sup>2</sup></th> + <th style="padding-left: .5em; padding-right: .5em;">m</th> + </tr> + <tr> + <th style="padding-right: .5em;">Arctique :</th> + <td style="background-color: #cef; padding: .5em .5em .5em 3em; border: 1px solid #7a7;">13 000</td> + <td style="background-color: #cef; padding: .5em .5em .5em 3em; border: 1px solid #7a7; border-right: 0px;">1 200</td> + </tr> + <tr> + <th style="padding-right: .5em;">Atlantique :</th> + <td style="background-color: #cef; padding: .5em .5em .5em 3em; border: 1px solid #7a7;">87 000</td> + <td style="background-color: #cef; padding: .5em .5em .5em 3em; border: 1px solid #7a7; border-right: 0px;">3 900</td> + </tr> + <tr> + <th style="padding-right: .5em;">Pacifique :</th> + <td style="background-color: #cef; padding: .5em .5em .5em 3em; border: 1px solid #7a7;">180 000</td> + <td style="background-color: #cef; padding: .5em .5em .5em 3em; border: 1px solid #7a7; border-right: 0px;">4 000</td> + </tr> + <tr> + <th style="padding-right: .5em;">Indien :</th> + <td style="background-color: #cef; padding: .5em .5em .5em 3em; border: 1px solid #7a7;">75 000</td> + <td style="background-color: #cef; padding: .5em .5em .5em 3em; border: 1px solid #7a7; border-right: 0px;">3 900</td> + </tr> + <tr> + <th style="padding-left: .5em; padding-right: .5em;">Antarctique :</th> + <td style="background-color: #cef; padding: .5em .5em .5em 3em; border: 1px solid #7a7;">20 000</td> + <td style="background-color: #cef; padding: .5em .5em .5em 3em; border: 1px solid #7a7; border-right: 0px;">4 500</td> + </tr> + <tr> + <th style="padding-right: .5em; color: blue;">Total :</th> + <td style="background-color: #cee; padding: .5em .5em .5em 3em; border-top: .2em solid #7a7;">361 000</td> + <td style="background-color: #cee; padding: .5em .5em .5em 3em; border-top: .2em solid #7a7;"> </td> + </tr> + <tr> + <th style="padding-right: .5em; color: blue;">Moyenne :</th> + <td style="background-color: #cee; padding: .5em .5em .5em 3em;">72 000</td> + <td style="background-color: #cee; padding: .5em .5em .5em 3em;">3 800</td> + </tr> + </tbody> + </table> + </div> + <p style="font: italic 100% sans-serif; text-align: right; border-top: .4em solid #4ca; margin: 1em 0px 0px 0px;">Les océans</p> + </div> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<p> </p> +<h4 id="Pour_continuer" name="Pour_continuer">Pour continuer</h4> +<p>Si vous avez eu des difficultés à comprendre cette page, ou si vous avez d'autres commentaires à son sujet, n'hésitez pas à contribuer à sa <a href="/Talk:fr/CSS/Premiers_pas/Tableaux" title="Talk:fr/CSS/Premiers_pas/Tableaux">page de discussion</a>.</p> +<p>Ceci est la dernière page de ce tutoriel qui concerne les propriétés CSS et leurs valeurs. Pour un résumé complet des propriétés et valeurs, consultez <a class="external" href="http://www.w3.org/TR/CSS21/propidx.html">Full property table</a> dans la spécification CSS.</p> +<p>La page suivante revient sur le but et la structure des feuilles de style CSS : <strong><a href="/fr/docs/CSS/Premiers_pas/Médias" title="fr/CSS/Premiers_pas/Médias">Médias</a></strong>.</p> diff --git a/files/fr/conflicting/learn/css/building_blocks/values_and_units/index.html b/files/fr/conflicting/learn/css/building_blocks/values_and_units/index.html new file mode 100644 index 0000000000..24952f7505 --- /dev/null +++ b/files/fr/conflicting/learn/css/building_blocks/values_and_units/index.html @@ -0,0 +1,314 @@ +--- +title: Couleurs +slug: CSS/Premiers_pas/Couleurs +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/CSS/Introduction_to_CSS/Values_and_units#Colors +translation_of_original: Web/Guide/CSS/Getting_started/Color +--- +<p> </p> +<p>Cette page donne plus de détails sur la manière de spécifier les couleurs en CSS.</p> +<p>Dans votre exemple de feuille de style, vous ajouterez des couleurs de fond.</p> +<h3 id="Information_:_les_couleurs" name="Information_:_les_couleurs">Information : les couleurs</h3> +<p>Dans ce tutoriel, jusqu'à présent, vous avez utilisé un nombre limité de couleurs nommées. CSS 2 définit 17 couleurs nommées en tout. Certains des noms peuvent ne pas êtres ce à quoi vous vous attendez :</p> +<table style="border: 0px; margin-left: 2em; text-align: right;"> + <tbody> + <tr> + <td> </td> + <td>black</td> + <td style="width: 2em; height: 2em; background-color: black;"> </td> + <td>gray</td> + <td style="width: 2em; height: 2em; background-color: gray;"> </td> + <td>silver</td> + <td style="width: 2em; height: 2em; background-color: silver;"> </td> + <td>white</td> + <td style="width: 2em; height: 2em; background-color: white; border: 1px dotted gray;"> </td> + </tr> + <tr> + <td>primaires</td> + <td>red</td> + <td style="width: 2em; height: 2em; background-color: red;"> </td> + <td>lime</td> + <td style="width: 2em; height: 2em; background-color: lime;"> </td> + <td>blue</td> + <td style="width: 2em; height: 2em; background-color: blue;"> </td> + </tr> + <tr> + <td>secondaires</td> + <td>yellow</td> + <td style="width: 2em; height: 2em; background-color: yellow;"> </td> + <td>aqua</td> + <td style="width: 2em; height: 2em; background-color: aqua;"> </td> + <td>fuchsia</td> + <td style="width: 2em; height: 2em; background-color: fuchsia;"> </td> + </tr> + <tr> + <td> </td> + <td>maroon</td> + <td style="width: 2em; height: 2em; background-color: maroon;"> </td> + <td>orange</td> + <td style="width: 2em; height: 2em; background-color: orange;"> </td> + <td>olive</td> + <td style="width: 2em; height: 2em; background-color: olive;"> </td> + <td>purple</td> + <td style="width: 2em; height: 2em; background-color: purple;"> </td> + <td>green</td> + <td style="width: 2em; height: 2em; background-color: green;"> </td> + <td>navy</td> + <td style="width: 2em; height: 2em; background-color: navy;"> </td> + <td>teal</td> + <td style="width: 2em; height: 2em; background-color: teal;"> </td> + </tr> + </tbody> +</table> +<p> </p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4;"> + <caption> + Plus de détails</caption> + <tbody> + <tr> + <td>Votre navigateur peut supporter de nombreux autres noms de couleurs, comme : + <table style="border: 0px; margin: .5em 0px .5em 2em; text-align: right; background-color: inherit;"> + <tbody> + <tr> + <td>dodgerblue</td> + <td style="width: 2em; height: 2em; background-color: dodgerblue;"> </td> + <td>peachpuff</td> + <td style="width: 2em; height: 2em; background-color: peachpuff;"> </td> + <td>tan</td> + <td style="width: 2em; height: 2em; background-color: tan;"> </td> + <td>firebrick</td> + <td style="width: 2em; height: 2em; background-color: firebrick;"> </td> + <td>aquamarine</td> + <td style="width: 2em; height: 2em; background-color: aquamarine;"> </td> + </tr> + </tbody> + </table> + <p>Pour plus de détails et la liste complète, consultez : <a class="external" href="http://www.w3.org/TR/2003/CR-css3-color-20030514/#svg-color">SVG color keywords</a> dans le module CSS 3 Color. Faites attention à ne pas utiliser de noms de couleurs que le navigateur de vos lecteurs peut ne pas comprendre.</p> + </td> + </tr> + </tbody> +</table> +<p>Pour une palette plus étendue, vous pouvez spécifier les composantes rouges, vertes et bleues de la couleur désirée en utilisant un signe dièse (carré) suivi de trois chiffres + <i> + hexadécimaux</i> + dans l'intervalle 0 – 9, a – f. Les lettres a – f représentent les valeurs 10 – 15:</p> +<table style="border: 0px; margin-left: 2em;"> + <tbody> + <tr> + <td>noir</td> + <td style="width: 2em; height: 2em; background-color: #000;"> </td> + <td><code>#000</code></td> + </tr> + <tr> + <td>rouge pur</td> + <td style="width: 2em; height: 2em; background-color: #f00;"> </td> + <td><code>#f00</code></td> + </tr> + <tr> + <td>vert pur</td> + <td style="width: 2em; height: 2em; background-color: #0f0;"> </td> + <td><code>#0f0</code></td> + </tr> + <tr> + <td>bleu pur</td> + <td style="width: 2em; height: 2em; background-color: #00f;"> </td> + <td><code>#00f</code></td> + </tr> + <tr> + <td>blanc</td> + <td style="width: 2em; height: 2em; background-color: #fff; border: 1px dotted gray;"> </td> + <td><code>#fff</code></td> + </tr> + </tbody> +</table> +<p>Pour la palette complète, spécifiez deux chiffres hexadécimaux pour chaque composante :</p> +<table style="border: 0px; margin-left: 2em;"> + <tbody> + <tr> + <td>noir</td> + <td style="width: 2em; height: 2em; background-color: #000;"> </td> + <td><code>#000000</code></td> + </tr> + <tr> + <td>rouge pur</td> + <td style="width: 2em; height: 2em; background-color: #f00;"> </td> + <td><code>#ff0000</code></td> + </tr> + <tr> + <td>vert pur</td> + <td style="width: 2em; height: 2em; background-color: #0f0;"> </td> + <td><code>#00ff00</code></td> + </tr> + <tr> + <td>bleu pur</td> + <td style="width: 2em; height: 2em; background-color: #00f;"> </td> + <td><code>#0000ff</code></td> + </tr> + <tr> + <td>blanc</td> + <td style="width: 2em; height: 2em; background-color: #fff; border: 1px dotted gray;"> </td> + <td><code>#ffffff</code></td> + </tr> + </tbody> +</table> +<p>Il est généralement possible d'obtenir ces codes hexadécimaux à six chiffres dans les logiciels de dessin ou d'autres outils.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4;"> + <caption> + Exemples</caption> + <tbody> + <tr> + <td>Avec un peu de pratique, vous pouvez ajuster les couleurs à trois chiffres à la main dans la plupart des cas : + <table style="border: 0px; margin-left: 2em; background-color: #fffff4;"> + <tbody> + <tr> + <td>Commencez avec du rouge pur :</td> + <td style="width: 2em; height: 2em; background-color: #f00;"> </td> + <td><code>#f00</code></td> + </tr> + <tr> + <td>Pour le rendre plus pâle, ajoutez un peu de vert et de bleu :</td> + <td style="width: 2em; height: 2em; background-color: #f77;"> </td> + <td><code>#f77</code></td> + </tr> + <tr> + <td>Pour qu'il soit plus orange, ajoutez un peu de vert supplémentaire :</td> + <td style="width: 2em; height: 2em; background-color: #fa7;"> </td> + <td><code>#fa7</code></td> + </tr> + <tr> + <td>Pour le rendre plus sombre, réduisez chacune des composantes :</td> + <td style="width: 2em; height: 2em; background-color: #c74;"> </td> + <td><code>#c74</code></td> + </tr> + <tr> + <td>Pour réduire la saturation, égalisez un peu les composantes :</td> + <td style="width: 2em; height: 2em; background-color: #c98;"> </td> + <td><code>#c98</code></td> + </tr> + <tr> + <td>Si vous les rendez exactement égales, vous obtenez du gris :</td> + <td style="width: 2em; height: 2em; background-color: #ccc;"> </td> + <td><code>#ccc</code></td> + </tr> + </tbody> + </table> + </td> + </tr> + <tr> + <td>Pour un ton pastel comme du bleu pâle : + <table style="border: 0px; margin-left: 2em; background-color: #fffff4;"> + <tbody> + <tr> + <td>Commencez avec du blanc pur :</td> + <td style="width: 2em; height: 2em; background-color: #fff; border: 1px dotted gray;"> </td> + <td><code>#fff</code></td> + </tr> + <tr> + <td>Réduisez légèrement les autres composantes :</td> + <td style="width: 2em; height: 2em; background-color: #eef; border: 1px dotted gray;"> </td> + <td><code>#eef</code></td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<p> </p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4;"> + <caption> + Plus de détails</caption> + <tbody> + <tr> + <td>Vous pouvez également spécifier une couleur à l'aide de valeurs RGB décimales dans l'intervalle 0 – 255, ou des pourcentages. + <p>Par exemple, ceci est marron (rouge sombre) :</p> + <div style="width: 24em;"> + <pre> +rgb(128, 0, 0) +</pre> + </div> + <p><br> + Pour plus de détails sur la manière de spécifier des couleurs, consultez <a class="external" href="http://www.w3.org/TR/CSS21/syndata.html#color-units">Colors</a> dans la spécification CSS.</p> + <p>Pour des informations sur l'utilisation des couleurs système comme celle des menus ou des bordures 3D, consultez <a class="external" href="http://www.w3.org/TR/CSS21/ui.html#system-colors">CSS2 System Colors</a> dans la spécification CSS.</p> + </td> + </tr> + </tbody> +</table> +<p> </p> +<h4 id="Propri.C3.A9t.C3.A9s_de_couleur" name="Propri.C3.A9t.C3.A9s_de_couleur">Propriétés de couleur</h4> +<p>Vous avez déjà utilisé la propriété <code>color</code> pour le texte.</p> +<p>Vous pouvez également utiliser <code>background-color</code> pour changer la couleur de fond de certains éléments.</p> +<p>Les fonds peuvent êtres définis à <code>transparent</code> pour enlever explicitement toute couleur, permettant de voir le fond de l'élément parent.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Les boîtes <b>Exemple</b> dans ce tutoriel utilisent cette couleur de fond jaune pâle : + <div style="width: 24em;"> + <pre> +background-color: #fffff4; +</pre> + </div> + <p>Les boîtes <b>Plus de détails</b> utilisent ce gris pâle :</p> + <div style="width: 24em;"> + <pre> +background-color: #f4f4f4; +</pre> + </div> + </td> + </tr> + </tbody> +</table> +<h3 id="Action_:_utilisation_des_codes_de_couleur" name="Action_:_utilisation_des_codes_de_couleur">Action : utilisation des codes de couleur</h3> +<p>Éditez votre fichier CSS. Effectuez le changement montré ici en gras pour donner aux lettres initiales un fond bleu pâle. (La mise en page et les commentaires dans votre fichier seront probablement différents du fichier montré ici. Conservez la mise en page et les commentaires de la manière qui vous convient.)</p> +<div style="width: 32em;"> + <pre class="eval">/*** Tutoriel CSS : page des couleurs ***/ + +/* police de la page */ +body {font: 16px "Comic Sans MS", cursive;} + +/* paragraphes */ +p {color: blue;} +#premier {font-style: italic;} + +/* lettres initiales */ +strong { + color: red; + <strong>background-color: #ddf;</strong> + font: 200% serif; + } + +.carotte {color: red;} +.epinard {color: green;} +</pre> +</div> +<p>Actualisez dans votre navigateur pour voir le résultat :</p> +<table> + <tbody> + <tr> + <td style="font: italic 16px 'Comic Sams MS', cursive; color: blue;"><strong style="color: red; background-color: #ddf; font: 200% serif;">C</strong>ascading <strong style="color: green; background-color: #ddf; font: 200% serif;">S</strong>tyle <strong style="color: green; background-color: #ddf; font: 200% serif;">S</strong>heets</td> + </tr> + <tr> + <td style="font: 16px 'Comic Sams MS', cursive; color: blue;"><strong style="color: red; background-color: #ddf; font: 200% serif;">C</strong>ascading <strong style="color: red; background-color: #ddf; font: 200% serif;">S</strong>tyle <strong style="color: red; background-color: #ddf; font: 200% serif;">S</strong>heets</td> + </tr> + </tbody> +</table> +<p> </p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #ffe; width: 100%;"> + <caption> + Challenge</caption> + <tbody> + <tr> + <td>Dans votre fichier CSS, changez tous les noms de couleur en codes hexadécimaux à trois chiffres sans affecter le résultat. + <p>(Ceci ne peut pas être fait exactement, mais vous pouvez arriver tout près. Pour que ce soit exact, vous aurez besoin des codes à six chiffres et de regarder dans la spécification CSS ou utiliser un outil graphique pour obtenir les valeurs précises.)</p> + </td> + </tr> + </tbody> +</table> +<p> </p> +<h4 id="Pour_continuer" name="Pour_continuer">Pour continuer</h4> +<p>Votre document d'exemple et votre feuille de style séparent strictement le contenu du style.</p> +<p>La page suivante explique comment vous pouvez faire des exceptions à cette séparation stricte : <b><a href="/fr/docs/CSS/Premiers_pas/Contenu">Contenu</a></b>.</p> diff --git a/files/fr/conflicting/learn/css/css_layout/index.html b/files/fr/conflicting/learn/css/css_layout/index.html new file mode 100644 index 0000000000..f8d9872975 --- /dev/null +++ b/files/fr/conflicting/learn/css/css_layout/index.html @@ -0,0 +1,373 @@ +--- +title: Mise en page +slug: CSS/Premiers_pas/Mise_en_page +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/CSS/CSS_layout +translation_of_original: Web/Guide/CSS/Getting_started/Layout +--- +<p> </p> +<p>Cette page présente plusieurs manières d'ajuster la mise en page de votre document.</p> +<p>Vous modifierez la mise en page de votre document exemple...</p> +<h3 id="Information_:_mise_en_page" name="Information_:_mise_en_page">Information : mise en page</h3> +<p>Vous pouvez utiliser CSS pour spécifier de nombreux effets visuels changeant la mise en page de votre document. Certaines de ces techniques sont très avancées et dépassent de loin le niveau de tutoriel basique.</p> +<p>Lorsque vous réalisez une mise en page qui doit apparaître d'une manière similaire dans de nombreux navigateurs, votre feuille de style interagit avec le style par défaut du navigateur et le moteur de rendu de manières qui peuvent s'avérer complexes. Ce sujet n'est pas non plus couvert par ce tutoriel.</p> +<p>Cette page décrit certaines techniques simples que vous pouvez essayer.</p> +<h4 id="Structure_du_document" name="Structure_du_document">Structure du document</h4> +<p>Si vous voulez contrôler la mise en page de votre document, il peut être nécessaire de changer sa structure.</p> +<p>Le langage de balisage de votre document peut disposer de balises générales créant une certaine structure. Par exemple, dans HTML vous pouvez utiliser la balise <code>DIV</code> pour créer une telle structure.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Dans votre document d'exemple, les paragraphes numérotés sous le second titre n'ont aucun conteneur propre. + <p>Votre feuille de style ne peut pas dessiner une bordure autour de ces paragraphes, puisqu'il n'y a pas d'élément qui peut être spécifié dans le sélecteur.</p> + <p>Pour régler ce problème structurel, vous pouvez ajouter une balise <code>DIV</code> autour des paragraphes. Cette balise sera rendue unique en étant identifiée par un attribut <code>id</code> :</p> + <div style="width: 40em; color: gray;"> + <pre class="eval"> +<H3 class="numerote">Paragraphes numérotés</H3> +<strong style="color: black;"><DIV id="numerote"></strong> +<P class="numerote">Lorem ipsum</P> +<P class="numerote">Dolor sit</P> +<P class="numerote">Amet consectetuer</P> +<P class="numerote">Magna aliquam</P> +<P class="numerote">Autem veleum</P> +<strong style="color: black;"></DIV></strong> +</pre> + </div> + <p>À présent, votre feuille de style peut utiliser une règle pour ajouter des bordures autour des deux listes.</p> + <div style="width: 30em;"> + <pre class="eval"> +ul, #numerote { + border: 1em solid #69b; + padding-right:1em; + } +</pre> + </div> + <p>Le résultat devrait ressembler à ceci :</p> + <table style="border: 2px outset #36b; padding: 1em; width: 30em; background-color: white;"> + <tbody> + <tr> + <td> + <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em; border-top: 1px solid gray;">(A) Les océans</p> + <div style="border: 12px solid #69b; margin-bottom: 16px; padding: 1em;"> + <ul style=""> + <li>Arctique</li> + <li>Atlantique</li> + <li>Pacifique</li> + <li>Indien</li> + <li>Antarctique</li> + </ul> + </div> + <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em; border-top: 1px solid gray;">(B) Paragraphes numérotés</p> + <div style="border: 12px solid #69b; margin-bottom: 8px; padding: 0px 12em 0px .5em;"> + <p><b>1 : </b>Lorem ipsum</p> + <p><b>2 : </b>Dolor sit</p> + <p><b>3 : </b>Amet consectetuer</p> + <p><b>4 : </b>Magna aliquam</p> + <p><b>5 : </b>Autem veleum</p> + </div> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<h4 id="Unit.C3.A9s_de_mesure" name="Unit.C3.A9s_de_mesure">Unités de mesure</h4> +<p>Jusqu'à présent, dans ce tutoriel, nous avont spécifié les tailles en pixels (<code>px</code>). Ceux-ci sont appropriés pour certains usages sur un dispositif d'affichage comme un écran d'ordinateur, mais dès que l'utilisateur change la taille de police, votre mise en page peut être affectée négativement.</p> +<p>Dans de nombreux cas il est préférable de spécifier les tailles en pourcentages ou en ems (<code>em</code>). Un em est défini comme la taille de police actuelle (théoriquement la largeur d'une lettre m). Lorsque l'utilisateur change la taille de police, votre mise en page s'ajustera donc automatiquement.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>La bordure à gauche de ce texte a son épaisseur spécifiée en pixels. La bordure de droite a son épaisseur spécifiée en ems. + <p>Dans votre navigateur, changez la taille de police pour observer la façon dont la bordure de droite s'ajuste, mais pas celle de gauche :</p> + <table style="border: 2px outset #36b; padding: 1em; background-color: white;"> + <tbody> + <tr> + <td> + <div style=""> + Veuillez me redimensionner</div> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4; margin-bottom: 1em;"> + <caption> + Plus de détails</caption> + <tbody> + <tr> + <td>Pour d'autres périphériques, d'autres unités de longueur seront plus appropriées. + <p>Plus d'informations à ce sujet sont disponibles dans une prochaine page de ce tutoriel.</p> + <p>Pour plus de détails sur les valeurs et les unités que vous pouvez utiliser, consultez <a class="external" href="http://www.w3.org/TR/CSS21/syndata.html#values">Values</a> dans la spécification CSS.</p> + </td> + </tr> + </tbody> +</table> +<h4 id="Alignement_du_texte" name="Alignement_du_texte">Alignement du texte</h4> +<p>Deux propriétés spécifient la manière dont le contenu d'un élement est aligné. Vous pouvez les utiliser pour des ajustements simples de la mise en page :</p> +<ul> + <li><code>text-align</code></li> +</ul> +<dl> + <dd> + Aligne le contenu. Utiilisez une de ces valeurs : <code>left</code> (à gauche), <code>right</code> (à droite), <code>center</code> (centré), <code>justify</code> (justifié)</dd> +</dl> +<ul> + <li><code>text-indent</code></li> +</ul> +<dl> + <dd> + Donne une certaine retrait (indentation) au contenu, de la largeur spécifiée.</dd> +</dl> +<p>Ces propriétés s'appliquent à tout contenu semblable à du texte dans l'élément, pas uniquement au texte proprement dit. N'oubliez pas qu'elles sont héritées par les enfants de l'élément, ce qui peut vous obliger à les désactiver explicitement dans les éléments enfants pour éviter certains résultats surprenants.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Pour centrer les titres : + <div style="width: 30em;"> + <pre class="eval"> +h3 { + border-top: 1px solid gray; + text-align: center; + } +</pre> + </div> + <p>Ce qui donne :</p> + <table style="border: 2px outset #36b; padding: 1em; width: 30em; background-color: white;"> + <tbody> + <tr> + <td> + <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em; border-top: 1px solid gray; text-align: center;">(A) Les océans</p> + </td> + </tr> + </tbody> + </table> + <p>Dans un document HTML, le contenu que vous voyez sous un titre n'est pas structurellement contenu par ce titre. Par conséquent, lorsque vous alignez un titre de cette manière, les balises situées en dessous n'héritent pas du style.</p> + </td> + </tr> + </tbody> +</table> +<h4 id="Les_.C3.A9l.C3.A9ments_flottants" name="Les_.C3.A9l.C3.A9ments_flottants">Les éléments flottants</h4> +<p>La propriété <code>float</code> force un élément à se placer à gauche ou à droite. C'est une manière simple de contrôler sa position et sa taille.</p> +<p>Le reste du contenu du document s'écoule normalement autour de l'élément flottant. Vous pouvez contrôler ceci à l'aide de la propriété <code>clear</code> sur d'autres éléments pour les désolidariser des éléments flottants et les ramener en dessous.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Dans votre document d'exemple, les listes s'étalent sur toute la largeur de la fenêtre. Vous pouvez les en empêcher en les faisant flotter à gauche. + <p>Pour que les titres restent en place, vous devez également spécifier qu'ils resteront à l'écart des éléments flottants à leur gauche :</p> + <div style="width: 30em;"> + <pre class="eval"> +ul, #numerote {float: left;} +h3 {clear: left;} +</pre> + </div> + <p>Le résultat devrait ressembler à ceci :</p> + <table style="border: 2px outset #36b; padding: 1em; width: 30em; background-color: white;"> + <tbody> + <tr> + <td> + <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em; border-top: 1px solid gray;">(A) Les océans</p> + <div style="float: left; border: 12px solid #69b; margin-bottom: 16px; padding-left: 1em;"> + <ul style=""> + <li style="">Arctique</li> + <li style="">Atlantique</li> + <li style="">Pacifique</li> + <li style="">Indien</li> + <li style="">Antarctique</li> + </ul> + </div> + <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em; border-top: 1px solid gray;">(B) Paragraphes numérotés</p> + <div style="float: left; border: 12px solid #69b; margin-bottom: 8px; padding-left: .5em;"> + <p><b>1 : </b>Lorem ipsum</p> + <p><b>2 : </b>Dolor sit</p> + <p><b>3 : </b>Amet consectetuer</p> + <p><b>4 : </b>Magna aliquam</p> + <p><b>5 : </b>Autem veleum</p> + </div> + </td> + </tr> + </tbody> + </table> + <p>(Une petite marge intérieure est nécessaire à droite des boîtes, là où la bordure est trop proche du texte.)</p> + </td> + </tr> + </tbody> +</table> +<h4 id="Positionnement" name="Positionnement">Positionnement</h4> +<p>Vous pouvez spécifier la position d'un élément de quatre manières différentes à l'aide de la propriété <code>position</code> et de l'une des valeurs suivantes.</p> +<p>L'utilisation de ces propriétés peut être très avancée. Il est cependant possible de les utiliser de manière simple — c'est pourquoi elles sont mentionnées dans ce tutoriel basique. Mais leur utilisation dans des mises en page complexes peut s'avérer difficile.</p> +<ul> + <li><code>relative</code></li> +</ul> +<dl> + <dd> + La position de l'élément est déplacée relativement à sa position normale.</dd> + <dd> + Utilisez ceci pour déplacer un élément d'une certaine distance spécifiée. Dans certains cas, vous pouvez aussi utiliser les marges de l'élément pour obtenir le même effet.</dd> +</dl> +<ul> + <li><code>fixed</code></li> +</ul> +<dl> + <dd> + La position de l'élément est fixée.</dd> + <dd> + Spécifie la position de l'élément relativement à la fenêtre du document. Même si le reste du document défile, l'élément reste en place.</dd> +</dl> +<ul> + <li><code>absolute</code></li> +</ul> +<dl> + <dd> + La position de l'élément est fixée relativement à un élément parent.</dd> + <dd> + Cela fonctionnera uniquement lorsque l'élément parent est lui-même positionné avec <code>relative</code>, <code>fixed</code> ou <code>absolute</code>.</dd> +</dl> +<dl> + <dd> + Vous pouvez rendre n'importe quel élément parent utilisable pour ceci en lui spécifiant une <code>position: relative;</code> sans par ailleurs lui spécifier aucun déplacement.</dd> +</dl> +<ul> + <li><code>static</code></li> +</ul> +<dl> + <dd> + La valeur par défaut. Utilisez cette valeur pour désactiver explicitement les autres sortes de positionnement.</dd> +</dl> +<p>En complément de ces valeurs de la propriété <code>position</code> (à l'exception de <code>static</code>), spécifiez une ou plusieurs de ces propriétés : <code>top</code> (haut), <code>right</code> (droite), <code>bottom</code> (bas), <code>left</code> (gauche), <code>width</code> (largeur), <code>height</code> (hauteur) pour identifier où l'élément doit se positionner, et éventuellement sa taille.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Pour positionner deux éléments l'un au dessus de l'autre, créez un élément parent conteneur avec les deux éléments à l'intérieur de celui-ci : + <div style="width: 30em;"> + <pre class="eval"> +<DIV id="parent-div"> +<P id="forward">/</P> +<P id="back">\</P> +</DIV> +</pre> + </div> + <p>Dans votre feuille de style, rendez la position de l'élément parent <code>relative</code>. Il n'est pas nécessaire de spécifier un déplacement. Rendez ensuite la position des enfants <code>absolute</code> :</p> + <div style="width: 30em;"> + <pre> +#parent-div { + position: relative; + font: bold 200% sans-serif; + } + +#forward, #back { + position: absolute; + margin:0px; + top: 0px; + left: 0px; + } + +#forward { + color: blue; + } + +#back { + color: red; + } +</pre> + </div> + <p>Le résultat ressemble à ceci, avec la barre oblique inversée par dessus l'autre barre oblique :</p> + <div style="position: relative; left: .33em; font: bold 300% sans-serif;"> + <p style="position: absolute; margin: 0px; top: 0px; left: 0px; color: blue;">/</p> + <p style="position: absolute; margin: 0px; top: 0px; left: 0px; color: red;">\</p> + </div> + <table style="border: 2px outset #36b; padding: 1em; width: 30em; height: 5em; background-color: white;"> + <tbody> + <tr> + <td> </td> + </tr> + </tbody> + </table> + <p> </p> + </td> + </tr> + </tbody> +</table> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4; margin-bottom: 1em;"> + <caption> + Plus de détails</caption> + <tbody> + <tr> + <td>L'ensemble des informations sur le positionnement prend deux chapitres entiers et assez complexes dans la spécification CSS : <a class="external" href="http://www.w3.org/TR/CSS21/visuren.html">Visual formatting model</a> et <a class="external" href="http://www.w3.org/TR/CSS21/visudet.html">Visual formatting model details</a>. + <p>Si vous réalisez des feuilles de style devant fonctionner dans de nombreux navigateurs, vous devrez aussi prendre en compte les différences dans la manière dont ceux-ci interprètent le standard, voire les erreurs présentes dans certaines versions particulières de certains d'entre-eux.</p> + </td> + </tr> + </tbody> +</table> +<h3 id="Action_:_sp.C3.A9cification_d.27une_mise_en_page" name="Action_:_sp.C3.A9cification_d.27une_mise_en_page">Action : spécification d'une mise en page</h3> +<p>Modifiez vos exemples de document et de feuille de style à l'aide des exemples ci-dessus dans les sections <b>Structure du document</b> et <b>Éléments flottants</b>.</p> +<p>Dans l'exemple des éléments flottants, ajoutez une marge intérieure (padding) pour séparer le texte de la bordure de droite de 0.5 em.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Challenge</caption> + <tbody> + <tr> + <td>Modifiez votre document en ajoutant cette balise près de la fin, juste avant <code></BODY></code> + <pre> +<IMG id="fixed-pin" src="punaise-jaune.png" alt="Punaise jaune"> +</pre> + <p>Si vous n'avez pas téléchargé l'image plus tôt dans ce tutoriel, téléchargez-la maintenant :</p> + <table style="border: 2px solid #ccc;"> + <tbody> + <tr> + <td><img alt="Image:punaise-jaune.png"></td> + </tr> + </tbody> + </table> + <p>Essayez de deviner où l'image apparaîtra dans votre document. Actualisez dans votre navigateur pour voir si vous aviez raison.</p> + <p>Ajoutez une règle à votre feuile de style qui fixe l'image en haut à droite de votre document.</p> + <p>Actualisez dans votre navigateur et réduisez la taille de la fenêtre. Vérifiez que l'image reste en haut à droite même lorsque vous faites défiler votre document :</p> + <div style="position: relative; width: 29.5em; height: 18em;"> + <div style="overflow: auto; border: 2px outset #36b; padding: 1em; width: 29em; height: 16em; background-color: white;"> + <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em; border-top: 1px solid gray;">(A) Les océans</p> + <div style="float: left; border: 12px solid #69b; margin-bottom: 16px; padding: 0px .5em 0px 1em;"> + <ul style=""> + <li style="">Arctique</li> + <li style="">Atlantique</li> + <li style="">Pacifique</li> + <li style="">Indien</li> + <li style="">Antarctique</li> + </ul> + </div> + <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em; border-top: 1px solid gray;">(B) Paragraphes numérotés</p> + <div style="float: left; border: 12px solid #69b; padding: 0 .5em 0 .5em;"> + <p><b>1 : </b>Lorem ipsum</p> + <p><b>2 : </b>Dolor sit</p> + <p><b>3 : </b>Amet consectetuer</p> + <p><b>4 : </b>Magna aliquam</p> + <p><b>5 : </b>Autem veleum</p> + </div> + <p style=""> </p> + <div style="position: absolute; top: 2px; right: 0px;"> + <img alt="Punaise jaune"></div> + </div> + </div> + </td> + </tr> + </tbody> +</table> +<p> </p> +<h4 id="Pour_continuer" name="Pour_continuer">Pour continuer</h4> +<p>Si vous avez eu des difficultés à comprendre cette page, ou avez d'autres commentaires à son sujet, n'hésitez pas à contribuer à sa <a>page de discussion</a>.</p> +<p>Vous avez presque couvert tous les sujets de ce tutoriel CSS basique. La page suivante décrit des sélecteurs plus avancés pour les règles CSS, et certaines manières spécifiques de styler des tableaux : <b><a href="/fr/docs/CSS/Premiers_pas/Tableaux">Tableaux</a></b>.</p> diff --git a/files/fr/conflicting/learn/css/css_layout/introduction/index.html b/files/fr/conflicting/learn/css/css_layout/introduction/index.html new file mode 100644 index 0000000000..526af5a0b0 --- /dev/null +++ b/files/fr/conflicting/learn/css/css_layout/introduction/index.html @@ -0,0 +1,404 @@ +--- +title: La disposition en CSS +slug: Apprendre/CSS/Introduction_à_CSS/La_disposition +tags: + - Apprendre + - CSS +translation_of: Learn/CSS/CSS_layout/Introduction +translation_of_original: Learn/CSS/Basics/Layout +--- +<p>{{PreviousNext("Apprendre/CSS/Les_bases/Le_modèle_de_boîte","Apprendre/CSS/Comment/Mettre_en_forme_du_texte")}}</p> + +<p class="summary"><span class="seoSummary">Pour organiser un document en positionnant ses éléments pour que la forme corresponde aux spécifications, on utilisera différentes propriétés CSS afin d'organiser la disposition des élément.</span> CSS fournit de nombreux mécanismes pour organiser la disposition du contenu d'un document et les techniques modernes sont suffisamment complexes pour être décrites dans des articles séparés. Dans cet article, nous verrons les techniques de base, utilisées depuis plusieurs années.</p> + +<p>Pour organiser correctement la disposition d'un document avec CSS, il y a quelques notions qu'il est préférable de connaître. Le concept le plus important est le flux du texte {{Glossary("HTML")}} et les façons dont on peut le modifier. Ces concepts clés sont essentiels et tous les mécanismes liés à la disposition feront référence à ce qui est expliqué ici..</p> + +<h2 id="Le_flux">Le flux</h2> + +<p>Simplifié à l'extrême, un document HTML est un document texte organisé avec des {{Glossary("balise","balises")}}. Dans un tel document, le texte « coule » sur les différentes lignes. Autrement dit, le texte est affiché dans le sens de lecture (de gauche à droite pour les langages latins comme le français ou l'italien) et est fragmenté automatiquement pour passer à la ligne à chaque fois que le texte atteint le bord du document.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/11955/line-break-flow.svg" style="height: auto; max-width: 450px;"></p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/11955/line-break-flow.svg#large" style="height: auto; max-width: 450px;"></p> + +<p>Chaque {{Glossary("élément")}} du document pourra modifier ce flux de texte :</p> + +<ul> + <li>Certains éléments suivront simplement le flux, comme s'ils n'existaient pas</li> + <li>Certains éléments pourront forcer le passage à la ligne, que le texte ait atteint la limite du document ou non</li> + <li>Certains éléments pourront créer un nouveau flux de texte pour leur contenu, flux indépendant du flux de texte « extérieur ».</li> +</ul> + +<h3 id="Les_catégories_d'affichage_des_éléments">Les catégories d'affichage des éléments</h3> + +<p>CSS est utilisé pour définir la façon dont un élément HTML se comporte dans ce flux et comment il s'y inscrit. Le comportement d'un élément est défini avec la propriété {{cssxref('display')}}. Cette propriété peut prendre plusieurs valeurs mais voyons ici les quatre valeurs les plus importantes :</p> + +<dl> + <dt><code>none</code></dt> + <dd>Cette valeur retire l'élément du flux, comme si l'élément et son contenu n'existaient pas.</dd> + <dt><code>inline</code></dt> + <dd>Cette valeur rend l'élément transparent au sens où il s'inscrit dans le flux de texte global, il est donc associé au texte l'environnant.</dd> + <dt><code>block</code></dt> + <dd>Cette valeur cassera le flux de texte pour insérer l'élément. Cela provoquera donc un saut de ligne avant et après. Le contenu de cet élément ne fait donc pas partie du flux global et suit donc les contraintes de l'élément définies par <a href="/fr/Apprendre/CSS/Les_bases/Le_modèle_de_boîte">le modèle de boîte</a>.</dd> + <dt><code>inline-block</code></dt> + <dd>Cette valeur est en quelque sorte un intermédiaire entre <code>inline</code> et <code>block</code>. Comme avec <code>inline</code>, les boîtes seront placées dans le flux global mais , comme avec <code>block</code>, le contenu ne fera pas partie du texte environnant..</dd> +</dl> + +<p>Prenons un exemple.</p> + +<p>Voici le code HTML qui sera utilisé :</p> + +<pre class="brush: html"><p class="none"> + 1. Je suis un chat noir, + <span>qui marche sous l'échelle </span> + et qui casse des miroirs. +</p> + +<p class="inline"> + 2. Je suis un chat noir, + <span>qui marche sous l'échelle </span> + et qui casse des miroirs. +</p> + +<p class="block"> + 3. Je suis un chat noir, + <span>wqui marche sous l'échelle </span> + et qui casse des miroirs. +</p> + +<p class="inline-block"> + 4. Je suis un chat noir, + <span>qui marche sous l'échelle </span> + et qui casse des miroirs. +</p> +</pre> + +<p>On appliquera la feuille de style CSS suivante :</p> + +<pre class="brush: css">span { + width: 5em; + background: yellow; +} + +.none span { display: none; } +.inline span { display: inline; } +.block span { display: block; } +.inline-block span { display: inline-block; }</pre> + +<p>Cela fournira le résultat suivant :</p> + +<p>{{EmbedLiveSample("Les_catégories_d'affichage_des_éléments", '100%', '300px')}}</p> + +<h2 id="Modifier_le_flux">Modifier le flux</h2> + +<p>En utilisant la propriété <code>display</code>, vous pouvez déjà modifier le flux. Il est toutefois possible d'aller plus loin.</p> + +<h3 id="La_disposition_du_texte">La disposition du texte</h3> + +<p>En fin de compte, un document n'est qu'un long flux de texte et CSS fournit de nombreuses propriétés pour gérer la disposition du texte. La disposition du texte regroupe tout ce qui touche aux règles des sauts de ligne et à la façon dont le texte est positionné par rapport à la ligne de base naturelle.</p> + +<p>Ces propriétés sont : {{cssxref("hyphens")}}, {{cssxref("text-align")}}, {{cssxref("text-align-last")}}, {{cssxref("text-indent")}}, {{cssxref("vertical-align")}}, {{cssxref("white-space")}}, {{cssxref("word-break")}} et {{cssxref("word-wrap")}}.</p> + +<p>À l'exception de <code>text-align</code> et de <code>text-indent</code>, les autres propriétés ont des effets plutôt subtils sur le texte. Quant à <code>vertical-align</code>, il est souvent utilisé avec des boîtes en mode <code>inline-block</code>.</p> + +<p>Là encore, un exemple vaut mieux qu'un long discours.</p> + +<p>HTML :</p> + +<pre class="brush: html"><p lang="en">WHEN Scrooge awoke, it was so dark, that looking out of bed, he could scarcely distinguish the transparent window from the opaque walls of his chamber. He was endeavouring to pierce the darkness with his ferret eyes, when the chimes of a neighbouring church struck the four quarters. So he listened for the hour. To his great astonishment the heavy bell went on from six to seven, and from seven to eight, and regularly up to twelve; then stopped. Twelve! It was past two when he went to bed. The clock was wrong. An icicle must have got into the works. Twelve! He touched the spring of his repeater, to correct this most preposterous clock. Its rapid little pulse beat twelve: and stopped.</p> +<p class="format" lang="en">WHEN Scrooge awoke, it was so dark, that looking out of bed, he could scarcely distinguish the transparent window from the opaque walls of his chamber. He was endeavouring to pierce the darkness with his ferret eyes, when the chimes of a neighbouring church struck the four quarters. So he listened for the hour. To his great astonishment the heavy bell went on from six to seven, and from seven to eight, and regularly up to twelve; then stopped. Twelve! It was past two when he went to bed. The clock was wrong. An icicle must have got into the works. Twelve! He touched the spring of his repeater, to correct this most preposterous clock. Its rapid little pulse beat twelve: and stopped.</p> +</pre> + +<p>CSS :</p> + +<pre class="brush: css">.format { + /* On « tire » la première ligne sur + une distance de 2em */ + text-indent: -2em; + + /* Il faut compenser l'indentation négative + si on veut éviter que du texte saute et + pour garder l'ensemble du texte dans la + boîte de l'élément */ + padding-left: 2em; + + /* Le texte est aligné par rapport aux deux + bords et l'espace entre les mots est ajusté + pour le remplissage de la ligne */ + text-align: justify; + + /* La dernière ligne de texte du bloc est + centrée*/ + -moz-text-align-last: center; + text-align-last: center; + + /* Plutôt que le saut de ligne se fasse entre deux mots, + il peut être fait en découpant un mot, selon les règles + de la langue utilisée. Cela permet de découper le texte + clairement avec un trait d'union. Si cela ne vous + importe pas, vous pouvez utiliser word-break ou + word-wrap à la place */ + -webkit-hyphens: auto; + -moz-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto; +}</pre> + +<div class="note"> +<p><strong>Note :</strong> Comme vous avez pu le voir, certaines propriétés sont écrites plusieurs fois avec un préfixe. Certaines propriétés sont expérimentales pour certains navigateurs et doivent donc être préfixées, c'est une bonne pratique que de les utiliser préfixées tant qu'elles sont expérimentales, tout en fournissant le nom de la propriété standard à la fin afin d'avoir la meilleure rétrocompatibilité possible.</p> +</div> + +<p>Le résultat obtenu sera :</p> + +<p>{{EmbedLiveSample('La_disposition_du_texte', '100%', '350')}}</p> + +<div class="note"> +<p><strong>Note :</strong> L'astuce utilisée pour compenser l'indentation négative est une astuce assez courante. Tout propriété qui accepte une longueur peut accepter une valeur négative. En jouant avec les valeurs négatives et en les compensant avec d'autres propriétés, il est possible de produire des effets visuels très intéressants, notamment quand on manipule les propriétés liées au modèle de boîte.</p> +</div> + +<h3 id="Le_flottement">Le flottement</h3> + +<p>C'est une chose que de gérer du texte mais on va également vouloir positionner une boîte dans le document. Pour commencer, il faut gérer les boîtes flottantes. Les boîtes flottantes sont toujours attachées au flux global de texte mais le texte « coulera » autour. Si cela vous paraît, prenons un exemple.</p> + +<h4 id="Le_flottement_simple">Le flottement simple</h4> + +<p>HTML :</p> + +<pre class="brush: html"><div> + <p class="excerpt">"Why, it isn't possible," said Scrooge, "that I can have slept through a whole day and far into another night. It isn't possible that anything has happened to the sun, and this is twelve at noon!" </p> + <p> The idea being an alarming one, he scrambled out of bed, and groped his way to the window. He was obliged to rub the frost off with the sleeve of his dressing-gown before he could see anything; and could see very little then. All he could make out was, that it was still very foggy and extremely cold, and that there was no noise of people running to and fro, and making a great stir, as there unquestionably would have been if night had beaten off bright day, and taken possession of the world. This was a great relief, because "three days after sight of this First of Exchange pay to Mr. Ebenezer Scrooge or his order," and so forth, would have become a mere United States' security if there were no days to count by.</p> +</div></pre> + +<p>CSS :</p> + +<pre class="brush: css">.excerpt { + /* Une boîte flottante agira comme un bloc + quelle que soit la valeur de display */ + display: block; + + /* La boîte flottera à gauche ce qui signifie + qu'elle sera sur la partie gauche du bloc + englobant et que le texte « coulera » sur sa + droite. */ + float: left; + + /* Il est nécessaire de déclarer une largeur pour + une boîte flottante. Si on ne le fait pas, la + largeur sera calculée automatiquement et occupera + autant d'espace que possible. Cela aurait eu le + même effet qu'un bloc ordinaire. */ + width: 40%; + + /* On définit une marge à droite et en bas pour éviter + que le texte qui flotte autour soit collé à celui de + la boîte */ + margin: 0 1em 1em 0; + + /* On rend la boîte flottante plus visible avec une + oucleur d'arrière-plan */ + background: lightgrey; + + /* Puisque l'arrière-plan est opaque, on ajoute un écart + entre le contenu et les bords de la boîte */ + padding: 1em; +}</pre> + +<p>Ces éléments permettront d'avoir :</p> + +<p>{{ EmbedLiveSample('Le_flottement_simple', '100%', '280') }}</p> + +<h4 id="Organiser_une_disposition_avec_le_flottement">Organiser une disposition avec le flottement</h4> + +<p>La méthode précédente est simple et illustre comment manipuler le flux. Il est possible d'aller plus loin et d'organiser l'ensemble de la disposition du document avec. Les boîtes flottantes dans une direction donnée s'empilent horizontalement, cela permet de créer très facilement des lignes de boîtes. Les boîtes qui sont des blocs forment s'empilent elles sous forme de colonnes.</p> + +<p>Là encore, illustrons le point avec un exemple.</p> + +<p>HTML :</p> + +<pre class="brush: html"><div class="layout"> + <div class="row"> + <p class="cell size50">Scrooge went to bed again, and thought, and thought, and thought it over and over and over, and could make nothing of it. The more he thought, the more perplexed he was; and the more he endeavoured not to think, the more he thought.</p> + <p class="cell size50">Marley's Ghost bothered him exceedingly. Every time he resolved within himself, after mature inquiry, that it was all a dream, his mind flew back again, like a strong spring released, to its first position, and presented the same problem to be worked all through, "Was it a dream or not?"</p> + </div> + <div class="row"> + <p class="cell size100">Scrooge lay in this state until the chime had gone three quarters more, when he remembered, on a sudden, that the Ghost had warned him of a visitation when the bell tolled one. He resolved to lie awake until the hour was passed; and, considering that he could no more go to sleep than go to Heaven, this was perhaps the wisest resolution in his power.</p> + </div> + <div class="row"> + <p class="cell size33">The quarter was so long, that he was more than once convinced he must have sunk into a doze unconsciously, and missed the clock. At length it broke upon his listening ear.</p> + <p class="cell size33"> + "Ding, dong!"<br> + "A quarter past," said Scrooge, counting.<br> + "Ding, dong!"<br> + "Half-past!" said Scrooge.<br> + "Ding, dong!"<br> + "A quarter to it," said Scrooge. + </p> + <p class="cell size33"> + "Ding, dong!"<br> + "The hour itself," said Scrooge, triumphantly, "and nothing else!"<br> + He spoke before the hour bell sounded, which it now did with a deep, dull, hollow, melancholy ONE. Light flashed up in the room upon the instant, and the curtains of his bed were drawn. + </p> + </div> +</div></pre> + +<p>CSS :</p> + +<pre class="brush: css">/* Le conteneur principal pour la disposition */ +.layout { + /* On ajoute un arrière-plan pour le rendre + visible */ + background: lightgrey; + + /* On ajoute un léger interstice pour harmoniser + la distance entre le contenu des cellules et + la bordure du conteneur principal */ + padding : 0.5em; +} + +/* Ici, on empêche les boîtes flottantes de + dépasser d'un conteneur (ce qui peut arriver + si le conteneur est vide car il aura alors + une hauteur nulle). Avec overflow + hidden, la boîte flottante ne passera pas à + travers et la boîte parente sera agrandie + pour éviter un dépassement de la boîte. */ +.row { + overflow: hidden; +} + +/* Chaque cellule sera une boîte flottante à gauche */ +.cell { + float : left; + + /* On ajoute du padding pour créer un écart visuel + entre les cellules */ + padding : 0.5em; + + /* Étant donné qu'on ajoute du padding, il faut + s'assurer que cela ne touchera pas la largeur + de la boîte. */ + box-sizing: border-box; + + /* Comme la marge ne peut pas être contrôlée par + la propriété box-sizing, on s'assure d'en + avoir aucune appliquée ici. */ + margin : 0; +} + +/* Voici les tailles appliquées aux boîtes */ +.size33 { width: 33%; } /* Pas un tiers mais presque */ +.size50 { width: 50%; } /* Une moitié */ +.size100 { width: 100%; } /* Une ligne */</pre> + +<p>Cela donnera le résultat suivant :</p> + +<p>{{EmbedLiveSample('Organiser_une_disposition_avec_le_flottement', '100%', '520')}}</p> + +<p>De nombreux <em>frameworks</em> CSS utilisent ces méthodes de boîtes flottantes. C'est une technique robuste et connue mais qui a ses limites : tout doit être géré avec le flux, il n'est pas possible de gérer un ordre arbitraire pour les boîtes, de gérer des dimensionnements variables et il est impossible de centrer verticalement des éléments. Nous vous encourageons à poursuivre la réflexion, <a href="http://www.positioniseverything.net/articles/onetruelayout/">les boîtes flottantes sont étudiées depuis longtemps (article en anglais)</a> et constituent une des solutions les plus robustes pour gérer une disposition simple, compatible avec les navigateurs historiques.</p> + +<p>Si vous souhaitez en savoir plus sur les subtilités des boîtes flottantes, nous vous invitons à lire <em><a href="https://css-tricks.com/all-about-floats/">All about float</a></em> (en anglais) par Chris Coyer.</p> + +<h3 id="Le_positionnement">Le positionnement</h3> + +<p>Si les boîtes flottantes font partie du flux, il existe un autre mécanisme qui permet d'organiser une disposition en extrayant les boîtes du flux : le positionnement CSS. Le positionnement fonctionne en définissant un contexte de positionnement grâce à la propriété {{cssxref("position")}} puis en permettant aux boites de se positionner en utilisant les propriétés {{cssxref("top")}}, {{cssxref("left")}}, {{cssxref("right")}}, and {{cssxref("bottom")}}.</p> + +<p>La propriété {{cssxref("position")}} peut prendre quatre valeurs différentes :</p> + +<dl> + <dt><code>static</code></dt> + <dd>La valeur par défaut pour tous les éléments : ils font partie du flux et on ne définit pas un contexte de positionnement spécifique.</dd> + <dt><code>relative</code></dt> + <dd>Avec cette valeur, les éléments font toujours partie du flux mais peuvent être déplacés visuellement avec les valeurs des propriétés {{cssxref("top")}}, {{cssxref("left")}}, {{cssxref("right")}} et {{cssxref("bottom")}}. Ces propriétés définissent le contexte de positionnement des éléments fils.</dd> + <dt><code>absolute</code></dt> + <dd>Avec cette valeur, les éléments ne sont plus placés dans le flux et ne l'influencent plus. La position du bloc est définie avec les propriétés {{cssxref("top")}}, {{cssxref("left")}}, {{cssxref("right")}} et {{cssxref("bottom")}}. Le point de position 0,0 représente le coin en haut à gauche de l'élément parent le plus proche qui définit un contexte de positionnement autre que <code>static</code>. S'il n'y a pas de tel parent, la position 0,0 représente le coin en haut à gauche du document.</dd> + <dt><code>fixed</code></dt> + <dd>Avec cette valeur, les éléments ne sont plus placés dans le flux et ne l'influencent plus. La position du bloc est définie avec les propriétés {{cssxref("top")}}, {{cssxref("left")}}, {{cssxref("right")}}, and {{cssxref("bottom")}}. La position 0,0 représente le coin en haut à gauche de fenêtre du navigateur ({{Glossary("viewport")}}).</dd> +</dl> + +<p>Les boîtes positionnées de cette façon peuvent s'empiler les unes sur les autres. Dans ce cas, il est possible de changer l'ordre d'empilement grâce à la propriété {{cssxref("z-index")}}.</p> + +<p>Une dernière fois, prenons un exemple pour illustrer le concept.</p> + +<p>Le code HTML pour le document sera :</p> + +<pre class="brush: html"><p> + The curtains of his bed were drawn aside, I tell you, by a hand. Not the curtains at his feet, nor the curtains at his back, but those to which his face was addressed. The curtains of his bed were drawn aside; and Scrooge, starting up into a half-recumbent attitude, found himself face to face with the unearthly visitor who drew them: as close to it as I am now to you, and I am standing in the spirit at your elbow. + <span class="topleft">1</span> +</p> +<p class="relative"> + It was a strange figure--like a child: yet not so like a child as like an old man, viewed through some supernatural medium, which gave him the appearance of having receded from the view, and being diminished to a child's proportion. Its hair, which hung about its neck and down its back, was white as if with age; and yet the face had not a wrinkle in it, and the tenderest bloom was on the skin. The arms were very long and muscular; the hands the same, as if its hold were of uncommon strength. Its legs and feet, most delicately formed, were, like those upper members, bare. It wore a tunic of the purest white; and round its waist was bound a lustrous belt, the sheen of which was beautiful. It held a branch of fresh green holly in its hand; and, in singular contradiction of that wintry emblem, had its dress trimmed with summer flowers. But the strangest thing about it was, that from the crown of its head there sprung a bright clear jet of light, by which all this was visible; and which was doubtless the occasion of its using, in its duller moments, a great extinguisher for a cap, which it now held under its arm. + <span class="topleft">2</span> + <span class="stackdown">3</span> + <span class="stackup">4</span> +</p></pre> + +<p>La feuille de style CSS sera :</p> + +<pre class="brush: css">p { + margin: 1em +} + +span { + font : 2em sans-serif; + width : 6rem; + + /* Avoir la hauteur de l'élément et la hauteur + de la ligne avec la même valeur permet de + centrer verticalement une ligne de texte. */ + height : 6rem; + line-height: 6rem; + + text-align : center; + background : rgba(0, 255, 255, 0.8); +} + +.relative { + position: relative; +} + +/* Tous les éléments de la classe "topleft" + sont positionnés dans le coin en haut à + gauche de leur parent dans le contexte + de positionnement */ +.topleft { + position: absolute; + top : 0; + left : 0; +} + +.stackup { + position: absolute; + top : 37%; + left : 62%; + + /* Tous les éléments de la classe "stackup" + sont placés au-dessus des éléments dont + le z-index est inférieur à 2 dans le même + contexte de positionnement. */ + z-index : 2; +} + +.stackdown { + position: absolute; + top : 50%; + left : 66%; + + /* Tous les éléments de la classe "stackdown" + sont placés sous les éléments dont le + z-index est supérieur à 1 dans le même + contexte de positionnement. */ + z-index : 1; +} +</pre> + +<p>La combinaison de ces deux éléments donnera le résultat suivant :</p> + +<p>{{EmbedLiveSample('Le_positionnement', '100%', '400')}}</p> + +<p>Bien que le positionnement CSS ne soit pas réellement utile pour complètement organiser une disposition, il est généralement judicieux pour obtenir certains effets liés à la navigation, aux bulles d'informations, etc. C'est un mécanisme que vous rencontrerez fréquemment et nous vous encourageons donc à vous familiariser avec. Parmi les ressources qui existent par ailleurs, nous vous conseillons particulièrement de lire l'article <em><a href="http://alistapart.com/article/css-positioning-101">CSS positioning 101</a></em> (en anglais), de Noah Stokes.</p> + +<h2 id="La_suite">La suite</h2> + +<p>Le flux, les boîtes flottantes et le positionnement CSS sont les bases qui vous permettront d'approfondir la création d'une disposition en CSS. Suite à cette série d'articles sur les concepts théoriques de CSS, vous connaissez tout ce qu'il faut pour exploiter au mieux CSS. Après ce vernis théorique, vous pouvez aborder <a href="/fr/docs/Apprendre/CSS/Comment">les aspects pratiques de CSS</a>. Si vous souhaitez approfondir les concepts sur la disposition et découvrir les autres mécanismes à ce sujet, vous pouvez consulter les articles sur : les tableaux, <a href="/fr/docs/Web/CSS/Colonnes_CSS3">l'organisation à plusieurs colonnes</a> et <a href="/fr/docs/Web/CSS/CSS_Flexible_Box_Layout/Utilisation_des_flexbox_en_CSS">la disposition avec les boîtes flexibles (<em>flexbox</em>)</a>.</p> + +<p>{{PreviousNext("Apprendre/CSS/Les_bases/Le_modèle_de_boîte","Apprendre/CSS/Comment/Mettre_en_forme_du_texte")}}</p> diff --git a/files/fr/conflicting/learn/css/first_steps/how_css_is_structured/index.html b/files/fr/conflicting/learn/css/first_steps/how_css_is_structured/index.html new file mode 100644 index 0000000000..57da469f28 --- /dev/null +++ b/files/fr/conflicting/learn/css/first_steps/how_css_is_structured/index.html @@ -0,0 +1,155 @@ +--- +title: Des CSS lisibles +slug: CSS/Premiers_pas/Des_CSS_lisibles +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/CSS/Introduction_to_CSS/Syntax#Beyond_syntax_make_CSS_readable +translation_of_original: Web/Guide/CSS/Getting_started/Readable_CSS +--- +<p> </p> +<p>Cette page aborde le style et la grammaire du langage CSS lui-même.</p> +<p>Vous modifierez l'aspect de votre fichier CSS pour le rendre plus lisible.</p> +<h3 id="Information_:_des_CSS__lisibles" name="Information_:_des_CSS__lisibles">Information : des CSS lisibles</h3> +<p>Vous pouvez ajouter des blancs et des commentaires à vos feuilles de style pour les rendre plus lisibles. Vous pouvez également grouper des sélecteurs ensemble, lorsque les même règles s'appliquent à des éléments sélectionnés de manière différente.</p> +<h4 id="Insertion_de_blancs" name="Insertion_de_blancs">Insertion de blancs</h4> +<p>Les feuilles de style peuvent être aérées à l'aide d'espaces, de tabulations et de retours à la ligne. Elles deviendront ainsi plus lisibles.</p> +<p>Votre fichier CSS d'exemple a actuellement une règle par ligne, et à peu près le minimum possible d'espaces blancs. Dans une feuille de style complexe, ce type de mise en page devient rapidement difficile à lire, et rend la feuille difficile à maintenir.</p> +<p>La mise en page à utiliser est généralement une question de préférence personnelle, mais si vos feuilles de style font partie de projets partagés, ceux-ci peuvent avoir leurs propres conventions.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemples</caption> + <tbody> + <tr> + <td>Certaines personnes aiment la mise en page compacte que nous avons utilisée jusqu'à présent, ne coupant une ligne que lorsqu'elle devient très longue : + <pre> +.carotte {color: orange; text-decoration: underline; font-style: italic;} +</pre> + <p>D'autres préfèrent un couple propriété-valeur par ligne :</p> + <div style="width: 45em;"> + <pre class="eval"> +.carotte +{ +color: orange; +text-decoration: underline; +font-style: italic; +} +</pre> + </div> + <p>Certains utilisent une indentation — deux espaces, quatre espaces, ou encore une tabulation :</p> + <div style="width: 45em;"> + <pre class="eval"> +.carotte { + color: orange; + text-decoration: underline; + font-style: italic; +} +</pre> + </div> + <p>D'autres apprécient que tout soit aligné verticalement (mais ce type de mise en page est difficile à maintenir) :</p> + <div style="width: 45em;"> + <pre class="eval"> +.carotte + { + color : orange; + text-decoration : underline; + font-style : italic; + } +</pre> + </div> + <p>Par ailleurs, si certains utilisent des tabulations, d'autres utiliseront uniquement des espaces.</p> + </td> + </tr> + </tbody> +</table> +<h4 id="Commentaires" name="Commentaires">Commentaires</h4> +<p>Les commentaires en CSS commencent avec <code>/*</code> et se terminent par <code>*/</code>.</p> +<p>Vous pouvez utiliser les commentaires pour ajouter vos remarques dans la feuille de style, mais aussi pour <em>mettre en commentaire</em> temporairement certaines parties à des fins de tests.</p> +<p>Pour mettre en commentaire une partie de feuille de style, placez les marques de commentaire de part et d'autre de celle-ci afin que le navigateur l'ignore. Veillez à commencer et à terminer le commentaire à des endroits appropriés, le reste de la feuille de style doit conserver une syntaxe correcte.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td> + <div style="width: 45em;"> + <pre class="eval"> +/* style pour la lettre C initiale dans le premier paragraphe */ +.carotte { + color: orange; + text-decoration: underline; + font-style: italic; + } +</pre> + </div> + </td> + </tr> + </tbody> +</table> +<h4 id="S.C3.A9lecteurs_group.C3.A9s" name="S.C3.A9lecteurs_group.C3.A9s">Sélecteurs groupés</h4> +<p>Lorsque beaucoup d'éléments ont le même style, vous pouvez spécifier un groupe de sélecteurs en les séparant par des virgules. La déclaration s'applique à chacun des éléments sélectionnés.</p> +<p>Ailleurs dans votre feuille de style, vous pouvez spécifier à nouveau les mêmes sélecteurs individuellement, pour leur appliquer des règles de style uniques.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Cette règle rend les éléments <small>H1</small>, <small>H2</small> et <small>H3</small> de la même couleur. + <p>Il est pratique de spécifier la couleur en un seul endroit, au cas où celle-ci doit être changée par la suite.</p> + <div style="width: 30em;"> + <pre class="eval"> +/* couleur pour les titres */ +h1, h2, h3 {color: navy;} +</pre> + </div> + </td> + </tr> + </tbody> +</table> +<h3 id="Action_:_ajout_de_commentaires_et_am.C3.A9lioration_de_la_mise_en_page" name="Action_:_ajout_de_commentaires_et_am.C3.A9lioration_de_la_mise_en_page">Action : ajout de commentaires et amélioration de la mise en page</h3> +<p>Éditez votre fichier CSS, et assurez-vous qu'il comporte les règles suivantes (dans n'importe quel ordre) :</p> +<div style="width: 30em;"> + <pre class="eval">strong {color: red;} +.carotte {color: orange;} +.epinard {color: green;} +#premier {font-style: italic;} +p {color: blue;} +</pre> +</div> +<p>Rendez-le plus lisible en le réarrangeant d'une manière que vous trouvez logique, et en ajoutant des blancs et des commentaires où vous les trouvez appropriés.</p> +<p>Enregistrez le fichier et actualisez l'affichage de votre navigateur pour vérifier que vos changements n'ont pas affecté le fonctionnement de la feuille de style :</p> +<table style="border: 2px outset #36b; padding: 1em;"> + <tbody> + <tr> + <td style="font-style: italic; color: blue;"><strong style="color: orange;">C</strong>ascading <strong style="color: green;">S</strong>tyle <strong style="color: green;">S</strong>heets</td> + </tr> + <tr> + <td style="color: blue;"><strong style="color: red;">C</strong>ascading <strong style="color: red;">S</strong>tyle <strong style="color: red;">S</strong>heets</td> + </tr> + </tbody> +</table> +<p> </p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #ffe;"> + <caption> + Challenge</caption> + <tbody> + <tr> + <td>Mettez en commentaire une partie de votre feuille de style, sans rien changer d'autre, afin de rendre la toute première lettre de votre document rouge : + <table style="border: 2px outset #36b; padding: 1em; background-color: white;"> + <tbody> + <tr> + <td style="font-style: italic; color: blue;"><strong style="color: red;">C</strong>ascading <strong style="color: green;">S</strong>tyle <strong style="color: green;">S</strong>heets</td> + </tr> + <tr> + <td style="color: blue;"><strong style="color: red;">C</strong>ascading <strong style="color: red;">S</strong>tyle <strong style="color: red;">S</strong>heets</td> + </tr> + </tbody> + </table> + <p>(Il existe plusieurs manières de faire.)</p> + </td> + </tr> + </tbody> +</table> +<p> </p> +<h4 id="Pour_continuer" name="Pour_continuer">Pour continuer</h4> +<p>Votre feuille de style d'exemple mettait du texte en italique et souligné. La page suivante détaillera d'autres manières de spécifier l'apparence du texte dans votre document : <strong><a href="/fr/docs/CSS/Premiers_pas/Styles_de_texte" title="fr/CSS/Premiers_pas/Styles_de_texte">Styles de texte</a></strong></p> diff --git a/files/fr/conflicting/learn/css/first_steps/how_css_works/index.html b/files/fr/conflicting/learn/css/first_steps/how_css_works/index.html new file mode 100644 index 0000000000..ace461991e --- /dev/null +++ b/files/fr/conflicting/learn/css/first_steps/how_css_works/index.html @@ -0,0 +1,163 @@ +--- +title: Utiliser le CSS dans une page web +slug: Apprendre/CSS/Utiliser_CSS_dans_une_page_web +tags: + - Beginner + - CSS + - CodingScripting + - HTML + - NeedsActiveLearning +translation_of: Learn/CSS/First_steps/How_CSS_works +translation_of_original: Learn/CSS/Using_CSS_in_a_web_page +--- +<div>{{IncludeSubnav("/fr/Apprendre")}}</div> + +<div class="summary"> +<p>Cet article explique comment appliquer des styles {{glossary("CSS")}} à vos documents HTML.</p> +</div> + +<table class="learn-box standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Il peut être utile de savoir comment <a href="/fr/Learn/HTML/Write_a_simple_page_in_HTML">écrire une page HTML simple</a> et comment <a href="/fr/Learn/Set_up_a_basic_working_environment">configurer les éléments de base d'un site web</a>.</td> + </tr> + <tr> + <th scope="row">Objectif :</th> + <td>Apprendre trois méthodes différentes pour ajouter des éléments de style à votre page web.</td> + </tr> + </tbody> +</table> + +<p>Il existe deux méthodes permettant d'appliquer du code CSS à vos documents HTML : écrire du CSS directement dans le document HTML ou bien appeler un fichier CSS externe à partir du document HTML.</p> + +<p>Voyons comment appeler des informations CSS en utilisant les balises {{htmlelement("style")}} et {{htmlelement("link")}} et analysons ce qui se passe quand les deux balises sont utilisées conjointement.</p> + +<h2 id="Pédagogie_active">Pédagogie active</h2> + +<p><em>Il n'y a, pour le moment, pas d'apprentissage actif pour cette section. <a href="/fr/docs/MDN/D%C3%A9buter_sur_MDN">Vous pouvez néanmoins contribuer</a>.</em></p> + +<h2 id="Aller_plus_loin">Aller plus loin</h2> + +<h3 id="La_balise_<style>">La balise <code><style></code></h3> + +<p>Lorsque vous souhaitez mettre en forme une page, vous avez la possibilité d'inclure tout le formatage directement dans le document HTML à l'aide de la balise {{htmlelement("style")}} :</p> + +<pre><!DOCTYPE html> +<html> +<head> + <title>La fameuse page « Hello World »</title> + + <style> + body { + background:white; + color:blue; + } + </style> + +</head> + <body> + <p>Hello world!</p> + </body> +</html></pre> + +<p>Comme nous l'avons <a href="/en-US/Learn/Set_up_a_basic_working_environment">déjà souligné</a>, ce n'est pas la meilleure méthode pour mettre en forme une page web puisque, dans ce cas, il sera nécessaire de répéter cette portion de code dans toutes les autres pages de votre site. Cela sollicitera de la bande passante supplémentaire et vous fera également perdre du temps puisqu'il faudra recopier les styles à chaque fois pour mettre à jour chaque page.</p> + +<p>Néanmoins, comme nous le verrons à la fin, cette façon de procéder peut s'avérer utile lorsque l'objectif est d'appliquer un style à une seule page de votre site.</p> + +<h3 id="La_balise_<link>">La balise <code><link></code></h3> + +<p>La balise <code>{{htmlelement("link")}}</code> permet, entre autres choses, d'appliquer un formatage au document donné à partir d'une feuille de style externe. Lorsqu'un certain nombre de documents HTML utilisent cette même feuille de style, vous pouvez simplement modifier la mise en page de l'ensemble des documents grâce à un seul fichier.</p> + +<p>Prenons l'exemple de ce code CSS et plaçons le dans un fichier <code>demo.css</code> :</p> + +<pre>/* demo.css */ + body { + background:white; + color:blue; + }</pre> + +<p>Chaque fois qu'on a besoin d'appliquer ce style à un document, il suffit alors d'appeler le fichier <code>demo.css</code> grâce à la balise <code>link</code> :</p> + +<pre><!DOCTYPE html> +<html> +<head> + <title>La fameuse page « Hello World »</title> + + <link rel="stylesheet" href="demo.css"> + +</head> + <body> + <p>Hello world!</p> + </body> +</html></pre> + +<div class="note"> +<p>Pour en savoir plus sur la configuration des fichiers sur un serveur, vous pouvez vous reférer à la section <a href="/fr/Learn/Set_up_a_basic_working_environment">Comment configurer les éléments de base d'un site web</a>.</p> +</div> + +<p>Chaque page qui appellera le fichier <code>demo.css</code> via la balise <code>link</code> bénéficiera alors des styles contenus dans le fichier CSS. Cela permet non seulement de réduire la taille des fichiers HTML, de plus le système de cache (du serveur web, des serveurs de proxies et du navigateur) sera capable de lire le fichier <code>demo.css</code> autant de fois que nécessaire alors qu'il ne sera chargé en mémoire qu'une seule fois. Les performances en seront très largement améliorées.</p> + +<div class="note"> +<p id="Inferior_alternative.3A_<style>_.2B_.40import"><strong>Alternative imparfaite : <code><style></code> + <code>@import</code></strong></p> + +<p>A la place de la balise <code><link></code>, vous trouverez peut-être parfois cette syntaxe :</p> + +<pre><style type="text/css"> + @import url(demo.css); + </style></pre> + +<p>C'est une autre façon d'arriver au même résultat, mais nous recommandons d'utiliser <code><link></code> pour des raisons de performance (à l'inverse d' <code>@import</code>, la balise <code><link></code> permet en effet le téléchargement en parallèle de plusieurs ressources CSS). Il y a quelques années il était courant d'utiliser <code>@import</code> dans certains cas spécifiques de manière à ce que les anciens navigateurs ne lisent pas les instructions de formatage qu'ils ne supportaient pas correctement.</p> +</div> + +<h3 id="Utiliser_<style>_et_<link>_ensemble">Utiliser <code><style></code> et <code><link></code> ensemble</h3> + +<p>Les possibilités deviennent encore plus intéressantes lorsqu'on mélange les deux méthodes. Dans les paragraphes précédents, nous avons mentionné le fait que la balise <code>style</code> pouvait être utile si la mise en forme s'applique à un seul document du site.</p> + +<p>Dans un premier temps on appelle donc toujours le fichier <code>demo.css</code>, ainsi la page affiche un texte bleu sur un fond blanc. Mais pour des raisons spécifiques, il se trouve que pour cette page on préfère un texte rouge. On va alors coupler ces deux méthodes :</p> + +<ol> + <li>Comme d'habitude on lie en premier notre feuille de style grâce à la balise <code>link</code>.</li> + <li>Grâce à la cascade, chaque style s'applique l'un après l'autre.</li> + <li>Puis avec une balise <code>style,</code> on annule le texte bleu défini par <code>color</code> sur une seule page du site.</li> +</ol> + +<p>Voici le code du fichier <code>demo.css</code> :</p> + +<pre>/* demo.css */ +body { + background:white; + color:blue; +} +</pre> + +<p>On comprend que tout le texte de la page doit être en bleu sur un fond blanc. Voici maintenant le document HTML :</p> + +<pre><!DOCTYPE html> +<html> +<head> + <title>La fameuse page « Hello World »</title> + <link rel="stylesheet" href="demo.css"> + + <style type="text/css"> + body { + color:red; + } + </style> + +</head> + <body> + <p>Hello world!</p> + </body> +</html></pre> + +<p>On appelle d'abord la feuille de style de façon à obtenir le fond blanc et un texte bleu. Ensuite, pour cette page seulement, on ignore le formatage du texte en bleu pour le remplacer par la couleur rouge à l'aide de la balise <code><style></code> (<code>demo.css</code> continue néanmoins de gérer tous les autres styles).</p> + +<h2 id="Prochaines_étapes">Prochaines étapes</h2> + +<p>Maintenant que vous savez comment appliquer des styles CSS à un document HTML, deux options s'offrent à vous :</p> + +<ul> + <li>Revoir <a href="/fr/Apprendre/CSS/Les_propriétés_CSS">les propriétés CSS et comment s'en servir</a>.</li> + <li>Perfectionner vos connaissances en design, en commençant par l'<a href="/fr/docs/Learn/What_is_accessibility">accessibilité</a>.</li> +</ul> diff --git a/files/fr/conflicting/learn/css/first_steps/how_css_works_cdccf923f6bd040e8d243ee03d223ddc/index.html b/files/fr/conflicting/learn/css/first_steps/how_css_works_cdccf923f6bd040e8d243ee03d223ddc/index.html new file mode 100644 index 0000000000..aa08f6ffea --- /dev/null +++ b/files/fr/conflicting/learn/css/first_steps/how_css_works_cdccf923f6bd040e8d243ee03d223ddc/index.html @@ -0,0 +1,122 @@ +--- +title: Fonctionnement de CSS +slug: CSS/Premiers_pas/Fonctionnement_de_CSS +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/CSS/First_steps/How_CSS_works +translation_of_original: Web/Guide/CSS/Getting_started/How_CSS_works +--- +<p> </p> + +<p>Cette page explique comment CSS fonctionne dans votre navigateur. Vous analyserez votre document de démonstration, révélant les détails de son style.</p> + +<h3 id="Information_:_fonctionnement_de_CSS" name="Information_:_fonctionnement_de_CSS">Information : fonctionnement de CSS</h3> + +<p>Lorsque Mozilla affiche un document, il doit combiner le contenu du document avec ses informations de style. Ainsi, il traite le document en deux étapes :</p> + +<ul> + <li>Au premier stade, Mozilla convertit le langage de balisage et le CSS dans un<em>DOM</em> (modèle objet de document). Le DOM représente le document dans la mémoire de l'ordinateur. Il combine le contenu du document et son style.</li> +</ul> + +<ul> + <li>Au second stade, Mozilla affiche le DOM.</li> +</ul> + +<p>Un langage de balisage utilise des balises pour définir la structure du document. Un élément peut en contenir d'autres, entre sa balise de début et sa balise de fin.</p> + +<p>Un DOM a une structure sous forme d'arbre. Chaque balise et morceau de texte figurant dans le langage de balisage devient un<em>nœud</em> dans la structure arborescente. Les nœuds DOM n'en contiennent pas d'autres, au lieu de cela ils peuvent être<em>parents</em> de nœuds<em>enfants</em> .</p> + +<p>Les nœuds correspondant à des balises sont aussi appelés<em>éléments</em> .</p> + +<table style="background-color: #fffff4; border: 1px solid #36b; margin-bottom: 1em; padding: 1em;"> + <caption>Exemple</caption> + <tbody> + <tr> + <td>Dans votre document exemple, la balise <code><P></code> et sa balise de fermeture <code></P></code> forment un conteneur : + <div style="width: 24em;"> + <pre class="eval"> +<P> + <STRONG>C</STRONG>ascading + <STRONG>S</STRONG>tyle + <STRONG>S</STRONG>heets +</P> +</pre> + </div> + + <p>Dans le DOM, le nœud P correspondant est un parent. Ses enfants sont les nœuds <small>STRONG</small> et les nœuds de texte. Les nœuds <small>STRONG</small> sont eux-mêmes parents, avec des nœuds de texte comme enfants :</p> + + <div style="width: 24em; color: #47c; white-space: pre; padding: 0 0 0 2em;"> + <p><span style="color: black;">P</span> ├─<span style="color: black;">STRONG</span> │ │ │ └─"<span style="color: black;">C</span>" │ ├─"<span style="color: black;">ascading</span>" │ ├─<span style="color: black;">STRONG</span> │ │ │ └─"<span style="color: black;">S</span>" │ ├─"<span style="color: black;">tyle</span>" │ ├─<span style="color: black;">STRONG</span> │ │ │ └─"<span style="color: black;">S</span>" │ └─"<span style="color: black;">heets</span>"</p> + </div> + </td> + </tr> + </tbody> +</table> + +<p>La compréhension du DOM aide à créer, déboguer et maintenir votre CSS, car le DOM est l'endroit où CSS et le document se rencontrent.</p> + +<h3 id="Action_:_Analyse_d.27un_DOM" name="Action_:_Analyse_d.27un_DOM">Action : Analyse d'un DOM</h3> + +<p>Pour analyser un DOM, il est nécessaire d'utiliser un logiciel spécial. Ici, nous utiliserons l'<a href="/fr/docs/Inspecteur_DOM">Inspecteur DOM</a> (DOMi) de Mozilla pour analyser un DOM.</p> + +<p>Utilisez votre navigateur Mozilla pour ouvrir votre document exemple.</p> + +<p>Depuis la barre de menu de votre navigateur, choisissez Outils – Inspecteur DOM, ou éventuellement Outils – Développement Web – Inspecteur DOM.</p> + +<table style="background-color: #f4f4f4; border: 1px solid #36b; padding: 1em;"> + <caption>Plus de détails</caption> + <tbody> + <tr> + <td>Si votre navigateur Mozilla n'a pas de DOMi, vous pouvez réinstaller votre navigateur en vérifiant que vous installez le composant Outils de développement. Revenez ensuite à ce tutoriel. + <p>Si vous ne désirez pas installer le DOMi, vous pouvez passer cette section et vous rendre directement à la page suivante. Cette section peut être passée sans problème pour comprendre le reste du tutoriel.</p> + </td> + </tr> + </tbody> +</table> + +<p><br> + Dans le DOMi, dépliez les nœuds de votre document en cliquant sur leurs flèches.</p> + +<p><strong>Note : </strong> Les espaces dans votre fichier HTML font que le DOMi affichera certains nœuds de texte vides, que vous pouvez ignorer.</p> + +<p>Le résultat peut ressembler à ceci, selon les nœuds que vous avez dépliés :</p> + +<table style="border: 2px outset #36b; padding: 0 0 0 2em;"> + <tbody> + <tr> + <td> + <div style="width: 30em; background-color: transparent; margin: 0px; border: 0px; padding: 0px; color: gray; white-space: pre;"> + <p>│ <span style="font-size: 133%;">▼</span>╴<span style="color: black;">P</span> │ │ │ <span style="font-size: 133%;">▼</span>╴<span style="color: black;">STRONG</span> │ │ └<span style="color: darkblue;">#text</span> │ ├╴<span style="color: darkblue;">#text</span> │ <span style="font-size: 133%;">▶</span>╴<span style="color: black;">STRONG</span> │ │</p> + </div> + </td> + </tr> + </tbody> +</table> + +<p>Lorsque vous sélectionnez un nœud, vous pouvez utiliser le panneau de droite du DOMi pour en savoir plus sur celui-ci. Par exemple, lorsque vous sélectionnez un nœud de texte, DOMi affichera son texte dans le panneau de droite.</p> + +<p>Lorsque vous sélectionnez un nœud d'élément, DOMi l'analyse et fournit une grande quantité d'informations dans le panneau de droite. Les informations de style sont juste une petite partie de ce qui peut y être affiché.</p> + +<p> </p> + +<table style="background-color: #ffe; border: 1px solid #36b; padding: 1em;"> + <caption>Challenge</caption> + <tbody> + <tr> + <td>Dans le DOMi, cliquez sur un nœud <small>STRONG</small>. + <p>Utilisez le panneau de droite pour découvrir à quel endroit la couleur du nœud est mise en rouge, et à quel endroit son apparence est rendue plus grasse que le texte normal.</p> + </td> + </tr> + </tbody> +</table> + +<p> </p> + +<h4 id="Pour_continuer" name="Pour_continuer">Pour continuer</h4> + +<p>Si vous avez des difficultés à comprendre cette page, ou si vous avez des commentaires, contribuez à sa <a>page de discussion</a>.</p> + +<p>Si vous avez relevé le challenge, vous avez vu que les informations de style venant de plusieurs endroits interagissent pour créer le style final d'un élément.</p> + +<p>La page suivante explique plus en détails ces interactions : <strong><a href="/fr/docs/CSS/Premiers_pas/Cascade_et_h%c3%a9ritage">Cascade et héritage</a></strong>.</p> diff --git a/files/fr/conflicting/learn/css/first_steps/how_css_works_cf31463f874ecd8e10e648dacde4a995/index.html b/files/fr/conflicting/learn/css/first_steps/how_css_works_cf31463f874ecd8e10e648dacde4a995/index.html new file mode 100644 index 0000000000..e0b9c64a2e --- /dev/null +++ b/files/fr/conflicting/learn/css/first_steps/how_css_works_cf31463f874ecd8e10e648dacde4a995/index.html @@ -0,0 +1,75 @@ +--- +title: Appliquer du CSS à une page web +slug: Apprendre/HTML/Comment/Appliquer_du_CSS_à_une_page_web +tags: + - Beginner + - CSS + - Guide + - HTML +translation_of: Learn/CSS/Introduction_to_CSS/How_CSS_works#How_to_apply_your_CSS_to_your_HTML +translation_of_original: Learn/HTML/Howto/Use_CSS_within_a_webpage +--- +<div class="summary"> +<p>Le code HTML d'une page web définit sa signification et sa structure. Le code CSS, quant à lui, permet de définir la mise en forme d'une page. Dans cet article, nous verrons comment appliquer du code CSS à un document HTML.</p> +</div> + +<table class="learn-box standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez au préalable savoir comment <a href="/fr/Apprendre/HTML/Write_a_simple_page_in_HTML">créer un document HTML simple</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Apprendre comment appliquer une mise en forme CSS à un document HTML.</td> + </tr> + </tbody> +</table> + +<h2 id="À_propos_de_CSS">À propos de CSS</h2> + +<p>Un document HTML bien écrit peut être utilisé quel que soit le contexte de présentation. Il est possible de le consulter visuellement (avec un navigateur), auditivement (avec un lecteur d'écran) ou tactilement (avec un affichage Braille). {{glossary("CSS")}} permet de contrôler l'aspect <em>visuel</em> d'un site web. Le navigateur pourra utiliser une feuille de style CSS par défaut, qui se traduira par une mise en forme générique (voire un peu austère) et il est donc préférable de déclarer une mise en forme propre à votre site web afin que celui-ci soit plus agréable à consulter.</p> + +<p>Dans cet article, nous verrons comment appliquer du CSS depuis le code HTML. Pour apprendre le fonctionnement du langage CSS, nous vous conseillons de démarrer avec <a href="/fr/docs/CSS/Premiers_pas">notre guide CSS</a>.</p> + +<p>Nous présenterons comment faire référence à une feuille de style CSS externe depuis le document HTML. Cette méthode est généralement la meilleure qui permette d'appliquer du CSS. En effet, une feuille de style centralisée permet d'avoir une mise en forme cohérente sur l'ensemble du site, de faciliter la maintenance du code et d'éviter de télécharger plusieurs ressources. Ceci étant dit, nous présenterons également deux autres méthodes ainsi que leurs avantages et inconvénients.</p> + +<h2 id="Référencer_une_feuille_de_style_externe">Référencer une feuille de style externe</h2> + +<p><a href="/fr/Apprendre/Commencer_avec_le_web/Les_bases_CSS">Une feuille de style</a> est un simple fichier texte contenant les règles CSS. Vous pouvez donc écrire une feuille de style avec votre éditeur de texte (de la même façon que vous pouvez rédiger un document HTML ou du code JavaScript). Une fois que vous avez écrit votre feuille de style, vous pouvez y faire référence depuis vos pages web grâce à un élément {{HTMLElement('link')}} :</p> + +<pre class="brush: html"><link href="styles/style.css" rel="stylesheet"></pre> + +<p>Il vous suffit de modifier l'URL de l'attribut <code>href</code> pour que celui-ci pointe vers votre feuille de style. L'attribut <code>rel="stylesheet"</code> et sa valeur sont nécessaires car l'élément {{HTMLElement('link')}} peut être utilisé dans d'autres cas. Tous les éléments {{htmlelement("link")}} doivent être placés au sein de l'élément {{HTMLElement('head')}} du document.</p> + +<h2 id="Intégrer_du_CSS_avec_<style>">Intégrer du CSS avec <code><style></code></h2> + +<p>L'élément {{htmlelement("style")}} permet d'écrire du CSS directement au sein du document HTML :</p> + +<pre class="brush: html"><style> +body { + background-color: pink; +} +</style></pre> + +<div class="note"> +<p><strong>Note :</strong> N'utilisez cette méthode que lorsqu'une page web doit être mise en forme de façon unique. Sinon, il est préférable d'utiliser une feuille de style unique pour économiser de la bande passante et avoir une mise en forme cohérente sur l'ensemble du site.</p> +</div> + +<h2 id="Écrire_du_CSS_inline_avec_l'attribut_style">Écrire du CSS <em>inline</em> avec l'attribut <code>style</code></h2> + +<p>Enfin, vous pouvez utiliser l'attribut <code>style</code> dans n'importe quel élément HTML. Le style ne s'appliquera qu'à l'élément courant :</p> + +<pre class="brush: html"><span style="color: red;">Non, tout mais pas ça !</span></pre> + +<div class="note"> +<p><strong>Attention :</strong> Cette méthode est un cauchemar de maintenance et peut grandement influencer la cascade CSS. Elle ne doit donc pas être utilisée, sauf pour tester rapidement quelques scénarios extrêmes (par exemple, lors de la conception d'e-mails en HTML à destination de clients e-mail qui s'avèreraient récalcitrants).</p> +</div> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li>{{htmlelement("link")}}</li> + <li>{{htmlelement("style")}}</li> + <li><a href="/fr/docs/Web/HTML/Attributs_globaux/style">L'attribut <code>style</code></a></li> +</ul> diff --git a/files/fr/conflicting/learn/css/first_steps/how_css_works_dba75d8c56ccc773f03d946ce2dbb25c/index.html b/files/fr/conflicting/learn/css/first_steps/how_css_works_dba75d8c56ccc773f03d946ce2dbb25c/index.html new file mode 100644 index 0000000000..1782164624 --- /dev/null +++ b/files/fr/conflicting/learn/css/first_steps/how_css_works_dba75d8c56ccc773f03d946ce2dbb25c/index.html @@ -0,0 +1,126 @@ +--- +title: Présentation des CSS +slug: CSS/Premiers_pas/Présentation_des_CSS +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/CSS/First_steps/How_CSS_works +translation_of_original: Web/Guide/CSS/Getting_started/What_is_CSS +--- +<p> +{{previousPage("/fr/docs/CSS/Premiers_pas", "Premiers pas")}} +Cette page explique ce que sont les CSS. Vous y créerez un document simple avec lequel vous travaillerez au fil des pages suivantes.</p> +<h3 id="Information_:_CSS.2C_ce_dont_il_s.27agit" name="Information_:_CSS.2C_ce_dont_il_s.27agit">Information : CSS, ce dont il s'agit</h3> +<p>CSS est un langage permettant de spécifier comment les documents sont présentés à l'utilisateur.</p> +<p>Un + <i> + document</i> + est une collection d'informations structurées à l'aide d'un + <i> + langage de balisage</i> + (markup language).</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemples</caption> + <tbody> + <tr> + <td> + <ul> + <li>Une page Web comme celle-ci est un document.<br> + Les informations que vous voyez dans une page Web sont généralement structurées à l'aide du langage HTML (HyperText Markup Language).</li> + </ul> + <ul> + <li>Un dialogue dans une application Mozilla est un document.<br> + Les contrôles de l'interface utilisateur visibles dans un dialogue de Mozilla sont structurés à l'aide du langage de balisage XUL (XML User-interface Language).</li> + </ul> + </td> + </tr> + </tbody> +</table> +<p>Dans ce tutoriel, des boîtes nommées <b>Détails supplémentaires</b> comme celle ci-dessous contiennent des informations optionnelles. Si vous êtes pressé(e) d'avancer dans le tutoriel, vous pouvez passer ces boîtes, pour éventuellement revenir les lire plus tard. Sinon, lisez-les au fil de votre parcours, et suivez les liens pour en savoir plus.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4; margin-bottom: 1em;"> + <caption> + Détails supplémentaires</caption> + <tbody> + <tr> + <td> + <p>Un document n'est pas la même chose qu'un fichier. Il peut ou non être stocké dans un fichier.</p> + <p>Par exemple, le document que vous êtes en train de lire n'est pas stocké dans un fichier. Lorsque votre navigateur Web demande cette page, le serveur interroge une base de données et génère le document, assemblant les différentes parties depuis de nombreux fichiers. Cependant, dans ce tutoriel, vous travaillerez avec des documents stockés dans des fichiers.</p> + <p>Pour plus d'informations à propos des documents et des langages de balisage, consultez les autres parties de ce site, par exemple :</p> + <table style="background-color: inherit; margin-left: 2em;"> + <tbody> + <tr> + <td><a href="fr/HTML">HTML</a></td> + <td>pour les pages Web</td> + </tr> + <tr> + <td><a href="fr/XML">XML</a></td> + <td>pour les documents structurés en général</td> + </tr> + <tr> + <td><a href="fr/SVG">SVG</a></td> + <td>pour les documents graphiques</td> + </tr> + <tr> + <td><a href="fr/XUL">XUL</a></td> + <td>pour les interfaces utilisateur dans Mozilla</td> + </tr> + </tbody> + </table> + <p>Dans la partie II de ce tutoriel, vous verrez des exemples de ces langages de balisage.</p> + </td> + </tr> + </tbody> +</table> +<p> + <i> + Présenter</i> + un document à l'utilisateur signifie le convertir dans une forme utilisable par un être humain. Mozilla est conçu pour présenter des documents visuellement, par exemple sur un écran d'ordinateur, un projecteur ou une imprimante.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4; margin-bottom: 1em;"> + <caption> + Détails supplémentaires</caption> + <tbody> + <tr> + <td>CSS ne sert pas uniquement aux navigateurs, ni pour des présentations visuelles. Dans la terminologie formelle CSS, le programme présentant un document à l'utilisateur est appelé + <i> + agent utilisateur</i> + (user agent ou UA). Un navigateur est simplement une sorte d'UA. Cependant, dans la partie I de ce tutoriel, vous travaillerez uniquement avec CSS dans un navigateur. + <p>Pour les définitions formelles de la terminologie liée à CSS, voir <a class="external" href="http://www.w3.org/TR/CSS21/conform.html#q1">Définitions</a> dans la spécification CSS.</p> + </td> + </tr> + </tbody> +</table> +<h3 id="Action_:_cr.C3.A9ation_d.27un_document" name="Action_:_cr.C3.A9ation_d.27un_document">Action : création d'un document</h3> +<p>Utilisez votre ordinateur pour créer un nouveau dossier et un nouveau fichier texte à l'intérieur de celui-ci. Ce fichier contiendra votre document.</p> +<p>Copiez et collez le HTML affiché ci-dessous. Enregistrez le fichier sous le nom <code>doc1.html</code></p> +<pre class="eval"><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" +"<a class="external" href="http://www.w3.org/TR/html4/strict.dtd" rel="freelink">http://www.w3.org/TR/html4/strict.dtd</a>"> +<html> + <head> + <title>Document de démonstration</title> + <meta http-equiv="Content-Type" content="text/html; + charset=iso-8859-1"> + </head> + <body> + <p> + <strong>C</strong>ascading + <strong>S</strong>tyle + <strong>S</strong>heets + </p> + </body> +</html> +</pre> +<p>Dans votre navigateur, ouvrez un nouvel onglet ou une nouvelle fenêtre, et ouvrez-y le fichier.</p> +<p>Vous devriez voir le texte avec les lettres initales en gras, comme ceci :</p> +<table style="border: 2px outset #36b; padding: 1em;"> + <tbody> + <tr> + <td><strong>C</strong>ascading <strong>S</strong>tyle <strong>S</strong>heets</td> + </tr> + </tbody> +</table> +<p>Ce que vous voyez dans votre navigateur peut ne pas apparaître exactement comme cela, suivant les paramètres de votre navigateur et de ce wiki. S'il y a certaines différences dans la police, l'espacement et les couleurs, elles ne sont pas importantes.</p> +<h3 id="Pour_continuer" name="Pour_continuer">Pour continuer</h3> +<p> +{{nextPage("/fr/docs/CSS/Premiers_pas/Pourquoi_utiliser_CSS", "Pourquoi utiliser CSS")}} +Votre document n'utilise pas encore CSS. Sur la page suivante, vous utiliserez CSS pour spécifier son propre style : <a href="/fr/docs/CSS/Premiers_pas/Pourquoi_utiliser_CSS">Pourquoi utiliser CSS</a>.</p> diff --git a/files/fr/conflicting/learn/css/first_steps/how_css_works_ecbda2160290b96c02dcfa8276c0333a/index.html b/files/fr/conflicting/learn/css/first_steps/how_css_works_ecbda2160290b96c02dcfa8276c0333a/index.html new file mode 100644 index 0000000000..682482eefb --- /dev/null +++ b/files/fr/conflicting/learn/css/first_steps/how_css_works_ecbda2160290b96c02dcfa8276c0333a/index.html @@ -0,0 +1,98 @@ +--- +title: Pourquoi utiliser CSS +slug: CSS/Premiers_pas/Pourquoi_utiliser_CSS +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/CSS/First_steps/How_CSS_works +translation_of_original: Web/Guide/CSS/Getting_started/Why_use_CSS +--- +<p> </p> +<p>Cette page explique pourquoi les documents utilisent CSS. Vous utiliserez CSS pour ajouter une feuille de style à votre document de démonstration.</p> +<h3 id="Information_:_utilit.C3.A9_de_CSS" name="Information_:_utilit.C3.A9_de_CSS">Information : utilité de CSS</h3> +<p>CSS vous aide à garder l'information contenue dans votre document séparée des détails de sa présentation. Ces détails de présentation d'un document sont appelés son + <i> + style</i> + . La séparation du style et du contenu permet :</p> +<ul> + <li>D'éviter des duplications</li> + <li>Une maintenance plus facile</li> + <li>D'utiliser le même contenu avec différents styles pour différents usages</li> +</ul> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Votre site Web peut avoir des milliers de pages qui ont un aspect similaire. Avec CSS, vous conservez les informations de style dans des fichiers communs partagés par toutes les pages. + <p>Lorsqu'un visiteur affiche une page, son navigateur charge les informations de style en même temps que le contenu de la page.</p> + <p>Lorsqu'il imprime une page, vous fournissez des informations de style différentes qui rendent la page imprimée facile à lire.</p> + </td> + </tr> + </tbody> +</table> +<p>En général, avec, CSS, vous utilisez le langage de balisage pour décrire les informations contenues dans le document, et non son style. CSS est utilisé pour spécifier son style et non son contenu. (Plus loin dans ce tutoriel, vous verrez qu'il peut y avoir certaines exceptions à cet arrangement.)</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4; margin-bottom: 1em;"> + <caption> + Plus de détails</caption> + <tbody> + <tr> + <td>Un langage de balisage comme HTML fournit également certaines manières de préciser un style. + <p>Par exemple, en HTML, il est possible d'utiliser une balise <code><B></code> pour rendre du texte gras, ou de spécifier la couleur de fond d'une page dans sa balise <code><BODY></code>.</p> + <p>Lorsqu'on utilise CSS, on évite généralement d'utiliser ces possibilités du langage de balisage afin que toutes les informations de style du document se retrouvent à la même place.</p> + </td> + </tr> + </tbody> +</table> +<h3 id="Action_:_cr.C3.A9ation_d.27une_feuille_de_style" name="Action_:_cr.C3.A9ation_d.27une_feuille_de_style">Action : création d'une feuille de style</h3> +<p>Créez un autre fichier texte dans le même dossier que précédemment. Ce fichier sera votre feuille de style. Appelez-le : <code>style1.css</code></p> +<p>Dans votre fichier CSS, copiez et collez cette simple ligne, puis enregistrez le fichier :</p> +<div style="width: 40em;"> + <pre class="eval">strong {color: red;} +</pre> +</div> +<h4 id="Lier_votre_document_.C3.A0_votre_feuille_de_style" name="Lier_votre_document_.C3.A0_votre_feuille_de_style">Lier votre document à votre feuille de style</h4> +<p>Pour lier votre document à votre feuille de style, éditez votre fichier HTML. Ajoutez la ligne montrée ici en gras :</p> +<div style="width: 50em; color: gray;"> + <pre class="eval"><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" +"<span class="nowiki">http://www.w3.org/TR/html4/strict.dtd</span>"> +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; + charset=iso-8859-1"> + <title>Sample document</title> + <strong style="color: black;"><link rel="stylesheet" type="text/css" href="style1.css"></strong> + </head> + <body> + <p> + <strong>C</strong>ascading + <strong>S</strong>tyle + <strong>S</strong>heets + </p> + </body> +</html> +</pre> +</div> +<p>Enregistrez le fichier et actualisez l'affichage de votre navigateur. La feuille de style rend les lettres initiales rouges, comme ceci :</p> +<table style="border: 2px outset #36b; padding: 1em;"> + <tbody> + <tr> + <td><strong style="color: red;">C</strong>ascading <strong style="color: red;">S</strong>tyle <strong style="color: red;">S</strong>heets</td> + </tr> + </tbody> +</table> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4;"> + <caption> + Challenge</caption> + <tbody> + <tr> + <td>En plus du rouge (red), CSS permet d'utiliser d'autres noms de couleurs. + <p>Sans regarder dans une référence, trouvez cinq autres noms de couleurs qui fonctionnent dans votre feuille de style.</p> + </td> + </tr> + </tbody> +</table> +<h4 id="Pour_continuer" name="Pour_continuer">Pour continuer</h4> +<p>Si vous avez des difficultés à comprendre cette page, ou si vous avez des commentaires, contribuez à sa <a>page de discussion</a>.</p> +<p>Maintenant que vous avez un document lié à une feuille de style séparée, vous pouvez en apprendre plus sur la manière dont votre navigateur les combine lors de l'affichage du document : <b><a href="/fr/docs/CSS/Premiers_pas/Fonctionnement_de_CSS">Fonctionnement de CSS</a></b>.</p> +<p> </p> diff --git a/files/fr/conflicting/learn/css/first_steps/index.html b/files/fr/conflicting/learn/css/first_steps/index.html new file mode 100644 index 0000000000..5a802a6899 --- /dev/null +++ b/files/fr/conflicting/learn/css/first_steps/index.html @@ -0,0 +1,60 @@ +--- +title: Premiers pas +slug: CSS/Premiers_pas +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/CSS/First_steps +translation_of_original: Web/Guide/CSS/Getting_started +--- +<h3 id="Introduction" name="Introduction">Introduction</h3> + +<p>Ce tutoriel est une introduction basique aux <a href="/fr/docs/CSS" title="/fr/docs/CSS">feuilles de styles en cascades (CSS)</a>.</p> + +<p>Il vous guidera à travers les fonctions de base des CSS grâce à des exemples pratiques que vous pourrez tester par vous-même sur votre ordinateur. Il est divisé en deux parties :</p> + +<ul> + <li>La partie I présente les propriétés standard des CSS qui fonctionnent dans les navigateurs basés sur Mozilla et aussi dans la plupart des autres navigateurs modernes.</li> +</ul> + +<ul> + <li>La partie II contient quelques exemples des propriétés spéciales qui fonctionnent sous Mozilla mais pas forcément sur les autres navigateurs.</li> +</ul> + +<p>Ce tutoriel est basé sur les <a class="external" href="http://www.w3.org/TR/CSS21/">spécifications CSS 2.1</a>.</p> + +<h4 id=".C3.80_qui_est_destin.C3.A9_ce_tutoriel_.3F" name=".C3.80_qui_est_destin.C3.A9_ce_tutoriel_.3F">À qui est destiné ce tutoriel ?</h4> + +<p>Ce tutoriel est surtout destiné à ceux qui débutent en CSS, mais vous pouvez aussi vous en servir si vous avez déjà quelques notions.</p> + +<p>Si vous êtes un débutant, lisez d'abord la partie I pour comprendre les CSS et apprendre comment les utiliser. Puis lisez la partie II pour comprendre la « portée » des CSS dans Mozilla.</p> + +<p>Si vous avez déjà quelques notions, vous pouvez sauter les parties de ce tutoriel que vous connaissez déjà, et lire seulement celles qui vous intéressent.</p> + +<p>Si vous maîtrisez déjà les CSS hormis les propriétés particulières à Mozilla, passez directement à la partie II.</p> + +<h4 id="Avant_de_commencer" name="Avant_de_commencer">Avant de commencer</h4> + +<p>Pour que ce tutoriel soit vraiment bénéfique, vous avez besoin d'un éditeur de fichier texte et un navigateur Mozilla (Firefox ou la suite Mozilla). Vous devez aussi savoir un minimum comment les utiliser.</p> + +<p>Si vous ne souhaitez pas éditer de fichier, vous pouvez simplement lire le tutoriel et regarder les images, mais votre apprentissage sera moins performant.</p> + +<p>Quelques passages de ce tutoriel peuvent exiger l'utilisation d'un autre logiciel de la fondation Mozilla. Ces passages sont optionnels. Si vous ne souhaitez pas télécharger d'autres logiciels, sautez ces passages.</p> + +<h3 id="Tutoriel_partie_I" name="Tutoriel_partie_I">Tutoriel partie I</h3> + +<p>Un guide de base, étape par étape pour CSS.</p> + +<nav class="fancyTOC"><a class="button" href="/fr/docs/CSS/Premiers_pas/Pr%c3%a9sentation_des_CSS" rel="next">Présentation des CSS</a> <a class="button" href="/fr/docs/CSS/Premiers_pas/Pourquoi_utiliser_CSS">Pourquoi utiliser CSS</a> <a class="button" href="/fr/docs/CSS/Premiers_pas/Fonctionnement_de_CSS">Fonctionnement de CSS</a> <a class="button" href="/fr/docs/CSS/Premiers_pas/Cascade_et_h%c3%a9ritage">Cascade et héritage</a> <a class="button" href="/fr/docs/CSS/Premiers_pas/Les_s%c3%a9lecteurs">Les sélecteurs</a> <a class="button" href="/fr/docs/CSS/Premiers_pas/Des_CSS_lisibles">Des CSS lisibles</a> <a class="button" href="/fr/docs/CSS/Premiers_pas/Styles_de_texte">Styles de texte</a> <a class="button" href="/fr/docs/CSS/Premiers_pas/Couleurs">Couleurs</a> <a class="button" href="/fr/docs/CSS/Premiers_pas/Contenu">Contenu</a> <a class="button" href="/fr/docs/CSS/Premiers_pas/Listes">Listes</a> <a class="button" href="/fr/docs/CSS/Premiers_pas/Bo%c3%aetes">Boîtes</a> <a class="button" href="/fr/docs/CSS/Premiers_pas/Mise_en_page">Mise en page</a> <a class="button" href="/fr/docs/CSS/Premiers_pas/Tableaux">Tableaux</a> <a class="button" href="/fr/docs/CSS/Premiers_pas/M%c3%a9dias">Médias</a></nav> + +<h3 id="Tutoriel_partie_II" name="Tutoriel_partie_II">Tutoriel partie II</h3> + +<p>Exemples montrant la portée des CSS dans Mozilla.</p> + +<ol> + <li><strong><a href="/fr/docs/CSS/Premiers_pas/JavaScript">JavaScript</a></strong></li> + <li><strong><a href="/fr/docs/CSS/Premiers_pas/Liaisons_XBL">Liaisons XBL</a></strong></li> + <li><strong><a href="/fr/docs/CSS/Premiers_pas/Interfaces_utilisateur_XUL">Interfaces utilisateur XUL</a></strong></li> + <li><strong><a href="/fr/docs/CSS/Premiers_pas/Graphiques_SVG">Graphiques SVG</a></strong></li> + <li><strong><a href="/fr/docs/CSS/Premiers_pas/Donn%c3%a9es_XML">Données XML</a></strong></li> +</ol> diff --git a/files/fr/conflicting/learn/css/styling_text/fundamentals/index.html b/files/fr/conflicting/learn/css/styling_text/fundamentals/index.html new file mode 100644 index 0000000000..67864f3b97 --- /dev/null +++ b/files/fr/conflicting/learn/css/styling_text/fundamentals/index.html @@ -0,0 +1,330 @@ +--- +title: Mettre en forme du texte +slug: Apprendre/CSS/Comment/Mettre_en_forme_du_texte +tags: + - Apprendre + - CSS + - Débutant +translation_of: Learn/CSS/Styling_text/Fundamentals +translation_of_original: Learn/CSS/Howto/style_text +--- +<p class="summary">La mise en forme du texte est au cœur de CSS. Celui-ci fournit de nombreuses propriétés permettant de modifier l'apparence du texte. En quelque sorte, CSS est le prolongement, sur le Web, de la typographie qui existe depuis plusieurs siècles.</p> + +<p>La mise en forme du texte se décline sur deux composantes : la police et la disposition du texte. Ces deux éléments sont des bases, abordées parmi les premiers concepts qu'on voit en CSS. Toutefois, la mise en forme du texte est plus subtile qu'il n'y paraît. Dans cet article, nous détaillerons les différentes possibilités offertes par CSS. Libre à vous de choisir ce dont vous avez besoin ou ce sur quoi vous souhaitez expérimenter.</p> + +<h2 id="La_mise_en_forme_simple">La mise en forme simple</h2> + +<p>Les polices de texte peuvent être modifiées et adaptées grâce à ces propriétés CSS :</p> + +<ul> + <li>{{cssxref("color")}} : modifie la couleur de la police.</li> + <li>{{cssxref("font-family")}} : modifie la police utilisée.</li> + <li>{{cssxref("font-size")}} : modifie la taille de la fonte.</li> + <li>{{cssxref("font-style")}} : permet de passer d'une police italique à une police normale.</li> + <li>{{cssxref("font-weight")}} : permet de gérer la graisse d'une police.</li> + <li>{{cssxref("font-variant")}} : permet de choisir des variantes de police.</li> + <li>{{cssxref("letter-spacing")}} : permet d'ajuster l'interlettrage, quelles que soient les options de crénage (<em>kerning</em>) de la police originale.</li> + <li>{{cssxref("text-decoration")}} : permet d'afficher une ligne décorative, au-dessus, en-dessous ou au milieu du texte.</li> + <li>{{cssxref("text-shadow")}} : permet de définir une ou plusieurs ombres portées depuis le texte.</li> + <li>{{cssxref("text-transform")}} : permet de choisir la capitalisation du texte.</li> +</ul> + +<p>CSS fournit également des unités dédiées aux polices et des outils pour le texte sélectionné :</p> + +<ul> + <li>{{cssxref("length#em","em")}} : la taille calculée pour la police de l'élément, relative par rapport à la taille de la police de l'élément parent.</li> + <li>{{cssxref("length#rem","rem")}} : analogue à <code>em</code> mais toujours relative à la taille de la police pour l'élément racine.</li> + <li>{{cssxref("::first-letter")}} : permet de sélectionner la première lettre d'un élément de bloc.</li> + <li>{{cssxref("::first-line")}} : permet de sélectionner la première ligne d'un élément de bloc.</li> + <li>{{cssxref("::selection")}} : correspond au texte actuellement sélectionné par l'utilisateur.</li> +</ul> + +<p>Les propriétés les plus fréquemment utilisées peuvent être manipulées grâce à la propriété raccourcie {{cssxref("font")}}. Celle-ci se décompose (dans l'ordre) en : {{cssxref("font-style")}}, {{cssxref("font-variant")}}, {{cssxref("font-weight")}}, {{cssxref("font-stretch")}}, {{cssxref("font-size")}}, {{cssxref("line-height")}}, et {{cssxref("font-family")}}. Parmi toutes ces propriétés, seules <code>font-size</code> et <code>font-family</code> sont obligatoires pour cette notation raccourcie.</p> + +<p>Prenons un exemple pour illustrer ce point.</p> + +<p>Voici le fragment de code HTML qu'on utilisera :</p> + +<pre class="brush: html"><p> + He dressed himself "all in his best," and at last got out into the streets. + The people were by this time pouring forth, as he had seen them with the + Ghost of Christmas Present; and walking with his hands behind him, Scrooge + regarded every one with a delighted smile. He looked so irresistibly pleasant, + in a word, that three or four good-humoured fellows said, "Good morning, sir! + A merry Christmas to you!" And Scrooge said often afterwards, that of all the + blithe sounds he had ever heard, those were the blithest in his ears. +</p> +<p class="fancy"> + He dressed himself "all in his best," and at last got out into the streets. + The people were by this time pouring forth, as he had seen them with the + Ghost of Christmas Present; and walking with his hands behind him, Scrooge + regarded every one with a delighted smile. He looked so irresistibly pleasant, + in a word, that three or four good-humoured fellows said, "Good morning, sir! + A merry Christmas to you!" And Scrooge said often afterwards, that of all the + blithe sounds he had ever heard, those were the blithest in his ears. +</p></pre> + +<p>Et voilà la feuille de style CSS qu'on appliquera :</p> + +<pre class="brush: css">/* Voici un disposition simple pour que + les paragraphes soient côte à côte. */ +p { + box-sizing: border-box; + width : 50%; + padding : 1em; + float : left; +} + +.fancy { + font: 0.85rem/150% Helvetica, Arial, sans-serif; +} + +.fancy::first-line { + font-variant: small-caps; +} + +.fancy::first-letter { + font-family: serif; + font-size : 3rem; + + float : left; + background : blanchedalmond; + color : goldenrod; + border : 0.5rem solid gold; + padding : 1rem; + margin : 0 0.5rem 0 0; +}</pre> + +<p>Ces deux éléments permettront d'aboutir au résultat suivant :</p> + +<p>{{EmbedLiveSample('La_mise_en_forme_simple', '100%', '320')}}</p> + +<div class="note"> +<p><strong>Note :</strong> Les styles de police vous permettent de faire de nombreuses choses. Toutefois, le Web reste un média principalement basé sur le texte et les polices ont donc leur importance. Nous vous encourageons donc à utiliser les mécanismes offerts par CSS pour améliorer la lisibilité du texte. Pour cela, vous pouvez consulter <a href="http://www.pompage.net/traduction/8-facons-simples-d-ameliorer-la-typographie-dans-vos">les différentes règles typographiques recommandées pour le Web</a>.</p> +</div> + +<h2 id="Paramètres_avancées_des_polices_d'écriture">Paramètres avancées des polices d'écriture</h2> + +<p>CSS fournit des propriétés, encore plus avancées, dédiées aux polices d'écriture. Cependant, ces propriétés sont toujours expérimentales et parfois mal supportées par certains navigateurs ou spécifiques à certaines langues (généralement les langues non latines) :</p> + +<ul> + <li>{{cssxref("font-kerning")}} : active ou désactive les options de crénage.</li> + <li>{{cssxref("font-feature-settings")}} : active ou désactive les différentes fonctionnalités des polices <a href="https://fr.wikipedia.org/wiki/OpenType">OpenType</a>.</li> + <li>{{cssxref("font-variant-alternates")}} : permet de contrôler l'utilisation de glyphes alternatifs pour une fonte donnée.</li> + <li>{{cssxref("font-variant-caps")}} : permet de contrôler l'utilisation de glyphes capitaux alternatifs.</li> + <li>{{cssxref("font-variant-east-asian")}} : permet de contrôler l'utilisation de glyphes alternatifs pour les scripts d'Asie orientale comme le japonais ou le chinois.</li> + <li>{{cssxref("font-variant-ligatures")}} : permet de contrôler les ligatures et formes contextuelles qui sont utilisées dans le texte.</li> + <li>{{cssxref("font-variant-numeric")}} : permet de contrôler l'utilisation de glyphes alternatifs pour les nombres, les fractions et les marqueurs ordinaux.</li> + <li>{{cssxref("font-variant-position")}} : permet de contrôler l'utilisation de glyphes alternatifs de moindre taille pour les textes positionnés en indice ou en exposant par rapport à la ligne de base.</li> + <li>{{cssxref("font-size-adjust")}} : permet d'ajuster la taille visuelle de la fonte sans modifier la taille intrinsèque de la fonte.</li> + <li>{{cssxref("font-stretch")}} : permet de choisir des formes alternatives, plus ou moins étirées, d'une police donnée.</li> + <li>{{cssxref("text-decoration-color")}} : définit la couleur utilisée lorsqu'une ligne est dessinée sur, sous ou à travers le texte.</li> + <li>{{cssxref("text-decoration-line")}} : définit le type de ligne décorative qui peut être ajoutée à un élément.</li> + <li>{{cssxref("text-decoration-style")}} : définit le style des lignes dessinées sur le texte.</li> + <li>{{cssxref("text-underline-position")}} : définit la position du soulignement mis en place lorsque la propriété <code>text-decoration-line</code> vaut <code>underline</code>.</li> + <li>{{cssxref("text-rendering")}} : essaie d'optimiser le rendu du texte.</li> +</ul> + +<h2 id="Appliquer_des_fontes">Appliquer des fontes</h2> + +<p>Il existe des milliers de polices, quelques unes sont très connues mais on peut s'y perdre rapidement. La typographie, l'art des polices ne sont pas nouveaux, cela dit, le Web apporte son lot de contraintes spécifiques et les fontes ne sont parfois pas aussi adaptées que sur le papier. Voyons ici comment gérer cela.</p> + +<p>La propriété {{cssxref("font-family")}} vous permet de choisir la police de caractères que vous souhaitez appliquer à votre texte. Cette propriété fonctionne avec une valeur qui s'écrit sous la forme d'une liste de noms de polices, chacun séparé par des virgules. Le navigateur parcourera les polices de gauche à droite afin d'utiliser celle qui est disponible sur la machine.</p> + +<pre class="brush: css">body { + /* Si la police "Open Sans" est disponible, c'est + celle-ci qui serait utilisée pour mettre en forme + le texte. Sinon, ce sera la police Arial qui sera + utilisée et enfin, si Arial n'est pas disponible, + ce sera la police sans-serif disponible, par défaut + sur le système, qui sera utilisée. */ + font-family: "Open Sans", Arial, sans-serif; +}</pre> + +<h3 id="Les_polices_par_défaut">Les polices par défaut</h3> + +<p>Tout d'abord, CSS définit cinq noms de polices génériques : <code>serif</code>, <code>sans-serif</code>, <code>monospace</code>, <code>cursive</code>, et <code>fantasy</code>. Celles-ci sont choisies par le navigateur selon le système d'exploitation utilisé (il est possible que les différents navigateurs choisissent des polices différentes). C'est en quelque sorte les polices de dernier recours à utiliser. Les polices désignées par <code>serif</code>, <code>sans-serif</code> et <code>monospace</code> devraient être assez prévisibles. En revanche, celles désignées par <code>cursive</code> et <code>fantasy</code> sont moins prévisibles et nous vous conseillons donc de les utiliser avec précaution.</p> + +<div class="note"> +<p><strong>Note :</strong> On ne peut jamais être sûr à 100% des polices disponibles sur un ordinateur, aussi, c'est une bonne pratique que de toujours ajouter une police générique en dernier dans la liste des valeurs pour la propriété <code>font-family</code>.</p> +</div> + +<h3 id="Les_polices_adaptées_au_Web">Les polices adaptées au Web</h3> + +<p>Les polices génériques sont convenables mais imprévisibles. La plupart du temps, on souhaite mieux contrôler la police qui sera utilisée pour afficher le contenu textuel. On a vu juste avant qu'il était impossible de déterminer à coup sûr les polices disponibles sur un système. Toutefois, on peut s'aider de statistiques pour parier sur différentes polices fréquemment utilisées. Parmi les différents systèmes d'exploitation courants (Windows, Mac, certaines distribution Linux grand public, Android, et iOS), il existe un ensemble de polices largement répandues. Ces polices sont parfois appelées « <em>web fonts</em> » car elles peuvent être utilisées sans trop de risque sur le Web.</p> + +<p>Bien entendu, les systèmes d'exploitation évoluent et la liste des <em>web</em><em> fonts</em> peut évoluer au cour du temps. Cependant, à l'heure où nous écrivons ces lignes, on peut considérer que les polices suivantes sont largement répandues (notamment grâce à l'initiative <em><a href="https://fr.wikipedia.org/wiki/Core_fonts_for_the_Web">Core fonts for the Web</a></em> de Microsoft à la fin des années 90) :</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col" style="white-space: nowrap;">Type générique</th> + <th scope="col">Notes</th> + </tr> + </thead> + <tbody> + <tr> + <td>Arial</td> + <td>sans-serif</td> + <td>On considère généralement qu'il est préférable d'ajouter également <em>Helvetica</em> devant <em>Arial</em>. En effet, les polices sont presque identiques et bien qu'Arial soit plus répandue, <em>Helvetica</em> est plus appréciée (en termes de forme).</td> + </tr> + <tr> + <td>Courier New</td> + <td>monospace</td> + <td>Certains systèmes d'exploitation disposent d'une autre version (potentiellement plus ancienne), appelée <em>Courier</em>. C'est une bonne pratique d'utiliser les deux tout en favorisant <em>Courier New</em> dans l'ordre des priorités.</td> + </tr> + <tr> + <td style="white-space: nowrap;">Georgia</td> + <td>serif</td> + <td> </td> + </tr> + <tr> + <td style="white-space: nowrap;">Times New Roman</td> + <td>serif</td> + <td>Certains systèmes d'exploitation disposent d'une autre version (potentiellement plus ancienne), appelée <em>Times</em>. C'est une bonne pratique d'utiliser les deux tout en favorisant <em>Times New Roman</em> dans l'ordre des priorités.</td> + </tr> + <tr> + <td>Trebuchet MS</td> + <td>serif</td> + <td>Attention, celle-ci n'est pas fortement répandue sur les systèmes d'exploitation mobiles.</td> + </tr> + <tr> + <td>Verdana</td> + <td>sans-serif</td> + <td> </td> + </tr> + </tbody> +</table> + +<div class="note"> +<p><strong>Note :</strong> Parmi les différentes ressources disponibles sur le sujet, <a href="http://www.cssfontstack.com/">cssfontstack.com</a> maintient une liste des <em>web fonts</em> disponibles sur Windows et Mac OS. Cela peut vous aider à décider les polices à utiliser pour votre site.</p> +</div> + +<h3 id="Les_polices_personnalisées">Les polices personnalisées</h3> + +<p>Enfin, si vous souhaitez utiliser votre propre police sur votre site web, la meilleur façon reste d'intégrer cette police dans votre site web.</p> + +<div class="warning"> +<p><strong>Attention :</strong> les polices sont sujettes au droit d'auteur (<em>copyright</em>) et vous devez donc vérifier, avant de les utiliser, que vous pouvez les intégrer sur votre site. Certains sites vous permettent d'en utiliser certaines gratuitement, comme <a href="https://www.google.com/fonts">Google Fonts</a>. D'autres, vous permettent d'acheter le droit d'utiliser certaines polices comme, par exemple, <a href="http://www.fonts.com/">fonts.com</a>.</p> +</div> + +<p>L'intégration d'une police personnalisée se fait en trois étapes :</p> + +<ol> + <li>Assurez-vous que la police soit disponible sur votre serveur web. Pour assurer une meilleure rétro-compatibilité, la police doit idéalement être disponible sous quatre format : + <ul> + <li><a href="https://fr.wikipedia.org/wiki/Web_Open_Font_Format">WOFF et WOFF2</a>, supportés par les navigateurs modernes (WOFF2 remplacera WOFF)</li> + <li><a href="https://fr.wikipedia.org/wiki/Embedded_OpenType">EOT</a>, supporté par {{Glossary("Microsoft Internet Explorer","Internet Explorer")}} avant sa version 9</li> + <li>SVG, supporté par l'ancienne version de Safari pour iOS (il est peu probable que celle-ci soit encore utilisée)</li> + <li><a href="https://fr.wikipedia.org/wiki/OpenType">OTF</a>, supporté par les anciennes versions des navigateurs par défaut Android.</li> + </ul> + </li> + <li>Utilisez la déclaration {{cssxref("@font-face")}} en utilisant les adresses des fichiers et les autres caractéristiques (comme le nom)</li> + <li>Utilisez le nom déclaré pour la police personnalisée dans la liste des valeurs fournies à la propriété {{cssxref("font-family")}}.</li> +</ol> + +<p>Voici un exemple d'un telle mise en œuvre.</p> + +<p>On utilisera ce fragment de code HTML :</p> + +<pre class="brush: html"><p> + He dressed himself "all in his best," and at last + got out into the streets. The people were by this + time pouring forth, as he had seen them with the + Ghost of Christmas Present; and walking with his + hands behind him, Scrooge regarded every one with + a delighted smile. He looked so irresistibly + pleasant, in a word, that three or four good-humoured + fellows said, "Good morning, sir! A merry Christmas + to you!" And Scrooge said often afterwards, that of + all the blithe sounds he had ever heard, those were + the blithest in his ears. +</p> +<p class="fancy"> + He dressed himself "all in his best," and at last + got out into the streets. The people were by this + time pouring forth, as he had seen them with the + Ghost of Christmas Present; and walking with his + hands behind him, Scrooge regarded every one with + a delighted smile. He looked so irresistibly + pleasant, in a word, that three or four good-humoured + fellows said, "Good morning, sir! A merry Christmas + to you!" And Scrooge said often afterwards, that of + all the blithe sounds he had ever heard, those were + the blithest in his ears. +</p></pre> + +<p>Et on appliquera cette feuille de style CSS :</p> + +<pre class="brush: css">/* Une disposition simple pour voir + les paragraphes côte à côte. */ +p { + box-sizing: border-box; + width : 50%; + padding : 1em; + float : left; +} + +@font-face { + /* Là on définit le nom pour la police + personnalisé, on l'utilisera dans la + liste */ + font-family:"Open Sans"; + + /* Ici, on liste les fichiers de police, + la syntaxe est détaillée ici : + http://blog.fontspring.com/2011/02/the-new-bulletproof-font-face-syntax/ */ + src:url("https://developer.cdn.mozilla.net/static/fonts/OpenSans-Regular-webfont.a35546eef3ea.eot"); + src:url("https://developer.cdn.mozilla.net/static/fonts/OpenSans-Regular-webfont.a35546eef3ea.eot?#iefix") format('embedded-opentype'), + url("https://developer.cdn.mozilla.net/static/fonts/OpenSans-Regular-webfont.3f642fa3ea74.woff2") format('woff2'), + url("https://developer.cdn.mozilla.net/static/fonts/OpenSans-Regular-webfont.ac327c4db628.woff") format('woff'), + url("https://developer.cdn.mozilla.net/static/fonts/OpenSans-Regular-webfont.cd7296352d15.ttf") format('truetype'), + url("https://developer.cdn.mozilla.net/static/fonts/OpenSans-Regular-webfont.f641a7d4e80f.svg#OpenSansRegular") format('svg'); + + /* Ici, on définit la graisse et le style de la police */ + font-weight:normal; + font-style:normal; +} + +/* Enfin, il suffit simplement d'ajouter la + police personnalisée dans la liste des valeurs + pour font. */ +.fancy { + font: 0.85rem/150% "Open Sans", Helvetica, Arial, sans-serif; +} +</pre> + +<p>Le résultat obtenu sera :</p> + +<p>{{EmbedLiveSample('Les_polices_personnalisées', '100%', '320')}}</p> + +<h2 id="La_disposition_du_texte">La disposition du texte</h2> + +<p>La disposition du teexte concerne les aspects liés aux sauts de ligne et à la position du texte par rapport à la ligne de base ou par rapport à son contenant.</p> + +<ul> + <li>{{cssxref("line-height")}} : définit la hauteur d'une ligne de texte, quelle que soit la taille actuelle de la police utilisée.</li> + <li>{{cssxref("text-align")}} : décrit la façon dont le texte est aligné par rapport à son bloc.</li> + <li>{{cssxref("text-indent")}} : définit l'espace qu'on ajoute à gauche du texte avant de commencer la première ligne du texte.</li> + <li>{{cssxref("text-overflow")}} : définit la façon dont le contenu qui « déborde » est affiché (ou non).</li> + <li>{{cssxref("white-space")}} : définit la façon dont les blancs et les sauts de ligne sont gérés au sein de l'élément.</li> + <li>{{cssxref("word-break")}} : définit si on ajoute ou non des césures au sein des mots pour passer à la ligne.</li> + <li>{{cssxref("word-spacing")}} : ajuste la distance entre les mots (inter mot).</li> +</ul> + +<p>De la même façon qu'avec la mise en forme du texte, la disposition du texte est concernée par quelques propriétés expérimentales, assez peu supportées par certains navigateurs ou dédiées aux langues non latines. Celles-ci permettent de résoudre plusieurs problèmes d'ordre typographique et il est donc intéressant de les connaître (sans que cela doive devenir une source de préoccupation majeure).</p> + +<ul> + <li>{{cssxref("direction")}} : définit la direction du texte (cela dépend de la langue utilisée et généralement, on laissera cette tâche à HTML car cet aspect est fortement lié au contenu même).</li> + <li>{{cssxref("hyphens")}} : active ou désactive l'ajout de trait d'union pour former les césures en fin de ligne.</li> + <li>{{cssxref("line-break")}} : active ou désactive les sauts de lignes pour les langues asiatiques.</li> + <li>{{cssxref("text-align-last")}} : définit la façon dont la dernière ligne d'un bloc (ou une ligne avant un saut à la ligne explicite) est alignée.</li> + <li>{{cssxref("text-orientation")}} : définit l'orientation du texte sur une ligne.</li> + <li>{{cssxref("word-wrap")}} : définit si le navigateur ajoute ou non des retours à la ligne automatiques pour éviter un débordement du texte.</li> + <li>{{cssxref("writing-mode")}} : définit si les lignes du texte sont disposées horizontalement ou verticalement et la direction selon laquelle le bloc s'étend.</li> +</ul> + +<h2 id="La_suite">La suite</h2> + +<p>Avec tous ces éléments, vous devriez avoir un bon aperçu des outils CSS qui vous permettent de mettre en forme du texte. Nous vous encourageons à tester ces différentes propriétés et à bidouiller avec ces différents concepts pour concrétiser ces notions. Une fois à l'aise avec ces notions, n'hésitez pas à continuer avec un autre sujet : <a href="/fr/docs/Learn/CSS/Howto/create_fancy_boxes">créer de belles boîtes</a> contenant du texte.</p> diff --git a/files/fr/conflicting/learn/css/styling_text/fundamentals_8249b1bf53d09b06ed51f43697880b5b/index.html b/files/fr/conflicting/learn/css/styling_text/fundamentals_8249b1bf53d09b06ed51f43697880b5b/index.html new file mode 100644 index 0000000000..61bccf32f1 --- /dev/null +++ b/files/fr/conflicting/learn/css/styling_text/fundamentals_8249b1bf53d09b06ed51f43697880b5b/index.html @@ -0,0 +1,63 @@ +--- +title: Styles de texte +slug: CSS/Premiers_pas/Styles_de_texte +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/CSS/Styling_text/Fundamentals +translation_of_original: Web/Guide/CSS/Getting_started/Text_styles +--- +<p> </p> +<p>Cette page vous donne plus d'exemples de styles de texte.</p> +<p>Vous modifierez votre feuille de style pour utiliser différentes polices.</p> +<h3 id="Information_:_les_styles_de_texte" name="Information_:_les_styles_de_texte">Information : les styles de texte</h3> +<p>CSS dispose de plusieurs propriétés pour les styles de texte.</p> +<p>Il existe une propriété raccourcie pratique, <code>font</code>, que vous pouvez utiliser pour spécifier plusieurs choses à la fois — par exemple :</p> +<ul> <li>Les styles gras, italique et petites majuscules (petites capitales)</li> <li>La taille du texte</li> <li>La hauteur de ligne</li> <li>La police utilisée</li> +</ul> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> <caption>Exemple </caption> <tbody> <tr> <td> <div style="width: 40em;"> <pre class="eval"> +p {font: italic 75%/125% "Comic Sans MS", cursive;} +</pre> </div> <p>Cette règle change plusieurs propriétés de la police, et rend tous les paragraphes en italique.</p> <p>La taille du texte est définie aux trois quarts de la taille dans l'élément parent de chaque paragraphe, et la hauteur de ligne à 125% (un petit peu plus espacé qu'habituellement).</p> <p>La police choisie est Comic Sans MS, mais si celle-ci n'est pas disponible le navigateur utilisera sa police cursive (écriture à la main) par défaut.</p> <p>La règle a un effet de bord qui est de désactiver le gras et les petites majuscules (en les définissant à <code>normal</code>).</p> </td> </tr> </tbody> +</table> +<h4 id="Polices" name="Polices">Polices</h4> +<p>Il n'est pas possible de prédire les polices que les lecteurs de votre document auront. C'est pourquoi, lorsque vous spécifiez une police, il est utile de donner une liste d'alternatives, dans l'ordre de préférence.</p> +<p>À la fin de la liste, indiquez l'un des types de polices génériques par défaut : <code>serif</code>, <code>sans-serif</code>, <code>cursive</code>, <code>fantasy</code> ou <code>monospace</code>. (Celles-ci correspondent souvent à des paramètres définis dans les options de votre navigateur.)</p> +<p>Si la police ne permet pas d'afficher certaines parties du document, le navigateur peut lui substituer une autre police. Par exemple, le document peut contenir des caractères spéciaux qui ne sont pas définis dans la police. Si le navigateur arrive à trouver une autre police qui dispose de ces caractères, il utilisera celle-ci.</p> +<p>Pour spécifier une police particulière, utilisez la propriété <code>font-face</code>.</p> +<h4 id="Taille_de_police" name="Taille_de_police">Taille de police</h4> +<p>Les lecteurs utilisant des navigateurs Mozilla peuvent choisir la taille de police par défaut dans les options et changer la taille du texte pendant la lecture d'une page, il est donc recommandé d'utiliser des tailles de police relatives où c'est possible.</p> +<p>Vous pouvez utiliser certaines valeurs prédéfinies pour la taille, comme <code>small</code>, <code>medium</code> et <code>large</code>. Vous pouvez également utiliser des valeurs relatives à la taille de police de l'élément parent, comme ceci : <code>smaller</code>, <code>larger</code>, <code>150%</code> ou <code>1.5</code>.</p> +<p>Si nécessaire, vous pouvez spécifier une taille précise, comme : <code>12px</code> (12 pixels) pour un dispositif d'affichage ou <code>12pt</code> (12 points) pour une imprimante. Cette taille est théoriquement la largeur d'une lettre m, mais la manière dont la taille visible est liée à la taille spécifiée dépend d'une police à l'autre.</p> +<p>Pour spécifier une taille de police particulière, utilisez la propriété <code>font-size</code>.</p> +<h4 id="Hauteur_de_ligne" name="Hauteur_de_ligne">Hauteur de ligne</h4> +<p>La hauteur de ligne spécifie l'espacement entre les lignes. Si votre document dispose de longs paragraphes s'étalant sur de nombreuses lignes, un espacement plus grand que d'habitude peut le rendre plus facile à lire, particulièrement si la taille de police est petite.</p> +<p>Pour spécifier une hauteur de ligne particulière, utilisez la propriété <code>line-height</code>.</p> +<h4 id="D.C3.A9coration" name="D.C3.A9coration">Décoration</h4> +<p>La propriété séparée <code>text-decoration</code> permet de spécifier d'autres styles, comme <code>underline</code> (souligné), ou <code>line-through</code> (barré). Vous pouvez la définir à <code>normal</code> pour enlever explicitement toute décoration.</p> +<h4 id="Autres_propri.C3.A9t.C3.A9s" name="Autres_propri.C3.A9t.C3.A9s">Autres propriétés</h4> +<p>Pour spécifier l'italique, utilisez <code>font-style: italic;</code><br> +Pour spécifier le gras, utilisez <code>font-weight: bold;</code><br> +Pour spécifier de petites majuscules, utilisez <code>font-variant: small-caps;</code></p> +<p>Pour désactiver individuellement chacune de ces propriétés, vous pouvez spécifier la valeur <code>normal</code> ou <code>inherit</code>.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4; margin-bottom: 1em;"> <caption>Plus de détails </caption> <tbody> <tr> <td>Vous pouvez spécifier des styles de texte de bien d'autres manières. <p>Par exemple, certaines des propriétés mentionnées ici disposent d'autres valeurs possibles.</p> <p>Dans une feuille de style complexe, évitez d'utiliser la propriété raccourcie <code>font</code>, à cause de ses effets de bord (mise à zéro des autres propriétés).</p> <p>Pour plus de détails sur l'ensemble des propriétés liées aux polices, consultez <a class="external" href="http://www.w3.org/TR/CSS21/fonts.html">Fonts</a> dans la spécification CSS. Pour plus de détails sur la décoration du texte, consultez-y la section <a class="external" href="http://www.w3.org/TR/CSS21/text.html">Text</a>.</p> </td> </tr> </tbody> +</table> +<h3 id="Action_:_sp.C3.A9cification_de_polices" name="Action_:_sp.C3.A9cification_de_polices">Action : spécification de polices</h3> +<p>Pour un document simple, vous pouvez définir la police sur l'élément <small>BODY</small>, et tout le reste du document en héritera.</p> +<p>Éditez votre fichier CSS. Ajoutez cette règle pour changer la police globale. Le haut du fichier CSS est un endroit logique pour ce faire, mais la règle a le même effet où qu'elle soit placée :</p> +<div style="width: 40em;"> +<pre class="eval">body {font: 16px "Comic Sans MS", cursive;} +</pre> +</div> +<p>Ajoutez un commentaire expliquant la règle, et des espaces pour respecter la mise en page choisie.</p> +<p>Actualisez dans votre navigateur pour en voir l'effet. Si votre système dispose de Comic Sans MS, ou d'une autre police cursive qui ne supporte pas l'italique, votre navigateur choisira une police différente pour le texte en italique à la première ligne :</p> +<table style="border: 2px outset #36b; padding: 1em;"> <tbody> <tr> <td style="font: italic 16px 'Comic Sams MS', cursive; color: blue;"><strong style="color: red;">C</strong>ascading <strong style="color: green;">S</strong>tyle <strong style="color: green;">S</strong>heets</td> </tr> <tr> <td style="font: 16px 'Comic Sams MS', cursive; color: blue;"><strong style="color: red;">C</strong>ascading <strong style="color: red;">S</strong>tyle <strong style="color: red;">S</strong>heets</td> </tr> </tbody> +</table> +<p>Depuis la barre de menus, choisissez Affichage – Taille du texte – Plus grande. Bien que vous ayez spécifié précisément 16 pixels dans le style, un utilisateur lisant le document peut en changer la taille.</p> +<p> </p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #ffe;"> <caption>Challenge </caption> <tbody> <tr> <td>Sans rien changer d'autre, rendez les six lettres initiales deux fois plus grandes que la taille normale dans la police serif par défaut du navigateur : <table> <tbody> <tr> <td style="font: italic 16px 'Comic Sams MS', cursive; color: blue;"><strong style="color: red; font: 200% serif;">C</strong>ascading <strong style="color: green; font: 200% serif;">S</strong>tyle <strong style="color: green; font: 200% serif;">S</strong>heets</td> </tr> <tr> <td style="font: 16px 'Comic Sams MS', cursive; color: blue;"><strong style="color: red; font: 200% serif;">C</strong>ascading <strong style="color: red; font: 200% serif;">S</strong>tyle <strong style="color: red; font: 200% serif;">S</strong>heets</td> </tr> </tbody> </table> </td> </tr> </tbody> +</table> +<p> </p> +<h4 id="Pour_continuer" name="Pour_continuer">Pour continuer</h4> +<p>Votre document d'exemple utilise déjà plusieurs noms de couleurs. La page suivante liste les noms des couleurs standard et explique comment en spécifier d'autres : <strong><a href="/fr/CSS/Premiers_pas/Couleurs" title="fr/CSS/Premiers_pas/Couleurs">Couleurs</a></strong></p> + +<p>{{ languages( { "en": "en/CSS/Getting_Started/Text_styles", "it": "it/Conoscere_i_CSS/Stili_del_testo", "ja": "ja/CSS/Getting_Started/Text_styles", "pl": "pl/CSS/Na_pocz\u0105tek/Style_tekstowe", "pt": "pt/CSS/Como_come\u00e7ar/Estilos_de_texto" } ) }}</p> diff --git a/files/fr/conflicting/learn/css/styling_text/fundamentals_9e7ba587262abbb02304cbc099c1f0d8/index.html b/files/fr/conflicting/learn/css/styling_text/fundamentals_9e7ba587262abbb02304cbc099c1f0d8/index.html new file mode 100644 index 0000000000..5a9fcb6c63 --- /dev/null +++ b/files/fr/conflicting/learn/css/styling_text/fundamentals_9e7ba587262abbb02304cbc099c1f0d8/index.html @@ -0,0 +1,270 @@ +--- +title: Mise en forme basique du texte avec CSS +slug: Apprendre/CSS/formatage_texte_CSS +tags: + - Beginner + - CSS + - CodingScripting + - Example + - Guide + - Learn + - NeedsActiveLearning +translation_of: Learn/CSS/Styling_text/Fundamentals +translation_of_original: Learn/CSS/Basic_text_styling_in_CSS +--- +<div>{{IncludeSubnav("/fr/Apprendre")}}</div> + +<div class="summary"> +<p>Cet article explique comment mettre en forme le texte de documents {{Glossary("HTML")}} en utilisant les propriétés {{Glossary("CSS")}} les plus communes.</p> +</div> + +<table class="learn-box standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devez être familier avec <a href="/fr/Apprendre/CSS/CSS_properties">les propriétés CSS et comment les utiliser</a>.</td> + </tr> + <tr> + <th scope="row">Objectif :</th> + <td>Vous allez apprendre comment mettre en forme du texte en utilisant les propriétés CSS adéquates.</td> + </tr> + </tbody> +</table> + +<p>Depuis sa première mouture, CSS s'est spécialisé dans la mise en forme (autrement dit l'apparence) des sites web, permettant au HTML de se concentrer uniquement sur la structure du document.</p> + +<p>Avec plus de 250 propriétés, CSS est très riche. Dans cet article, nous n'en aborderons que certaines, utilisées pour le formatage du texte :</p> + +<ul> + <li>{{cssxref("color")}}</li> + <li>{{cssxref("font-family")}} (pour utiliser différentes polices)</li> + <li>{{cssxref("font-size")}}</li> + <li>{{cssxref("font-weight")}}</li> + <li>{{cssxref("font-style")}} (pour, par exemple, mettre en italique)</li> + <li>{{cssxref("line-height")}}</li> + <li>{{cssxref("text-align")}}</li> + <li>{{cssxref("text-decoration")}} (pour ajouter des lignes dessous, dessus et en travers du texte)</li> + <li>{{cssxref("text-transform")}} (pour modifier la casse du texte)</li> + <li>{{cssxref("text-shadow")}}</li> +</ul> + +<p>Une fois que vous vous serez familiarisé avec ces propriétés, nous vous encourageons à explorer d'autres propriétés de formatage du texte telles que {{cssxref("hyphens")}}, {{cssxref("letter-spacing")}}, {{cssxref("text-indent")}}, {{cssxref("text-overflow")}}, {{cssxref("vertical-align")}}, {{cssxref("white-space")}}, {{cssxref("word-spacing")}}), les sélecteurs spécifiques ({{cssxref("::first-letter")}} ou {{cssxref("::first-line")}}), ou les unités CSS utilisées pour la taille du texte ({{cssxref("length","em","#em")}} et {{cssxref("length","rem","#rem")}}). Pour personnaliser totalement votre texte, vous pouvez également utiliser vos propres polices de caractère grâce à {{cssxref("@font-face")}}.</p> + +<h2 id="Pédagogie_active">Pédagogie active</h2> + +<p><em>Il n'y a actuellement pas de contenu pour cette section. <a href="/fr/docs/MDN/D%C3%A9buter_sur_MDN">Vous pouvez néanmoins contribuer</a>.</em></p> + +<h2 id="Aller_plus_loin">Aller plus loin</h2> + +<h3 id="color"><code>color</code></h3> + +<p>La propriété {{cssxref("color")}} modifie la couleur du texte en faisant appel à divers {{cssxref("color_value","systèmes de notation","#rgb()")}} : hexadécimal, rouge-vert-bleu (aussi appelé RGB pour <em>red-green-blue</em>), teinte-saturation-lumière (ou HSL pour <em>hue-saturation-lightness</em>). Vous pouvez aussi utiliser un {{cssxref("color_value","mot-clé désignant une couleur","#Mots-cl.C3.A9s")}}. Voici un exemple illustrant comment colorer le texte en vert.</p> + +<p>Pour commencer, intéressons nous au fragment de code HTML suivant :</p> + +<pre class="brush: html"><p>Je suis un paragraphe vert.</p></pre> + +<p>Maintenant appliquons le style ci-dessous :</p> + +<pre class="brush: css">p { + color: green; /* C'est vert avec le mot clé "green" */ + color: <code>#008000; /* C'est vert avec la notation hexadecimale */</code> + color: rgb(0,128,0); /* <code>C'est vert avec la notation RGB</code> */ + color: hsl(120, 100%, 25%);/* C'est vert avec la notation HSL */ +}</pre> + +<div class="note"> +<p><strong>Astuce de pro :</strong> le code précédent peut-être très utile en CSS. En effet, les navigateurs qui supportent mal la gestion de couleurs HSL, se rabattent sur le modèle RGB, puis hexadécimal, et en dernier recours aux mots-clés s'ils ne supportent aucune autre syntaxe.</p> +</div> + +<p>Voici le résultat :</p> + +<p>{{EmbedLiveSample('color','100%')}}</p> + +<h3 id="font-family"><code>font-family</code></h3> + +<p>La propriété {{cssxref("font-family")}} est très utile pour ajouter une touche personnelle à votre site, <code>font-family</code> définit en effet une liste de polices dans lesquelles votre texte peut apparaître.</p> + +<p>La valeur de cette propriété est une liste de polices séparées par des virgules. Si le navigateur ne peut pas trouver la première police de la liste, il passe alors à la suivante et l'applique au texte concerné. Si aucune police de la liste ne fonctionne, alors le navigateur utilise sa propre police par défaut. Ce peut-être <code>serif</code>, <code>sans-serif</code> ou <code>monospace</code>. Voici un exemple :</p> + +<p>Pour notre prochain exemple, prenons le fragment de code HTML suivant :</p> + +<pre class="brush: html"><p class="serif">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> +<p class="sansserif">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p></pre> + +<p>Appliquons lui le style suivant :</p> + +<pre class="brush: css" style="font-size: 14px;">.sansserif { + font-family: Helvetica, Arial, sans-serif; +} + +.serif { + font-family: "Times New Roman", Times, serif; +} +</pre> + +<p>Voici le résultat :</p> + +<p>{{EmbedLiveSample('font-family','100%')}}</p> + +<h3 id="font-size"><code>font-size</code></h3> + +<p>La propriété {{cssxref("font-size")}} ajuste la taille du texte, en utilisant une de ces unités :</p> + +<dl> + <dt>{{cssxref("length","px","#px")}}</dt> + <dd>L'unité <code><strong>px</strong></code> détermine la hauteur en pixels de votre texte.</dd> + <dt>{{cssxref("length","em","#em")}}</dt> + <dd><code><strong>em</strong></code> spécifie la largeur de la lettre "M" avec la police utilisée. Les <em>ems</em> sont des unités de typographie communes, parce qu'elles permettent de définir facilement des tailles relatives par rapport à la police et taille actuelle. Ainsi, en indiquant une taille de police de <code>1.5em,</code> on précise que la taille du texte devrait faire 1,5 fois la taille de la lettre "M" de l'élément parent. Si l'élément parent n'a pas de taille absolue, <code>1em</code> vaut par défaut <code>16px</code>.</dd> + <dt>{{cssxref("length","rem","#rem")}}</dt> + <dd><code><strong>rem</strong></code> est beaucoup plus facile à utiliser comme unité qu'<em>em</em> car la taille du texte dépend de la taille initiale du texte, au lieu de dépendre de l'héritage d'un quelconque élement parent.</dd> + <dt>{{cssxref("length","pt","#pt")}}</dt> + <dd><code><strong>pt</strong></code> est l'abréviation de <strong>point</strong>, une unité typographique très courante dans le monde de l'impression. Les navigateurs transposent les points en pixels, mais avec une certaine irrégularité, il est donc préférable d'éviter cette unité.</dd> +</dl> + +<p>Voici une illustration de la différence entre <code>em</code> et <code>rem</code>, grâce à ce fragment de code HTML :</p> + +<pre class="brush: html"><div>Je mesure 1rem (par défaut) + <div class="rem">Je mesure 0.8rem. + <div class="rem">Je mesure aussi 0.8rem. + <div class="rem">Ici, je mesure également 0.8rem.</div> + </div> + </div> +</div> + +<hr> + +<div>Je mesure 1em (par défaut) + <div class="em">Je mesure 0.8em. + <div class="em">Je mesure aussi 0.8em. + <div class="em">Ici, je mesure également 0.8em.</div> + </div> + </div> +</div></pre> + +<p>En utilisant le style suivant :</p> + +<pre class="brush: css">.rem { + font-size: 0.8rem; +} + +.em { + font-size: 0.8em +} +</pre> + +<p>Le résultat obtenu est le suivant :</p> + +<p>{{EmbedLiveSample('font-size','100%')}}</p> + +<h3 id="font-weight"><code>font-weight</code></h3> + +<p>La propriété {{cssxref("font-weight")}} définit l'épaisseur des caractères, généralement à l'aide des valeurs <code>normal</code> ou <code>bold</code>. Voici un exemple :</p> + +<pre class="brush: css">.bold { + font-weight: bold; +}</pre> + +<h3 id="font-style"><code>font-style</code></h3> + +<p>La propriété {{cssxref("font-style")}} détermine si le texte doit être affiché normalement, en italique ou en oblique respectivement grâce à <code>normal</code>, <code>italic</code>, et <code>oblique</code> :</p> + +<pre class="brush: css">.italic { + font-style: italic; +}</pre> + +<h3 id="line-height"><code>line-height</code></h3> + +<p>La propriété {{cssxref("line-height")}} définit la hauteur de la ligne en utilisant les mêmes unités que la propriété <code>font-size</code>.</p> + +<pre class="brush: css">.line { + line-height: 80%; +}</pre> + +<div class="note"> +<p><strong>Astuce de pro :</strong> Vous pouvez appliquer les propriétés {{cssxref("font-style")}}, {{cssxref("font-weight")}}, {{cssxref("font-size")}}, {{cssxref("line-height")}}, et {{cssxref("font-family")}} à l'aide d'une seule propriété « parente » : {{cssxref("font")}}</p> + +<p>Les deux exemples suivants afficheront donc exactement la même chose :</p> + +<pre class="brush: css">body { + font: bold 1em/150% Helvetica, Arial, sans-serif; +}</pre> + +<pre class="brush: css">body { + font-weight: bold; + font-size : 1em; + line-height: 150%; + font-family: Helvetica, Arial, sans-serif; +}</pre> +</div> + +<h3 id="text-transform"><code>text-transform</code></h3> + +<p>La propriété {{cssxref("text-transform")}} modifie la casse du texte (autrement dit, elle permet d'afficher du texte en MAJUSCULES, minuscules ou en Capitales), comme le montre cet exemple :</p> + +<pre class="brush: css">.transform { + text-transform: uppercase; +}</pre> + +<h3 id="text-align"><code>text-align</code></h3> + +<p>La propriété {{cssxref("text-align")}} contrôle l'alignement du texte, en définissant l'alignement à gauche, à droite, ou centré ou justifié (<code>left</code>, <code>right</code>, <code>center</code>, ou <code>justified)</code> : </p> + +<pre class="brush: css">.center { + text-align: center; +}</pre> + +<h3 id="text-decoration"><code>text-decoration</code></h3> + +<p>La propriété {{cssxref("text-decoration")}} permet de faire apparaitre une ligne <u>en dessous</u>, <span style="text-decoration: overline;">au dessus</span>, ou <s>à travers de votre texte</s>. La valeur par défaut <code>none</code> supprime tout formatage. Voici, par exemple, comment barrer un texte en CSS :</p> + +<pre class="brush: css">.strike { + text-decoration: line-through; +}</pre> + +<h3 id="text-shadow"><code>text-shadow</code></h3> + +<p>La propriété {{cssxref("text-shadow")}} fait apparaître une ou plusieurs ombres derrière le texte à l'aide de quatre paramètres : le décalage horizontal, le décalage vertical, la taille du rayon et la couleur de l'ombre portée. On peut appliquer plusieurs ombres en définissant une liste d'ombres séparées par des virgules et obtenir ainsi à des effets visuels étonnants. Voici trois exemples qui utilisent le code HTML ci-après :</p> + +<pre class="brush: html"><p class="simple">COUCOU</p> +<p class="double">COUCOU</p> +<p class="feu">COUCOU</p> +</pre> + +<p>Si on applique maintenant ces différents styles :</p> + +<pre class="brush: css">p { + /* basic font setting */ + font: bold 3em Impact, sans-serif; + text-align: center; + letter-spacing: 2px +} + +.simple { + text-shadow: 2px 3px 5px rgba(0,0,0,0.3); +} + +.double { + text-shadow: 2px 2px 0 white, + 4px 4px 0 black; +} + +.feu { + color: white; + text-shadow: 0 0 2px #fefcc9, + 1px -1px 3px #feec85, + -2px -2px 4px #ffae34, + 2px -4px 5px #ec760c, + -2px -6px 6px #cd4606, + 0 -8px 7px #973716, + 1px -9px 8px #451b0e; +} +</pre> + +<p>Voici le résultat final :</p> + +<p>{{EmbedLiveSample('text-shadow','100%', 400)}}</p> + +<h2 id="Prochaines_étapes">Prochaines étapes</h2> + +<p id="CSS_text_styling">Vous pouvez bien sûr utiliser différentes combinaisons de ces propriétés pour parvenir au résultat visuel souhaité. Pour poursuivre votre apprentissage, vous pouvez jeter un œil à la façon d'<a href="/fr/Apprendre/CSS/Utiliser_CSS_dans_une_page_web">utiliser le CSS dans une page web</a> ou à notre <a href="/fr/docs/Web/CSS/Tutorials">tutoriel CSS</a>.</p> diff --git a/files/fr/conflicting/learn/css/styling_text/styling_lists/index.html b/files/fr/conflicting/learn/css/styling_text/styling_lists/index.html new file mode 100644 index 0000000000..3b25f0218c --- /dev/null +++ b/files/fr/conflicting/learn/css/styling_text/styling_lists/index.html @@ -0,0 +1,47 @@ +--- +title: personnaliser une liste +slug: Apprendre/CSS/Comment/personnaliser_une_liste +translation_of: Learn/CSS/Styling_text/Styling_lists +translation_of_original: Learn/CSS/Howto/customize_a_list +--- +<p>{{draft}}</p> + +<p class="summary">Les listes sont des structures très répandues en HTML et les CSS apportent un ensemble complet de propriétés pour leur donner l'apparence que vous voulez. Comprendre comment utiliser et modifier les styles par défaut est une compétence ordinaire dont vous aurez besoin dès que vous utiliserez les listes.</p> + +<p>Les listes {{Glossary("HTML")}} sont des structures très simples et se trouvent sous deux formes différentes : ordonnée ou non. Elles utilisent les balises {{HTMLElement('ul')}}, {{HTMLElement('ol')}}, et {{HTMLElement('li')}}. Vous trouverez tous les détails dans <a href="/fr/Apprendre/HTML/Comment/Créer_une_liste_d_éléments_avec_HTML">notre article dédié</a>, mais pour le reste de cet article, nous utiliserons le code HTML suivant pour appliquer les styles :</p> + +<pre class="brush: html"><ul> + <li>Je suis un élément de liste</li> + <li>Je suis un autre élément de liste</li> + <li> + <ul> + <li>Je suis un élément de liste imbriqué</li> + <li>Je suis un autre élément de liste imbriqué</li> + </ul> + </li> +</ul></pre> + +<h2 id="Styles_dédiés">Styles dédiés</h2> + +<p>Les CSS fournissent un jeu complet de propriétés pour gérer les puces :</p> + +<ul> + <li>{{cssxref('list-style')}}<br> + Une propriété qui regroupe la gestion de toutes les propriétés suivantes</li> + <li>{{cssxref('list-style-type')}}<br> + Le type de puce à afficher au début de chaque élément de liste</li> + <li>{{cssxref('list-style-position')}}<br> + Indique si la puce doit être affichée à l'intérieur ou à l'extérieur de la boîte encadrant l'élement de liste.</li> + <li>{{cssxref('list-style-image')}}<br> + Permet d'utiliser une image personnalisée au lieu d'un type de puce prédéfini.</li> +</ul> + +<p>En complément, les CSS permettent également d'avoir des <a href="/en-US/docs/Web/CSS/CSS_Lists_and_Counters">styles de compteurs personnalisés</a> qui vont très bien avec les listes.</p> + +<div class="note"> +<p>Les styles de compteurs ne seront pas abordés dans cet article. Si vous souhaitez approfondir ce sujet, nous avons à votre disposition <a href="/fr/docs/Web/CSS/Compteurs_CSS">un article dédié</a>.</p> +</div> + +<h2 id="Indentation_de_liste">Indentation de liste</h2> + +<h2 id="Puces_personnalisées">Puces personnalisées</h2> diff --git a/files/fr/conflicting/learn/css/styling_text/styling_lists_06e9538892250c13976a84639f0dadd2/index.html b/files/fr/conflicting/learn/css/styling_text/styling_lists_06e9538892250c13976a84639f0dadd2/index.html new file mode 100644 index 0000000000..fd091907fe --- /dev/null +++ b/files/fr/conflicting/learn/css/styling_text/styling_lists_06e9538892250c13976a84639f0dadd2/index.html @@ -0,0 +1,305 @@ +--- +title: Listes +slug: CSS/Premiers_pas/Listes +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/CSS/Styling_text/Styling_lists +translation_of_original: Web/Guide/CSS/Getting_started/Lists +--- +<p> </p> +<p>Cette page explique comment utiliser CSS pour spécifier l'apparence des listes.</p> +<p>Vous créerez un nouveau document d'exemple contenant des listes, et une nouvelle feuille de style habillant celles-ci.</p> +<h3 id="Information_:_les_listes" name="Information_:_les_listes">Information : les listes</h3> +<p>Si vous avez relevé le challenge sur la page précédente (<b><a href="fr/CSS/Premiers_pas/Contenu">Contenu</a></b>), vous avez vu comment on ajoutait du contenu devant un élément pour l'afficher comme un élément de liste.</p> +<p>Mais CSS fournit des propriétés spécialement conçues pour les listes. Il est généralement plus aisé d'utiliser ces propriétés lorsque c'est possible.</p> +<p>Pour spécifier le style d'une liste, utilisez la propriété <code>list-style</code> pour changer le type de marque.</p> +<p>Le sélecteur dans votre règle CSS peut soit sélectionner les éléments de la liste (par exemple example, <code>LI</code>), ou il peut sélectionner l'élément de liste parent (par exemple, <code>UL</code>) afin que les éléments héritent du style.</p> +<h4 id="Listes_non_ordonn.C3.A9es" name="Listes_non_ordonn.C3.A9es">Listes non ordonnées</h4> +<p>Dans une liste + <i> + non ordonnée</i> + , chaque élément de la liste est marqué de la même façon.</p> +<p>CSS propose trois types de marques. Voici comment votre navigateur les affiche :</p> +<ul style="padding-left: 2em;"> + <li style=""><code>disc</code> (rond plein)</li> + <li style=""><code>circle</code> (cercle)</li> + <li style=""><code>square</code> (carré)</li> +</ul> +<p>Vous pouvez également spécifier l'URL d'une image.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Ces règles spécifient différentes marques pour différentes classes d'éléments de liste : + <div style="width: 30em;"> + <pre class="eval"> +li.ouvert {list-style: circle;} +li.ferme {list-style: disc;} +</pre> + </div> + <p>Lorsque ces classes sont utilisées dans une liste, elle différencient les éléments ouverts et ceux qui sont fermés :</p> + <div style="width: 30em;"> + <pre class="eval"> +<UL> + <LI class="ouvert">Lorem ipsum</LI> + <LI class="ferme">Dolor sit</LI> + <LI class="ferme">Amet consectetuer</LI> + <LI class="ouvert">Magna aliquam</LI> + <LI class="ferme">Autem veleum</LI> +</UL> +</pre> + </div> + <p>Le résultat peut ressembler à ceci :</p> + <table style="border: 2px outset #36b; padding: 1em; background-color: white;"> + <tbody> + <tr> + <td> + <ul style="padding-right: 6em;"> + <li style="">Lorem ipsum</li> + <li style="">Dolor sit</li> + <li style="">Amet consectetuer</li> + <li style="">Magna aliquam</li> + <li style="">Autem veleum</li> + </ul> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<h4 id="Listes_ordonn.C3.A9es" name="Listes_ordonn.C3.A9es">Listes ordonnées</h4> +<p>Dans une liste + <i> + ordonnée</i> + , chaque élément de la liste est marqué différemment afin de montrer sa position dans la séquence.</p> +<p>Utilisez la propriété <code>list-style</code> pour spécifier le type de marque :</p> +<ul style="padding-left: 2em;"> + <li style=""><code>decimal</code> (chiffres décimaux)</li> + <li style=""><code>lower-roman</code> (chiffres romains minuscules)</li> + <li style=""><code>upper-roman</code> (chiffres romains majuscules)</li> + <li style=""><code>lower-latin</code> (lettres minuscules)</li> + <li style=""><code>upper-latin</code> (lettres majuscules)</li> +</ul> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Cette règle spécifie que les éléments <small>OL</small> de la classe <code>info</code> sont identifiés par des lettres majuscules. + <div style="width: 30em;"> + <pre class="eval"> +ol.info {list-style: upper-latin;} +</pre> + </div> + <p>Les éléments <small>LI</small> de la liste héritent de ce style :</p> + <table style="border: 2px outset #36b; padding: 1em; background-color: white;"> + <tbody> + <tr> + <td> + <ol style="padding-right: 6em;"> + <li style="list-style-type: upper-latin;">Lorem ipsum</li> + <li style="list-style-type: upper-latin;">Dolor sit</li> + <li style="list-style-type: upper-latin;">Amet consectetuer</li> + <li style="list-style-type: upper-latin;">Magna aliquam</li> + <li style="list-style-type: upper-latin;">Autem veleum</li> + </ol> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4; margin-bottom: 1em;"> + <caption> + Plus de détails</caption> + <tbody> + <tr> + <td>La propriété <code>list-style</code> est un raccourci. Dans des feuilles de style complexes, il peut être préférable d'utiliser des propriétés séparées pour régler les différentes valeurs. Pour des détails sur ces propriétés séparées, consultez <a class="external" href="http://www.w3.org/TR/CSS21/generate.html#q10">Lists</a> dans la spécification CSS. + <p>Si vous utilisez un langage de balisage comme HTML qui fournit des balises conventionnelles pour les listes ordonnées (<small>OL</small>) et non ordonnées (<small>UL</small>), il est préférable d'utiliser les balises de la manière prévue. Cependant, il est possible d'utiliser CSS pour que des listes <small>UL</small> s'affichent ordonnées et que des listes <small>OL</small> s'affichent non ordonnées si vous le désirez.</p> + <p>Les navigateurs n'implémentent pas tous de la même façon les styles de liste. Ne vous attendez pas à obtenir un résultat identique pour une même feuille de style dans tous les navigateurs.</p> + </td> + </tr> + </tbody> +</table> +<h4 id="Compteurs" name="Compteurs">Compteurs</h4> +<div style="border: 1px solid red; padding: 6px; margin: 0 0 .5em -6px; width: 100%;"> + <p><strong>Note : </strong> Certains navigateurs ne gèrent pas les compteurs.</p> +</div> +<p>Vous pouvez utiliser les compteurs pour numéroter toutes sortes d'éléments, pas seulement des éléments de liste. Par exemple, dans certains documents, vous pouvez avoir besoin de numéroter les titres ou les paragraphes.</p> +<p>Pour spécifier la numérotation, vous avez besoin d'un + <i> + compteur</i> + (counter) auquel vous devrez donner un nom.</p> +<p>Dans un élément placé avant l'endroit où le comptage doit commencer, remettez le compteur à zéro à l'aide de la propriété <code>counter-reset</code> et le nom de votre compteur. Le parent des éléments à compter est un bon endroit pour faire cela, mais vous pouvez utiliser n'importe quel élément qui précède votre liste.</p> +<p>Dans chaque élément où le compteur doit augmenter, utilisez la propriété <code>counter-increment</code> et le nom de votre compteur.</p> +<p>Pour afficher votre compteur, ajoutez <code>:before</code> ou <code>:after</code> au sélecteur et utilisez la propriété <code>content</code> (comme vous avez fait à la page précédente, <b><a href="fr/CSS/Premiers_pas/Contenu">Contenu</a></b>).</p> +<p>Dans la valeur de la propriété <code>content</code>, spécifiez <code>counter()</code> avec le nom de votre compteur. Optionellement, spécifiez aussi un type. Ceux-ci sont les mêmes que dans la section <b>Listes ordonnées</b> ci-dessus.</p> +<p>Normalement, l'élément qui affiche le compteur l'incrémente également.</p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: 1em;"> + <caption> + Exemple</caption> + <tbody> + <tr> + <td>Cette règle initialise un compteur pour chaque élément <small>H3</small> de la classe <code>numerote</code> : + <div style="width: 30em;"> + <pre class="eval"> +h3.numerote {counter-reset: mynum;} +</pre> + </div> + <p>Cette règle affiche et incrémente le compteur pour chaque élément <small>P</small> de la classe <code>numerote</code> :</p> + <div style="width: 30em;"> + <pre class="eval"> +p.numerote:before { + content: counter(mynum) " : "; + counter-increment: mynum; + font-weight: bold;} +</pre> + </div> + <p>Le résultat ressemble à ceci :</p> + <table style="border: 2px outset #36b; padding: .5em 6em .5em 1em; background-color: white;"> + <tbody> + <tr> + <td><b>Titre</b><br> + <p><b>1 : </b>Lorem ipsum</p> + <p><b>2 : </b>Dolor sit</p> + <p><b>3 : </b>Amet consectetuer</p> + <p><b>4 : </b>Magna aliquam</p> + <p><b>5 : </b>Autem veleum</p> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4; margin-bottom: 1em;"> + <caption> + Plus de détails</caption> + <tbody> + <tr> + <td>Vous ne pouvez pas utiliser les compteurs s'il n'est pas certain que tous les lecteurs de votre document ont un navigateur qui permet de les afficher. + <p>Si cela s'avère possible, un de leurs avantages est que vous pouvez styler les compteurs d'une façon différente des éléments de liste. Dans l'exemple ci-dessus, les compteurs sont en gras mais les éléments de liste ne le sont pas.</p> + <p>Vous pouvez également utiliser les compteurs de façon plus complexe — par exemple, pour numéroter des, titres, sous-titres et paragraphes dans des documents formels. Pour plus de détails, consultez <a class="external" href="http://www.w3.org/TR/CSS21/generate.html#counters">Automatic counters and numbering</a> dans la spécification CSS.</p> + </td> + </tr> + </tbody> +</table> +<h3 id="Action_:_listes_styl.C3.A9es" name="Action_:_listes_styl.C3.A9es">Action : listes stylées</h3> +<p>Créez un nouveau document HTML, <code>doc2.html</code>. Copiez et collez le contenu ci-dessous, en faisant défiler pour vous assurer de l'obtenir en entier :</p> +<div style="width: 48em; height: 12em; overflow: auto;"> + <pre class="eval"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> +<HTML> +<HEAD> +<TITLE>Document exemple 2</TITLE> +<LINK rel="stylesheet" type="text/css" href="style2.css"> +</HEAD> +<BODY> + +<H3 id="oceans">Les océans</H3> +<UL> +<LI>Arctique</LI> +<LI>Atlantique</LI> +<LI>Pacifique</LI> +<LI>Indien</LI> +<LI>Antarctique</LI> +</UL> + +<H3 class="numerote">Paragraphes numérotés</H3> +<P class="numerote">Lorem ipsum</P> +<P class="numerote">Dolor sit</P> +<P class="numerote">Amet consectetuer</P> +<P class="numerote">Magna aliquam</P> +<P class="numerote">Autem veleum</P> + +</BODY> +</HTML> +</pre> +</div> +<p>Créez une nouvelle feuille de style, <code>style2.css</code>. Copiez et collez le contenu ci-dessous :</p> +<div style="width: 48em;"> + <pre class="eval">/* paragraphes numérotés */ +h3.numerote {counter-reset: mynum;} + +p.numerote:before { + content: counter(mynum) " : "; + counter-increment: mynum; + font-weight: bold;} +</pre> +</div> +<p>Si la mise en page et les commentaires ne sont pas à votre goût, modifiez-les.</p> +<p>Ouvrez le document dans votre navigateur. Si votre navigateur gère les compteurs, vous verrez quelque chose comme ci-dessous. Sinon, vous ne verrez pas les nombres (et probablement même pas les deux points) :</p> +<table style="border: 2px outset #36b; padding: 0 6em 1em 1em; background-color: white;"> + <tbody> + <tr> + <td> + <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em;">Les océans</p> + <ul style=""> + <li style="">Arctique</li> + <li style="">Atlantique</li> + <li style="">Pacifique</li> + <li style="">Indien</li> + <li style="">Antarctique</li> + </ul> + <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em;">Paragraphes numérotés</p> + <p><b>1 : </b>Lorem ipsum</p> + <p><b>2 : </b>Dolor sit</p> + <p><b>3 : </b>Amet consectetuer</p> + <p><b>4 : </b>Magna aliquam</p> + <p><b>5 : </b>Autem veleum</p> + </td> + </tr> + </tbody> +</table> +<p> </p> +<table style="border: 1px solid #36b; padding: 1em; background-color: #ffe; width: 60%;"> + <caption> + Challenges</caption> + <tbody> + <tr> + <td>Ajoutez une règle à votre feuille de style pour numéroter les océans en chiffres romains de i à v : + <table style="border: 2px outset #36b; padding: 0 6em 1em 1em; background-color: white;"> + <tbody> + <tr> + <td> + <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em;">Les océans</p> + <ul style=""> + <li style="">Arctique</li> + <li style="">Atlantique</li> + <li style="">Pacifique</li> + <li style="">Indien</li> + <li style="">Antarctique</li> + </ul> + </td> + </tr> + </tbody> + </table> + <p><br> + Si votre navigateur gère les compteurs, modifiez votre feuille de style pour identifier les titres avec des lettres majuscules entre parenthèses comme ceci :</p> + <table style="border: 2px outset #36b; padding: 0 6em 1em 1em; background-color: white;"> + <tbody> + <tr> + <td> + <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em;">(A) Les océans</p> + <p><b>. . .</b></p> + <p style="font-weight: bold; font-size: 133%; margin-bottom: .3em; padding-top: .4em; padding-bottom: .16em;">(B) Paragraphes numérotés</p> + <p><b>. . .</b></p> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<p> </p> +<h4 id="Pour_continuer" name="Pour_continuer">Pour continuer</h4> +<p>Si vous avez eu des difficultés à comprendre cette page, ou si vous avez d'autres commentaires à son sujet, n'hésitez pas à contribuer à sa <a>page de discussion</a>.</p> +<p>Lorsque votre navigateur affiche votre document, il crée de l'espace autour des éléments lorsqu'il les dispose sur la page.</p> +<p>La page suivante explique comment utiliser CSS pour travailler sur les formes sous-jacentes aux éléments : <b><a href="/fr/docs/CSS/Premiers_pas/Bo%c3%aetes">Boîtes</a></b>.</p> diff --git a/files/fr/conflicting/learn/getting_started_with_the_web/dealing_with_files/index.html b/files/fr/conflicting/learn/getting_started_with_the_web/dealing_with_files/index.html new file mode 100644 index 0000000000..48f1d4cd14 --- /dev/null +++ b/files/fr/conflicting/learn/getting_started_with_the_web/dealing_with_files/index.html @@ -0,0 +1,130 @@ +--- +title: Ouvrir un fichier dans un navigateur web +slug: Apprendre/Ouvrir_un_fichier_dans_un_navigateur_web +tags: + - Beginner + - CodingScripting + - NeedsActiveLearning + - WebMechanics +translation_of: Learn/Getting_started_with_the_web/Dealing_with_files +translation_of_original: Learn/Open_a_file_in_a_browser +--- +<div class="summary"> +<p>Dans article, nous verrons comment ouvrir un fichier avec un navigateur web.</p> +</div> + +<table class="learn-box standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devez au préalable <a href="/fr/Apprendre/Mettre_en_place_un_environnement_de_travail">avoir mis en place un environnement de travail</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Apprendre les différentes façons d'ouvrir un fichier, ce qu'est un protocole et comment un protocole peut affecter le résultat obtenu.</td> + </tr> + </tbody> +</table> + +<p>Pour ouvrir un fichier dans votre navigateur web, il existe deux méthode :</p> + +<ol> + <li><strong>Le {{Glossary("protocol")}} {{Glossary("HTTP")}} :</strong> c'est-à-dire utiliser le navigateur pour accéder au fichier de votre serveur web local.</li> + <li><strong>Le protocole <code>file</code> : </strong>celui-ci permet d'accéder directement aux fichiers de votre ordinateur via le système de fichiers (pour cela, on passe par le menu <code>Fichier</code> > <code>Ouvrir un fichier…</code>).</li> +</ol> + +<p>Dans cet article, nous verrons les différences entre ces deux approches et pourquoi celles-ci sont importantes.</p> + +<h2 id="Pédagogie_active">Pédagogie active</h2> + +<p><em>Il n'existe pas encore de matériau interactif pour cet article</em><em>. <a href="/fr/docs/MDN/Débuter_sur_MDN">N'hésitez pas à contribuer</a>.</em></p> + +<h2 id="Aller_plus_loin">Aller plus loin</h2> + +<h3 id="Un_fichier_d'exemple">Un fichier d'exemple</h3> + +<p>Prenons un fichier <code>index.html</code> très simple qui utilise une image (nous verrons plus en détails comment utiliser des images dans les articles suivants) :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>Coucou</title> +</head> +<body> + <h1>Bonjour !</h1> + <p>Je suis une page web toute simple avec :</p> + <img src="/images/licorne.png" alt="une licorne !"/> +</body> +</html></pre> + +<h3 id="Ouvrir_un_fichier_depuis_le_serveur_local">Ouvrir un fichier depuis le serveur local</h3> + +<p>Si vous placez ce fichier HTML et l'image associée sous la racine du répertoire du serveur web puis que vous ouvrez le site à l'adresse <a href="http://localhost">http://localhost</a> dans votre navigateur, vous devriez obtenir un résultat semblable à celui-ci :</p> + +<p><img alt="Example of a page load through a local web server" src="https://mdn.mozillademos.org/files/11753/Capture%20du%202015-10-12%2011-36-20.png" style="height: 508px; width: 404px;"></p> + +<p>Maintenant, que se passe-t-il si <code>index.html</code> est déplacé autre part sur le serveur (ce qui arrive plus souvent qu'on le croit à première vue) mais que nos autres ressources (par exemple <code>images</code>) sont toujours sitées à la racine ?</p> + +<p>Lorsqu'on fait référence au fichier image, cette référence commence par une barre oblique (<code>/</code>) ce qui signifie que l'URL est <strong>relative au nom de domaine</strong>. Autrement dit, pour accéder à l'image, on remonte à la racine du domaine (en l'occurence <code>localhost</code>) puis à partir de ce point, on suit le chemin spécifié peu importe où est située la ressource à partir de laquelle on souhaite accéder à l'image (le fichier <code>index.html</code> de cet exemple pourrait être placé n'importe où sur le serveur <code>localhost</code>).</p> + +<p><em>Quel que soit le nouvel emplacement de </em><code>index.html</code>, tant que le chemin utilisé pour l'image est <code>/images/licorne.png</code>, le navigateur servira <a href="http://localhost/images/licorne.png">http://localhost/images/licorn.png</a>.</p> + +<p>Par exemple, si le fichier est déplacé sous <code>http://localhost/toto</code>, on pourra toujours voir la licorne :</p> + +<p><img alt="Example of a page not at the root of a local web server" src="https://mdn.mozillademos.org/files/11755/Capture%20du%202015-10-12%2012-11-08.png" style="height: 260px; width: 380px;"></p> + +<h3 id="Ouvrir_un_fichier_local">Ouvrir un fichier local</h3> + +<p>Maintenant, ouvrons un fichier présent sur l'ordinateur. Il existe trois méthodes :</p> + +<ul> + <li>Dans le navigateur, cliquer sur <code>Fichier</code> ⯈ <code>Ouvrir un fichier…</code></li> + <li>Glisser-déposer un fichier dans le navigateur</li> + <li>Sélectionner un fichier HTML en double-cliquant dessus (sous réserve que le logiciel associé aux fichiers <code>.html</code> soit bien votre navigateur)</li> +</ul> + +<p>Le navigateur interprètera toujours le fichier HTML mais n'affichera pas l'image :</p> + +<p><img alt="Example of a page open through the file protocol" src="https://mdn.mozillademos.org/files/11757/Capture%20du%202015-10-12%2012-18-34.png" style="height: 246px; width: 467px;"></p> + +<h4 id="Les_liens_absolus_relatifs_à_un_nom_de_domaine">Les liens absolus relatifs à un nom de domaine</h4> + +<p>Nous ne voyons plus l'image car nous avons utilisé un chemin <em>relatif à un nom de domaine.</em> En effet, nous avons indiqué au navigateur d'afficher une image situé au chemin suivant <code>/images/licorne.png</code>. Le navigateur va donc à la racine du système de fichiers de votre ordinateur et se déplace dans le répertoire <code>images</code> qui n'existe probablement pas. Le navigateur ne parvient pas à trouver l'image, il se résigne à utiliser l'attribut <code>alt</code> (et affiche donc "<code>une licorne !</code>").</p> + +<h4 id="Glossary(AJAX)_et_JavaScript">{{Glossary("AJAX")}} et JavaScript</h4> + +<p>Attention, JavaScript ne fonctionne pas bien avec le protocole <code>file</code>. Ainsi, lorsque vous voudrez lancer une requête {{Glossary("AJAX")}}, cela déclenchera cette procédure :</p> + +<ol> + <li>Chargement du code JavaScript qui remplacera une partie de la page web avec une autre partie.</li> + <li>Récupération de cette « autre partie » à l'adresse <code>http://localhost/ajax/remplacement.html</code>.</li> + <li>Remplacement de la première partie avec la seconde.</li> +</ol> + +<p>Pour que la deuxième étapes fonctionne, {{Glossary("AJAX")}} a besoin d'utiliser le protocole {{Glossary("HTTP")}}. Or, le protocole pour accéder à un fichier local n'est pas <code>http://</code> mais <code>file://</code>. CQFD : on ne peut pas accéder à un fichier local avec une requête AJAX. Cette restriction s'applique également à de nombreuses autres API JavaScript qui ne fonctionnent qu'avec le protocole HTTP. Cela est dû au modèle de sécurité utilisé pour le Web, que nous aborderons dans un autre article.</p> + +<h3 id="Ce_que_nous_avons_appris">Ce que nous avons appris</h3> + +<p>Pour résumer, il est utile de repérer comment un fichier est ouvert dans un navigateur afin de déterminer le contexte dans lequel on se place et pour comprendre les restrictions qui s'appliquent (notamment pour un fichier ouvert en local avec <code>file://</code>). Cela permet parfois d'éviter de penser que le site ne fonctionne pas correctement alors qu'il s'agit uniquement d'une ouverture de fichier malencontreuse.</p> + +<ul> + <li>Lorsqu'on utilise le protocole <code>file</code> pour visualiser une page web, il est nécessaire d'utiliser des URL absolues avec des noms de domaine.</li> + <li>Le protocole <code>file</code> est restreint quant à l'utilisation de JavaScript.</li> +</ul> + +<p>À l'opposé, le protocole <code>file</code> protocol est une méthode simple et efficace pour :</p> + +<ul> + <li>Vérifier l'allure d'un document sans sa mise en forme.</li> + <li>Vérifier l'accessibilité du site lorsque les images ne sont pas disponibles (les images sont alors remplacées par le texte contenu dans l'attribut <code>alt</code>).</li> +</ul> + +<h2 id="Prochaines_étapes">Prochaines étapes</h2> + +<p>Maintenant que nous avons vu les différences entre le protocole <code>http</code> et le protcole <code>file</code>, vous pouvez continuer :</p> + +<ul> + <li><a href="/fr/Apprendre/HTML/Écrire_une_simple_page_HTML">en créant votre première page web</a> ou</li> + <li><a href="/fr/Apprendre/Transférer_des_fichiers_vers_un_serveur_web">en transférant votre page actuelle vers un serveur distant</a>.</li> +</ul> diff --git a/files/fr/conflicting/learn/getting_started_with_the_web/index.html b/files/fr/conflicting/learn/getting_started_with_the_web/index.html new file mode 100644 index 0000000000..978bfc7c17 --- /dev/null +++ b/files/fr/conflicting/learn/getting_started_with_the_web/index.html @@ -0,0 +1,273 @@ +--- +title: Écrire une simple page HTML +slug: Apprendre/HTML/Écrire_une_simple_page_HTML +tags: + - Beginner + - CodingScripting + - Guide + - HTML + - Learn + - Web Development +translation_of: Learn/Getting_started_with_the_web +translation_of_original: Learn/HTML/Write_a_simple_page_in_HTML +--- +<div class="summary"> +<p>Dans ceta rticle, vous apprendrez à créer une page web simple grâce à {{Glossary("HTML")}}.</p> +</div> + +<table class="learn-box standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devez au préalable avoir <a href="/fr/Apprendre/Commencer_avec_le_web/Installation_outils_de_base">un éditeur de texte</a> et savoir <a href="/en-US/docs/Learn/Open_a_file_in_a_browser">comment ouvrir un fichier dans un navigateur</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Créer une page web que vous pourrez visualiser dans votre navigateur.</td> + </tr> + </tbody> +</table> + +<p>La plus simple des pages web est simplement un fichier {{Glossary("HTML")}} valide. Il suffit donc d'un fichier HTML valide, d'un éditeur de texte et d'un navigateur web. Dans cet article, nous verrons comment utiliser {{Glossary("Balise","quelques balises")}} HTML et comment voir la page dans un navigateur.</p> + +<h2 id="Pédagogie_active">Pédagogie active</h2> + +<p>Tout d'abord, assurez-vous d'avoir un navigateur web et un éditeur de texte avec lequel vous êtes à l'aise. Pour cet article, n'importe quel éditeur de texte conviendra (que ce soit Bloc-notes pour Windows, TextEdit pour Mac ou gedit pour GNU/Linux voire un autre). Une seule remarque : assurez-vous de bien créer des fichiers textes simples, sous TextEdit notamment, vous pouvez choisir l'option « Texte simple » dans le menu « Format ».</p> + +<h3 id="Première_étape_un_fichier">Première étape : un fichier</h3> + +<p>Une page web est, au strict minimum, un fichier HTML. Nous commencerons donc par en créer un. Lancez votre éditeur de texte puis saisissez le texte suivant :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> + <head> + <title>Coucou</title> + </head> + <body> + Cette page est une + page toute simple + </body> +</html></pre> + +<p>Vous pouvez éditer ce fichier comme vous le souhaitez en modifiant par exemple le texte dans les balises <code>title</code> ou <code>body</code>. Lorsque vous enregistrez le fichier, assurez-vous de l'enregister avec l'extension « .html ». Par exemple, le fichier peut être intitulé « ma_page.html ».</p> + +<p>Une fois que vous avez enregistré ce fichier sur votre ordinateur, vous devriez obtenir quelque chose qui ressemble à cette capture (bien entendu, l'allure dépendra de votre système d'exploitation et de votre configuration) :</p> + +<p><img alt="Screenshot of a file explorer with a html file for local test" src="https://mdn.mozillademos.org/files/11729/Capture%20du%202015-10-12%2009-32-59.png" style="height: 127px; width: 273px;"></p> + +<p>Si vous double-cliquez sur le fichier, celui-ci s'ouvrira dans votre navigateur. Pour ouvrir le fichier dans votre éditeur de texte afin de le modifier, vous pouvez cliquez-droit et choisir le logiciel avec lequel ouvrir le fichier (ici l'éditeur de texte) (sinon, vous pouvez glisser-déposer le fichier dans votre éditeur ou encore choisir de l'ouvrir depuis l'éditeur grâce à l'option « Ouvrir » qui se situe généralement dans le menu « Fichier »). Selon l'éditeur que vous utilisez, vous devriez avoir quelque chose qui ressemble à :</p> + +<p><img alt="Screenshot of a file explorer with a html file for local test" src="https://mdn.mozillademos.org/files/11731/Capture%20du%202015-10-12%2009-37-47.png" style="height: 241px; width: 517px;"></p> + +<h3 id="Deuxième_étape_un_navigateur_web">Deuxième étape : un navigateur web</h3> + +<p>Dans votre explorateur de fichiers (Windows Explorer sur Windows, Finder sur Mac ou Fichiers sur Ubuntu), repérez le fichier que vous avez créé et ouvrez-le dans votre navigateur web (en double-cliquant dessus ou en glissant-déposant le fichier sur l'icône du navigateur). Le navigateur affiche alors le texte du fichier HTML que vous avez créé et l'onglet affiche le titre de la page. Selon le navigateur et la plateforme que vous utilisez, cela devrait ressembler à :</p> + +<p><img alt="Screenshot of a file explorer with a html file for local test" src="https://mdn.mozillademos.org/files/11733/Capture%20du%202015-10-12%2009-41-27.png" style="border-style: solid; border-width: 1px; height: 111px; width: 462px;"></p> + +<p>Vous pouvez voir le contenu de la page et le titre dans l'onglet. Toutefois, on voit qu'il n'y a pas de saut de ligne… intéressant.</p> + +<h3 id="Troisième_étape_à_vous_de_jouer_!">Troisième étape : à vous de jouer !</h3> + +<p>Essayez de manipuler le fichier HTML dans tous les sens en ajoutant du texte, en retirant des morceaux pour voir ce que ça donne. Certaines modifications n'empêcheront pas la page de s'afficher dans le navigateur, d'autres en revanche casseront la page et causeront des problèmes d'affichage. Vous verrez alors que le navigateur essaie de corriger certains problèmes.</p> + +<p>La première chose que vous devriez avoir remarqué est que le texte qui est affiché à l'écran est uniquement le texte qui n'est pas contenu entre des chevrons ouvrants et fermants (« < » et « > »). Tout le texte contenu entre ces chevrons forme des {{Glossary("balises")}} qui représentent la structure (ou le squelette) de la page. Tout le contenu affiché est situé à l'intérieur de ces balises.</p> + +<p>Dans notre page d'exemple, on a deux sections : un en-tête contenu dans le bloc {{HTMLElement("head")}} et un « corps » contenu dans le bloc {{HTMLElement("body")}}. Le corps contient le texte qui est affiché sur la page.</p> + +<p>Chaque balise possède une signification particulière et doit être utilisée à bon escient. Par exemple, {{HTMLElement("title")}} est utilisé afin d'indiquer le titre d'une page (qui peut être différent du nom utilisé pour le fichier). On remarque aussi que des balises sont imbriquées dans d'autres balises : {{HTMLElement("title")}} est par exemple contenue dans {{HTMLElement("head")}}.</p> + +<p>Si vous souhaitez ajouter quelque chose à votre page, une image par exemple, vous devrez ajouter une balise pour l'image :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> + <head> + <title>Coucou</title> + </head> + <body> + Cette page est une + page toute simple + <img src="licorne.png" alt="Une image de licorne :)" /> + avec une licorne + </body> +</html></pre> + +<p>Pour obtenir ce résultat, il suffit d'éditer le fichier HTML vu précédemment et d'y ajouter la ligne suivante avec {{HTMLelement("img")}} :</p> + +<pre class="brush: html"><img src="licorne.png" alt="Une image de licorne :)" /></pre> + +<p>Cet élément peut être placé n'importe où dans l'élément {{HTMLElement("body")}}. N'oubliez pas de sauvegarder la page que vous avez modifiée !</p> + +<p>Ensuite, vous devrez ajouter un fichier intitulé "licorne.png" dans le même répertoire que votre fichier HTML. Une fois que c'est fait, rafraîchissez la page dans votre navigateur web (ou réouvrez le fichier dans le navigateur. Vous devriez alors voir la page qui a changé et qui contient une image (n'oubliez pas de sauvegarder votre fichier HTML).</p> + +<p><img alt="Original file for the unicorn image" src="https://mdn.mozillademos.org/files/8495/unicorn_pic.png" style="height: 300px; width: 242px;"></p> + +<div class="note"> +<p><strong>Note :</strong> Vous pouvez télécharger cette image depuis cette page en cliquant-droit sur l'image et en choisissant l'option « Enregistrer l'image sous » du menu contextuel.</p> +</div> + +<p>Pour que cet exemple fonctionne, vous aurez besoin d'avoir les fichier organisés de cette façon sur votre ordinateur :</p> + +<p><img alt="Screenshot of the explorer with 2 files : a html file and a picture file" src="https://mdn.mozillademos.org/files/11735/Capture%20du%202015-10-12%2009-56-10.png" style="height: 167px; width: 289px;"></p> + +<p>La page obtenue devrait alors ressembler à :</p> + +<p><img alt="Screenshot for the example with a picture" src="https://mdn.mozillademos.org/files/11737/Capture%20du%202015-10-12%2009-57-54.png" style="border-style: solid; border-width: 1px; height: 410px; width: 740px;"></p> + +<p>Vous avez pu voir que l'élément{{HTMLElement("img")}} avait des <strong>{{Glossary("attribut","attributs")}}</strong> : ceux-ci permettent de fournir des informations supplémentaires afin de construire l'objet à afficher (dans ce cas, un attribut permet de connaître le nom du fichier à utiliser pour l'image et un autre permet de fournir un texte alternatif qui peut être affiché lorsque l'image ne peut être chargée).</p> + +<p>Cet exemple illustre comment ajouter une image ) votre page web mais vous pouvez utiliser des techniques semblables pour ajouter des musiques, des vidéos et d'autres éléments, rien qu'en utilisant HTML.</p> + +<h2 id="Aller_plus_loin">Aller plus loin</h2> + +<h3 id="Ce_n'est_pas_la_plus_jolie_des_pages_web…">Ce n'est pas la plus jolie des pages web…</h3> + +<p>Comme vous avez pu le voir, cette page web n'est pas non plus un canon de beauté. Cela s'explique car HTML gère uniquement le contenu et sa signification (aussi appelée « sémantique »), il ne gère pas la mise en forme (le « <em>design</em> ») de la page.</p> + +<p>{{Glossary("CSS")}} permet d'enjoliver le contenu en ajoutant des couleurs, en gérant des polices, la mise en page, etc. HTML serea suffisant pour créer des pages web simples. En revanche, pour créer des pages plus complexes ou plus attractives, il faudra appeler CSS voire {{Glossary("JavaScript")}} à la rescousse. HTML permet de construire le contenu, CSS permet de le mettre en forme et JavaScript permet de le rendre dynamique.</p> + +<p>Utilisons CSS pour que le texte de la page soit affiché en bleu :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> + <head> + <title>Coucou</title> + <style> + body { + color: blue; + } + </style> + </head> + <body> + <p>Voici du texte bleu</p> + <img alt="Une image de licorne :)" src="licorne.png"/> + </body> +</html></pre> + +<p>Ici, on a ajouté l'élément {{HTMLElement("style")}} à l'élément {{HTMLElement("head")}}. Celui-ci permettra de définir le CSS à appliquer au texte présent dans le corps de la page.</p> + +<p>Vous aimeriez que votre texte soit souligné ? Vous pouvez ajouter la règle <code>text-decoration: underline;</code> :</p> + +<pre class="brush: css">body { + color: blue; + text-decoration: underline; +}</pre> + +<p>Si vous souhaitez que votre texte ait une taille donnée, vous pouvez ajouter <code>font-size: 42px;</code> comme ceci :</p> + +<pre class="brush: css">body { + color: blue; + text-decoration: underline; + font-size: 42px; +}</pre> + +<p>Au final, le code obtenu ressemblera à :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> + <head> + <title>Coucou</title> + <style> + body { + color: blue; + text-decoration: underline; + font-size: 42px; + } + </style> + </head> + <body> + <p>Voici du texte bleu</p> + <img alt="Une image de licorne :)" src="licorne.png"/> + </body> +</html></pre> + +<p>Si vous sauvegardez la page dans votre éditeur puis que vous rafraîchissez la page dans le navigateur, vous devriez pouvoir voir quelque chose comme :</p> + +<p><img alt="Screenshot of the browser with the page with some CSS" src="https://mdn.mozillademos.org/files/11739/Capture%20du%202015-10-12%2010-16-45.png" style="border-style: solid; border-width: 1px; height: 514px; width: 446px;"></p> + +<h3 id="Avoir_deux_pages_web">Avoir deux pages web</h3> + +<p>Lorsque vous naviguez sur le Web, vous rencontrez souvent des {{Glossary("hyperliens","liens")}}. Ceux-ci permettent de naviguer de page en page. Comme nous l'avons vu avant, HTML s'occupe principalement du contenu d'une page. Or, les liens sont une forme de contenu. Autrement dit : il est possible de créer des liens en utilisant uniquement HTML.</p> + +<h4 id="Créer_un_lien_entre_deux_pages_locales">Créer un lien entre deux pages locales</h4> + +<p>Dans cet exercice, nous aurons besoin de deux fichiers HTML. Nous ajouterons un lien dans chacune de ces pages afin de pouvoir passer de l'une à l'autre.</p> + +<p>Dans le premier fichier, vous pouvez conserver la même structure que précédemment. Le plus important est d'ajouter une nouvelle balise {{HTMLElement("a")}} de cette façon:</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> + <head> + <title>Page 1</title> + </head> + <body>Ici la page 1. + <a href="page2.html" title="Vers la page 2">Que se passe-t-il page 2 ?</a></body> +</html></pre> + +<p>La deuxième page, quant à elle, contient un lien vers la première :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> + <head> + <title>Page 2 :)</title> + </head> + <body>Ici la page 2. + <a href="page1.html" title="Vers la page 1">Souhaitez-vous revenir vers la page 1 ? Cliquez-ici</a></body> +</html></pre> + +<div class="note"> +<p><strong>Note :</strong> Assurez-vous que les noms de fichiers définis dans les balises {{HTMLElement("a")}} avec les attributs <code>href</code> correspondent bien aux noms des fichiers que vous avez sur votre ordinateur.</p> +</div> + +<p>Dans votre navigateur, vous pouvez alors naviguer entre les deux documents HTML. Ouvrez la première page dans le navigateur puis cliquez sur le lien pour accéder à la deuxième page et <em>vice versa</em>. Vous pouvez également utiliser le bouton « Précédent » de votre navigateur pour revenir à la page que vous consultiez précédemment.</p> + +<p>Pour cet exercice, votre gestionnaire de fichiers devrait avoir deux fichiers HTML placés dans le même répertoire :</p> + +<p><img alt="Screenshot of the file explorer with two HTML documents in one directory/folder" src="https://mdn.mozillademos.org/files/11741/Capture%20du%202015-10-12%2010-33-15.png" style="height: 211px; width: 288px;"></p> + +<p>Dans le navigateur web, la page 1 ressemblera à :</p> + +<p><img alt="Screenshot of a file explorer with a html file for local test" src="https://mdn.mozillademos.org/files/11743/Capture%20du%202015-10-12%2010-34-56.png" style="border-style: solid; border-width: 1px; height: 112px; width: 455px;"></p> + +<p>Après avoir cliqué sur le lien, on arrive sur la page 2 :</p> + +<p><img alt="Screenshot of the 2nd page of the 2 pages example in the browser" src="https://mdn.mozillademos.org/files/11747/Capture%20du%202015-10-12%2010-38-17.png" style="border-style: solid; border-width: 1px; height: 152px; width: 559px;"></p> + +<div class="note"> +<p><strong>Note :</strong> On remarque que le lien sur la page 2 est violet. De cette façon, le navigateur montre que vous avez déjà visité la page 1 (en quelque sorte, le navigateur garde en mémoire les pages et l'affiche de cette façon).</p> +</div> + +<p>Si vous voulez, vous pouvez très bien continuer cet exercice avec plus de deux pages. Vous pouvez également poursuivre la lecture de cet article pour compléter ce que nous avons vu jusqu'à présent.</p> + +<h4 id="Ajouter_un_lien_vers_un_autre_site_web">Ajouter un lien vers un autre site web</h4> + +<p>Dans cet exercice, nous ajouterons un lien dans le fichier HTML afin que le visiteur du site puisse se rendre facilement sur une autre page web complémentaire. Il est possible d'ajouter un lien vers n'importe quelle page publique sur le Web. Pour cet exemple, nous ajouterons un lien vers Wikipédia :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"/> + <title>Ma page</title> + </head> + <body>Il était une fois,...Les licornes sont superbes... La fin. + <a href="https://fr.wikipedia.org/wiki/Licorne" title="Page Wikipédia sur les licornes">Vous voulez en savoir plus sur les licornes ? Wikipédia est à portée de clic.</a></body> +</html></pre> + +<p>Dans le navigateur, cela devrait ressembler à :</p> + +<p><img alt="Screenshot of the example page with a link to Wikipedia in the browser" src="https://mdn.mozillademos.org/files/11751/Capture%20du%202015-10-12%2010-53-24.png" style="height: 196px; width: 1103px;"></p> + +<p>Lorsque vous passez votre souris sur le lient, vous verrez que le texte contenu dans l'attribut {{htmlattrxref("title")}} est affiché dans une <strong>bulle d'informations</strong>. Ce texte peut être utilisé afin de fournir plus d'informations sur le lien pour aider l'utilisateur à déterminer s'il est utile de cliquer sur le lien ou non.</p> + +<div class="note"> +<p><strong>Rappel :</strong> À chaque fois que vous modifiez la page, n'oubliez pas de sauvegarder le fichier dans votre éditeur et de rafraîchir la page dans votre navigateur afin de visualiser vos modifications.</p> +</div> + +<h2 id="Prochaines_étapes">Prochaines étapes</h2> + +<ul> + <li><a href="/fr/Apprendre/HTML/Balises_HTML">Comment utiliser les balises HTML</a> : Il existe plus d'une centaine de balises HTML et nous n'en avons vu qu'une infime partie. Dans ce nouvel article vous trouverez de nouvelles ressources sur ce qu'il est possible de faire avec HTML.</li> + <li><a href="/fr/Apprendre/Concevoir_page_web">L'anatomie d'une page web</a> : HTML doit respecter certaines règles qui permettent d'organiser une page avec beaucoup de contenu. Cet article vous aidera à déchiffrer les pages les plus complexes comme celles qui sont utilisées sur des sites connus !</li> + <li><a href="/fr/Apprendre/Le_fonctionnement_des_liens_sur_le_Web">Comprendre le fonctionnement des liens</a> : Ici, nous avons utiliser des liens très simples, dans cet article, vous pourrez comprendre pourquoi les liens sont à l'origine de la Toile (<em>Web</em>).</li> + <li><a href="/fr/docs/Apprendre/HTML/Comment/Ajouter_des_images_%C3%A0_une_page_web">Utiliser des images</a> et <a href="/fr/docs/Apprendre/HTML/Comment/Ajouter_contenu_audio_vid%C3%A9o_page_web">ajouter des fichiers audio et vidéo</a> permettent qu'une page web ne contienne pas que du texte mais aussi des éléments multimédia grâce à HTML.</li> +</ul> diff --git a/files/fr/conflicting/learn/getting_started_with_the_web/javascript_basics/index.html b/files/fr/conflicting/learn/getting_started_with_the_web/javascript_basics/index.html new file mode 100644 index 0000000000..c95ba3d3a2 --- /dev/null +++ b/files/fr/conflicting/learn/getting_started_with_the_web/javascript_basics/index.html @@ -0,0 +1,338 @@ +--- +title: Tutoriel pour débuter en JavaScript +slug: Web/JavaScript/guide_de_demarrage +tags: + - Beginner + - JavaScript + - NeedsBeginnerUpdate + - Tutorial +translation_of: Learn/Getting_started_with_the_web/JavaScript_basics +translation_of_original: Web/JavaScript/Getting_Started +--- +<h2 id="Why_JavaScript.3F" name="Why_JavaScript.3F">Pourquoi JavaScript ?</h2> +<p>JavaScript est un langage de programmation puissant, complexe et trop souvent mal compris. Il permet le développement rapide d'applications avec lesquelles l'utilisateur va pouvoir intéragir pour saisir des données et observer le résultat de leur traitement.</p> +<p>L'avantage premier de JavaScript, dont le standard correspondant est connu sous l'appellation ECMAScript, est qu'il est centré sur le navigateur web, aussi il produira un résultat similaire sur toutes les plateformes supportées par le navigateur. Les exemples sur cette page, tout comme Google Maps, fonctionnent sur Linux, OS X and Windows. Avec le nombre toujours grandissant de bibliothèques JavaScript, il est de plus en plus facile de naviguer dans le document, sélectionner des éléments du DOM, créer des animations, gérer les évènements, et développer des applications AJAX. Contrairement à l'hyper médiatisation d'autres technologies promues par divers intérêts propriétaires, JavaScript est réellement le seul langage multi-plateformes côté client qui est à la fois gratuit et universellement adopté.</p> +<h2 id="What_you_should_already_know" name="What_you_should_already_know">Ce que vous devriez déjà savoir</h2> +<p>JavaScript est un langage très facile d'accès. Tout ce dont vous avez besoin pour commencer est d'un éditeur de texte et d'un navigateur web.</p> +<p>Bon nombre d'autres technologies allant au delà de la portée de ce document peuvent êtres intégrées et développées dans la continuité de JavaScript.<br> + Ne vous attendez pas à réaliser une application comme Google Maps dès vos premières lignes en JavaScript.</p> +<h2 id="Getting_Started" name="Getting_Started">Pour commencer</h2> +<p>Il est très facile de débuter en JavaScript. Vous n'avez pas besoin d'avoir des outils de développement installés. Vous n'avez pas besoin de savoir utiliser une console, Make, ou d'utiliser un compilateur. JavaScript est interprété par votre navigateur web. Tout ce dont vous avez besoin est d'enregistrer votre programme dans un fichier texte puis de l'ouvrir dans votre navigateur. C'est tout.</p> +<p>JavaScript est un excellent langage de programmation pour débuter l'apprentissage de langages informatiques. Il permet des retours instantanés pour le nouvel étudiant, et lui fera découvrir des outils dont il ne manquera pas d'apprécier l'utilité dans la vie réelle. C'est un contraste saisissant en comparaison des langages C, C++ et Java qui peuvent être utiles pour certaines applications particulières.</p> +<h2 id="Browser_Compatibility_Issues" name="Browser_Compatibility_Issues">Les problèmes de compatibilité entre les navigateurs</h2> +<p>Il existe certaines variations concernant la disponibilité des fonctionnalités entre les différents navigateurs. Mozilla Firefox, Google Chrome, Microsoft Internet Explorer, Apple Safari et Opera se comportent différement. <span style="line-height: 1.5;">Vous pouvez atténuer ces fluctuations en utilisants les diverses API JavaScript multi-plateformes disponibles. Ces API fournissent des fonctionnalités communes et masquent certaines des variations entre les navigateurs.</span></p> +<h2 id="How_to_try_the_Examples" name="How_to_try_the_Examples">Comment essayer les exemples</h2> +<p>Les exemples qui suivent possédent des échantillons de code. Il y a de multiples façons d'essayer ces exemples. Si vous posséder votre propre site, vous pouvez les sauvegarder comme nouvelles pages de celui-ci.</p> +<p>Si vous ne possédez pas de site personnel, vous pouvez sauvegarder ces exemples sous forme de fichiers sur votre ordinateur et les ouvrir dans le navigateur que vous utilisez en ce moment.<br> + JavaScript est un langage très simple à utiliser pour commencer la programmation pour cette raison. Vous n'avez pas besoin de compilateur, ou d'un environnement de développement ; votre navigateur est le seul outil dont vous avez besoin pour démarrer.</p> +<p>Vour pouvez également utiliser certains site comme <a href="http://jsfiddle.net/">jsfiddle.net</a> pour tester du code JavaScript.</p> +<h2 id="Example:_Catching_a_mouse_click" name="Example:_Catching_a_mouse_click">Exemple : Capturer le clic de la souris</h2> +<p>Les spécificités de la gestion d'événements (types d'événements, enregistrement des gestionnaires, propagation, etc.) sont trop vastes pour être totalement couverte par ce simple exemple. De plus, celui-ci ne peut présenter la capture du clic souris sans approfondir un minimum le système d'événements JavaScript. Garder à l'esprit que cet exemple va seulement éfleurer l'exhaustivité des événements JavaScript et que si vous souhaitez aller au delà des fonctionnalités basiques qui y sont décrites, lisez en plus à propos du système d'<a href="/fr/docs/Web/JavaScript/Guide/Boucle%C3%89v%C3%A9nements">événements JavaScript</a>.</p> +<p>Les événements « souris » sont un sous-ensemble de la pléthore d'événements déclenchés par le navigateur Web en réponse aux actions de l'utilisateur. Ce qui suit est une liste des événements émis en réponse aux actions d'un utilisateur sur la souris <span style="line-height: 1.5;">:</span></p> +<ul> + <li><code>click</code> - transmis quand un utilisateur clic avec la souris</li> + <li><code>dblclick</code> - transmis quand un utilisateur double-clic avec la souris</li> + <li><code>mousedown</code> - transmis lorsqu'un utilisateur presse un bouton de la souris (la première moitié d'un clic)</li> + <li><code>mouseup</code> - transmis lorsqu'un utilisateur relâche un bouton de la souris (la seconde moitié d'un clic)</li> + <li><code>mouseout</code> - transmis lorsque le pointeur de la souris quitte les limites graphiques d'un objet</li> + <li><code>mouseover</code> - transmis lorsque le pointeur de la souris entre dans les limites graphiques d'un objet</li> + <li><code>mousemove</code> - transmis lorsque le pointeur de la souris bouge à l'intérieur des limites graphiques d'un objet</li> + <li><code>contextmenu</code> - transmis lorsqu'un utilisateur effectue un clic-droit.</li> +</ul> +<p>Noter que dans les versions d'HTML, les événements <em>inline</em> (ceux ajoutés en tant qu'attribut de balise), doivent être écris en minuscule et que les gestionnaires d'événements dans les scripts sont aussi en minuscule.</p> +<p>La méthode la plus simple pour capturer ces événements et enregistrer les gestionnaires - en utilisant le HTML - est de spécificer chaque événement en tant qu'attribut de l'élément désiré.</p> +<pre class="brush:js"> <span onclick="alert('Hello World!');">Cliquer ici</span></pre> +<p>Le code JavaScript que vous souhaitez exécuter peut être disposé en ligne dans l'élément ou bien être placé dans un éléménet <script> au sein de votre page HTML :</p> +<pre class="brush: js"><script> + function clickHandler() { + alert("Hello, World!"); + } +</script> +<span onclick="clickHandler();">Cliquer ici</span></pre> +<p>Il est possible de capturer et d'utiliser l'événement qui se produit. Cela permet au développeur d'accéder à plus d'informations (par exemple : l'objet qui a reçu l'événement, le type de l'événement et le bouton de la souris utilisé). Par exemple :</p> +<pre class="brush: js"><script> + function clickHandler(événement) { + var eType = événement.type; + /* l'instruction suivante est utilisée à des fins de compatibilité */ + /* Firefox renseignera la propriété target de l'événement */ + /* IE renseignera la propriété srcElement */ + var eTarget = événement.target || événement.srcElement; + + alert( "événement capturé (type = " + eType + ", cible = " + eTarget + ")" ); + } +</script> +<span onclick="clickHandler(event);">Cliquer ici</span></pre> +<p>En plus de pouvoir recevoir des événements dans le HTML, il est possible de définir de nouveaux éléments HTML en JavaScript et de définir leurs attributs. L'exemple ci-après permet d'ajouter un élément {{HTMLElement("span")}} au corps de la page et de définir les attributs nécessaires pour qu'il reçoive les événements liés à la souris.</p> +<pre class="brush: js"><body></body> +<script> + function mouseeventHandler(event) { + /* La ligne qui suit est utilisée à des fins de compatibilité */ + /* IE ne fournit pas directement l'événement */ + /* il faut obtenir une référence vers l'événement si nécessaire */ + if (!event) event = window.event; + + /* on récupère le type de l'événement et la cible */ + var eType = event.type; + var eTarget = event.target || event.srcElement; + alert(eType +' événement sur l'élément avec l'identifiant '+ eTarget.id); + } + + function onloadHandler() { + /* on récupère une référence à l'élément 'body' de la page */ + var body = document.body; + /* on crée un élément span sur lequel on pourra cliquer */ + var span = document.createElement('span'); + span.id = 'SpanExemple'; + span.appendChild(document.createTextNode ('Cliquer ici !')); + + /* on inscrit l'objet span aux différents événements liés à la souris + les événements sont écrits en minuscules, le nom du gestionnaire d'événement + peut avoir n'importe quelle casse. + */ + span.onmousedown = mouseeventHandler; + span.onmouseup = mouseeventHandler; + span.onmouseover = mouseeventHandler; + span.onmouseout = mouseeventHandler; + + /* on affiche l'élément span sur la page */ + body.appendChild(span); +} + +window.onload = onloadHandler; // on remplace la fonction (on ne l'appelle pas) et donc on ne met pas de parenthèses +</script></pre> +<h2 id="Example:_Catching_a_keyboard_event" name="Example:_Catching_a_keyboard_event">Exemple : Intercepter un événement clavier</h2> +<p>De la même façon que pour les événements liés à la souris, il est possible d'utiliser les événements JavaScript pour capturer les interactions liées au clavier. Un événement est déclenché à chaque fois qu'une touche du clavier est utilisée.</p> +<p>La liste des événéments disponibles pour le clavier est plus restreinte que celle des événements pour la souris :</p> +<ul> + <li><code>keypress</code> : se produit quand on appuie sur une touche et qu'on la relâche</li> + <li><code>keydown</code> : se produit quand on appuie sur une touche et que celle-ci n'a toujours pas été relâchée</li> + <li><code>keyup</code> : se produit quand la touche du clavier est relâchée</li> + <li>TextInput (disponible pour les navigateurs Webkit au moment de l'écriture) : se produit quand du texte est saisi, que ce soit via un coller du presse-papier, une commande vocale ou une saisie clavier. Cet événement ne sera pas traité dans cet article.</li> +</ul> +<p>Lors d'un événement <code><a class="new " href="/fr/docs/Web/Events/keypress" rel="internal">keypress</a></code>, la valeur Unicode de la touche pressée est enregistrée grâce à la propriété <code>keyCode</code> ou <code><a href="/fr/docs/DOM/event.charCode" rel="internal">charCode</a></code> (mais jamais dans les deux). Si la touche pressée génère un caractère (par exemple 'a'), <code>charCode</code> représentera la valeur du caractère en tenant compte de la casse (<code>charCode</code> gère l'appui simultané avec la touche shift pour écrire en majuscules). Dans les autres cas, le code de la touche est enregistré dans <code>keyCode</code>.</p> +<p>La façon la plus simple d'intercepter les événements clavier est ici aussi d'enregistrer des gestionnaires d'événements (<em>handlers</em>) dans le HTML et de spécifier quels événements doivent être gérés. Par exemple :</p> +<pre class="brush: js"><input type="text" onkeypress="alert ('Coucou monde !');"></pre> +<p>De la même façon qu'avec les événements liés à la souris, le code JavaScript peut être présenté dans la définition de l'attribut ou bien au sein d'un bloc {{HTMLElement("script")}} de la page HTML utilisée :</p> +<pre class="brush: js"><script> + function keypressHandler() { + alert ("Coucou monde !"); + } +</script> + +<input onkeypress="keypressHandler();" /></pre> +<p>De la même façon que pour les événements liés à la souris, on peut enregistrer les détails de l'événement et de la cible de cet événement :</p> +<pre class="brush: js"><script type="text/javascript"> + function keypressHandler(evt) { + var eType = evt.type; // Renverra "keypress" comme type d'événement + /* ici aussi on utilise une instruction pour que le code fonctionne + sur les différents navigateurs (mozilla utilise which et les autre + navigateurs utilisent keyCode. + On peut ici utiliser l'opérateur ternaire pour obtenir le résultat */ + var keyCode = evt.which?evt.which:evt.keyCode; + var eCode = 'keyCode est ' + keyCode; + var eChar = 'charCode est ' + String.fromCharCode(keyCode); // ou evt.charCode + alert ("Événement capturé (type = " + eType + ", valeur Unicode pour la touche = " + eCode + ", valeur ASCII = " + eChar + ")"); + } +</script> +<input onkeypress="keypressHandler(event);" /></pre> +<p>Il est possible de capturer n'importe quel élément clavier en associant un gestionnaire d'événement avec ceux du document grâce à une fonction :</p> +<pre class="brush: js"><script> + document.onkeypress = keypressHandler; + document.onkeydown = keypressHandler; + document.onkeyup = keypressHandler; +</script></pre> +<p>Voici un exemple complet qui illustre comment gérer les événements du clavier :</p> +<pre class="brush: js"><!DOCTYPE html> +<html> +<head> + <script> + var metaChar = false; + var toucheExemple = 16; + function keyEvent(event) { + var key = event.keyCode || event.which; // une autre syntaxe que l'opérateur ternaire s'il n'y a pas de keyCode + var keychar = String.fromCharCode(key); + if (key == toucheExemple) { + metaChar = true; + } + if (key != toucheExemple) { + if (metaChar) { + alert("Combinaison de la touche meta et de " + keychar) + metaChar = false; + } else { + alert("Touche utilisée : " + key); + } + } + } + function metaKeyUp(event) { + var key = event.keyCode || event.which; + if (key == toucheExemple) { metaChar = false; } + } + </script> +</head> +<body onkeydown="keyEvent(event)" onkeyup="metaKeyUp(event)"> + Essayez de presser une touche ! +</body> +</html></pre> +<h3 id="Bugs_et_spécificités_des_navigateurs">Bugs et spécificités des navigateurs</h3> +<p>Les deux propriétés des différents événements clavier sont <code>keyCode</code> et <code>charCode</code>. Pour faire simple, <code>keyCode</code> fait référence à la touche du clavier qui a été utilisée alors que <code>charCode</code> représente la valeur ASCII du caractère de la touche. Ces deux valeurs peuvent ne pas être les mêmes. Par exemple un 'a' (minuscule) et un 'A' (majuscule) auront le même <code>keyCode</code> car l'utilisateur appuiera sur la même touche du clavier. En revanche, la propriété<code> charCode</code> sera différente car le caractère sera différent.</p> +<p>La navigateurs interprètent <code>charCode</code> de façons différentes. Ainsi, Internet Explorer et Opera ne supportent pas <code>charCode</code>. Cependant, l'information du caractère est bien fourni avec <code>keyCode</code> , mais uniquement lors de l'événement <code>keypress</code>. Lors de <code>keydown</code> et de <code>keyup</code> <code>keyCode</code> contient les informations liées à la touche utilisée. Firefox utilise un terme différent : <code>which</code> pour distinguer le caractère.</p> +<p>Pour plus de précisions sur le fonctionnement des événements liés au clavier, voir la page sur l'API <a href="/fr/docs/Web/API/KeyboardEvent" title="https://developer.mozilla.org/en-US/docs/DOM/Event/UIEvent/KeyEvent">KeyboardEvent</a>.</p> +<p>{{ draft() }}</p> +<h2 id="Example:_Dragging_images_around" name="Example:_Dragging_images_around">Exemple : Déplacer des images</h2> +<p>L'exemple qui suit permet de déplacer une image de Firefox sur la page :</p> +<pre class="brush: js"><!DOCTYPE html> +<html> +<head> +<style> +img { position: absolute; } +</style> + +<script> +window.onload = function() { + + movMeId = document.getElementById("ImgMov"); + movMeId.style.top = "80px"; + movMeId.style.left = "80px"; + + document.onmousedown = coordinates; + document.onmouseup = mouseup; + + function coordinates(e) { + if (e == null) { e = window.event;} + + // sous IE e.srcElement définira l'élément cible alors que pour Firefox ce sera e.target + // Ces deux propriétés renvoient l'élément HTML pour lequel s'est produit l'événement. + + var sender = (typeof( window.event ) != "undefined" ) ? e.srcElement : e.target; + + if (sender.id=="ImgMov") { + mouseover = true; + pleft = parseInt(movMeId.style.left); + ptop = parseInt(movMeId.style.top); + xcoor = e.clientX; + ycoor = e.clientY; + document.onmousemove = moveImage; + return false; + } + return false; + } + + function moveImage(e) { + if (e == null) { e = window.event; } + movMeId.style.left = pleft+e.clientX-xcoor+"px"; + movMeId.style.top = ptop+e.clientY-ycoor+"px"; + return false; + } + + function mouseup(e) { + document.onmousemove = null; + } +} +</script> +</head> + +<body> + <img id="ImgMov" src="http://placehold.it/100x100&text=JS" width="64" height="64"> + <p>Vous pouvez déplacer l'image sur cette page.</p> +</body> + +</html></pre> +<h2 id="Example:_Resizing_things" name="Example:_Resizing_things">Exemple : Redimensionner des éléments</h2> +<div> + Voici un exemple de code qui permet de redimensionner une image (note : seul le rendu final est redimensionné, l'image de base ne sera pas redimensionnée).</div> +<pre class="brush: js"><!DOCTYPE html> + <html> + <head> + <style> + #resizeImage { + margin-left: 100px; + } + </style> + <script> + window.onload = function() { + + var resizeId = document.getElementById("resizeImage"); + var resizeStartCoordsX, + resizeStartCoordsY, + resizeEndCoordsX, + resizeEndCoordsY; + + var resizeEndCoords; + var resizing = false; + + document.onmousedown = coordinatesMousedown; + document.onmouseup = coordinatesMouseup; + + function coordinatesMousedown(e) { + if (e == null) { + e = window.event; + } + + var element = (typeof( window.event ) != 'undefined' ) ? e.srcElement : e.target; + + if (element.id == "resizeImage") { + resizing = true; + resizeStartCoordsX = e.clientX; + resizeStartCoordsY = e.clientY; + } + return false; + } + + function coordinatesMouseup(e) { + if (e == null) { + e = window.event; + } + + if (resizing === true) { + var currentImageWidth = parseInt(resizeId.width); + var currentImageHeight = parseInt(resizeId.height); + + resizeEndCoordsX = e.clientX; + resizeEndCoordsY = e.clientY; + + resizeId.style.height = currentImageHeight - (resizeStartCoordsY - resizeEndCoordsY) + 'px'; + resizeId.style.width = currentImageWidth - (resizeStartCoordsX - resizeEndCoordsX) + 'px'; + + resizing = false; + } + return false; + } + } + </script> + </head> + + <body> + <img id="resizeImage" src="http://upload.wikimedia.org/wikipedia/commons/e/e7/Mozilla_Firefox_3.5_logo_256.png" +width="64" height="64"> + <p>Cliquer sur l'image et étirer pour la redimensionner.</p> + </body> + + </html></pre> +<div> + </div> +<h2 id="Example:_Drawing_Lines" name="Example:_Drawing_Lines">Exemple : Tracer des lignes</h2> +<pre class="brush: js"><!DOCTYPE html> +<html> +<head> +<script> +function dessinerLigne(ax, ay, bx, by) +{ + if(ay > by) + { + bx = ax+bx; + ax = bx-ax; + bx = bx-ax; + by = ay+by; + ay = by-ay; + by = by-ay; + } + var calc = Math.atan((ay-by)/(bx-ax)); + calc = (calc*180)/Math.PI; + var length = Math.sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by)); + document.body.innerHTML += "<div id='ligne' style='height:" + length + "px;width:1px;background-color:black;position:absolute;top:" + (ay) + "px;left:" + (ax) + "px;transform:rotate(" + calc + "deg);-ms-transform:rotate(" + calc + "deg);transform-origin:0% 0%;-moz-transform:rotate(" + calc + "deg);-moz-transform-origin:0% 0%;-webkit-transform:rotate(" + calc + "deg);-webkit-transform-origin:0% 0%;-o-transform:rotate(" + calc + "deg);-o-transform-origin:0% 0%;'></div>" +} +</script> +</head> +<body onload="dessinerLigne(200,400,500,900);"> <!-- Remplacez les coordonnées que vous souhaitez utiliser --> +</body> +</html></pre> diff --git a/files/fr/conflicting/learn/html/introduction_to_html/advanced_text_formatting/index.html b/files/fr/conflicting/learn/html/introduction_to_html/advanced_text_formatting/index.html new file mode 100644 index 0000000000..db22bdd6f4 --- /dev/null +++ b/files/fr/conflicting/learn/html/introduction_to_html/advanced_text_formatting/index.html @@ -0,0 +1,143 @@ +--- +title: Afficher du code informatique avec HTML +slug: Apprendre/HTML/Comment/Afficher_du_code_informatique_avec_HTML +tags: + - Beginner + - Guide + - HTML + - Learn +translation_of: >- + Learn/HTML/Introduction_to_HTML/Advanced_text_formatting#Representing_computer_code +translation_of_original: Learn/HTML/Howto/Display_computer_code_with_HTML +--- +<div class="summary"> +<p>HTML offre différents éléments pour écrire de la documentation technique. Dans cet article, nous aborderons les éléments HTML qui portent sur la représentation de code informatique.</p> +</div> + +<table class="learn-box nostripe standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez au préalable savoir <a href="/en-US/Learn/HTML/Write_a_simple_page_in_HTML">comment créer un document HTML simple</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Apprendre comment utiliser HTML afin de représenter des entrées saisies par un utilisateur, des sorties produites par un système, du code, du texte simple et des variables.</td> + </tr> + </tbody> +</table> + +<h2 id="HTML_et_l'informatique">HTML et l'informatique</h2> + +<p>{{glossary("HTML")}} a été conçu par des informaticiens et il sert donc particulièrement bien ce domaine. De nombreux éléments HTML sont apparus et/ou ont disparu au cours des années. Ici, nous n'aborderons que ceux qui sont en vigueur actuellement :</p> + +<ul> + <li>{{HTMLElement('code')}}</li> + <li>{{HTMLElement('kbd')}}</li> + <li>{{HTMLElement('pre')}}</li> + <li>{{HTMLElement('samp')}}</li> + <li>{{HTMLElement('var')}}.</li> +</ul> + +<h2 id="Le_texte_préformaté">Le texte préformaté</h2> + +<p>Dans un éditeur de texte, la mise en forme s'applique simplement. Il suffit d'utiliser les caractères du clavier, d'appuyer sur la barre d'espace pour indiquer un espace, d'utiliser la touche Entrée pour passer à la ligne, etc. Normalement, chaque lettre a la même largeur et tout est donc bien aligné. Étant donné que ce qui est écrit est écrit avec du texte <em>simple</em> (<em>plain text</em> en anglais), nul besoin de se préoccuper de la couleur du texte, de sa taille de police, de l'italique, etc.</p> + +<p>Un navigateur graphique formate le texte en fonction du code HTML et CSS. Cela fait que beaucoup de blancs (les espaces, les tabulations, les sauts de lignes) sont ignorés. Si vous appuyez sur Entrée lorsque vous tapez du code HTML, le navigateur déduira que vous souhaitez bien aligner votre code HTML. En revanche, pour indiquer clairement qu'on souhaite avoir un nouveau paragraphe, il faudra utiliser le bon élément HTML (en l'occurence {{htmlelement("p")}}).</p> + +<p>Généralement lorsqu'on écrit un article qui porte sur l'informatique, on veut afficher, dans le navigateur, du texte, tel qu'il serait lorsqu'on le saisit dans un éditeur de texte. Pour ce faire, on utilisera l'élément {{htmlelement("pre")}}. Par défaut, un navigateur graphique affichera le texte contenu dans cet élément avec une police dont tous les caractères ont la même largeur (<em>monospace</em>). Toutefois, vous pourrez adapter la mise en forme à votre gré grâce à {{glossary("CSS")}}. Par exemple, lorsque vous lisez des exemples de code sur MDN, nous utilisons l'élément {{htmlelement("pre")}} (auquel on ajoute quelques couleurs CSS pour améliorer la lisibilité).</p> + +<p>On notera qu'on ne peut toujours pas utiliser les caractères réservés (<code><>&</code>), par exemple :</p> + +<pre class="brush: html"><pre> +Un éditeur de texte est pratique car il suffit +d'appuyer sur Entrée pour commencer un nouveau +paragraphe, plutôt que d'avoir à utiliser ces +grossières balises &lt;p&gt; et &lt;/p&gt;. +</pre></pre> + +<p>Cela donnera le résultat suivant :</p> + +<p>{{EmbedLiveSample('Le_texte_préformaté','100%',90)}}</p> + +<div class="note"> +<p>Par défaut, votre éditeur de texte laissera les lignes s'allonger jusqu'à éventuellement dépasser de l'écran. Le retour à la ligne automatique peut toutefois être activé dans la plupart des éditeurs pour garder un œil sur tout le contenu.</p> + +<p>On aura la même chose avec <code><pre></code>. Il existe une propriété CSS intitulée {{cssxref("white-space")}} dont la valeur par défaut est <code>nowrap</code>. Si on veut que le retour à la ligne soit automatique, on utilisera la valeur <code>pre-wrap</code>.</p> +</div> + +<h2 id="Retranscrire_du_code">Retranscrire du code</h2> + +<p>Naturellement, tout le texte préformaté n'est pass du code informatique. Lorsque vous mentionnez du code informatique dans votre document, vous devriez utiliser l'élément {{HTMLElement('code')}} :</p> + +<pre class="brush: html">Un des mots-clés les plus importants est <code>this</code>. +</pre> + +<p>Pour indiquer un bloc de code qui s'étend sur plusieurs lignes, vous pouvez imbriquer un élément {{HTMLElement('code')}} dans un élément {{HTMLElement('pre')}}. Certains script tiers tels que la bibliothèque <a href="https://highlightjs.org">highlight.js</a> utiliseront ces balises pour ajouter de la coloration syntaxique à vos exemples de code :</p> + +<pre class="brush: html"><pre><code class="js"> +function coucou() { + console.log('coucou monde !'); +} +</code></pre></pre> + +<h2 id="Retranscrire_des_entréessorties_(IO)">Retranscrire des entrées/sorties (I/O)</h2> + +<p><em>Les entrées </em>sont les informations qui sont saisies, généralement par les utilisateurs, dans un ordinateur. L'ordinateur traite ces données et renvoie une <em>sortie.</em> On utilise parfois les termes anglais respectifs <em>input</em> et <em>output</em>, voire un acronyme pour désigner l'ensemble : I/O.</p> + +<h3 id="Comment_retranscrire_une_sortie_informatique">Comment retranscrire une sortie informatique</h3> + +<p>L'élément {{HTMLElement('samp')}} indique que l'ordinateur produit un texte :</p> + +<pre class="brush: html">Ensuite, vous verrez affiché <samp>thomas@mon-ordinateur:~$</samp>. +</pre> + +<h3 id="Comment_retranscrire_une_entrée_informatique">Comment retranscrire une entrée informatique</h3> + +<p>L'élément {{htmlelement('kbd')}} était initialement utilisé pour représenter une entrée saisie au clavier (<code>kbd</code> étant pour <em>keyboard</em> qui signifie clavier en anglais). Cependant, aujourd'hui, cet élément peut être utilisé pour représenter d'autres types d'entrées (comme les commandes vocales).</p> + +<p>L'élément {{htmlelement("kbd")}} permet de marquer l'entrée attendue :</p> + +<pre class="brush: html">Saisissez <kbd>ls --color</kbd> sur l'invite du terminal. +</pre> + +<p>Pour indiquer une touche donnée ou une sous-commande particulière, vous pouvez imbriquer {{htmlelement("kbd")}} avec lui-même :</p> + +<pre class="brush: html">Appuyez sur <kbd><kbd>Ctrl</kbd> + <kbd>C</kbd></kbd> pour arrêter le processus. +</pre> + +<p>Dans cet exemple, le premier élément <code><kbd></code> indique la commande entière alors que les éléments imbriqués indiquent les touches à utiliser.</p> + +<h3 id="Assembler_le_tout">Assembler le tout</h3> + +<p>Il arrive souvent de combiner <code><samp></code> et <code><kbd></code>. Par exemple, lorsque l'ordinateur indique des options à l'utilisateur, on pourra imbriquer des éléments <code><samp></code> dans des éléments <code><kbd></code> :</p> + +<pre class="brush: html"><code>Ensuite, choisissez <kbd><samp>Oui</samp></kbd> ou <kbd><samp>Non</samp></kbd></code></pre> + +<p>Inversement, quand l'ordinateur indique quoi faire, on pourra imbrique des éléments <code><kbd></code> dans des éléments <code><samp></code>:</p> + +<pre class="brush: html"><code>Attendez que l'invite indique, <samp>Appuyez sur <kbd>Entrée</kbd> pour continuer.</samp></code></pre> + +<p>Selon <a href="http://www.w3.org/TR/html5/text-level-semantics.html#the-kbd-element">la spécification HTML</a>, il n'est pas nécessaire de jouer profondément sur l'imbrication de ces éléments. L'aspect le plus important de transmettre les informations avec leur sens.</p> + +<h2 id="Les_variables_de_programmes_ou_les_variables_mathématiques">Les variables de programmes ou les variables mathématiques</h2> + +<p>Dans ce cas, on utilisera l'élément {{htmlelement("var")}}. Les variables peuvent être annotées dans le texte principal mais pas dans les fragments de code.</p> + +<pre class="brush: html">Cette fonction utilisera deux paramètres, +<var>x</var> et <var>y</var>. +</pre> + +<div class="note"> +<p>L'élément {{htmlelement("var")}} permet d'écrire des variables pour des formules simples. En revanche, pour les formules complexes, <a href="/fr/docs/Web/MathML">MathML</a> sera beaucoup plus riche et adapté.</p> +</div> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li>{{htmlelement("code")}}</li> + <li>{{htmlelement("kbd")}}</li> + <li>{{htmlelement("pre")}}</li> + <li>{{htmlelement("samp")}}</li> + <li>{{htmlelement("var")}}</li> +</ul> diff --git a/files/fr/conflicting/learn/html/introduction_to_html/advanced_text_formatting_b235e00aa38ee1d4b535fc921395f446/index.html b/files/fr/conflicting/learn/html/introduction_to_html/advanced_text_formatting_b235e00aa38ee1d4b535fc921395f446/index.html new file mode 100644 index 0000000000..99ad7a8733 --- /dev/null +++ b/files/fr/conflicting/learn/html/introduction_to_html/advanced_text_formatting_b235e00aa38ee1d4b535fc921395f446/index.html @@ -0,0 +1,270 @@ +--- +title: Identifier et expliquer des abréviations avec HTML +slug: Apprendre/HTML/Comment/Identifier_et_expliquer_des_abréviations +tags: + - Beginner + - HTML + - Learn + - OpenPractices +translation_of: Learn/HTML/Introduction_to_HTML/Advanced_text_formatting#Abbreviations +translation_of_original: Learn/HTML/Howto/Mark_abbreviations_and_make_them_understandable +--- +<div class="summary"> +<p>HTML fournit une méthode simple et rapide pour indiquer la présence d'abrévations et pour fournir leur signification au lecteur.</p> +</div> + +<table class="learn-box standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez au préalable savoir comment <a href="/fr/Apprendre/HTML/Comment/Créer_un_document_HTML_simple">créer un document HTML simple</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Apprendre à indiquer des abréviations et des acronymes avec HTML.</td> + </tr> + </tbody> +</table> + +<h2 id="À_propos_des_abréviations">À propos des abréviations</h2> + +<p>Lorsqu'on écrit, on utilise fréquemment des abréviations et des acronymes. Une abréviation est une notation raccourcie : par exemple, on écrit parfois « dev » à la place de « développeur ». Un acronyme est une combinaison, lisible, des initiales d'un groupe de termes, par exemple « NASA » signifie « <em>National Aeronautics and Space Administration</em> ».</p> + +<p>Il est nécessaire de s'assurer que l'abréviation puisse être comprise par les visiteurs de la page. Sur le papier, on explicite généralement la première occurence de l'abréviation en utilisant la forme complète et abrégée avant d'utiliser la forme abrégée pour les occurences suivantes :</p> + +<blockquote>L'Union Européenne (UE) est composée de 28 états et les États-Unis d'Amérique (USA) contient 50 états. Les USA sont une république fédérale et l'UE est une association politique et économique de plusieurs états indépendants.</blockquote> + +<div> +<p>Cette méthode peut parfaitement s'appliquer aux pages web mais HTML fournit un outil supplémentaire pour expliquer une abréviation aux lecteurs d'une page web.</p> +</div> + +<h2 id="L'élément_<abbr>">L'élément <code><abbr></code></h2> + +<p>L'élément HTML<em> abbreviation</em> (pour abréviation en anglais) ({{HTMLElement("abbr")}}) est utilisé pour identifier les abrévations et les acronymes et permettre aux lecteurs qui ne connaitraient pas le terme de lire et comprendre le texte correctement (éventuellement grâce à un lecteur d'écran). Cet élément doit être utilisé dès que possible.</p> + +<div class="note"> +<p><strong>Note :</strong> Si vous entendez parler de l'élément <code><acronym></code>, sachez qu'il est désormais déprécié et qu'il ne devrait donc plus être utilisé car les {{Glossary("navigateur","navigateurs")}} pourraient arrêter de le supporter à tout moment.</p> +</div> + +<pre class="brush: html"><p>Pouvez-vous m'envoyer les documents <abbr>SVP</abbr> ?</p></pre> + +<p>Il est possible d'épeler les abréviations grâce à l'attribut <code>title</code> de l'élément :</p> + +<pre class="brush: html"><p>Pouvez-vous m'envoyer les documents <abbr title="s'il vous plaît">SVP</abbr> ?</p></pre> + +<p>Quand faut-il renseigner l'attribut <code>title</code> ? Ça dépend. Il n'est peut-être pas nécessaire de définir une abrévation comme « SVP » ou lorsqu'une abréviation est utilisée à de nombreuses reprises dans le document. Dans le doute, ajoutez la description complète.</p> + +<div class="note"> +<p><strong>Note :</strong> Pour les langues qui possèdent un « nombre » grammatical et notamment celles qui possèdent plus de deux nombres grammaticaux comme l'Arabe, il faudra utiliser le même nombre grammatical dans l'attribut <code>title</code> que celui de l'élément <code><abbr></code>.</p> +</div> + +<p>Grâce à {{glossary("CSS")}}, vous pouvez ajouter, modifier ou retirer les indications visuelles autour de l'abréviation. Généralement, pour une abréviation, le navigateur affichera le contenu de l'attribut <code>title</code> dans une bulle lors du passage de la souris sur le texte de l'abrévation. Pour l'exemple précédent, on aura ce résultat :</p> + +<p>{{EmbedLiveSample("L'élément_<abbr>",'100%',90)}}</p> + +<div class="note"> +<p><strong>Important : </strong>Si vous souhaitez que vos lecteurs/visiteurs comprennent l'abréviation à coup sûr, ne comptez pas seulement sur l'attribut <code>title</code>. Épelez l'abréviation dans le texte du document lors de la première occurence. En effet, il faut une souris pour pouvoir activer la bulle d'information qui utilisera le texte de <code>title</code>. Dès lors, les personnes qui utilisent un téléphone, un clavier ou un lecteur d'écran pourront plus difficilement (voire pas du tout) accéder à l'explication si celle-ci n'est présente qu'avec <code>title</code>.</p> +</div> + +<h2 id="Exercice">Exercice</h2> + +<p>Afin de mieux connaître l'élément {{HTMLElement('abbr')}}, faisons un léger exercice. Dans le texte qui suit, identifiez les abréviations avec <code><abbr></code> et épelez les avec l'attribut <code>title</code>. Une fois que vous avez fini, cliquez sur « Afficher les résultats » pour voir si vous avez tout trouvé. Ces abréviations peuvent être trouvées dans <a href="/fr/docs/Glossaire">le glossaire</a>.</p> + +<div class="hidden"> +<pre class="brush: html"><div class="exercise"> + <main> + <div class="instruction">Identifiez toutes les abréviations avec l'élément <code>&lt;abbr&gt;</code></div> + <div class="playground"><textarea spellcheck="false"></textarea></div> + <div class="checking"> + <button>Afficher les résultats</button><span class="count"></span> + </div> + <div class="result">Les <abbr title="développeurs">dev</abbr> Web utilisent <abbr title="Hypertext Markup Language">HTML</abbr> pour structurer des documents, <abbr title="Cascading StyleSheet">CSS</abbr> pour les mettre en forme et JavaScript pour ajouter des effets spéciaux grâce à certaines <abbr title="Application Programming Interface">API</abbr> dédiées.</div> + </main> +</div></pre> + +<pre class="brush: css">body { + font: 1em/100% sans-serif; + padding: 0; + margin: 0; +} + +.exercise { + background: #F9FAFB; + border-radius: 5px; + height: 13em; + overflow: hidden; +} + +.instruction, .count { + padding: .5em; + font-style: italic; + font-size: .95em; +} + +.playground { + padding: 0 .5em; +} + +.playground textarea { + display: block; + font-size : 1em; + line-height: 1.5em; + font-family: monospace; + box-sizing: border-box; + width : 100%; + padding : .5em; + height : 9.7em; +} + +.checking { + padding: .5em; +} + +.checking button { + box-sizing: border-box; + box-shadow:inset 0 1px 0 0 #bcd9a3; + background:linear-gradient(to bottom, #b4d665 5%, #89a646 100%); + background-color:#b4d665; + border-radius:5px; + border:1px solid #8aa164; + cursor:pointer; + font-size:1em; + padding:.5em; + text-decoration:none; +} +.checking button:hover { + background:linear-gradient(to bottom, #89a646 5%, #b4d665 100%); + background-color:#89a646; +} +.checking button:active { + transform: translate(0, 1px); +} + +.result { + height: 10em; + line-height: 1.4em; + padding: .5em; + box-sizing: border-box; +} + +main { + transform: translate(0,0); + transition: transform 300ms; +} + +.next main { + transform: translate(0, -10em); +} + +abbr { + display: inline-block; + white-space: nowrap; +} + +abbr.ok { + color: green; +} + +abbr.ok:after { + content: ' ✔︎'; +} + +abbr.fail { + color: red; +} + +abbr.fail:after { + content: ' ✘'; +} + +abbr.warning { + color: orange; +} + +abbr.warning:after { + content: ' !'; + font-weight: bold; +} +</pre> + +<pre class="brush: js">window.addEventListener('load', function () { + var content = document.querySelector('.exercise'); + var input = document.querySelector('.playground textarea'); + var button = document.querySelector('.checking button'); + var message = document.querySelector('.checking .count'); + var abbr = Array.prototype.slice.call(document.querySelectorAll('.result abbr')); + var data = { + pass : 0, fail : 0, warning : 0 + }; + + input.value = document.querySelector('.result').textContent; + + function toggleResult(e) { + e.preventDefault(); + var classList = content.className.split(' '); + + if (classList.length === 1 && checkResult()) { + content.className = 'exercise next'; + message.innerHTML = data.pass + ' correctement identifiée(s), ' + + data.warning + ' sans description complète, ' + + data.fail + ' manquée(s).'; + button.innerHTML = 'Essayez à nouveau'; + } else { + content.className = 'exercise'; + message.innerHTML = ''; + button.innerHTML = 'Afficher les résultats'; + } + } + + function checkResult() { + var i, j, node = document.createElement('div'); + node.innerHTML = input.value; + data = { pass : 0, fail : 0, warning : 0 }; + + var userAbbr = Array.prototype.slice.call(node.querySelectorAll('abbr')); + + if (userAbbr.length === 0) { + alert("Vous n'avez marqué aucune abréviation (il y en a " + abbr.length + " à trouver)."); + return false; + } + + for (i in abbr) { + var txt = abbr[i].textContent; + var fail = true; + + for (j in userAbbr) { + var userText = userAbbr[j].textContent; + + if (userText.match(new RegExp('^\\s*' + txt.replace('.','') + '\\s*$'))) { + fail = false; + if (userAbbr[j].title) { + data.pass += 1; + abbr[i].className = 'ok'; + } else { + data.warning += 1; + abbr[i].className = 'warning'; + } + } + } + + if (fail) { + data.fail += 1; + abbr[i].className = 'fail'; + } + } + + return true; + } + + button.addEventListener('click', toggleResult); +}); +</pre> +</div> + +<p>{{EmbedLiveSample('Exercice','100%',220)}}</p> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li>La documentation de la référence sur {{HTMLElement("abbr")}}.</li> +</ul> diff --git a/files/fr/conflicting/learn/html/introduction_to_html/advanced_text_formatting_c8b0b9eb353375fb9a4679f68164e682/index.html b/files/fr/conflicting/learn/html/introduction_to_html/advanced_text_formatting_c8b0b9eb353375fb9a4679f68164e682/index.html new file mode 100644 index 0000000000..99e17662ab --- /dev/null +++ b/files/fr/conflicting/learn/html/introduction_to_html/advanced_text_formatting_c8b0b9eb353375fb9a4679f68164e682/index.html @@ -0,0 +1,134 @@ +--- +title: Ajouter des citations sur une page web +slug: Apprendre/HTML/Comment/Ajouter_citations_sur_page_web +tags: + - Beginner + - Guide + - HTML +translation_of: Learn/HTML/Introduction_to_HTML/Advanced_text_formatting#Quotations +translation_of_original: Learn/HTML/Howto/Add_citations_to_webpages +--- +<div class="summary"> +<p>Cet article illustre comment citer quelqu'un de façon précise et en fournissant la source de la citation.</p> +</div> + +<table class="learn-box nostripe standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez vous être familiarisé-e avec <a href="/fr/Apprendre/HTML/Write_a_simple_page_in_HTML">la création de documents HTML simples</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Apprendre comment intégrer des citations et leurs sources.</td> + </tr> + </tbody> +</table> + +<p>Très souvent, nous évoquons ce qui a été dit ou écrit par d'autres. Nous construisons des arguments logiques à partir de ces textes, notamment en littérature technique, en journalisme ou en philosophie. Étant donné que ce sont les scientifiques qui ont conçu {{Glossary('HTML')}}, il existe les mécanismes nécessaires pour faire des citations dans un document HTML.</p> + +<p>HTML permet de gérer trois scénarios liés aux citations :</p> + +<ul> + <li>fournir un extrait complet d'un document tiers</li> + <li>citer une seule phrase ou un seul terme</li> + <li>faire référence à un document tiers</li> +</ul> + +<h2 id="Comment_rapporter_exactement_les_mots_d'une_personne">Comment rapporter exactement les mots d'une personne</h2> + +<h3 id="Citation_en_ligne">Citation en ligne</h3> + +<p>HTML fournit l'élément {{htmlelement("q")}} qui permet de créer des citations en ligne. Cela signifie qu'il s'agit de citations suffisamment courtes pour qu'elles puissent être placées dans le cours du texte.</p> + +<pre class="brush: html"><p> + Si vous lisez Cicéron dans la version latine, vous trouverez + un passage connu&nbsp;: <q lang="la">qui dolorem ipsum quia + dolor sit amet consectetur adipisci velit.</q> +</p></pre> + +<p>Voilà le résultat qu'on obtient avec un tel code :</p> + +<p>{{EmbedLiveSample('Citation_en_ligne','100%')}}</p> + +<div class="note"> +<p><code><q></code> ne doit pas être utilisé pour écrire des titres d'articles ou de chapitres ou pour mettre un terme en exergue. Si vous avez besoin d'utiliser des guillemets à cet effet, il faudra les écrire manuellement :</p> + +<pre><code>C'est</code> « Wingardium Leviôsa » et non « Wingardium Leviosâ »<code>.</code></pre> + +<p>Les entités HTML <code>&laquo;</code> et <code>&raquo;</code> permettent de représenter les guillemets. Il faudra utiliser <code>&ldquo;</code> et <code>&rdquo;</code> pour les doubles quotes et <code>&lsquo;</code> et <code>&rsquo;</code> pour les simples quotes.</p> +</div> + +<p>Par défaut, {{glossary("navigateurs",'les navigateurs web')}} utilisent le symbole de citation approprié pour la langue utilisée. Si vous souhaitez surcharger la mise en forme par défaut, vous pouvez utiliser la propriété CSS {{cssxref('quotes')}}. Par exemple, la règle CSS qui suit imposera les guillemets français :</p> + +<pre class="brush: css">:lang(fr) > q { + quotes: '« ' ' »'; +}</pre> + +<h3 id="Extrait_complet">Extrait complet</h3> + +<p>HTML fournit également l'élément {{htmlelement("blockquote")}} pour les citations en bloc (c'est-à-dire les citations suffisamment longues pour qu'elles méritent leurs propres paragraphes). Dans l'exemple suivant, on voit qu'on a plusieurs paragraphes au sein d'une même <code><blockquote></code> :</p> + +<pre class="brush: html"><p>Les mots employés par Cicéron sont devenus un +charabia pour simuler du texte mais à l'origine, ils +n'étaient pas dénués de sens, loin de là&nbsp;:</p> + +<blockquote> + <p> + Il n'y personne qui recherche ou désire obtenir la + douleur en tant que telle car il s'agit de la douleur. + Toutefois, occasionnellement, il exist des circonstances + selon lesquelles la peine et la douleur peuvent fournir + un grand plaisir. + </p> + + <p> + Le sage s'en tient donc, sur ces sujets, au principe + de sélection : il rejette le plaisir afin de s'assurer de + de plus grands plaisir ou alors, il endure certaines + douleurs pour s'en prémunir de plus grandes. + </p> +</blockquote> +</pre> + +<p>Dans ce cas, la mise en forme appliquée par défaut par le navigateur web est une marge plus large à gauche. Là encore, vous pouvez ajuster la mise en forme à votre convenance en utilisant la propriété CSS {{cssxref('margin')}}.</p> + +<h2 id="Comment_fournir_la_source_d'une_citation">Comment fournir la source d'une citation</h2> + +<h3 id="Source_implicite">Source implicite</h3> + +<p>Citer c'est bien, indiquer les sources c'est encore mieux. De cette façon, une source indépendante peut vérifier que la citation est correcte, voire fournir un contexte plus large pour la citation. À cet effet, l'attribut {{htmlattrxref('cite','q')}} permet d'indiquer l'URL de la source, que ce soit pour un élément {{htmlelement("q")}} ou pour un élément {{htmlelement("blockquote")}} :</p> + +<pre class="brush: html"><q cite="https://fr.wikiquote.org/wiki/Hom%C3%A8re"><span class="citation">Patience, mon cœur !</span></q></pre> + +<p>En pratique, les personnes ne trouvent que très rarement cette information de source (sauf s'ils lisent le code source HTML). On peut donc préférer un lien direct dans la citation :</p> + +<pre class="brush: html"><q><a href="https://fr.wikiquote.org/wiki/Hom%C3%A8re"><span class="citation">Patience, mon cœur !</span></a></q></pre> + +<h3 id="Source_explicite">Source explicite</h3> + +<p>Pour indiquer de façon explicite l'origine de la citation, il est possible d'utiliser l'élément {{htmlelement("cite")}}. Cet élément peut <a href="http://www.w3.org/TR/html5/text-level-semantics.html#the-cite-element">indiquer l'auteur de la citation ou l'œuvre créative de laquelle elle provient</a>.</p> + +<pre class="brush: html"><p> + <q>La pensée est libre</q>, + <cite id="author">Cicéron</cite> dans + <cite id="work" lang="la">De Finibus Bonorum et Malorum</cite>. +</p> +</pre> + +<p>Pour accentuer le caractère explicite de la relation entre la citation et sa source, il est également possible d'ajouter l'attribut <code><a href="/fr/docs/Accessibilité/ARIA/Techniques_ARIA/Utiliser_l_attribut_aria-labelledby">aria-labelledby</a></code> :</p> + +<pre class="brush: html"><p> + <q aria-labelledby="author work">La pensée est libre</q>, + <cite id="author">Cicéron</cite> dans + <cite id="work" lang="la">De Finibus Bonorum et Malorum</cite>. +</p> +</pre> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li>{{htmlelement("q")}}</li> + <li>{{htmlelement("blockquote")}}</li> + <li>{{htmlelement("cite")}}</li> +</ul> diff --git a/files/fr/conflicting/learn/html/introduction_to_html/creating_hyperlinks/index.html b/files/fr/conflicting/learn/html/introduction_to_html/creating_hyperlinks/index.html new file mode 100644 index 0000000000..3f2f001f9c --- /dev/null +++ b/files/fr/conflicting/learn/html/introduction_to_html/creating_hyperlinks/index.html @@ -0,0 +1,192 @@ +--- +title: Créer un hyperlien +slug: Apprendre/HTML/Comment/Créer_un_hyperlien +tags: + - Beginner + - HTML + - Learn + - Navigation +translation_of: Learn/HTML/Introduction_to_HTML/Creating_hyperlinks +translation_of_original: Learn/HTML/Howto/Create_a_hyperlink +--- +<p class="summary">Dans cet article, nous verrons comment créer des liens {{glossary('accessibilité','accessibles')}} et utiles au {{glossary("référencement")}}.</p> + +<table class="learn-box nostripe standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez, au préalable, savoir comment <a href="/fr/Apprendre/HTML/Write_a_simple_page_in_HTML">créer un document HTML simple</a>. Il peut également être judicieux de se familiariser avec les <a href="/fr/Apprendre/Understanding_URLs">URL</a> et la notion d'<a href="/fr/Apprendre/Le_fonctionnement_des_liens_sur_le_Web">hyperliens</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Savoir comment mettre en place des liens accessibles et utiles au référencement.</td> + </tr> + </tbody> +</table> + +<p>La création de liens est une compétence clé sur le web. Dans cet article, nous verrons en détails l'élément {{htmlelement("a")}} et comment l'utiliser pour créer des liens forts.</p> + +<h2 id="Comment_créer_un_lien">Comment créer un lien</h2> + +<p>Pour fabriquer un lien, vous aurez <em>a minima</em> besoin d'une cible et d'un texte :</p> + +<dl> + <dt>cible</dt> + <dd>L'{{glossary("URL")}} de la destination du lien (par exemple, <code>"https://www.mozilla.org/firefox/products/</code>")</dd> + <dt>texte</dt> + <dd>Le texte qui décrit la destination offerte par le lien (dans le cas de l'exemple précédent, on pourrait écrire « Cette page présente les différents produits Firefox !")</dd> +</dl> + +<p>Le <em>texte</em> sera placé entre les balises {{htmlelement('a')}} et la <em>cible </em>sera la valeur de l'attribut {{htmlattrxref('href','a')}}. Mis bout à bout, on obtient ce code :</p> + +<pre class="brush: html"><a href="https://www.mozilla.org/firefox/products/"> + Cette page présente les différents produits Firefox ! +</a></pre> + +<p>Cela affichera, sur la page web, le lien suivant :</p> + +<p><a href="https://www.mozilla.org/firefox/products/">Cette page présente les différents produits Firefox !</a></p> + +<div class="note"> +<p><strong>Astuce :</strong> Pour transformer une image en un lien, il suffit de placer l'élément de l'image entre les balises <code><a></code>.</p> + +<p>L'attribut <code>alt</code> de l'image ne doit pas seulement <strong>décrire</strong> l'image (« c'est une flèche vers la droite »), mais doit également <strong>indiquer aux visiteurs ce qui se produit en suivant le lien</strong> (« lire le prochain billet »). <a href="/fr/Apprendre/HTML/Comment/Ajouter_des_images_à_une_page_web">Ce tutoriel explique comment insérer des images dans une page web.</a></p> +</div> + +<h3 id="Les_ancres_d'une_page">Les ancres d'une page</h3> + +<p>Il est également possible de créer un lien qui pointe vers un endroit spécifique d'un document. Cet endroit est appelé une ancre.</p> + +<ol> + <li>Ajoutez un attribut {{htmlattrxref("id")}} à l'élément cible. Par exemple, changez <code><h2></code> en <code><h2 id="les-ancres"></code>.</li> + <li>Dans l'URL du lien, placée dans l'attribut {{htmlattrxref("href","a")}}, ajoutez l'identifiant précédé d'un dièse (#) : <code><a href="http://www.exemple.com/index.html#les-ancres"></code></li> +</ol> + +<div class="note"> +<p><strong>Astuce :</strong> La plupart du temps, les visiteurs d'un site s'attendent à ce qu'un lien ouvre une<strong> nouvelle</strong> page au début de celle-ci (plutôt qu'à un endroit donné, au sein de la page). Certains visiteurs peuvent donc être désorientés lorsqu'ils suivent un lien avec une ancre.</p> + +<p>Si vous utilisez des liens avec des ancres, essayez de les mettre en forme afin que les visiteurs du site puissent les reconnaître. Si vous utilisez des ancres entre les pages d'un de vos sites, vous pouvez utiliser {{glossary("JavaScript")}} pour créer un effet de défilement doux.</p> +</div> + +<h3 id="Créer_un_lien_vers_une_ressource_à_télécharger">Créer un lien vers une ressource à télécharger</h3> + +<p>Il peut arriver qu'un lien soit utilisé pour télécharger un fichier plutôt que d'ouvrir une nouvelle page. L'attribut <code>download</code> peut être utilisé pour fournir un nom par défaut, à donner au fichier. Voici un exemple de lien de téléchargement pour télécharger Firefox 39 pour Windows :</p> + +<pre class="brush: html"><a href="https://download.mozilla.org/?product=firefox-39.0-SSL&os=win&lang=fr" + download="installateur-firefox-39.exe"> + Téléchargez Firefox +</a></pre> + +<h2 id="Écrire_des_liens_accessibles">Écrire des liens accessibles</h2> + +<p>Ajouter des liens à une page est plutôt facile mais ce n'est pas tout. Les liens de vos pages doivent être <em>accessibles </em>à tous vos lecteurs, quel que soit le contexte de lecture et les outils qu'ils utilisent. Les visiteurs qui utilisent des lecteurs d'écran peuvent vouloir sauter de lien en lien, le texte d'un lien doit donc être compréhensible. Voici quelques règles et bonnes pratiques à mettre en œuvre.</p> + +<dl> + <dt>Le texte d'un lien doit être compréhensible seul</dt> + <dd> + <p>Les visiteurs qui utilisent des lecteurs d'écran passent de lien en lien. Les moteurs de recherche utilisent le texte des liens pour indexer les pages ciblées. Certains visiteurs regardent les liens plutôt que les autres textes. Pour ces raisons, le texte d'un lien doit avoir un sens sans aucun autre contexte.</p> + + <div class="note"> + <p><strong>Note :</strong> Dans notre exemple, le texte du lien commence par un verbe d'action. Cela permet au lecteur de sentir une progression dans ces actions et plus généralement de préciser le rôle du lien.</p> + </div> + + <p><em><strong>Texte compréhensible </strong>:</em> <a href="https://firefox.com">Télécharger Firefox</a></p> + + <pre class="brush: html"><a href="https://firefox.com/"> + Télécharger Firefox +</a></pre> + + <p><em><strong>Mauvais exemple </strong>:</em> <a href="https://firefox.com/">Cliquez ici</a> pour télécharger Firefox</p> + + <pre class="brush: html"><a href="https://firefox.com/"> + Cliquez ici +</a> +pour télécharger Firefox +</pre> + </dd> + <dt>N'ajoutez pas « lien vers » dans le texte du lien</dt> + <dd> + <p>Cela n'apporte aucune plus-value. Les lecteurs d'écran indiquent que l'élément est un lien. Les visiteurs qui utilisent directement un navigateur voient que c'est un lien grâce au soulignement et à sa couleur distinctive (et c'est également pour cette raison qu'il ne faut pas retirer la mise en forme d'un lien).</p> + + <p><em><strong>Bon exemple </strong>:</em> <a href="https://developer.mozilla.org/Firefox_OS">En savoir plus sur Firefox OS</a></p> + + <pre class="brush: html"><a href="https://developer.mozilla.org/Firefox_OS"> + En savoir plus sur Firefox OS +</a></pre> + + <p><em><strong>Mauvais exemple </strong>:</em> Voici un <a href="https://developer.mozilla.org/Firefox_OS">lien sur Firefox OS</a></p> + + <pre class="brush: html">Voici un +<a href="https://developer.mozilla.org/Firefox_OS"> + lien sur Firefox OS +</a></pre> + </dd> + <dt>Indiquez la cible du lien plutôt que de copier-coller une URL</dt> + <dd> + <p>Les URL sont illisibles, encore plus lorsqu'elles sont lues par un lecteur d'écran, lettre par lettre.</p> + + <p><em><strong>Bon exemple </strong>:</em> <a href="https://careers.mozilla.org/university/">Candidatez pour un stage chez Mozilla</a></p> + + <pre class="brush: html"><a href="https://careers.mozilla.org/university/"> + Candidatez pour un stage chez Mozilla +</a></pre> + + <p><em><strong>Mauvais exemple :</strong></em> <a href="https://careers.mozilla.org/university/">https://careers.mozilla.org/university/</a></p> + + <pre class="brush: html"><a href="https://careers.mozilla.org/university/"> + https://careers.mozilla.org/university/ +</a></pre> + </dd> + <dt>Le texte d'un lien doit être concis</dt> + <dd> + <p>Les longs textes de lien font perdre en lisibilité et ralentissent la navigation avec les lecteurs d'écrans.</p> + <strong><em>Bon exemple </em></strong><em>:</em> Voici une page où vous pouvez <a href="https://www.mozilla.org/firefox/all/" title="Firefox can be download in 90 different languages for 4 different operating systems.">télécharger Firefox</a> + + <pre class="brush: html">Voici une page où vous pouvez +<a href="https://www.mozilla.org/firefox/all/"> + télécharger Firefox +</a> +</pre> + + <p><em><strong>Mauvais exemple </strong>:</em> Voici une page où <a href="https://www.mozilla.org/firefox/all/">vous pouvez télécharger Firefox en 90 langues différentes, pour quatre systèmes d'exploitation différents</a></p> + + <pre class="brush: html">Voici une page où +<a href="https://www.mozilla.org/firefox/all/"> + vous pouvez télécharger Firefox en 90 langues différentes, pour quatre systèmes d'exploitation différents +</a> +</pre> + </dd> + <dt>Indiquez à quoi correspond la cible du lien</dt> + <dd> + <p>Cela peut paraître évident mais on rencontre parfois des liens dont les textes n'ont rien à voir avec la destination. Soyez explicite, cela simplifiera la navigation pour vos lecteurs et améliorera votre référencement.</p> + + <p><em><strong>Bon exemple :</strong></em><a href="http://getfirefox.org/"> Téléchargez Firefox</a>, le navigateur développé par Mozilla : stable, sûr et rapide.</p> + + <p><em><strong>Mauvais exemple</strong> :</em> <a href="http://getfirefox.org/">Voici une autre application</a> qui améliorera votre navigation sur le Web.</p> + </dd> +</dl> + +<h2 id="Perfectionner_ses_liens">Perfectionner ses liens</h2> + +<dl> + <dt>Faites attention à l'ordre de navigation grâce aux tabulations</dt> + <dd>De nombreuses personnes utilisent le clavier pour naviguer sur une page web. La touche de tabulation est une des seules méthodes permettant de passer d'un lien à un autre. Par défaut, l'ordre de cette navigation correspondra à celui du document HTML. Toutefois, il est possible de surcharger cet ordre grâce à l'attribut {{htmlattrxref("tabindex")}}. Attention toutefois à bien utiliser CSS pour que l'ordre visuel (ou celui déterminé par un lecteur d'écran) soit logique pour le lecteur.</dd> + <dt>Gardez des liens suffisamment grands</dt> + <dd> + <p>Assurez-vous que vos liens puissent être déclenchés facilement, à la souris ou au toucher. CSS peut être utilisé pour cela. <a href="http://www.smashingmagazine.com/2012/02/21/finger-friendly-design-ideal-mobile-touchscreen-target-sizes/">Une recherche basée sur l'expérience des utilisateurs</a> indique que les liens devraient mesurer 72 pixels (45px étant la taille minimale). Attention à ne pas oublier ce point, notamment si vous utilisez une souris ou un pad sur votre poste de travail.</p> + </dd> + <dt>Soulignez les liens et uniquement les liens</dt> + <dd>Lorsque les visiteurs d'un site voient un texte souligné, ils s'attendent à ce que ce texte soit un lien. Pour cette raison, ne soulignez que les liens. Il n'est pas strictement nécessaire de souligner les liens mais <a href="http://www.w3.org/TR/2015/NOTE-WCAG20-TECHS-20150226/F73">la couleur ne suffira pas</a> pour indiquer qu'un texte est un lien.</dd> + <dt>Utilisez une couleur distincte et identifiable pour vos liens</dt> + <dd>Le bleu est utilisé par défaut pour les liens. Vous pouvez utiliser une autre couleur mais celle-ci doit <a href="http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/working-examples/G183/link-contrast.html">former un contraste suffisant avec l'arrière-plan.</a></dd> + <dt>Utilisez une mise en forme distincte pour les liens inhabituels</dt> + <dd>Utilisez CSS pour indiquer aux visiteurs que le lien a un comportement spécifique (un lien externe, un lien qui ouvre une page dans un nouvel onglet, un lien qui ouvre une page dans une autre langue). Voir également {{htmlattrxref("hreflang","a")}}). Sur MDN, par exemple, on ajoute un symbole devant les liens externes (par exemple <a href="https://en.m.wikipedia.org/wiki/Firefox_OS">l'article de Wikipédia sur Firefox OS</a>).</dd> + <dt>Fournissez des cibles et des textes pour tous les liens</dt> + <dd>S'il n'y a pas de texte, il ne sera pas possible de voir le lien et les lecteurs d'écran diront juste « lien fin lien ». S'il n'y a pas de cible (pas de {{htmlattrxref("href")}} ou un <code>href</code> vide ou <code>href="#"</code>), le lien ne mènera nulle part.</dd> +</dl> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li>La documentation sur l'élément {{HTMLElement("a")}} dans la référence HTML.</li> +</ul> diff --git a/files/fr/conflicting/learn/html/introduction_to_html/creating_hyperlinks_10fd94f15ce1a469a3483e0478cb5d85/index.html b/files/fr/conflicting/learn/html/introduction_to_html/creating_hyperlinks_10fd94f15ce1a469a3483e0478cb5d85/index.html new file mode 100644 index 0000000000..77e52eafb4 --- /dev/null +++ b/files/fr/conflicting/learn/html/introduction_to_html/creating_hyperlinks_10fd94f15ce1a469a3483e0478cb5d85/index.html @@ -0,0 +1,64 @@ +--- +title: Liens email +slug: Web/Guide/HTML/Liens_email +tags: + - Beginner + - Exemple + - Guide + - HTML + - Web +translation_of: Learn/HTML/Introduction_to_HTML/Creating_hyperlinks#E-mail_links +translation_of_original: Web/Guide/HTML/Email_links +--- +<p><span class="seoSummary">Il est parfois utile de créer des liens ou des boutons qui nous permettent d'écrire un nouvel e-mail. Par exemple, on peut les utiliser pour créer un bouton « contactez-nous ». Ceci est possible grâce à l'élement HTML {{HTMLElement("a")}} et au format d'URL <code>mailto</code>.</span></p> + +<h2 id="Bases_de_mailto">Bases de <code>mailto</code></h2> + +<p>Dans sa forme la plus basique et la plus utilisée, un lien <code>mailto</code> indique simplement l'adresse e-mail du destinataire. Par exemple :</p> + +<pre class="brush: html notranslate"><a href="mailto:nullepart@mozilla.org">Envoyer l'email nulle part</a></pre> + +<p>Le résultat s'affiche comme ceci : <a href="mailto:nullepart@mozilla.org">Envoyer l'email nulle part</a>.</p> + +<p>En réalité, l'adresse e-mail est optionelle. Si on ne l'ajoute pas (le {{htmlattrxref("href", "a")}} contiendra simplement « mailto: »), une nouvelle fenêtre du client de messagerie de l'utilisateur s'ouvrira, sans destinataire spécifié. Cela peut être utile dans le cas d'un bouton « Partager » où l'utilisateur sélectionnera les personnes auxquelles il veut envoyer un e-mail.</p> + +<h2 id="Précisions">Précisions</h2> + +<p>En plus de l'adresse e-mail, on peut fournir d'autres informations. En effet, n'importe quel champ d'en-tête d'un e-mail standard peut être ajoutée à l'URL <code>mailto</code>. Les plus communément utilisés sont « <code>subject</code> », « <code>cc</code> » et « <code>body</code> » (qui n'est pas réellement un champ d'entête mais qui permet de spécifier un message court pour le nouvel email). Chaque champ et sa valeur sont indiqués comme un terme de requête.</p> + +<div class="note"> +<p><strong>Note :</strong> Les valeurs de chaque champ doivent être codées au <a href="https://en.wikipedia.org/wiki/Percent-encoding">format URL</a>.</p> +</div> + +<h3 id="Échantillons_dURL_mailto">Échantillons d'URL <code>mailto</code></h3> + +<p>Voici quelques échantillons d'URL <code>mailto</code>:</p> + +<ul> + <li><a href="mailto:">mailto:</a></li> + <li><a href="mailto:nullepart@mozilla.org">mailto:nullepart@mozilla.org</a></li> + <li><a href="mailto:nullepart@mozilla.org,personne@mozilla.org">mailto:nullepart@mozilla.org,personne@mozilla.org</a></li> + <li><a href="mailto:nullepart@mozilla.org?cc=personne@mozilla.org">mailto:nullepart@mozilla.org?cc=personne@mozilla.org</a></li> + <li><a href="mailto:nullepart@mozilla.org?cc=personne@mozilla.org&subject=Ceci%20est%20le%20sujet">mailto:nullepart@mozilla.org?cc=personne@mozilla.org&subject=Ceci%20est%20le%20sujet</a></li> +</ul> + +<p>Notez l'utilisation de l'esperluette (&) pour séparer les champs de l'URL <code>mailto</code>. C'est le format standard d'écriture des URL.</p> + +<h3 id="Exemple">Exemple</h3> + +<p>Si vous voulez créer un lien qui permettrait de s'inscrire à une newsletter, vous pouvez utiliser un lien <code>mailto</code> comme ceci :</p> + +<pre class="brush: html notranslate"><a href="mailto:nullepart@mozilla.org?subject=Demande%20inscription%20newsletter&body=Inscrivez-moi%20%C3%A0%20votre%20newsletter%20%21%0D%0A%0D%0ANom%20complet%20%3A%0D%0A%0D%0AO%C3%B9%20avez-vous%20entendu%20parler%20de%20nous%20%3F"> +Inscrivez-vous à notre newsletter +</a></pre> + +<p>Le résultat s'affiche comme ceci : <a href="mailto:nullepart@mozilla.org?subject=Demande%20inscription%20newsletter&body=Inscrivez-moi%20%C3%A0%20votre%20newsletter%20%21%0D%0A%0D%0ANom%20complet%20%3A%0D%0A%0D%0AO%C3%B9%20avez-vous%20entendu%20parler%20de%20nous%20%3F">Inscrivez-vous à notre newsletter</a>.</p> + +<section id="Quick_Links"> +<ol> + <li>{{HTMLElement("a")}}</li> + <li>{{RFC(6068, "The 'mailto' URI Scheme")}}</li> + <li>{{RFC(5322, "Internet Message Format")}}</li> + <li><a href="http://www.url-encode-decode.com/">Encodage/décodage d'URL en ligne</a></li> +</ol> +</section> diff --git a/files/fr/conflicting/learn/html/introduction_to_html/document_and_website_structure/index.html b/files/fr/conflicting/learn/html/introduction_to_html/document_and_website_structure/index.html new file mode 100644 index 0000000000..170ad81290 --- /dev/null +++ b/files/fr/conflicting/learn/html/introduction_to_html/document_and_website_structure/index.html @@ -0,0 +1,229 @@ +--- +title: Découper une page web en sections logiques +slug: Apprendre/HTML/Comment/Découper_une_page_web_en_sections_logiques +tags: + - Beginner + - DesignAccessibility + - HTML + - Learn +translation_of: Learn/HTML/Introduction_to_HTML/Document_and_website_structure +translation_of_original: Learn/HTML/Howto/Divide_a_webpage_into_logical_sections +--- +<div class="summary"> +<p>Dans cet article, nous verrons comment structurer un document afin que son plan soit logique pour vous, vos visiteurs dont ceux qui utilisent des technologies d'aide à la navigation.</p> +</div> + +<table class="learn-box nostripe standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez au préalable savoir comment <a href="/en-US/Learn/HTML/Write_a_simple_page_in_HTML">créer un document HTML simple</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Apprendre comment structurer un document web grâce aux balises sémantiques.</td> + </tr> + </tbody> +</table> + +<h2 id="Les_sections_de_base">Les sections de base</h2> + +<p>Les sites web ont chacun leur style mais tous ont tendance à partager des composants communs :</p> + +<dl> + <dt>l'en-tête (<em>header</em>)</dt> + <dd>Il s'agit généralement d'un grande bande horizontale, située en haut du site avec un grand titre et/ou un logo. C'est à cet endroit qu'on a toujours la même information sur le site, quelle que soit la page du site sur laquelle on est.</dd> + <dt>la barre de navigation</dt> + <dd>Celle-ci permet de faire référence aux différentes sections du site via des menus ou des onglets. Comme pour l'en-tête, la barre de navigation sera généralmeent présente sur l'ensemble du site. De nombreux concepteurs web considèrent que la barre de navigation fait partie intégrale de l'en-tête mais ce n'est pas strictement nécessaire.</dd> + <dt>le contenu principal</dt> + <dd>Une zone importante, située au centre dont le contenu est spécifique selon la page visitée.</dd> + <dt>le panneau ou la barre latéral-e (<em>sidebar</em>)</dt> + <dd>Il contient des informations périphériques, des liens, des citations, des publicités. Généralement, ce panneau dépend du contenu principal de la page mais on trouve également des panneaux latéraux qui agissent comme des menus de navigation secondaires.</dd> + <dt>le pied de page (<em>footer</em>)</dt> + <dd>C'est ici qu'on trouvera les informations de contact, de copyright… C'est un endroit où on place des informations communes à l'ensemble du site mais qui ne sont pas primordiales pour le site en tant que tel. Le pied de page est parfois utilisé par les outils de référencement afin de fournir un accès rapide à certaines parties du site.</dd> +</dl> + +<p>Lorsqu'on assemble ces éléments, on arrive à quelque chose qui ressemble <em>grosso modo</em> à :</p> + +<p><img alt="[Diagram indicating the divisions with visual cues]" src="https://mdn.mozillademos.org/files/10679/Screenshot%20from%202015-04-29%2016:21:23.png" style="height: 462px; width: 821px;"></p> + +<h2 id="HTML_à_la_rescousse">HTML à la rescousse</h2> + +<p>Dans le dessin précédent, des indications visuelles permettent d'identifier rapidement l'en-tête, la barre de navigation, le contenu, etc. Cela dit, un site ne se résume pas à son aspect visuel. Une personne qui serait déficiente sur le plan visuel (par exemple quelqu'un qui est daltonien, comme <a href="http://www.color-blindness.com/2006/04/28/colorblind-population/">8% de la population mondiale</a>) pourra tirer partie de concepts comme « barre de navigation » et « contenu principal », en revanche, « taille de police plus grande » et « vert clair » seront inutiles.</p> + +<p>Dans votre code HTML, vous pouvez identifier les sections en fonction de leur <em>fonctionnalité</em>. C'est ce que nous verrons dans la suite de cet article. Pour savoir comment ajouter des indications visuelles, vous pouvez consulter <a href="https://developer.mozilla.org/en-US/Learn/CSS/Howto">notre tutoriel CSS</a>.</p> + +<p>Pour structurer une page avec cette sémantique, HTML fournit des balises dédiées :</p> + +<ul> + <li><strong>Pour l'en-tête : </strong>{{htmlelement("header")}}</li> + <li><strong>Pour la barre de navigation : </strong>{{htmlelement("nav")}}</li> + <li><strong>Pour le contenu principal : </strong>{{htmlelement("main")}} ainsi qu'une association d'éléments {{HTMLElement("article")}}, {{htmlelement("section")}} et {{htmlelement("div")}} pour créer des sous-sections</li> + <li><strong>Pour la barre latérale : </strong>{{htmlelement("aside")}}</li> + <li><strong>Pour le pied de page : </strong>{{htmlelement("footer")}}</li> +</ul> + +<div class="note"> +<p>Pour la barre de navigation, on trouvera souvent <a href="/fr/Apprendre/HTML/Comment/Créer_une_liste_d_éléments_avec_HTML">une liste, non-ordonnée, de liens</a> placée dans un élément <code><nav></code>. <a href="https://css-tricks.com/wrapup-of-navigation-in-lists/">Chris Coyier résume les avantages et inconvénients</a> entre les listes et les liens directs.</p> +</div> + +<h3 id="Quel_élément_utiliser">Quel élément utiliser</h3> + +<p>Vous pouvez être confronté-e à d'autres scénarios que celui que nous venons de voir. Dans la liste qui suit, nous verrons des descriptions plus détaillées des éléments HTML liés aux sections d'un document :</p> + +<ul> + <li>{{HTMLElement('main')}} est utilisé pour indiquer du contenu qui appartient <em>exclusivement</em> à cette page. <code><main></code> ne doit être utilisé qu'une seule fois par page et se place directement sous l'élément {{HTMLElement('body')}}. Dans l'idéal, il ne devrait pas être imbriqué dans d'autres éléments sous <code><body></code>.</li> + <li>{{HTMLElement('article')}} contient un bloc de contenu qui pourrait être cohérent sans le reste de la page (par exemple un billet de blog).</li> + <li>{{HTMLElement('section')}} agit comme <code><article></code> mais dépend du reste de la page, qui fournit alors un contexte. Il est possible d'utiliser des sections pour grouper ou subdiviser des articles. Généralement, pour respecter des bonnes pratiques, on commencera une section avec un élément de <a href="/fr/Apprendre/HTML/Howto/Set_up_a_proper_title_hierarchy">titre</a>.</li> + <li>{{HTMLElement('aside')}} contient du contenu qui n'est pas directement lié au contenu principal mais qui peut fournir des informations supplémentaires, liées à ce contenu principal (par exemple une biographie de l'auteur, des liens sur le sujet, etc.).</li> + <li>{{HTMLElement('header')}} représente un groupe de contenu introductif. Si c'est un élément inclus dans {{HTMLElement('body')}}, il définit l'en-tête de la page web. En revanche, si c'est un élément inclus dans {{HTMLElement('article')}} ou {{HTMLElement('section')}}, il définit un en-tête propre à cette section (attention à ne pas confondre cette notion avec les <a href="/en-US/Learn/HTML/Howto/Set_up_a_proper_title_hierarchy">niveaux de titre</a>).</li> + <li>{{HTMLElement('footer')}} représente un groupe de contenu final. Selon sa position il aura un sens analogue à l'élément {{HTMLElement('header')}}.</li> + <li>{{HTMLElement('div')}} est un élément qui peut être utilisé (de préférence avec un attribut {{htmlattrxref('class')}} donné) lorsqu'il n'existe pas d'élément plus spécifique. Les éléments <code><div></code> n'ajoutent pas de division sémantique au document, cela peut permettre de manipuler certaines parties d'un document (la classe ou l'identifiant du <code><div></code> permettra de le(s) retrouver facilement) via {{glossary("CSS")}} ou {{glossary("JavaScript")}}.</li> +</ul> + +<div class="warning"> +<p><strong>Attention : </strong>Les éléments <code><div></code> sont parfois si pratiques qu'on en utilise trop. Ces éléments ne portent aucune sémantique, il ne font qu'encombrer le code HTML. Attention donc à ne les utiliser que lorsqu'il n'existe pas de meilleure solution sémantique. S'ils sont trop présents, cela rendra les mises à jour et la maintenance plus difficiles.</p> +</div> + +<h3 id="Exemple">Exemple</h3> + +<p>Exprimé sous forme de code HTML, le dessin présenté ci-avant correspondrait à :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html lang="fr"> +<head> + <meta charset="utf-8"> + <title>Document HTML</title> +</head> +<body> + + <!-- + Voici l'en-tête principal, utilisé sur les + différentes pages du site web + --> + <header> + header + + <!-- + Bien que ce ne soit pas obligatoire, on trouve + généralement un menu de navigation dans l'en-tête + principal + --> + <nav> + <ul> + <li><a href="#">Navigation</a></li> + <li><a href="#">Qui nous sommes</a></li> + <li><a href="#">Ce que nous faisons</a></li> + <li><a href="#">Contact</a></li> + </ul> + + <!-- + Une barre de recherche est un outil de navigation + "non-linéaire" au sein du site web. + --> + <form> + <input type="search" name="q" placeholder="Recherchez..."> + <input type="submit" value="OK"> + </form> + </nav> + </header> + + <!-- + Voici le contenu principal + --> + <main> + + <!-- + Il contient un article + --> + <article> + <h1>Titre</h1> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. + Donec a diam lectus. Set sit amet ipsum mauris. Maecenas congue + ligula as quam viverra nec consectetur ant hendrerit. Donec et + mollis dolor. Praesent et diam eget libero egestas mattis sit + amet vitae augue. Nam tincidunt congue enim, ut porta lorem + lacinia consectetur.</p> + + <h2>Sous-section</h2> + <p>Donec ut librero sed accu vehicula ultricies a non tortor. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aenean + ut gravida lorem. Ut turpis felis, pulvinar a semper sed, + adipiscing id dolor.</p> + + <p>Pelientesque auctor nisi id magna consequat sagittis. + Curabitur dapibus, enim sit amet elit pharetra tincidunt feugiat + nist imperdiet. Ut convallis libero in urna ultrices accumsan. + Donec sed odio eros.</p> + + <h2>Une autre sous-section</h2> + <p>Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus. + Cum soclis natoque penatibus et manis dis parturient montes, + nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris + vitae nisi at sem facilisis semper ac in est.</p> + + <p>Vivamus fermentum semper porta. Nunc diam velit, adipscing ut + tristique vitae sagittis vel odio. Maecenas convallis ullamcorper + ultricied. Curabitur ornare, ligula semper consectetur sagittis, + nisi diam iaculis velit, is fringille sem nunc vet mi.</p> + </article> + + <!-- + le contenu placé sur le côté peut aussi + être dans le contenu principal + --> + <aside> + <p>N'hésitez pas à rendre visite à nos sponsors !</p> + <ul> + <li><a href="#">item</a></li> + <li><a href="#">item</a></li> + <li><a href="#">item</a></li> + <li><a href="#">item</a></li> + <li><a href="#">item</a></li> + </ul> + </aside> + </main> + + <!-- + Enfin, voici le pied de page principal, + utilisé sur les différentes pages du site. + Note : Ceci est une fausse déclaration de copyright + Attention à celles qui sont réelles. + --> + <footer> + ©Copyright 2050 par exemple.com. Tous droits réservés. + </footer> +</body> +</html> +</pre> + +<h2 id="Les_rôles_ARIA_qu'est-ce_que_c'est">Les rôles ARIA, qu'est-ce que c'est ?</h2> + +<p>HTML a initialement été conçu pour définir la <em>structure</em> d'un document. Or, il est désormais utilisé pour créer des applications web.</p> + +<p>{{Glossary("ARIA")}} est une méthode qui permet d'indiquer aux technologies d'aide à la navigation qu'un élément HTML possède des fonctionnalités web applicatives.</p> + +<p>Certains éléments HTML5 comme {{HTMLElement('nav')}} permettent de contenir des informations de ce genre et rendent (dans ce cas particulier) les attributs ARIA redondants. Cela dit, si vous utilisez des technologies qui ne supportent pas encore HTML5 ou que vous souhaitez utiliser un élément qui n'a pas de sémantique particulière (par exemple {{HTMLElement('div')}}) , vous pouvez appliquer des rôles ARIA de cette façon:</p> + +<ul> + <li><code><main role="main"></code></li> + <li><code><header role="banner"></code></li> + <li><code><nav role="navigation"></code></li> + <li><code><aside role="complementary"></code></li> + <li><code><footer role="contentinfo"></code></li> +</ul> + +<p>Pour en savoir plus à propos d'ARIA, consultez notre <a href="/fr/docs/Accessibilité/ARIA">documentation.</a></p> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li>{{HTMLElement("article")}}</li> + <li>{{htmlelement("aside")}}</li> + <li>{{htmlelement("div")}}</li> + <li>{{htmlelement("footer")}}</li> + <li>{{htmlelement("header")}}</li> + <li>{{htmlelement("main")}}</li> + <li>{{htmlelement("nav")}}</li> + <li>{{htmlelement("section")}}</li> +</ul> diff --git a/files/fr/conflicting/learn/html/introduction_to_html/getting_started/index.html b/files/fr/conflicting/learn/html/introduction_to_html/getting_started/index.html new file mode 100644 index 0000000000..3e911e92c8 --- /dev/null +++ b/files/fr/conflicting/learn/html/introduction_to_html/getting_started/index.html @@ -0,0 +1,189 @@ +--- +title: Créer un document HTML simple +slug: Apprendre/HTML/Comment/Créer_un_document_HTML_simple +tags: + - Beginner + - Guide + - HTML + - Learn +translation_of: Learn/HTML/Introduction_to_HTML/Getting_started +translation_of_original: Learn/HTML/Howto/Create_a_basic_HTML_document +--- +<p class="summary">Pour créer un site web, on commence par rédiger un document HTML. Les navigateurs actuels sont plutôt tolérants mais pour éviter quelques maux de tête, mieux vaut l'assembler correctement dès le début.</p> + +<table class="learn-box standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez avoir <a href="/en-US/Learn/Choose,_Install_and_set_up_a_text_editor">installé un éditeur de texte</a> et connaître <a href="/en-US/Learn/Getting_started_with_the_web/HTML_basics">quelques rudiments de HTML</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Apprendre à mettre en place un document HTML vierge tout en comprenant le rôle de chaque composant du squelette obtenu.</td> + </tr> + </tbody> +</table> + +<p>Chaque document HTML partage la même structure. Cet article décrira chacune des parties de cette structure. Une fois n'est pas coutume, commençons par la fin en regardant la structure complète, avant de la décomposer :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html lang="fr"> + <head> + <meta charset="utf-8"> + <title>Inscrire un titre ici</title> + <!-- On peut avoir d'autres méta-données ici --> + </head> + <body> + <!-- Ici, on placera tout le contenu à destination + de l'utilisateur --> + </body> +</html></pre> + +<p>Dans la suite de cet article, nous verrons les raisons d'être de chacun des morceaux de cet exemple. En attendant, vous pouvez copier/coller cette exemple dans votre éditeur de texte pour avoir un squelette de base, réutilisable pour vos différents documents.</p> + +<h2 id="Qu'est-ce_qu'un_document_HTML">Qu'est-ce qu'un document HTML ?</h2> + +<p>Un document HTML ou <a href="/fr/Apprendre/page_vs_site_vs_serveur_vs_moteur_recherche">une page web</a> est simplement composé de texte structuré au sein de balise (une balise étant un mot-clé encadré par des chevrons ("<>"), par exemple, dans l'exemple précédent <code><html></code> et <code><body></code> sont deux des éléments qui sont utilisés). La plupart des balises fonctionnent par paires (on a alors une balise ouvrante <code><body></code> et une balise fermante correspondante : <code></body></code>). Un <strong><dfn>{{Glossary('élément')}}</dfn></strong> est une chaîne de texte entre deux balises.</p> + +<p>La plupart des programmes (le plus souvent des {{glossary("navigateur","navigateurs")}}) traitent ces balises pour générer (ou « rendre ») le site que l'utilisateur peut voir, écouter ou ressentir.</p> + +<p>Étant donné que HTML est un format textuel, il est possible d'écrire des fichiers HTML avec n'importe quel <a href="/fr/Apprendre/Choisir_installer_paramétrer_un_éditeur_de_texte">éditeur de texte</a>. Ajouter des balises HTML au texte est très simple et se fait en un rien de temps. Pour choisir les meilleurs outils, mieux vaut comprendre les balises et {{Glossary("Attribut","attributs")}} les plus communs. C'est le but de la <a href="/fr/Apprendre">zone d'apprentissage de MDN</a>.</p> + +<p>Dans la suite de cet article, nous expliquerons les différents fragments de l'exemple précédent :</p> + +<ul> + <li>ce qu'est un {{glossary("doctype")}} et pourquoi c'est important</li> + <li>l'élément racine : {{htmlelement("html")}}</li> + <li>la différence entre les éléments placés dans {{htmlelement("head")}} et dans {{htmlelement("body")}}</li> + <li>l'importance de l'élément {{htmlelement("title")}}.</li> + <li>la définition du jeu de caractères à utiliser pour le document avec l'élément {{htmlelement("meta")}}.</li> +</ul> + +<h2 id="Le_doctype">Le <em>doctype</em></h2> + +<p>La chaîne de texte suivante est appelée {{Glossary("doctype")}} (qui est la contraction, anglaise, de « document » et « type »).</p> + +<pre class="brush: html"><!DOCTYPE html></pre> + +<p>En ce qui concerne HTML, le <em>doctype</em> est un reliquat historique. Pourquoi est-il alors toujours présent ?</p> + +<p>Si vous ne commencez pas votre document par <code><!DOCTYPE html></code>, les navigateurs afficheront votre document en <a href="/fr/docs/Mode_quirks_de_Mozilla"><em>mode quirks</em></a>. Le mode <em>quirks</em> est le mode utilisé par le navigateur pour afficher les documents anciens ou malformés, écrits dans les années 1990 lorsque HTML était peu (voire pas du tout) standardisé et que chaque navigateur gérait HTML à sa façon.</p> + +<p>Le <em>doctype</em> déclenche l'utilisation du mode <em>standard</em>. Cela fait que la page sera affichée de façon prévisible et cohérente par rapport aux standards définis par le {{glossary("W3C")}} et le {{glossary("WHATWG")}}. Cela signifie également que les navigateurs gèrent les erreurs de façon standard, prévisible et homogène.</p> + +<div class="warning"> +<p><strong>Attention :</strong> Le <em>doctype</em> doit commencer le document HTML avant toute autre chose (pas de commentaires HTML, pas de sauts de ligne, pas de blancs). Certains navigateurs historiques seront très pointilleux à ce sujet et mieux vaut donc respecter cette règle.</p> +</div> + +<h2 id="L'élément_<html>">L'élément <code><html></code></h2> + +<p>Tout le document (en dehors du <em>doctype</em>) est contenu entre les balises <code><html></code> et <code></html></code>. Il ne peut y avoir qu'un seul élément {{HTMLElement('html')}} par document.</p> + +<div class="note"> +<p>Il est possible d'oublier <code><html></code> et le navigateur le comprendra de façon implicite. Cependant, afin de pouvoir manipuler le document dans son ensemble, <code><html></code> sera nécessaire. Par exemple, on utilise <code><html lang="fr"></code> pour indiquer que le document entier est écrit en français. De la même façon, <code><html></code> permettra d'appliquer une mise en forme sur tout le document grâce à CSS.</p> +</div> + +<h2 id="Les_éléments_<head>_et_<body>">Les éléments <code><head></code> et <code><body></code></h2> + +<p>Au sein de l'élément <code><html></code>, le document aura une « tête » (<em>head</em> en anglais) située entre les balises <code><head></code> et <code></head></code> et un « corps » (<em>body</em> en anglais) situé entre les balises <code><body></code> et <code></body></code>.</p> + +<p>La tête de la page contient les méta-données (c'est-à-dire les données qui décrivent le document) mais pas le contenu principal affiché pour l'utilisateur. Ces méta-données peuvent être utilisées par les moteurs de recherches, pour ajouter des liens vers des feuilles de style CSS, etc. Dans la section qui suit, nous verrons les contenus les plus importants pour cet élément : le titre et la déclaration du jeu de caractères.</p> + +<p>Le corps contient le contenu affiché pour l'utilisateur. C'est donc sur cet élément qu'on s'attardera le plus.</p> + +<div class="note"> +<p>HTML est très souple à propos de la structure du document, si vous oubliez les éléments <code><head></code> et <code><body></code>, ils seront implicitement ajoutés. Voici un document sans <code><html></code> ni <code><head></code> ni <code><body></code> :</p> + +<pre class="brush: html"><!DOCTYPE html> +<title>Ceci est un document HTML</title> + +Coucou monde ! (<i>Hello world!</i>) +</pre> + +<p>Le navigateur s'occupera de tout :</p> + +<p><img alt="[Screenshot of the browser making its best guess]" src="https://mdn.mozillademos.org/files/11675/Capture%20du%202015-10-04%2017-23-03.png" style="height: 254px; width: 873px;"></p> + +<p>Même si le navigateur prend soin d'ajouter les balises qui manquent : c'est une mauvaise idée de les oublier. Si vous continuez sur cette voie et que votre contenu devient plus complexe, vous devrez faire confiance au navigateur pour déterminer ce qui est la tête et ce qui est le corps. En explicitant où est <code><head></code> et où est <code><body></code>, vous gagnerez plus de temps.</p> +</div> + +<h2 id="L'élément_<title>_le_titre_du_document">L'élément <code><title></code> : le titre du document</h2> + +<p>Dans la tête du document, on écrira un titre concis et équivoque qui décrit le document. Il faut que le titre ait du sens sans autre contexte. Récapitulons, voici où va le titre :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> + <head> + <title>Mon fabuleux exemple HTML</title> + ... + </head> + <body> + ... + </body> +</html></pre> + +<p>Le titre ne doit contenir que du texte (aucun élément ne sera interprété dans <code><title></code>).</p> + +<div class="note"> +<p>Là encore, libre à vous de ne pas indiquer le titre et d'en subir les conséquences. Le titre d'un document est notamment utilisé dans les résultats des moteurs de recherche et pour indiquer le propos du document. De plus, les navigateurs graphiques utiliseront les titres pour les libellés des onglets.</p> + +<p>S'il n'y a pas de titre, les navigateurs et les moteurs de recherches construiront eux-mêmes le texte, ce qui ne sera pas très parlant :</p> + +<pre class="brush: html"><!DOCTYPE html> +<!-- Pas de titre ici --> +Hello world! +</pre> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Chrome</th> + <td><img alt="[Screenshot of a Chrome tab labeled ''index.html'']" src="https://mdn.mozillademos.org/files/10887/index-ch.png" style="height: 147px; width: 400px;"></td> + </tr> + </tbody> + <tbody> + <tr> + <th scope="col">Firefox</th> + <td><img alt="[Screenshot of a Firefox tab labeled with the HTML document's entire path and filename]" src="https://mdn.mozillademos.org/files/11143/index-ff.png"></td> + </tr> + </tbody> +</table> +</div> + +<dl> + <dt> + <h2 id="Définir_le_jeu_de_caractères_utilisé">Définir le jeu de caractères utilisé</h2> + </dt> +</dl> + +<p>Les ordinateurs enregistrent toutes les informations sous forme de zéros et de uns. Tous les nombres sont, au final, exprimé en base 2 (c'est-à-dire au format binaire). Pour exprimer d'autres valeurs, il est nécessaire de s'accorder sur un format de représentation qui définit la correspondance entre telle valeur binaire et telle valeur à représenter.</p> + +<p>Heureusement, lorsqu'il s'agit de représenter des chaînes de caractères, il existe un standard appelé {{glossary("UTF-8")}} qui permet d'associer des nombres binaires à l'ensemble des glyphes contenus dans les différents langages humains. On peut donc dire, sans ambiguité, que "A" sera stocké avec la valeur "65", ce qui correspond, en écriture binaire, au nombre "01000001". </p> + +<p>D'autres formes d'encodage sont encore utilisées par ailleurs, aussi, pour garantir le résultat obtenu, on déclare explicitement qu'on utilise UTF-8 dans le fichier HTML. C'est pour cette raison que nous avons ajouté <code><meta charset="utf-8"></code> dans l'exemple ci-avant.</p> + +<div class="note"> +<p><strong>Note :</strong> En plus de cette déclaration, il faut également enregistrer le fichier HTML avec l'encodage UTF-8. Généralememnt, vous trouverez une option dans le menu « Enregistrer sous… » qui permet de définir l'encodage à utiliser lors de l'enregistrement.</p> + +<p>Voici ce qui se produit si on utilise un document HTML encodé en ISO-8859-1 et non en UTF-8. Le navigateur affichera � à la place des lettres accentuées :</p> + +<p><img alt="[Screenshot showing the browser displaying ''Les Fran?ais utilisent des lettres accentu?es'']" src="https://mdn.mozillademos.org/files/10907/index-encoding.png" style="height: 132px; width: 335px;"></p> +</div> + +<h2 id="Modèles_et_gabarits">Modèles et gabarits</h2> + +<p>Au fur et à mesure que vous créerez vos document HTML, vous remarquerez que la même structure revient encore et toujours… et que c'est pénible de la saisir à chaque fois. Pour épargner du temps, vous pouvez sauvegarder ce code dans un fichier modèle que vous pourrez utiliser à chaque fois que vous aurez besoin d'une nouvelle page HTML (pour laquelle il suffira de copier le modèle plutôt que de retaper le code correspondant).</p> + +<p>Vous pouvez mettre en place des modèles personnalisés pour les différents projets que vous avez. Cela vous permettra d'éviter d'écrire à chaque fois la même chose pour les barres de navigation, les liens vers les feuilles de styles ou du code qui est réutilisé pour chaque page d'un site (certaines sociétés travaillent même à créer, fournir et vendre des modèles de fichiers HTML).</p> + +<div class="note"> +<p><strong>Astuce :</strong> Si votre éditeur de texte permet de gérer les <em>snippets</em> (fragments de code), vous pouvez placer votre modèle dans un <em>snippet</em> pour l'invoquer rapidement et générer un début de document à la vitesse de la lumière.</p> +</div> + +<div class="note"> +<p><strong>Astuce :</strong> À un certain moment, vous serez devenu-e très familier-e avec HTML. Lorsque ce sera le cas, n'hésitez pas à consulter le projet <a href="https://html5boilerplate.com/">HTML5 Boilerplate</a>. Celui-ci décrit des <em>templates</em> (modèles) avancés de documents HTML, construits avec les meilleures pratiques du développement web.</p> +</div> + +<h2 id="Exercices">Exercices</h2> + +<p>À construire, <a href="/fr/docs/MDN/Contribute/Howto/Create_an_interactive_exercise_to_help_learning_the_web">n'hésitez pas à contribuer !</a></p> diff --git a/files/fr/conflicting/learn/html/introduction_to_html/html_text_fundamentals/index.html b/files/fr/conflicting/learn/html/introduction_to_html/html_text_fundamentals/index.html new file mode 100644 index 0000000000..e7c828c348 --- /dev/null +++ b/files/fr/conflicting/learn/html/introduction_to_html/html_text_fundamentals/index.html @@ -0,0 +1,171 @@ +--- +title: Créer une liste d'éléments avec HTML +slug: Apprendre/HTML/Comment/Créer_une_liste_d_éléments_avec_HTML +tags: + - Beginner + - Guide + - HTML +translation_of: Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals#Lists +translation_of_original: Learn/HTML/Howto/Create_list_of_items_with_HTML +--- +<div class="summary"> +<p>Vous souhaitez ajouter une liste numérotée ou une liste à puces. Quel que soit son type, HTML permet de dresser une liste très rapidement.</p> +</div> + +<table class="learn-box nostripe standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez au préalable savoir comment <a href="/fr/Apprendre/HTML/Write_a_simple_page_in_HTML">créer un document HTML simple</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Apprendre à mettre en place des listes (ordonnées et non-ordonnées) avec HTML.</td> + </tr> + </tbody> +</table> + +<h2 id="Les_listes_non-ordonnées_et_les_listes_ordonnées">Les listes non-ordonnées et les listes ordonnées</h2> + +<dl> + <dt>Les listes non-ordonnées</dt> + <dd> + <p>Comme leur nom l'indique, les listes non-ordonnées n'ont pas de notion d'ordre et on peut mélanger leurs éléments sans que cela modifie leur sens. Une liste de courses est un bon exemple de liste non-ordonnée (l'ordre dans lequel on achète les produits n'a pas grande importance) :</p> + + <p><img alt="Croustille, moutarde" src="https://mdn.mozillademos.org/files/11639/3409407112_4348b68ea4_z.jpg" style="height: 281px; width: 423px;" title="Photo par Joseph SARDIN"></p> + + <p>(Photo par <a href="https://www.flickr.com/photos/14328577@N08/">Joseph SARDIN</a>)</p> + + <p>Les listes non-ordonnées apparaissent parfois à des endroits inattendus : les barres de navigation sont par exemple des listes non-ordonnées auxquelles on a appliqué quelques règles CSS pour la mise en forme.</p> + </dd> + <dt>Les listes ordonnées</dt> + <dd> + <p>Dans ce cas, les éléments de la liste doivent être lus ou réalisés dans un ordre donné, les éléments sont donc numérotés. On retrouve souvent ces listes pour décrire des processus pas-à-pas (comme un mode d'emploi ou une recette) où chaque étape ne peut être réalisée que si l'action précédente a été traitée :</p> + <a href="https://www.flickr.com/photos/chiotsrun/4457386990/sizes/m/"><img alt="" src="https://farm3.staticflickr.com/2785/4457386990_4d30f85964_d.jpg" style="height: 344px; width: 500px;" title="© Chiot's Run"></a></dd> +</dl> + +<h2 id="Construire_des_listes_avec_HTML">Construire des listes avec HTML</h2> + +<p>Comment donc construire une liste avec HTML ? Pour commencer, il faudra répondre à une question : si on mélange les éléments de la liste, est-ce que le sens de la liste change également ?</p> + +<ul> + <li>Si oui, alors il faudra utiliser un élément {{HTMLElement('ol')}} pour créer une <strong>liste ordonnée.</strong></li> + <li>Sinon, il faudra utiliser un élément {{HTMLElement('ul')}} qui permettra de créer une <strong>liste non-ordonnée.</strong></li> +</ul> + +<h3 id="Ajouter_des_éléments_à_une_liste">Ajouter des éléments à une liste</h3> + +<p>Toute la liste sera placée dans les balises {{htmlelement("ol")}} ou {{htmlelement("ul")}}. Chacun des éléments de la liste sera placé à l'intérieur d'un élément {{htmlelement("li")}}. Voici un exemple qui contient les deux types de liste :</p> + +<pre class="brush: html"><h1>Guacamole rapide à faire</h1> + +<h2>Ingrédients</h2> +<ul> + <li>2 avocats (pelés et avec les noyaux retirés)</li> + <li>le jus d'un citron</li> + <li>¼ de concombre, coupé grossièrement</li> + <li>1 petite tomate, coupée</li> +</ul> + +<h2>Instructions</h2> +<ol> + <li>Écrasez délicatement les avocats avec une fourchette</li> + <li>Placez la purée obtenue dans un plat et arrosez avec le jus de citron</li> + <li>Mélangez pour que le jus de citron empêche la purée d'avocat de noircir</li> + <li>Mélangez la tomate et le concombre coupés</li> + <li>Gardez au frais et servir rapidement avec des tortillas</li> +</ol> +</pre> + +<p>Par défaut, le navigateur utilisera des chiffres pour les listes ordonnées et des puces (rondes) pour les listes non-ordonnées :</p> + +<p>{{EmbedLiveSample('Ajouter_des_éléments_à_une_liste','100%',350)}}</p> + +<h3 id="Comment_modifier_la_numérotation_ou_les_puces">Comment modifier la numérotation ou les puces</h3> + +<h4 id="Avec_HTML">Avec HTML</h4> + +<ul> + <li><strong>Pour commencer une liste avec un autre nombre que 1</strong>, on pourra utiliser l'attribut {{htmlattrxref('start','ol')}} de l'élément {{HTMLElement('ol')}} : <code><ol start="3"></code>.</li> + <li><strong>Pour décompter plutôt que compter </strong>(par exemple 5-4-3-2-1), on pourra utiliser l'attribut {{htmlattrxref('reversed','ol')}} de l'élément {{HTMLElement('ol')}} : <code><ol reversed></code>.</li> + <li><strong>Pour utiliser des lettres à la place des chiffres</strong>, on pourra utiliser l'attribut {{htmlattrxref('type','ol')}} de l'élément {{HTMLElement('ol')}} : <code><ol type="a"></code> (<code>type="1"</code> affichera des nombres, <code>="a"</code> pour utiliser des lettres minuscules, <code>="A"</code> pour utiliser des lettres majuscules, <code>="i"</code> pour utiliser les chiffres romains en minuscules, <code>="I"</code> pour utiliser les chiffres romains en majuscules).</li> + <li><strong>Pour changer la numérotation d'un élément donné</strong>, on pourra utiliser l'attribut {{htmlattrxref('value','li')}} de la balise {{HTMLElement('li')}} : <code><li value="5"></code> (les éléments <em>suivants</em> de la liste seront également renumérotés).</li> +</ul> + +<p>Par exemple, ici, on aura une liste qui utilise des lettres majuscules et qui commence à partir de C :</p> + +<pre class="brush: html"><ol start="3" type="A"> + <li>Je suis premier</li> + <li>Je suis deuxième</li> + <li>Je suis troisième</li> +</ol></pre> + +<p>Ce qui donne :</p> + +<p>{{EmbedLiveSample('Avec_HTML','100%',90)}}</p> + +<h4 id="Avec_CSS">Avec CSS</h4> + +<p>Les attributs HTML permettent de modifier le contenu d'une liste. Pour ajuster l'aspect cosmétique d'une liste, il faudra utiliser CSS.</p> + +<ul> + <li><strong>Pour modifier le style de puce ou le style de numérotation, </strong>on pourra utiliser la propriété CSS {{cssxref("list-style-type")}}</li> + <li><strong>Pour utiliser une image donnée comme puce,</strong> on pourra utiliser la propriété CSS {{cssxref("list-style-image")}}. Attention toutefois, les images sont plus lourdes (donc plus lentes) et moins adaptatives que le texte.</li> +</ul> + +<p>CSS peut permettre d'obtenir des effets très complexes (comme <a href="/fr/docs/Web/CSS/Compteurs_CSS">un système de comptage personnalisé</a>). Si vous souhaitez apprendre CSS, vous pouvez parcourir <a href="/fr/docs/CSS/Premiers_pas">le Guide CSS</a> et voir <a href="/fr/Apprendre/HTML/Comment/Appliquer_du_CSS_à_une_page_web">comment appliquer des règles CSS à une page web</a>.</p> + +<p>Prenons un rapide exemple. Voici une liste HTML non-ordonnée :</p> + +<pre class="brush: html"><ul> + <li>J'ai un point</li> + <li>J'ai un cercle</li> + <li>J'ai aussi un cercle</li> +</ul></pre> + +<p>Ces règles CSS permettront que la puce des éléments soit un cercle, sauf pour le premier (où ce sera un point) :</p> + +<pre class="brush: css">ul { + list-style-type: circle; +} + +li:first-child { + list-style-type: disc; +} +</pre> + +<p>Ce code donnera :</p> + +<p>{{EmbedLiveSample('Avec_CSS','100%',90)}}</p> + +<h3 id="Les_listes_imbriquées">Les listes imbriquées</h3> + +<p>On voit souvent plusieurs listes placées les unes dans les autres. Autrement dit, on peut imbriquer des listes (un élément d'une liste sera une liste entière) :</p> + +<pre class="brush: html"><ul> + <li>Un composant</li> + <li>Un processus : + <ol> + <li>Étape 1</li> + <li>Étape 2</li> + <li>Étape 3</li> + </ol> + </li> + <li>Un composant</li> +</ul> +</pre> + +<p>Cela donnera le résultat suivant :</p> + +<p>{{ EmbedLiveSample('Les_listes_imbriquées','100%',150) }}</p> + +<p>Les menus de navigation utilisent parfois des listes imbriquées. Pour étudier un exemple réel, vous pouvez <a href="/fr/docs/Outils/Inspecteur/Comment/Examiner_et_éditer_le_code_HTML">inspecter le code HTML</a> du menu MDN qui se situe en haut de cette page.</p> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li>{{HTMLElement("ul")}}</li> + <li>{{HTMLElement("ol")}}</li> + <li>{{HTMLElement("li")}}</li> + <li><a href="http://www.w3.org/TR/html4/struct/lists.html#h-10.1">Des recommandations sur comment utiliser les listes</a></li> +</ul> diff --git a/files/fr/conflicting/learn/html/introduction_to_html/html_text_fundamentals_42ad0dcdd765b60d8adda1f6293954b6/index.html b/files/fr/conflicting/learn/html/introduction_to_html/html_text_fundamentals_42ad0dcdd765b60d8adda1f6293954b6/index.html new file mode 100644 index 0000000000..668ad5c084 --- /dev/null +++ b/files/fr/conflicting/learn/html/introduction_to_html/html_text_fundamentals_42ad0dcdd765b60d8adda1f6293954b6/index.html @@ -0,0 +1,189 @@ +--- +title: Mettre l'accent sur un contenu ou indiquer qu'un texte est important +slug: >- + Apprendre/HTML/Comment/Mettre_l_accent_sur_un_contenu_ou_indiquer_qu_un_texte_est_important +tags: + - Beginner + - Composing + - Guide + - HTML + - Learn + - OpenPractices +translation_of: Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals#Emphasis_and_importance +translation_of_original: Learn/HTML/Howto/Emphasize_content_or_indicate_that_text_is_important +--- +<p class="summary">Dans cet article, nous verrons comment baliser des passages caractéristiques, selon leur importance, leur pertinence ou un changement de ton.</p> + +<table class="learn-box nostripe standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez au préalable savoir comment <a href="/en-US/Learn/HTML/Write_a_simple_page_in_HTML">créer un document HTML ismple</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Apprendre comment marquer des passages de texte contenus dans votre document qui seraient spéciaux ou particulièrement importants pour les lecteurs.</td> + </tr> + </tbody> +</table> + +<p>Les dialogues ne se résument pas uniquement à des séries de mots : le ton importe également. Dans les œuvres couchées sur le papier, ce sont la ponctuation et la mise en forme qui permettent de retranscrire ces informations. Quelle que soit l'outil utilisé, le but est d'ajouter des informations implicites.</p> + +<p>Voici un exemple simple :</p> + +<blockquote> +<p>Je suis en retard.</p> + +<p>Je suis en retard ?</p> +</blockquote> + +<p>Dans cet exemple, la première phrase exprime une connaissance (je sais que je suis en retard) alors que la seconde évoque un doute ou pose une question. On remarquera que l'ordre des mots n'a pas changé, seule la ponctuation change cette nuance. À l'oral, cela se serait traduit par un changement de ton.</p> + +<p>La mise en forme permet également d'ajouter des nuances. Voici un deuxième exemple :</p> + +<blockquote> +<p>Je suis sympa, même si parfois je suis méchant.</p> +</blockquote> + +<p>Cette phrase est plutôt neutre. Ajoutons quelque chose pour changer ça :</p> + +<blockquote> +<p>Je suis <em>sympa</em>, même si parfois je suis méchant.</p> + +<p>Je suis sympa, même si parfois je suis <em>méchant</em>.</p> +</blockquote> + +<p>Remarquez-vous le changement que cela apporte ? L'italique accentue l'adjectif « sympa » ou « méchant ». En imprimerie, l'accentuation est portée par la mise en forme (ici la mise en italique). Il faudrait plus de contexte pour saisir tout le sens de cette phrase mais la mise en forme ajoute clairement une intonation.</p> + +<p>Cet article ne porte pas sur la mise en forme du document. Ce n'est pas le rôle de HTML que de mettre en forme un document (en revanche, la tâche est toute indiquée pour {{Glossary('CSS')}} qui vous aidera à contrôler l'aspect visuel de votre page web). Ici, nous verrons comment ajouter le <em>sens</em> porté par la mise en forme. Or, ajouter du sens est <em>le</em> rôle de HTML. Une fois que le sens est présent dans le document, alors, on pourra le mettre en forme grâce à <a href="/fr/Apprendre/CSS/Howto">CSS</a>.</p> + +<p>Ici, nous évoquerons trois nuances qui peuvent être exprimées par HTML : <em>l'emphase</em>, <em>l'importance</em> et <em>la pertinence</em><em>.</em></p> + +<h2 id="L'emphase">L'emphase</h2> + +<p>L'élément {{htmlelement('em')}} (<code><em></code> pour <em>emphase</em>) permet d'exprimer une accentuation particulière sur un ou plusieurs mots (qui se serait traduite à l'oral par un changement de ton).</p> + +<pre class="brush: html">Allons-nous <em>au cinéma</em> ce soir ? +<code>Allons-nous au cinéma <em>ce soir</em></code> ? +</pre> + +<p>Par défaut, un navigateur graphique affiche le texte contenu dans un élément <code><em></code> en italique mais cette mise en forme peut être changée avec CSS. Les lecteurs d'écran utiliseront un ton différent pour lire ce texte. Pour résumer, <em><code><em></code> signifie emphase et pas italique.</em></p> + +<h2 id="L'importance">L'importance</h2> + +<p>L'élément {{htmlelement("strong")}} permet d'indiquer une importance forte (c'est en quelque sorte une emphase renforcée).</p> + +<pre class="brush: html"><code><p> + <strong>Ne pas</strong> toucher ces produits chimiques. + Ces produits chimiques sont <strong>corrosifs !</strong> +</p></code> +</pre> + +<p>Ici aussi, par défaut les navigateurs graphiques afficheront le texte contenu dans <code><strong></code> en gras. Mais là encore, <em><code><strong></code> signifie « très important » et pas « gras » !</em> La mise en forme pourra être adaptée librement avec CSS. De même, un lecteur d'écran lira le texte différemment car celui-ci est important (et non parce qu'il est affiché en gras).</p> + +<h2 id="La_pertinence">La pertinence</h2> + +<p><code><strong></code> permet d'indiquer du texte qui est important pour le contexte courant. L'élément {{htmlelement("mark")}}, en revanche, signifie que le texte est pertinent par rapport au contenu destiné au lecteur. Un exemple courant est l'utilisation des résultats liés à une recherche :</p> + +<pre class="brush: html"><p> + « ce » apparaît 3 fois dans le texte : + <mark>Ce</mark> chat a tué <mark>ce</mark> + rat et <mark>ce</mark> moineau. +</p> +</pre> + +<p>Là encore, la mise en forme appliquée peut être modifiée. Par défaut, le texte sera affiché sur un fond jaune :</p> + +<p>{{EmbedLiveSample('La_pertinence', '100%', 64)}}</p> + +<div class="note"> +<p>Attention lorsqu'on utilise <code><mark></code> pour marquer des résultats liés à une recherche. Si la recherche renvoie des correspondances partielles, cela pourrait casser les éléments <code><mark></code>. Par exemple : <code>Le chat a couru après <mark>ce</mark>s oiseaux</code>. Cela entraînera des problèmes d'accessibilité car les lecteurs d'écran ne sauront pas traiter (ou traiteront mal) les mots ainsi découpés.</p> +</div> + +<h2 id="Les_éléments_associés_à_la_sémantique">Les éléments associés à la sémantique</h2> + +<p>Si vous souhaitez afficher un texte avec une mise en forme particulière, pensez d'abord au sens que vous souhaitez communiquer. Si le sens peut être transmis par {{htmlelement('em')}}, {{htmlelement('strong')}} ou {{htmlelement("mark")}}, utilisez ces éléments (plutôt que CSS seul, ce qui serait une mauvaise pratique).</p> + +<p>Il existe d'autres cas pour lesquels on affiche habituellement le texte en italique ou en gras et qui correspondent à une sémantique particulière qui peut être transmise grâce à des éléments HTML :</p> + +<ul> + <li>{{htmlelement("cite")}} pour <a href="/fr/Apprendre/HTML/Comment/Ajouter_citations_sur_page_web">les titres d'œuvres citées</a></li> + <li>{{htmlelement("dfn")}} pour <a href="/fr/Apprendre/HTML/Comment/Définir_des_termes_avec_HTML">la première occurence d'un terme</a></li> + <li>{{htmlelement("q")}} pour <a href="/fr/Apprendre/HTML/Comment/Ajouter_citations_sur_page_web">les citations dans le texte du document</a></li> + <li>{{htmlelement("var")}} pour <a href="/fr/Apprendre/HTML/Comment/Afficher_du_code_informatique_avec_HTML">les variables mathématiques</a></li> +</ul> + +<p>HTML ne permet pas de couvrir tous les cas de figures (sinon utiliser HTML correctement serait un calvaire de perfectionnisme). En règle générale, si vous souhaitez afficher du texte de façon différente et qu'il existe un élément HTML pour transmettre ce sens : utilisez-le, sinon vous pouvez utiliser l'élément neutre {{htmlelement("span")}} en spécifiant sa sémantique avec l'attribut {{htmlattrxref("class")}} et en le mettant en forme grâce à CSS.</p> + +<p>Les éléments que nous avons évoqués jusqu'à présent (à l'exception de <code><span></code>) ont tous une sémantique claire. En revanche, cela peut être plus ambigu avec les éléments {{htmlelement("b")}}, {{htmlelement("i")}} et {{htmlelement("u")}}. Ces éléments HTML permettent d'écrire du texte en gras, italique ou de le souligner. Ils sont apparus lorsque CSS n'existait pas ou avant qu'il ne soit supporté largement. Avec HTML5, ces éléments ont vu leur sémantique précisée.</p> + +<p>Voici la règle à respecter : s'il n'existe pas d'élément approprié permettant de retranscrire précisément le sens d'un texte qui serait généralement affiché en gras, italique ou souligné, alors on pourra utiliser <code><b></code>, <code><i></code> ou <code><u></code> à la place de <code><span></code>. Attention toutefois à ne pas oublier l'accessibilité : la mise en italique n'est pas particulièrement utile pour les personnes utilisant des lecteurs d'écran ou pour les personnes qui utilisent un alphabet non latin.</p> + +<ul> + <li>{{HTMLElement('i')}} permet généralement de retranscrire du texte placé en italique : des termes d'une langue étrangère, des dénominations taxonomiques, des termes techniques, des pensées, etc.</li> + <li>{{HTMLElement('b')}} permet de retranscrire du texte généralement affiché en gras : des mots-clés, des noms de produits, etc.</li> + <li>{{HTMLElement('u')}} permet de retranscrire des noms propres, des fautes d'orthographe</li> +</ul> + +<div class="note"> +<p>Léger avertissement à propos du soulignement : <strong>les visiteurs associent fortement le soulignement avec des hyperliens.</strong> De fait, on ne soulignera généralement que les liens d'une page. <code><u></code> ne doit être utilisé que lorsque la sémantique qu'il porte est sans équivoque. Dans ces cas, CSS pourra être utilisé pour définir un motif de soulignement différent, plus approprié. L'exemple qui suit illustre comment obtenir ce résultat.</p> +</div> + +<pre class="brush: html"><!-- Des noms scientifiques --> +<p> + Le colibri à gorge rubis (<i>Archilocus colubris</i>) + est l'espèce de colibri la plus répandue en Amérique + du Nord orientale. +</p> + +<!-- Des termes étrangers --> +<p> + Le menu comportait de nombreux termes exotiques comme + <i lang="uk-latn">vatrushka</i>, <i lang="id">nasi goreng</i> + et <i lang="en">pancakes</i>. +</p> + +<!-- Une faute d'orthographe --> +<p> + Un jour, j'écrirai <u class="erreur-orthographe">mieu</u>. +</p> + +<!-- Des mots-clés mis en avant dans un mode d'emploi --> +<ol> + <li> + <b>Tranchez</b> le pain en deux tranches. + </li> + <li> + <b>Insérez</b> une tranche de tomate et + une feuille de salade entre les tranches. + </li> +</ol> +</pre> + +<div id="instructions-with-b"> +<pre class="brush: css">/* Voici des mises en forme alternatives +permettant au lecteur de repérer la différence */ + +b { + font-weight: normal; + font-variant: small-caps; +} + +.erreur-orthographe { + text-decoration: underline red wavy; +} +</pre> +</div> + +<p>{{EmbedLiveSample('Les_éléments_associés_à_la_sémantique', '100%',192) }}</p> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li>{{htmlelement("em")}}</li> + <li>{{htmlelement("strong")}}</li> + <li>{{htmlelement("mark")}}</li> + <li>{{htmlelement("b")}}</li> + <li>{{htmlelement("i")}}</li> + <li>{{htmlelement("u")}}</li> +</ul> diff --git a/files/fr/conflicting/learn/html/introduction_to_html/html_text_fundamentals_e22cde852fd55bbd8b014a4eac49a3bc/index.html b/files/fr/conflicting/learn/html/introduction_to_html/html_text_fundamentals_e22cde852fd55bbd8b014a4eac49a3bc/index.html new file mode 100644 index 0000000000..788bcc2a44 --- /dev/null +++ b/files/fr/conflicting/learn/html/introduction_to_html/html_text_fundamentals_e22cde852fd55bbd8b014a4eac49a3bc/index.html @@ -0,0 +1,95 @@ +--- +title: Mettre en place une hiérarchie de titres +slug: Apprendre/HTML/Comment/Mettre_en_place_une_hiérarchie_de_titres +tags: + - Beginner + - HTML + - Learn +translation_of: Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals +translation_of_original: Learn/HTML/Howto/Set_up_a_proper_title_hierarchy +--- +<p class="summary">Dans cet article, nous verrons comment ajouter des titres de différents niveaux à un document web afin que les lecteurs puissent identifier le contenu et trouver les réponses à leurs questions plus efficacement.</p> + +<table class="learn-box nostripe standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez au préalable savoir comment <a href="/en-US/Learn/HTML/Write_a_simple_page_in_HTML">créer un document HTML simple</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Apprendre comment utiliser des titres et les hiérarchiser dans un document web.</td> + </tr> + </tbody> +</table> + +<h2 id="Pourquoi_utiliser_des_titres">Pourquoi utiliser des titres ?</h2> + +<p>Les titres forment le squelette d'un texte sans fournir de longues explications. Prenons un exemple simple : même si ces deux textes sont en anglais, lequel semble le plus clair ?</p> + +<p><img alt="[Picture comparing a document with headings to a document without headings]" src="https://mdn.mozillademos.org/files/10717/Screenshot%20from%202015-05-05%2013:47:50.png" style="width: 100%;"></p> + +<p>Voilà une bonne partie de la réponse à la question posée avant.</p> + +<p>Comme vous pouvez le voir, un lecteur utilisera les titres et leurs niveaux pour déterminer quel contenu est présent et s'il est utile de poursuivre la lecture pour trouver le contenu recherché. Nous passons généralement <a href="http://www.nngroup.com/articles/how-long-do-users-stay-on-web-pages/">très peu de temps sur une page web</a> et consulter les titres fait partie du processus que nous déroulons pour déterminer s'il faut rester sur la page ou la quitter. Pour cette raison, il est préférable d'avoir une organisation claire pour les titres afin que le lecteur se repère facilement et continue à consulter la page.</p> + +<p>Vous faut-il plus d'arguments ? Savez-vous que certaines personnes ne lisent pas les pages web mais les écoutent grâce à des logiciels appelés {{interwiki('wikipedia',"Lecteur_d'écran","lecteurs d'écrans")}}. Ces logiciels permettent d'accéder rapidement à un contenu textuel donné. Parmi les techniques utilisées par ces logiciels, de nombreuses se basent sur les titres. Si les titres ne sont pas définis, pensez-vous que ces visiteurs prendront la peine d'écouter l'intégralité du document ?</p> + +<p>Enfin, le plan d'un document, composé des titres, est souvent utilisé par les moteurs de recherche pour déterminer la pertinence d'un article sur un sujet de recherche donné. Chaque niveau de titre (de 1 à 6) aura un « poids » différent : un titre de niveau 1 sera jugé plus pertinent qu'un titre de niveau 2 et ainsi de suite.</p> + +<h2 id="Les_titres_HTML">Les titres HTML</h2> + +<p>HTML fournit des éléments qui permettent de créer des titres dans des documents HTML : ce sont les éléments {{htmlelement('h1')}}, {{htmlelement('h2')}} et jusqu'à {{htmlelement('h6')}}.</p> + +<h3 id="Ajouter_le_titre_principal">Ajouter le titre principal</h3> + +<p>Au début du document, vous pouvez écrire le titre de plus au niveau entre des balises {{htmlelement('h1')}} :</p> + +<pre class="brush: html"><h1>Améliorez vos compétences sur le Web !</h1></pre> + +<p>Si vous considérez le document comme un arbre, le tronc sera le titre <code><h1></code>. Cela implique qu'un document ne doit avoir qu'un seul titre de niveau 1. Continuons les explications car ce sujet revient souvent dans les discussions. D'un point de vue technique, rien ne vous empêche d'utiliser plusieurs titres de niveau 1 dans vos documents. Cependant, d'un point de vue sémantique, cela serait bizarre car un titre de niveau 1 introduit un sujet totalement différent. Si vous jugez nécessaire d'avoir plusieurs titres de niveau 1 dans votre document, cela signifie peut être que le document doit être découpé en plusieurs documents dont chacun aurait un titre de niveau 1 distinct.</p> + +<p>Un autre argument en faveur d'un unique titre de niveau 1 serait l'impact sur le référencement. <a href="http://www.searchenginejournal.com/in-2014-how-important-is-an-h1-tag-for-seo/">Ce point est plus discutable</a> car les algorithmes des moteurs de recherche sont des secrets bien gardés, cela dit, certaines observations tendent à montrer que les niveaux de titres ont un impact sur le classement d'un site et que plus un niveau de titre est utilisé, plus l'impact sur le classement s'affaiblit.</p> + +<div class="note"> +<p><strong>Attention :</strong> On voit souvent les titres de niveau 1 utilisés pour mettre en avant le logo d'un site web ou sa marque. Comme ces informations ne sont pas les informations les plus structurantes ni les plus importantes, il est préférable d'éviter ce genre de détournement.</p> +</div> + +<h3 id="Ajouter_des_sous-titres">Ajouter des sous-titres</h3> + +<p>Sauf si votre document est très court, vous devrez le découper en sections. Chaque section commence avec un titre {{htmlelement("h2")}} :</p> + +<pre class="brush: html">... +<h2>Organisez la structure de votre document avec HTML</h2> +... +<h2>Ajustez le style de votre document avec CSS</h2> +...</pre> + +<p>Si besoins, vous pouvez découper vos sections en sous-sections et ainsi de suite en utilisant des éléments {{htmlelement("h3")}} jusqu'à {{htmlelement("h6")}}. Cela dit, si vous arrivez à un niveau de découpage avec {{htmlelement("h4")}} voire inférieur, cela peut signifier que votre document est trop long et qu'il serait préférable de le découper pour en faciliter la lecture.</p> + +<p>Lorsque vous créer des sections et sous-sections, il y a quelques points à prendre en compte afin d'améliorer l'expérience du lecteur :</p> + +<dl> + <dt>Gardez une hiérarchie cohérente</dt> + <dd>Autrement dit, cela signifie que vous devriez éviter de sauter des niveaux de titres (par exemple passer directement d'un niveau <code><h1></code> ou <code><h2></code> à un niveau <code><h4></code>). Vos lecteurs,<a href="https://www.youtube.com/watch?v=AmUPhEVWu_E"> notamment ceux qui utilisent des lecteurs d'écran</a>, pourraient penser que quelque chose manque à votre page.</dd> + <dt>Utilisez les niveaux de titre pour leur sémantique et non pour leur mise en forme</dt> + <dd>Le rôle de HTML est de fournir des informations sémantiques (sur le sens). La mise en forme par défaut d'un élément HTML donné n'a pas de rôle particulier et peut être modifiée avec {{Glossary("CSS")}}. Lorsqu'on s'occupe des titres, on peut utiliser <a href="/fr/docs/Web/CSS/font-size">la propriété CSS <code>font-size</code></a> afin de modifier la taille de la police utilisée.</dd> + <dt>N'utilisez pas les niveaux de titres pour représenter des sous-titres ou des slogans</dt> + <dd>Une des notions qui manque à HTML est le fait de ne pas avoir d'éléments particulier pour représenter un sous-titre ou un slogan. Certains développeurs utilisent les éléments de titre à cet effet mais cela entraîne des cassures dans la hiérarchie des titres et pose des problèmes d'accessibilité. Bien qu'il y ait quelques tentatives pour résoudre ce problème avec l'élément {{HTMLElement('hgroup')}}, il est préférable d'utiliser un élément {{htmlelement("p")}} ou {{htmlelement("span")}} avec un attribut {{htmlattrxref('class')}} donné.</dd> +</dl> + +<h2 id="Gérer_des_niveaux_de_titre_dynamiques">Gérer des niveaux de titre dynamiques</h2> + +<p>L'élément {{htmlelement("section")}} est apparu avec HTML5 pour marquer les différentes sections d'un document HTML, chacune de ces sections étant <em>a priori</em> suivie d'un titre approprié.</p> + +<p>Supposons que votre plan évolue (ce qui peut arriver si le HTML est généré de façon dynamique par le serveur) et que vous décidiez que certains <code><h3></code> devraient en fait être des <code><h2></code>. De même, si vous compilez plusieurs pages web en un e-book, cela peut être ennuyant que d'avoir à revoir tous les différents titres.</p> + +<p>Si vos <code><section></code> sont imbriquées de façon logique, HTML5 indique que chaque section peut commencer avec <code><h1></code> et que ceux-ci continueront à former un plan valide. L'idée est plutôt bonne mais souffre de quelques inconvénients : le code est moins lisible et il n'est plus possible d'appliquer une mise en forme différente pour les <code><h1></code> si ceux-ci n'ont pas la même importance.</p> + +<p>Pour plus de détails, lire l'article <a href="/fr/docs/Web/HTML/Sections_and_Outlines_of_an_HTML5_document">Sectionnement et plan d'un document HTML5</a>.</p> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTML/Element/Heading_Elements">Les éléments de titre</a></li> +</ul> diff --git a/files/fr/conflicting/learn/html/introduction_to_html/index.html b/files/fr/conflicting/learn/html/introduction_to_html/index.html new file mode 100644 index 0000000000..7e449e92e0 --- /dev/null +++ b/files/fr/conflicting/learn/html/introduction_to_html/index.html @@ -0,0 +1,258 @@ +--- +title: Les balises HTML et leur rôle +slug: Apprendre/HTML/Balises_HTML +tags: + - Beginner + - CodingScripting + - HTML +translation_of: Learn/HTML/Introduction_to_HTML +translation_of_original: Learn/HTML/HTML_tags +--- +<div class="summary"> +<p>Cet article aborde les bases de {{Glossary("HTML")}} : les balises et comment les utiliser.</p> +</div> + +<table class="learn-box nostripe standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez au préalable connaître <a href="/fr/Apprendre/page_vs_site_vs_serveur_vs_moteur_recherche">la différence entre une page web et un site web</a> et <a href="/fr/Apprendre/HTML/Comment/Créer_un_document_HTML_simple">savoir comment créer un document HTML simple</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Apprendre ce que sont les balises HTML et comment les utiliser correctement dans un document HTML.</td> + </tr> + </tbody> +</table> + +<p>{{Glossary("HTML")}} (<em>HyperText Markup Language</em>) est un langage descriptif utilisé pour structurer le contenu d'une page (ses textes, ses images, ses liens, etc.).</p> + +<p>Un document HTML est un fichier texte qui contient des {{glossary("balise","balises")}} (ou <em>tag</em> en anglais). Ces balises doivent être utilisées d'une certaine façon pour décrire correctement la structure du document. Les balises indiquent au navigateur comment afficher le document, certaines balises permettent d'intégrer différents médias comme des images, des vidéos ou des musiques parmi le texte de la page.</p> + +<p>Le navigateur n'affiche pas les balises telles quelles. Lorsqu'un utilisateur visite une page web, son navigateur <em>analyse</em> (ou <em>parse</em> en anglais) le document et l'<em>interprète</em> afin d'afficher la page web correctement. Par exemple, si le document contient une balise {{HTMLElement("img")}}, le navigateur chargera l'image associée et affichera l'image <em>à la place</em> de la balise HTML.</p> + +<h3 id="La_syntaxe_des_balises">La syntaxe des balises</h3> + +<p>Les balises HTML respectent une syntaxe simple et stricte :</p> + +<ul> + <li><strong>Un chevron ouvrant (<)</strong></li> + <li><strong>Le nom de la balise</strong></li> + <li><strong>Des attributs </strong>(optionnels). Un espace, suivi du nom de l'attribut, d'un signe égal (=) et d'une valeur entre doubles quotes ("").</li> + <li><strong>Un chevron fermant (>)</strong></li> +</ul> + +<p>Voici quelques exemples :</p> + +<ul> + <li><code><article></code></li> + <li><code><meta charset="utf-8"></code></li> + <li><code><img src="monImage.png" alt=""></code></li> +</ul> + +<h3 id="Les_éléments_HTML">Les éléments HTML</h3> + +<p>Généralement, les balises fonctionnent par paires. La première balise est la balise ouvrante et la seconde est la balise fermante. Une balise fermante <em>doit</em> avoir le même nom que la balise ouvrante correspondante. De plus, une balise fermante doit contenir une barre oblique entre le chevron initial et le nom de la balise. Ainsi, si <code><p></code> est une balise ouvrante, <code></p></code> sera la balise fermante correspondante.</p> + +<p>Un <strong>élément HTML</strong> se compose d'une balise ouvrante, d'un contenu textuel et d'une balise fermante :</p> + +<p><img alt="The basic syntax of HTML tags" src="https://mdn.mozillademos.org/files/8573/anatomy-of-an-html-element.png" style="height: 181px; width: 609px;"></p> + +<p>La rigidité des conventions pour la fermeture des balises est utile afin de pouvoir imbriquer différents éléments les uns dans les autres :</p> + +<pre class="brush: html"><p> + Voici le début du paragraphe + <strong> + ici un texte important au sein du paragraphe + </strong> + et là, la fin du paragraphe. +</p> +</pre> + +<div class="note"> +<p><strong>Bonne pratique :</strong> Si vous omettez les balises fermantes, le navigateur aura les coudées franches pour déterminer comment clôturer un élément. Ces règles sont bien définies mais souvent contre-intuitives (donc difficiles à deviner). Afin de vous épargner des pertes de temps à venir, préférez fermer les éléments.</p> +</div> + +<h3 id="Les_balises_HTML">Les balises HTML</h3> + +<p>HTML contient environ <a href="/fr/docs/Web/HTML/Element">140 balises</a> qui fournissent au navigateur des indications sur le sens d'un élément, son interprétation ou son affichage. Entre autres choses, les balises permettent de fournir des méta-données pour le document HTML, de mettre en avant certaines phrases, d'ajouter des fichiers multimédias ou de gérer des formulaires en ligne.</p> + +<p>Voici quelques-unes des balises les plus fréquemment utilisées :</p> + +<dl> + <dt>{{HTMLElement("h1")}}, {{HTMLElement("h2")}}, {{HTMLElement("h3")}}, {{HTMLElement("h4")}}, {{HTMLElement("h5")}}, {{HTMLElement("h6")}}</dt> + <dd>Ces balises permetttent de définir des titres de différents niveaux : <code>h1</code> pour les grands titres et <code>h6</code> pour les titres des sections très spécifiques.</dd> + <dt>{{HTMLElement("p")}}</dt> + <dd>La balise utilisée pour créer des paragraphes. Ces paragraphes sont généralement (automatiquement) séparés par des sauts de ligne.</dd> + <dt>{{HTMLElement("a")}}</dt> + <dd>Cette balise est utilisée afin de créer des liens vers des ressources externes : une autre page web, un e-mail, une image, une autre section du document, etc. Les balises {{HTMLElement("a")}} contiennent le texte qui sera utilisé pour le lien, l'attribut {{htmlattrxref("href","a")}} de cet élément est utilisé pour définir l'{{glossary("URL")}} cible : <code><a href="url_cible">du texte qui sera lu par l'utilisateur</a></code>.</dd> + <dt>{{HTMLElement("img")}}</dt> + <dd>Cette balise permet d'intégrer une image dans un document HTML. Voici un exemple d'utilisation : <code><img src="url/vers/mon/image.png" alt="Une description"></code></dd> +</dl> + +<dl> + <dt>{{HTMLElement("div")}} et {{HTMLElement("span")}}</dt> + <dd>Ces balises n'ont pas de signification particulière, elles permettent simplement de séparer des sections d'un document. La plupart du temps, ces balises sont utilisées pour la mise en forme et le script (dont nous discuterons plus tard).</dd> + <dt>{{HTMLElement("ul")}}, {{HTMLElement("ol")}} et {{HTMLElement("li")}}</dt> + <dd>Ces balises sont utilisées pour créer des listes. <code><ul></code> permet de définir une liste non-ordonnée et <code><ol></code> de définir une liste ordonnée. Pour chacune de ces listes, ce sera la balise <code><li></code> qui permettra de définir un élément de la liste. Voici un exemple avec <code><ul></code> :</dd> +</dl> + +<pre class="brush: html"> <ul> + <li>Café</li> + <li>Thé</li> + <li>Lait</li> +</ul></pre> + +<p>N'hésitez pas à expérimenter avec ces balises. Dans les articles suivants, nous verrons comment intégrer des fichiers multimédias, des formulaires, des tableaux, etc. Dans tous les cas, vous pouvez faire vos propres tests avec <a href="/fr/docs/Web/HTML/Element">n'importe quelle balise HTML</a>. Assurez-vous de bien choisir la bonne balise pour ce que vous souhaitez faire : la sémantique des éléments HTML est très importante, notamment pour les moteurs de recherches qui analysent et classent votre site.</p> + +<h2 id="Pédagogie_active">Pédagogie active</h2> + +<p><em>Cet article ne contient pas encore de matériau interactif. <a href="/fr/docs/MDN/Débuter_sur_MDN">N'hésitez pas à contribuer</a>.</em></p> + +<h2 id="Aller_plus_loin">Aller plus loin</h2> + +<p>Pour l'instant, nous avons vu quelques règles simples concernant les éléments et les balises HTML. Mais c'est bien connu, chaque règle a ses exceptions.</p> + +<h3 id="Les_balises_«_auto-fermantes_»_(ou_balises_vides)">Les balises « auto-fermantes » (ou balises vides)</h3> + +<p>Nous avons vu précédemment qu'un élément HTML était composé de texte entre deux balises. Cependant, certaines balises ne contiennent pas de texte. L'exemple le plus simple est {{HTMLElement("img")}}. Le navigateur remplace la balise <code><img></code> avec l'image indiquée, ignorant le texte de l'élément. Pour cette raison, <code><img></code> n'a pas de balise fermante.</p> + +<pre class="brush: html">Here some text before an image element + <img src="myImage.png" alt=""> +Here some text after an image element +</pre> + +<div class="note"> +<p><strong>Note :</strong> Attention à ne pas mélanger les éléments et les balises. Parfois, une balise seule permet de définir un élément mais la plupart du temps, les balises fonctionnent par paires.</p> +</div> + +<h3 id="Les_éléments_spéciaux">Les éléments spéciaux</h3> + +<p>En HTML, il existe deux éléments spéciaux qui n'ont pas de balise. Ces éléments sont essentiels pour tout document HTML.</p> + +<h4 id="Le_doctype">Le <em>doctype</em></h4> + +<p>Le <em>doctype</em> (pour « type de document ») est une déclaration formelle, placée au tout début d'un document HTML. Elle indique que le document est écrit avec du HTML standard. Le doctype se présente de cette façon :</p> + +<pre class="brush: html"><!DOCTYPE html></pre> + +<p>Si vous ne commencez pas votre document par <code><!DOCTYPE html></code>, les navigateurs afficheront votre document en <a href="https://developer.mozilla.org/fr/docs/Mode_quirks_de_Mozilla"><em>mode quirks</em></a>. Le mode <em>quirks</em> est le mode utilisé par le navigateur pour afficher les documents anciens ou malformés, écrits dans les années 1990 lorsque HTML était peu (voire pas du tout) standardisé et que chaque navigateur gérait HTML à sa façon.</p> + +<h4 id="Les_commentaires">Les commentaires</h4> + +<p>Les commentaires sont des éléments très particuliers. Ce sont des notes que vous pouvez utiliser pour annoter votre code HTML . Le navigateur n'affichera pas ces commentaires dans la page web (cependant, le code source peut être lu par n'importe qui et les commentaires seront donc publics comme le reste de la page).</p> + +<p>En HTML, les commentaires sont écrits avec du texte contenu entre <code><!--</code> et <code>--></code></p> + +<pre class="brush: html"><!-- Ceci est un commentaire. Il ne sera pas affiché dans le navigateur.--> + +Ce texte s'affichera dans le navigateur. +</pre> + +<h3 id="Structure_d'un_document_HTML">Structure d'un document HTML</h3> + +<p>La structure de base d'un document HTML est définie avec un ensemble de balises spéciales. Les éléments définis dans ces balises ne doivent pas apparaître plus d'une fois dans le document (excepté pour l'élément {{HTMLElement("title")}} ). Le navigateur gèrera les cas où ces éléments ne sont pas fournis (ce qui n'est pas conseillé).</p> + +<dl> + <dt>{{HTMLElement("html")}}</dt> + <dd>Cet élément définit la <em>racine</em> du document. Chaque document HTML ne contient qu'une <em>racine</em>. Tous les autres éléments doivent être placés dans cet élément.</dd> + <dt>{{HTMLElement("head")}}</dt> + <dd>Cet élément définit la <em>tête</em> du document. Le navigateur n'affichera pas cet élément qui ne contient que des méta-données, dont le titre et des informations descriptives. Les navigateurs pourront utiliser ces méta-données pour améliorer l'ergonomie de la page (nous le verrons par la suite).</dd> + <dt>{{HTMLElement("body")}}</dt> + <dd>Cet élément définit le <em>corps</em> du document. Il n'y a qu'un seul élément <code>body</code> dans un document HTML et celui-ci est toujours placé après la tête. L'utilisateur verra tout ce qui est placé dans cet élément.</dd> + <dt>{{HTMLElement("title")}}</dt> + <dd>Cet élément définit le <em>titre</em> d'un document. Le <em>titre</em> est le seul élément HTML obligatoire et il est placé dans la tête. En effet, le titre est une des méta-données utilisée par le navigateur (il est utilisé pour le titre de la fenêtre, le titre de l'onglet et aussi dans les résultats d'un moteur de recherche).</dd> +</dl> + +<h4 id="Formel_ou_valide">Formel ou valide ?</h4> + +<p>Voici le document HTML formel le plus simple qu'on puisse écrire :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> + <head> + <title>Un document HTML formel</title> + </head> + <body> + <!-- Du contenu pour l'utilisateur ici --> + </body> +</html> +</pre> + +<p>Si on retire les différentes balises optionnelles, on obtient alors le document HTML <em>valide</em> le plus simple qui puisse être écrit :</p> + +<pre class="brush: html"><!DOCTYPE html> +<title>Et voilà un tout petit document HTML</title> +</pre> + +<div class="note"> +<p><strong>Bonne pratique :</strong> Nous vous recommandons d'utiliser la structure formelle. Si vous ne séparez pas clairement le contenu de <code><head></code> du contenu de <code><body></code>, il sera plus facile de commettre des erreurs qui entraîneront un comportement étrange du navigateur.</p> +</div> + +<h3 id="Les_éléments_qui_se_chevauchent">Les éléments qui se chevauchent</h3> + +<p>Pour finir notre aperçu sur les éléments HTML, précisons que les éléments peuvent être <em>imbriqués</em> mais ne peuvent pas se <em>chevaucher.</em></p> + +<p>Comment faire se chevaucher des éléments ? Voici un exemple :</p> + +<pre class="brush: html"><p> + le début de mon paragraphe + <strong> + du texte important +</p> +<p> + un deuxième paragraphe + </strong> + et l'élément strong a été bouclé + juste avant +</p> +</pre> + +<p>Dans l'exemple ci-dessus, l'élément <code>strong</code> chevauche ceux des paragraphes. Ceci est une erreur (qui n'est pas autorisée par HTML). Il faut plutôt écrire :</p> + +<pre class="brush: html"><p> + mon paragraphe commence ici + <strong> + du texte important + </strong> +</p> +<p> + <strong> + un deuxième paragraphe + </strong> + dont le début était important aussi +</p> +</pre> + +<p>Dans des cas simples comme celui-ci, le navigateur pourra deviner ce qui était voulu mais généralement de telles erreurs pourront avoir des répercussions importantes (par exemple avec {{Glossary("CSS")}} ou {{Glossary("JavaScript")}} que nous verrons bientôt). Par exemple, si nous avions utilisé une balise {{HTMLElement("div")}} à la place des balises {{HTMLElement("p")}} et {{HTMLElement("strong")}} :</p> + +<pre class="brush: html"><div> + le début de mon paragraphe + <div> + du texte important + </div> + <div> + un deuxième paragraphe + </div> + la fin du paragraphe +</div> +</pre> + +<p>Comment savoir si les éléments se chevauchent ou non ? C'est impossible car il n'y a plus de chevauchement mais une imbrication d'éléments <code>div</code> ! Attention donc si vous souhaitez maîtriser le comportement de vos futurs documents HTML.</p> + +<h3 id="Vérifier_le_code_HTML">Vérifier le code HTML</h3> + +<p>Une bonne pratique consiste à valider son code pour s'assurer qu'il est correct. Le meilleur outil pour cela est <a href="http://validator.w3.org/" rel="external">le validateur HTML du W3C</a>. C'est un outil en ligne qui analyse votre document HTML et vous indique si celui-ci respecte les spécifications HTML. Si le document est invalide, le validateur fournira des indications quant aux erreurs qu'il a trouvées.</p> + +<div class="note"> +<p><strong>Note :</strong> Étant donné la méthode utilisée par le validateur, il est préférable de se concentrer sur la première erreur relevée dans l'analyse. En effet, une seule erreur peut en déclencher d'autres en cascades. Si le résultat de l'analyse comporte une myriade d'erreurs, commencez par résoudre la première, cela permettra éventuellement de résoudre des erreurs suivantes.</p> +</div> + +<h2 id="Prochaines_étapes">Prochaines étapes</h2> + +<p>Grâce aux notions abordées dans cet article, vous devriez être en mesure d'écrire votre premier document HTML complet et d'obtenir une première version d'un site web fonctionnel.</p> + +<ul> + <li>Pour que cette page soit (plus) belle, vous pouvez lire <a href="/en-US/docs/Learn/CSS/CSS_properties">l'article sur les propriétés CSS et comment les utiliser</a>.</li> + <li>Pour savoir comment publier votre page web, vous pouvez lire <a href="/en-US/docs/Learn/Upload_files_to_a_web_server">comment transférer ses fichiers vers un serveur web</a>.</li> +</ul> diff --git a/files/fr/conflicting/learn/html/multimedia_and_embedding/images_in_html/index.html b/files/fr/conflicting/learn/html/multimedia_and_embedding/images_in_html/index.html new file mode 100644 index 0000000000..36c8d1cfbb --- /dev/null +++ b/files/fr/conflicting/learn/html/multimedia_and_embedding/images_in_html/index.html @@ -0,0 +1,125 @@ +--- +title: Ajouter des images à une page web +slug: Apprendre/HTML/Comment/Ajouter_des_images_à_une_page_web +tags: + - Beginner + - Composing + - HTML + - NeedsActiveLearning + - OpenPractices +translation_of: >- + Learn/HTML/Multimedia_and_embedding/Images_in_HTML#How_do_we_put_an_image_on_a_webpage +translation_of_original: Learn/HTML/Howto/Add_images_to_a_webpage +--- +<p class="summary">Les images permettent de faire passer des messages plus simplement et plus directement. Elles attirent l'œil du visiteur lorsqu'il consulte le site. Dans cet articles, nous allons voir comment ajouter, simplement, des images à une page web.</p> + +<table class="learn-box standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez vous être familiarisé-e avec <a href="/fr/Apprendre/HTML/Write_a_simple_page_in_HTML">la création de documents HTML simples</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Apprendre les méthodes simples qui permettent d'ajouter une image dans un document HTML.</td> + </tr> + </tbody> +</table> + +<div class="note"> +<p>Cet article illustre uniquement comment insérer une image statique. Attention à la taille des images que vous utilisez, elles doivent rester légères pour être efficacement affichées sur les appareils des personnes dont la connexion est lente ou dont les écrans sont petits. Si vous souhaitez adapter votre contenu en fonction de la taille de l'écran et notamment pour les grands écrans,<a href="/en-US/Learn/HTML/Howto/Add_responsive_image_to_a_webpage"> l'article sur les images adaptatives (responsive)</a> pourra vous intéresser.</p> +</div> + +<h2 id="Ce_dont_vous_avez_besoin">Ce dont vous avez besoin</h2> + +<p>Vous allez écrire un élément {{htmlelement("img")}}, mais pour remplir ses attributs correctement, il faut les informations correspondantes :</p> + +<ul> + <li>L'{{glossary("URL")}} (absolue ou relative) de l'image</li> + <li>Un équivalent textuel pour toute fonctionnalité ou information utile contenue dans l'image</li> + <li>La hauteur et la largeur qu'on souhaite donner à l'image dans la page (ce n'est pas <em>obligatoire</em> mais cela permet d'accélerer le rendu)</li> +</ul> + +<p>Une fois ces informations récoltées, vous pouvez écrire un élément <code><img></code> dans le code de votre page. <code><img></code> est un {{glossary("élément vide")}} et il n'y a donc pas de balise fermante <code></img></code>, il suffit uniquement de placer une barre oblique (<em>slash</em>) avant le chevron fermant de la balise : <code><img ... /></code>. Si votre image fournit une information ou une fonctionnalité, votre code devrait ressembler à :</p> + +<pre class="brush: html"><img + src="images/graphique-camembert.png" + alt="[ABC Tech posssède 75% de part de marché et XYZ 25%]" + height="300px" + width="300px" +/> +</pre> + +<p>Si l'image est strictement décorative ou que le contenu associé est déjà fourni par le texte de la page, l'attribut <code>alt</code> peut être laissé blanc :</p> + +<pre class="brush: html"><img src="images/licorne.png" alt="" /> +</pre> + +<div class="warning"> +<p><strong>Attention !</strong> La plupart des images sont couvertes par le droit d'auteur. <strong>Vous ne devez pas</strong> afficher une image sur votre page web sauf si</p> + +<ol> + <li>Vous possédez l'image, ou</li> + <li>Si vous avez reçu la permission écrite, explicite du propriétaire de l'image, ou</li> + <li>Si vous disposez de preuves comme quoi l'image appartient au domaine public</li> +</ol> + +<p>De plus, il ne faut <strong>jamais</strong> faire point l'attribut <code>src</code> vers une image hébergée sur le site de quelqu'un d'autre. Cela s'appelle du <em>"hotlinking"</em> : cela gaspille des ressources vers le site d'origine, ralentit votre page et vous empêche d'être sûr du contenu de votre page (l'image peut être remplacée à tout moment). En bref, c'est totalement immoral.</p> +</div> + +<p class="note">Il est possible de transformer une image en lien en imbriquant un élément {{htmlelement("img")}} dans un élément {{htmlelement("a")}}. Dans ce cas, il est préférable de s'assurer que l'image est plus grande qu'un carré de 45px sur 45 px (sinon les utilisateurs auront du mal à cliquer/appuyer dessus). Pour plus d'informations à ce sujet, <a href="/fr/Apprendre/HTML/Howto/Create_a_hyperlink">voir notre tutoriel sur comment ajouter des hyperliens.</a></p> + +<p>Dans la suite de cet article, nous allons nous intéresser plus en détails à ce qui doit être utilisé pour les attributs <code>height</code>/<code>width</code>, <code>src</code>, et <code>alt</code>.</p> + +<h2 id="height_et_width"><code>height</code> et <code>width</code></h2> + +<p><code>height</code> et <code>width</code> ne doivent pas être utilisés pour redimensionner les images dans le navigateurs. Si vous utilisez ces attributs, les valeurs doivent correspondre à la taille réelle, exprimée en pixels, de l'image (votre éditeur d'image favori pourra vous fournir cette information si besoin). Si vous devez redimensionner l'image, utilisez un logiciel d'édition adapté.</p> + +<p>Si vous fournissez de mauvaises valeurs pour la hauteur et la largeur, l'image semblera déformée. Si la hauteur et la largeur sont trop grandes, l'image aura l'air pixélisée. Si elles sont trop petites, vous gaspillerez de la bande passante et du temps de calcul en chargeant une image plus grande que nécessaire.</p> + +<h2 id="src"><code>src</code></h2> + +<p>Vous pourriez fournir une {{glossary("URL")}} complète, composée d'un chemin <em>absolu</em> et d'un nom de fichier (par exemple <code>https://exemple.com/images/licorne.png</code>) mais cela n'a pas grand intérêt car il y a de très grandes chances que votre image se situe sur le même {{glossary("nom de domaine","domaine")}} que votre page web (encore une fois, le <em>hotlinking</em> est inacceptable).</p> + +<p>Si vous ne fournissez qu'un nom de fichier, le navigateur consultera le même dossier que celui du document HTML affiché. Si l'image n'est pas à cet emplacement, le navigateur abandonnera le chargement de l'image.</p> + +<p>La plupart du temps, vous aurez à utiliser un chemin <em>relatif </em>suivi d'un nom de fichier. C'est-à-dire qu'on écrit le chemin du fichier relativement à partir de l'endroit où la page est située. Pour ce chemin, on pourra utiliser deux points pour remonter d'un niveau de dossier (<code>../</code>) ou utiliser un seul point (<code>./</code>) pour faire référence au répertoire courant.</p> + +<p>Si, par exemple, la page web courante est <code>https://exemple.com/animaux/mythique.html</code> et que l'image se situe à <code>https://exemple.com/images/licorne.png</code>, vous pourrez écrire ce chemin relatif : <code>src="../images/licorne.png</code><code>"</code>.</p> + +<div class="note"> +<p>À des fins de référencement ({{glossary("SEO")}}), il est préférable de donner un nom descriptif pour le fichier (<code>licorne.png</code> sera mieux que <code>img835.png</code>). Google recommande également que l'ensemble des images soient placées dans un répertoire <code>images</code>.</p> +</div> + +<h2 id="alt"><code>alt</code></h2> + +<p>Il existe différents scénarios selon lesquels les visiteurs de votre site ne pourront profiter des images :</p> + +<ul> + <li>le fichier image est invalide ou le navigateur ne supporte pas ce type d'image</li> + <li>le chemin ou le nom de fichier fourni pour l'image est incorrect</li> + <li>les visiteurs utilisent des logiciels qui lisent l'écran</li> + <li>les visiteurs ont désactivé le chargement des images afin de réduire le volume de données transférées (point notamment valable pour les téléphones)</li> +</ul> + +<p>Autrement dit : les images ne doivent pas être primordiales pour votre site et le contenu textuel de celui-ci doit suffire entièrement.</p> + +<p>Si vous insérez des images dans votre site, vous devez utiliser un attribut <code>alt</code>. Sinon, le navigateur utilisera un motif neutre et inutile quand l'image ne pourra être affichée. Que faut-il donc écrire dans l'attribut <code>alt</code> ? Cela dépend avant tout du <em>rôle</em> de l'image dans la page (en d'autres termes : que perd-t-on comme information si l'image ne s'affiche pas).</p> + +<ul> + <li><strong>Décoration.</strong> Si l'image n'est utilisée que pour décorer, un attribut <code>alt</code> vide suffira (<code>alt=""</code>). Pour être tout à fait précis, les images décoratives ne devraient pas faire partie du code HTML mais des fichiers {{glossary("CSS")}} qui peuvent être utilisés pour gérer tout ce qui a trait à la présentation visuelle. Pour plus d'informations sur comment ajouter des images avec CSS, voir les pages sur {{cssxref('content')}} ou {{cssxref("background-image")}}.</li> + <li><strong>Contenu.</strong> Si votre image fournit des informations conséquentes, fournissez les mêmes informations grâce à un texte <em>bref</em> pour l'attribut <code>alt</code>. Mieux encore, fournissez l'information sous forme de texte dans la page web (auquel cas, il n'est pas nécessaire de réécrire l'information dans le texte utilisé pour <code>alt</code>).</li> + <li><strong>Lien.</strong> Si vous placez une image dans une balise {{htmlelement("a")}}, vous devez fournir <a href="/fr/Apprendre/HTML/Howto/Create_a_hyperlink#Writing_accessible_link_text">un texte alternatif pour le lien</a>. À vous de choisir si vous utilisez l'élément <code><a></code> ou l'attribut <code>alt</code> de l'image pour le faire.</li> + <li><strong>Texte.</strong> Vous ne devriez pas utiliser d'images qui contiennent du texte ! (si vous voulez réaliser des effets de style sur un texte, CSS est là pour ça. Dans le cas où vous devez le faire malgré tout, le texte doit être fourni dans l'attribut <code>alt</code>.</li> +</ul> + +<p>Le point-clé est de s'assurer que toutes les informations nécessaires sont contenues dans le texte de la page. Il ne faut pas qu'un visiteur qui ne voit pas les images réalise que quelque chose lui manque. Lors de l'écriture de votre page, vous pouvez tester en désactivant les images. Vous verrez par exemple que les expressions comme « une image de » ou « un logo de » sont assez peu utiles pour les textes alternatifs.</p> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li>L'élément {{htmlelement("img")}}</li> + <li><a href="/fr/docs/Apprendre/HTML/Comment/Ajouter_des_images_adaptatives_%C3%A0_une_page_web">Comment ajouter une image adaptative (<em>responsive</em>) à une page web</a></li> + <li><a href="/fr/Apprendre/HTML/Howto/Add_vector_image_to_a_webpage">Comment ajouter une image vectorielle à une page web</a></li> + <li><a href="/fr/Apprendre/HTML/Comment/Ajouter_carte_zones_cliquables_sur_image">Comment ajouter une carte de zones cliquables sur une image</a></li> +</ul> diff --git a/files/fr/conflicting/learn/html/multimedia_and_embedding/images_in_html_2c0377f7605f693cad465c2b4839addc/index.html b/files/fr/conflicting/learn/html/multimedia_and_embedding/images_in_html_2c0377f7605f693cad465c2b4839addc/index.html new file mode 100644 index 0000000000..ad32d4ea26 --- /dev/null +++ b/files/fr/conflicting/learn/html/multimedia_and_embedding/images_in_html_2c0377f7605f693cad465c2b4839addc/index.html @@ -0,0 +1,73 @@ +--- +title: Annoter des images et graphiques +slug: Apprendre/HTML/Comment/Annoter_des_images_et_graphiques +tags: + - Accessibility + - Beginner + - Guide + - HTML + - Learn +translation_of: >- + Learn/HTML/Multimedia_and_embedding/Images_in_HTML#Annotating_images_with_figures_and_figure_captions +translation_of_original: Learn/HTML/Howto/Annotate_images_and_graphics +--- +<div class="summary"> +<p>HTML fournit une méthode simple pour ajouter des figures et leurs légendes.</p> +</div> + +<table class="learn-box nostripe standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez au préalable savoir comment <a href="/fr/Apprendre/HTML/Write_a_simple_page_in_HTML">créer un document HTML simple</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Apprendre comment ajouter des figures à une page web, accompagnées de leurs légendes.</td> + </tr> + </tbody> +</table> + +<h2 id="Qu'est-ce_qu'une_figure">Qu'est-ce qu'une figure ?</h2> + +<p>Une figure est une unité de contenu indépendante :</p> + +<ul> + <li>qui exprime un message de façon claire et concise</li> + <li>qui pourrait être placée à différents endroits dans la structure linéaire de la page</li> + <li>qui fournit des informations essentielles pour appuyer le sens du texte principal</li> +</ul> + +<p>Si vous pensez qu'une légende doit être ajoutée à un contenu, c'est qu'il s'agit probablement d'une figure. Voici quelques exemples : des images, des fragments de code, des éléments audio ou vidéo, des équations, des tableaux, des diagrammes.</p> + +<p>Pour symboliser des figures, HTML fournit l'élément {{htmlelement("figure")}} :</p> + +<pre class="brush: html"><figure> + <img alt="MDN" src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png"> +</figure> +</pre> + +<h2 id="Ajouter_une_légende">Ajouter une légende</h2> + +<p>Pour ajouter une légende, il suffit de la placer dans un élément {{htmlelement("figcaption")}}, lui-même placé au sein de l'élément <code><figure></code> à côté d'une des deux balises <code><figure></code> :</p> + +<pre class="brush: html"><figure> + <img alt="" src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png"> + <figcaption>Le logo de MDN en 2014</figcaption> +</figure> +</pre> + +<p>{{htmlelement("figcaption")}} indique au navigateur et aux technologies d'assistance (telles que les lecteurs d'écran) que la légende décrit le contenu de l'élément {{htmlelement("figure")}}.</p> + +<div class="note"> +<p>Du point de vue de l'accessibilité, les légendes et les textes de l'attribut {{htmlattrxref('alt','img')}} ont deux rôles différents. Les légendes peuvent être utilisées par l'ensemble des visiteurs, qu'ils voient l'image ou non alors que le texte {{htmlattrxref('alt','img')}} n'est utilisé que lorsque l'image est absente.</p> + +<p>Pour cette raison, une légende et le texte <code>alt</code> ne devraient pas être identiques car les deux textes apparaissent lorsque l'image n'apparaît pas. Vous pouvez tester ce point en désactivant les images dans votre navigateur.</p> +</div> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li>{{htmlelement("figure")}}</li> + <li>{{htmlelement("figcaption")}}</li> +</ul> diff --git a/files/fr/conflicting/learn/html/multimedia_and_embedding/other_embedding_technologies/index.html b/files/fr/conflicting/learn/html/multimedia_and_embedding/other_embedding_technologies/index.html new file mode 100644 index 0000000000..fcbe0b40c9 --- /dev/null +++ b/files/fr/conflicting/learn/html/multimedia_and_embedding/other_embedding_technologies/index.html @@ -0,0 +1,154 @@ +--- +title: Ajouter du contenu Flash dans une page web +slug: Apprendre/HTML/Comment/Ajouter_contenu_Flash_dans_page_web +tags: + - Accessibility + - Advanced + - Flash + - Guide + - HTML +translation_of: >- + Learn/HTML/Multimedia_and_embedding/Other_embedding_technologies#The_%3Cembed%3E_and_%3Cobject%3E_elements +translation_of_original: Learn/HTML/Howto/Add_Flash_content_within_a_webpage +--- +<div class="summary"> +<p>Cet article illustre pourquoi il est nécessaire que le contenu d'une page web soit accessible sans plugin. Si vous avez besoin de tels plugins (pour un cas bien spécifique ou pour des raisons historiques), nous illustrerons également un cas expliquant comment intégrer du contenu de cette façon.</p> +</div> + +<table class="learn-box nostripe standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devez savoir <a href="/fr/Apprendre/HTML/Write_a_simple_page_in_HTML">comment créer un document HTML basique</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Cet article aborde les méthodes pour insérer du contenu, dépendant d'extensions tierces, dans une page web.</td> + </tr> + </tbody> +</table> + +<div class="warning"> +<p><strong>Résumé :</strong> Des plugins comme Flash représentent une technologie passée, notamment sur les appareils mobiles où ils ne sont pas disponibles. Les navigateurs destinés aux ordinateurs de bureau<a href="http://arstechnica.com/information-technology/2015/04/chrome-starts-pushing-java-off-the-web-by-disabling-plugins/"> vont également abandonner leur support</a>.</p> +</div> + +<h2 id="Tourner_son_clavier_sept_fois_sur_son_bureau_avant_de_dépendre_de_plugins_tiers">Tourner son clavier sept fois sur son bureau avant de dépendre de plugins tiers</h2> + +<p>Un <a href="/fr/Add-ons/Plugins"><strong>plugin</strong></a> est un logiciel qui permet d'accéder à un contenu que le navigateur ne peut pas lire/décoder nativement. Il était une fois, les plugins étaient indispensables sur le Web. Il y a quelques années, installer Adobe Flash Player était un passage obligé pour regarder un film en ligne. À cette époque, on avait également de (trop) nombreuses alertes pour mettre à jour Flash Player ou Java Runtime Environment.</p> + +<p>Depuis, les technologies web ont grandi et aquis une certaine maturité et une certaine robustesse. Pour la plupart des application, il est donc temps d'arrêter de dépendre de ces plugins et de tirer parti des technologies web. Cela permettra :</p> + +<ul> + <li><strong>D'élargir votre audience à toutes les personnes qui ont un navigateur. </strong>Tout le monde a un navigateur, les plugins sont beaucoup plus rare, notamment pour les utilisateurs mobiles. Le Web était devenu largement utilisable sans plugins, les gens iront sans aucun doute sur un autre site web concurrent plutôt que d'installer un plugin supplémentaire.</li> + <li><strong>De vous épargner <a href="http://webaim.org/techniques/flash/">les maux de tête liés à l'accessibilité</a> et aux plugins comme Flash ou les autres.</strong></li> + <li><strong>De rester à l'abri de failles de sécurités répétées. </strong>Il est <a href="http://www.cvedetails.com/product/6761/Adobe-Flash-Player.html?vendor_id=53">de notoriété publique qu'Adobe Flash est peu sécurisé</a> et ce malgré les nombreux correctifs apportés au cours du temps. En 2015, Alex Stamos, le responsable de la sécurité informatique de Facebook a même demandé à Adobe <a href="http://www.theverge.com/2015/7/13/8948459/adobe-flash-insecure-says-facebook-cso">d'arrêter le développement de Flash.</a></li> +</ul> + +<p>Que faire ? Si vous avez besoin d'une certaine intéractivité sur votre page, {{glossary("JavaScript")}} vous permettra sans aucun doute d'accomplir ce dont vous avez besoin, sans avoir à utiliser d'applets Java ou de composants ActiveX/BHO. Plutôt que d'utiliser Adobe Flash, vous pouvez utiliser <a href="/fr/Apprendre/HTML/Howto/Add_audio_or_video_content_to_a_webpage">la vidéo HTML5</a> pour les cas où vous avez besoin de médias, <a href="/fr/docs/Learn/HTML/Howto/Add_vector_image_to_a_webpage">SVG</a> pour les graphiques vectoriels et <a href="/fr/docs/Web/API/Canvas_API/Tutorial">Canvas</a> pour réaliser des images et animations complexes. <a href="https://plus.google.com/+PeterElst/posts/P5t4pFhptvp">Plusieurs années auparavant, Peter Elst écrivait déjà</a> qu'Adobe Flash était rarement le meilleur outil pour développer sur le Web, notamment pour les jeux et les applications d'entreprises. En ce qui concerne ActiveX, même le navigateur de Microsoft, {{glossary("Microsoft Edge","Edge")}}, ne le supporte plus.</p> + +<h2 id="L'histoire_de_deux_balises">L'histoire de deux balises</h2> + +<p>Si vous devez dépendre de plugins pour un cas spécifique ou lié au cadre d'une entreprise donnée, HTML fournit deux élément pour intégrer du contenu provenant d'un plugin : {{htmlelement("embed")}} et {{htmlelement('object')}}. Il faut noter qu'<code><embed></code> est un élément vide, à la différence de <code><object></code>.</p> + +<p>Il faudra donc utiliser les attributs pour fournir certaines informations :</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col"> </th> + <th scope="col">{{htmlelement("embed")}}</th> + <th scope="col">{{htmlelement("object")}}</th> + </tr> + </thead> + <tbody> + <tr> + <td>L'{{glossary("URL")}} du contenu à intégrer</td> + <td>{{htmlattrxref('src','embed')}}</td> + <td>{{htmlattrxref('data','object')}}</td> + </tr> + <tr> + <td>Le type {{glossary("MIME")}} <em>précis</em> du contenu à intégrer</td> + <td>{{htmlattrxref('type','embed')}}</td> + <td>{{htmlattrxref('type','object')}}</td> + </tr> + <tr> + <td>La hauteur et la largeur, exprimées en pixels CSS, de la boîte contrôlée par le plugin</td> + <td>{{htmlattrxref('height','embed')}}<br> + {{htmlattrxref('width','embed')}}</td> + <td>{{htmlattrxref('height','object')}}<br> + {{htmlattrxref('width','object')}}</td> + </tr> + <tr> + <td>Les noms et valeurs à founir comme paramètres au plugin</td> + <td>Des attributs <em>ad hoc</em> avec les noms et les valeurs</td> + <td>Des éléments sur une seule balise {{htmlelement("param")}} contenus dans la balise <code><object></code></td> + </tr> + <tr> + <td>Du contenu HTML indépendant à utiliser en secours au cas où la ressource à intégrer n'est pas disponible</td> + <td>Non supporté (<code><noembed></code> est obsolète)</td> + <td>Contenus dans la balise <code><object></code>, après les éléments <code><param></code></td> + </tr> + </tbody> +</table> + +<div class="note"> +<p><code><object></code> a besoin d'un attribut <code>data</code> ou d'un attribut <code>type</code> ou des deux. SI vous utilisez les deux, il faudra peut être utiliser l'attribut {{htmlattrxref('typemustmatch','object')}} (uniquement implémenté dans Firefox à l'heure où cet article est écrit). <code>typemustmatch</code> permet au contenu intégré de ne pas être lancé tant que l'attribut <code>type</code> ne correspond pas au type du média. <code>typemustmatch</code> permet ainsi d'apporter beaucoup plus de sécurité lorsqu'on intègre du contenu provenant d'une autre {{glossary("origine")}} (cela peut empêcher des attaquants malveillants de lancer des scripts modifiés au travers du plugin).</p> +</div> + +<p>Les deux exemples utilisent chacun <code><embed></code> ou <code><object></code> pour insérer un film Flash, <code><object></code> permet également de gérer un contenu à utiliser en cas de secours :</p> + +<pre class="brush: html"><embed + src="explosion.swf" + type="application/vnd.adobe.flash-movie" + width="500" + height="300" + bgcolor="#ff7f00" + allowfullscreen="true" +/></pre> + +<pre class="brush: html"><object + data="explosion.swf" + type="application/vnd.adobe.flash-movie" + width="500" + height="300" + typemustmatch> + <param name="bgcolor" value="#ff7f00" /> + <param name="allowfullscreen" value="true" /> + + <p>Le film Flash n'a pu être trouvé.</p> +</object> +</pre> + +<p>Afin d'être tout à fait complet, voici deux exemples supplémentaires. Encore une fois, il est (de loin) préférable d'utiliser JavaScript que des applets Java car le navigateur exécutera directement le code JavaScript sans passer par un environnement tiers, lourd. Ceci étant dit, voilà comment utiliser l'élément <code><object></code> pour insérer une applet Java :</p> + +<pre class="brush: html"><object + data="mon_applet.jar" + type="application/x-java-applet"> + <param name="code" value="MaClasseJava"> + + <p>Java n'est pas disponible ou est désactive.</p> +</object> +</pre> + +<p>Un autre cas où on a besoin de faire appel à <code><object></code> : les fichiers PDF. Ces fichiers posent de nombreux <a href="http://webaim.org/techniques/acrobat/acrobat">problèmes d'accessibilité</a>, notamment pour les utilisateurs qui utilisent un petit écran. Il ne devrait pas être absolument nécessaire de lire un PDF pour consulter un site web (imaginez si tous les sites web étaient uniquement disponibles en largeur fixe). Toutefois, si vous avez besoin d'intégrer un contenu PDF, voici comment le faire dans votre page web :</p> + +<pre class="brush: html"><object + data="mon_fichier.pdf" + type="application/pdf" + width="100%" + height="100%" + typemustmatch> + <p>Vous n'avez pas de plugin pour lire des fichiers PDF mais vous pouvez + <a href="mon_fichier.pdf">télécharger le fichier PDF correspondant.</a></p> +</object> +</pre> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li><a href="http://webaim.org/techniques/flash/">L'accessibilité avec Flash</a></li> + <li>{{htmlelement('object')}}</li> + <li>{{htmlelement('embed')}}</li> + <li><a href="https://en.wikipedia.org/wiki/Comparison_of_HTML5_and_Flash">Comparaison entre HTML5 et Flash</a> sur Wikipédia (en anglais)</li> + <li><a href="http://www.flashsucks.org">flashsucks.org</a>, <a href="http://www.occupyflash.org">occupyflash.org</a> (en anglais) (pour expliciter, encore plus si besoin, les raisons pour lesquelles Flash est très déconseillé)</li> +</ul> diff --git a/files/fr/conflicting/learn/html/multimedia_and_embedding/other_embedding_technologies_fbe06d127f73df4dd2f56a31b7c2bd2d/index.html b/files/fr/conflicting/learn/html/multimedia_and_embedding/other_embedding_technologies_fbe06d127f73df4dd2f56a31b7c2bd2d/index.html new file mode 100644 index 0000000000..b5d0db7caa --- /dev/null +++ b/files/fr/conflicting/learn/html/multimedia_and_embedding/other_embedding_technologies_fbe06d127f73df4dd2f56a31b7c2bd2d/index.html @@ -0,0 +1,150 @@ +--- +title: Intégrer une page web au sein d'une autre page web +slug: Apprendre/HTML/Comment/Intégrer_une_page_web_dans_une_autre_page_web +tags: + - Beginner + - Guide + - HTML + - Learn + - Security +translation_of: Learn/HTML/Multimedia_and_embedding/Other_embedding_technologies +translation_of_original: Learn/HTML/Howto/Embed_a_webpage_within_another_webpage +--- +<div class="summary"> +<p>Dans cet article, nous verrons comment intégrer une page web dans une autre, tout en minimisant les risques encourus par une telle manipulation.</p> +</div> + +<table class="learn-box nostripe standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez au préalable savoir comment <a href="/en-US/Learn/HTML/Write_a_simple_page_in_HTML">créer un document HTML simple</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Connaître les risques encourus lorsqu'on imbrique des pages web entre elles et savoir comment intégrer une page web au sein d'une autre page tout en minimisant ces risques.</td> + </tr> + </tbody> +</table> + +<h2 id="L'imbrication_des_pages_quelques_mots_d'histoire">L'imbrication des pages, quelques mots d'histoire</h2> + +<p>Imbriquer des pages entre elles peut sembler étrange voire contre-nature mais cela existe depuis les débuts du Web. Lorsque la bande passante était utilisée par des modems 56k (voire moindre), pour réduire le temps de téléchargement, les pages web étaient fragmentées en morceaux appelés <em>frames</em>, tous intégrées dans un <em>frameset</em>. Malheureusement, les <em>frames</em> ont apporté plus de problèmes que de solutions et le concept de <em>frame</em>/<em>frameset</em> a disparu depuis l'apparition d'{{glossary("AJAX")}}.</p> + +<p>Cela dit, il existe des cas où imbriquer des pages web est une solution valide. C'est notamment le cas lorsqu'on veut inclure du contenu généré par un utilisateur ou du contenu tiers (des publicités par exemple). Afin d'améliorer la sécurité lors de telles opérations, il est possible d'intégrer le contenu dans une <em>iframe</em> HTML5. Dans certains cas complexes, cela peut également permettre au navigateur d'être plus rapide car les arbres {{glossary("DOM")}} à traiter peuvent être plus légers.</p> + +<p>Malgré tout, l'imbrication de pages web a des conséquences significatives sur la sécurité, la performance et l'accessibilité. Avant de la mettre en œuvre, assurez-vous d'en comprendre les enjeux et les risques afin de servir au mieux vos visiteurs.</p> + +<h2 id="Une_imbrication_simple">Une imbrication simple</h2> + +<p>La plupart du temps, vous aurez besoin d'une {{htmlelement("iframe")}} pour imbriquer des pages web entre elles. Pour commencer, voici quelques questions :</p> + +<ul> + <li><strong>Quel est le document que j'intègre dans la page web ?</strong> L'URL du document sera la valeur de l'attribut {{htmlattrxref('src','iframe')}}.</li> + <li><strong>Quel espace doit occuper le document par rapport à la page web « parente » ? </strong>Pour cette information, on utilisera les attributs {{htmlattrxref('width','iframe')}} et {{htmlattrxref('height','iframe')}}.</li> + <li><strong>Que se passe-t-il lorsque l'agent utilisateur ne supporte pas les <em>iframes</em> ?</strong> Dans ces cas, il faut fournir un contenu HTML à utiliser en recours (ça peut, par exemple, être un lien vers le document qui aurait dû être imbriqué), ce contenu sera placé entre les balises <code><iframe></code>.</li> + <li>Il ne faut pas oublier l'attribut <code>sandbox</code>, hautement conseillé, qui permet de renforcer la sécurité des requêtes effectuées.</li> +</ul> + +<p>Au final, le code ressemblera à :</p> + +<pre class="brush: html"><iframe + src="https://developer.mozilla.org/fr/docs/Web/JavaScript/" + width="100%" height="500" + sandbox> + <p> + <a href="https://developer.mozilla.org/fr/docs/Web/JavaScript/"> + Un lien à utiliser dans les cas où les navigateurs ne supportent + pas les <i>iframes</i>. + </a> + </p> +</iframe> +</pre> + +<div class="note"> +<p>Afin d'améliorer la vitesse de chargement du site principal, il peut être utile de définir l'attribut <code>src</code> de l'<em>iframe</em> grâce à JavaScript, une fois que le contenu principal a été chargé. De cette façon, votre page sera utilisable plus tôt et le temps de chargement « officiel » de votre page sera réduit (ce qui peut être une métrique importante pour le référencement).</p> +</div> + +<div class="note"> +<p>Si vous n'appréciez pas la bordure épaisse autour de l'{{htmlelement("iframe")}}, vous pouvez utiliser {{cssxref('border')}}<code>: none;</code> dans votre code {{Glossary('CSS')}}.</p> +</div> + +<h2 id="Soyez_couverts">Soyez couverts</h2> + +<p>Dans les paragraphes précédents, nous avions insisté sur les aspects liés à la sécurité. Nous y voilà revenus. Les développeurs de navigateurs et les développeurs web ont appris à leurs dépens que les <em>iframes</em> pouvaient être un vecteur d'attaque visant à modifier une page web ou à faire faire aux visiteurs quelque chose à leur insu.</p> + +<div class="note"> +<p>{{interwiki('wikipedia','Clickjacking')}} est l'une des attaques connues utilisant les <em>iframes</em> : un attaquant placera une <em>iframe</em> invisible dans le document pour capturer les interactions entre l'utilisateur et le site web. Cela permet de détourner les utilisateurs ou de subtiliser des données sensibles.</p> +</div> + +<p>Voici quelques mesures à prendre pour mieux protéger votre site, de la plus simple à la plus complexe.</p> + +<h3 id="Ne_pas_intégrer_de_contenu_tiers">Ne pas intégrer de contenu tiers</h3> + +<p>Il peut arriver que vous n'ayez pas le choix, en revanche si vous l'avez, ne pas intégrer de contenu tiers pourra certainement vous épargner des maux de tête. Si vous avez développé le contenu intégré, regardez-y à deux fois. Si le contenu provient de l'extérieur, considérez-le comme dangereux.</p> + +<div class="note"> +<p>Un autre aspect que celui de la sécurité intervient ici : la propriété intellectuelle. La plupart des contenus, qu'ils soient en ligne ou non, sont placés sous le droit d'auteur, y compris du contenu dont on penserait qu'il est libre de droit (par exemple, la plupart des images sur <a href="https://commons.wikimedia.org/wiki/Main_Page">Wikimedia Commons</a>). <strong>N'affichez jamais du contenu sur votre page web si ce n'est pas le vôtre et que vous n'avez pas eu l'accord expresse de l'auteur. Les peines infligées pour infraction au droit d'auteur peuvent être importantes.</strong> Là encore, on n'est jamais trop prudent.</p> + +<p>Si le contenu est placé sous licence, vous devez respecter les termes de la licence. Par exemple, MDN est sous<a href="/en-US/docs/MDN/About#Copyrights_and_licenses"> licence CC-BY-SA</a>. Cela signifie que vous devez <a href="https://wiki.creativecommons.org/wiki/Best_practices_for_attribution">créditer les auteurs correctement</a> lorsque vous citez le contenu d'une de ses pages, même si vous y apportez des modifications.</p> +</div> + +<h3 id="Utiliser_HTTPS">Utiliser HTTPS</h3> + +<p>{{Glossary("HTTPS")}} est la version chiffrée de {{Glossary("HTTP")}}. Vous devriez utiliser HTTPS dès que possible :</p> + +<ol> + <li>HTTPS réduit les chances que le contenu distant soit modifié lors du transport ;</li> + <li>HTTPS empêche le contenu intégré d'accéder au contenu du document parent, et <em>vice versa</em>.</li> +</ol> + +<p>Les certificats de sécurité ne sont pas donnés et si vous ne pouvez pas vous en procurer un, vous devrez servir votre document parent avec HTTP. Cependant, suite à ce qui a été vu avant,<em> dans aucun cas vous ne devez intégrer du contenu tiers qui soit transporté par HTTP </em>(dans le meilleur des cas, cela se traduira, pour l'utilisateur, par un avertissement dans le navigateur).</p> + +<h3 id="Utiliser_l'attribut_sandbox_toujours">Utiliser l'attribut <code>sandbox</code>, toujours</h3> + +<p>Si vous souhaitez minimiser les risques, ne donnez <em>que les permissions indispensables nécessaires</em>. Bien entendu, cela s'applique également à votre contenu.</p> + +<p>Le contenu qui n'est pas mis dans un bac à sable (<em>sandbox</em>) a trop de droits par défaut (utilisations de scripts, de formulaires, de pop-ups, etc). Tant que c'est possible, imposez toutes les restrictions en utilisant {{htmlattrxref('sandbox','iframe')}} sans paramètres.</p> + +<p>Si c'est nécessaire, vous pouvez ajouter certaines permissions, une à une, dans la valeur de <code>sandbox</code>. Attention ! <em>Il ne faut jamais</em> ajouter <code>allow-scripts</code> et <code>allow-same-origin</code> en même temps car le contenu placé en bac à sable pourrait alors désactiver les protections.</p> + +<div class="note"> +<p>La mise en bac à sable (<em>sandboxing</em>) n'offre aucune protection si l'attaquant peut détourner les visiteurs et leur faire visiter un contenu dangereux directement (qui n'est pas dans une <code>iframe</code>). S'il y a une probabilité qu'un contenu soit dangereux (par exemple : un contenu généré par un utilisateur), faites en sorte que ce contenu soit servir avec une origine différente de celle du site principal.</p> +</div> + +<h3 id="Établir_des_canaux_de_communication_entre_les_contenus">Établir des canaux de communication entre les contenus</h3> + +<p>Dans certains cas, il peut être utile de faire communiquer une <em>iframe</em> avec le document hôte. Mettre en place de tels canaux de communication est assez simple avec JavaScript. Si l'<em>iframe</em> est correctement mise en bac à sable, ni l'<em>iframe</em> ni le document parent ne pourront accéder au DOM de l'autre (sans bac à sable, ça serait possible et incroyablement dangereux). Pour échanger de tels messages, l'API {{domxref('window.postMessage','postMessage')}} est la seule méthode sécurisée.</p> + +<h3 id="Configurer_les_directives_CSP">Configurer les directives CSP</h3> + +<p>{{Glossary("CSP")}} fournit <a href="/fr/docs/Web/Security/CSP/CSP_policy_directives">un ensemble d'en-têtes HTTP</a> conçus pour améliorer la sécurité d'un document HTML. Lorsqu'on utilise des <em>iframe</em>, il faut s'assurer de <a href="/fr/docs/Web/HTTP/X-Frame-Options">configurer son serveur pour envoyer un en-tête <code>X-Frame-Options</code> approprié</a>. Cela peut empêcher d'autres sites web d'intégrer le contenu de votre page dans d'autres pages web (ce qui serait une première étape pour faire du {{interwiki('wikipedia','clickjacking')}} ou effectuer d'autres attaques). Pour plus d'informations sur ce sujet, <a href="https://blog.mozilla.org/security/2013/12/12/on-the-x-frame-options-security-header/">le billet de Frederik Braun (en anglais)</a> est particulièrement intéressant.</p> + +<h2 id="Placez_le_code_HTML_dans_un_bac_à_sable_(sandboxing)">Placez le code HTML dans un bac à sable (<em>sandboxing</em>)</h2> + +<p>Nous avons déjà évoqué la mise en bac à sable pour les contenus embarqués mais cela peut également concerner votre propre contenu. Il est parfois avantageux d'aller encore plus loin en découpant sa page web en plusieurs <em>iframes</em>, chacune mise dans un bac à sable, en gérant un minimum de privilèges et en les coordinant depuis le document principal (<a href="http://www.html5rocks.com/tutorials/security/sandboxed-iframes/">Mike West décrit ce sujet en détails</a> et explique comment la séparation des privilèges permet d'améliorer le niveau de sécurité). Découpage une page de cette façon peut également permettre d'obtenir de meilleures performances car les arbres {{glossary("DOM")}} manipulés sont plus légers.</p> + +<p>En utilisant les deux nouveaux attributs d'<code>iframe</code> : {{htmlattrxref('seamless','iframe')}} et {{htmlattrxref('srcdoc','iframe')}}, vous pouvez intégrer des fragments de code HTML dans un document HTML. Pour supporter les navigateurs historiques, il est possible de fournir un contenu alternatif via une URL avec <code>src</code> (cela peut être une <a href="/fr/docs/Web/HTTP/data_URIs">URI de données</a>). Voici un exemple simple :</p> + +<pre class="brush: html"><iframe + sandbox + seamless + src="fallback.html" + srcdoc=" + <p> + Ce paragraphe est dans un bac à sable. + </p> + "> + Du contenu pour les navigateurs qui ne supportent pas + les iframes. +</iframe></pre> + +<div class="note"> +<p>Pour l'attribut <code>srcdoc</code>, les quotes doivent être échappées (<code>&quot;</code>) et les ampersandes doivent être doublement échappées (<code>&amp;amp;</code> pour représenter une ampersande simple (&)).</p> +</div> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li>{{htmlelement('iframe')}}</li> +</ul> diff --git a/files/fr/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content/index.html b/files/fr/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content/index.html new file mode 100644 index 0000000000..8d3caf06b2 --- /dev/null +++ b/files/fr/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content/index.html @@ -0,0 +1,154 @@ +--- +title: Ajouter du contenu audio ou vidéo à une page web +slug: Apprendre/HTML/Comment/Ajouter_contenu_audio_vidéo_page_web +tags: + - Audio + - Beginner + - Guide + - HTML + - Video +translation_of: Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +translation_of_original: Learn/HTML/Howto/Add_audio_or_video_content_to_a_webpage +--- +<div class="summary"> +<p>Dans cet article, nous verrons comment intégrer des éléments vidéo et audio de premier rang, accessibles à chacun, quelle que soit la méthode utilisée.</p> +</div> + +<table class="learn-box nostripe standard-table"> + <tbody> + <tr> + <th scope="row">Prérequis :</th> + <td>Vous devriez vous être familiarisé-e avec <a href="/fr/Apprendre/HTML/Write_a_simple_page_in_HTML">la création de documents HTML simples</a>.</td> + </tr> + <tr> + <th scope="row">Objectifs :</th> + <td>Savoir comment intégrer des éléments audio et vidéo dans une page web.</td> + </tr> + </tbody> +</table> + +<h2 id="L'audio_et_la_vidéo_sur_le_web">L'audio et la vidéo sur le web</h2> + +<p>Depuis toujours, les développeurs web ont intégré (ou tenté d'intégrer) des vidéos et des sons sur le Web. Après une longue période d'expérimentation, {{glossary("HTML5")}} offre aujourd'hui la meilleure solution et tire parti de nouvelles {{Glossary("API")}} {{Glossary("JavaScript")}} .</p> + +<p>Dans cet article, nous expliquerons comment intégrer des fichiers audio et vidéo dans des documents HTML. Nous prendrons le postulat de départ que vous avez déjà ces fichiers disponibles (la création de média n'est pas, à proprement parlé, du développement web et nous n'en parlerons donc pas dans cet article)</p> + +<p>Avant de commencer, précisons qu'il existe par ailleurs quelques fournisseurs de vidéos en ligne tels que <a href="https://www.youtube.com/">YouTube</a>, <a href="http://www.dailymotion.com">Dailymotion</a> ou <a href="https://vimeo.com/">Vimeo</a>. Ces sites offrent un moyen pratique pour héberger ou consommer des vidéos et peuvent nous éviter d'avoir à penser à la consommation de bande passante. Ils permettent généralement d'utiliser des scripts JavaScript permettant d'embarquer les vidéos sur une page web. Cette méthode permet d'éviter certaines des difficultés que nous allons aborder, toutefois, cela ne correspond pas exactement au fait d'utiliser HTML pour fournir <strong>directement</strong> du contenu multimédia à vos utilisateurs.</p> + +<h2 id="Pour_commencer">Pour commencer</h2> + +<p>La façon la plus simple permettant d'intégrer un fichier multimédia dans une page web est d'utiliser l'élément {{htmlelement("audio")}} pour les fichiers sonores et l'élément {{htmlelement("video")}} pour les vidéos. Par exemple :</p> + +<pre class="brush: html"><audio src="exemple.ogg" controls></audio> +<video src="exemple.webm" width="375" height="280" controls></video> +</pre> + +<p>Ces deux éléments HTML possèdent quelques attributs permettant de contrôler le comportement des éléments :</p> + +<dl> + <dt>{{htmlattrxref("width","video")}} et {{htmlattrxref("height","video")}} (uniquement pour <code><video></code>)</dt> + <dd>Ces attributs permettent de contrôler la taille à utiliser pour la vidéo (des propriétés CSS peuvent également être utilisées). Dans tous les cas, les vidéos garderont leur ratio « hauteur / largeur » de départ (des bandes noires viendront occuper l'espace vide).</dd> + <dt>{{htmlattrxref("controls","video")}}</dt> + <dd> + <p>Les utilisateurs doivent être en mesure de contrôler la lecture de la vidéo ou du son (ce point est notamment critique pour les personnes <a href="https://fr.wikipedia.org/wiki/%C3%89pilepsie#.C3.89pid.C3.A9miologie">epileptiques</a>). Il faut donc utiliser l'attribut <code>controls</code> pour que le navigateur fournisse les contrôles natifs ou alors construire votre propre interface, grâce à <a href="/fr/docs/Web/API/HTMLMediaElement">l'API JavaScript appropriée</a>. L'interface utilisateur devra, au minimum, fournir un moyen de lancer la lecture, de l'arrêter et d'ajuster le volume.</p> + </dd> + <dt>{{htmlattrxref("autoplay","video")}}</dt> + <dd>Cet attribut permet de lancer la vidéo ou la piste audio dès qu'elle est chargée et lors du chargement de la page. Attention, de nombreux utilisateurs peuvent trouver ce comportement « agressif ».</dd> + <dt>{{htmlattrxref("loop","video")}}</dt> + <dd>Cet attribut permet de lire la piste audio ou la vidéo en boucle, en la relançant automatiquement une fois qu'elle a fini. Attention également à utiliser cet attribut avec précaution.</dd> + <dt>{{htmlattrxref("muted","video")}}</dt> + <dd>Cet attribut permet de lancer le média avec le son désactivé par défaut.</dd> + <dt>{{htmlattrxref("poster","video")}} (video only)</dt> + <dd>Cet attribut fournit l'URL d'une image à afficher avant de lancer la vidéo.</dd> +</dl> + +<h2 id="Déjouer_les_pièges_des_codecs">Déjouer les pièges des codecs</h2> + +<h3 id="Le_problème_les_navigateurs_supportent_différents_codecs">Le problème : les navigateurs supportent différents codecs</h3> + +<p>Les <strong>{{Glossary("Codec","codecs")}}</strong> (tels que Vorbis ou H.264) permettent de convertir du son et de la vidéo en chiffres binaires et aussi de réaliser la conversion inverse. Mais si on ne dispose pas du bon codec, les données exprimées en binaires seront inexploitables.</p> + +<div class="note"><strong>Les formats de type « conteneur »</strong> (tel que Ogg) : ces formats font référence à la façon dont les données d'images, de son et les méta-données sont regroupées (« empaquetées ») dans un seul fichier. Le support pour les différents types de conteneur est un problème à part entière mais généralement, les systèmes supportenent les formats de conteneurs associés aux codex qu'ils supportent (par exemple Ogg empaquète de l'audio au format Vorbis et de la vidéo au format Theora ; WebM regroupe le plus souvent de l'audio au format Vorbis avec de la vidéo au format VP8/VP9 ; MP4, quant à lui, empaquète de l'audio AAC et de la vidéo H.26).</div> + +<p>Malheureusement, les navigateurs ne supportent pas tous les mêmes codecs, il faut donc, la plupart du temps, fournir différents fichiers pour les différents formats.</p> + +<h3 id="Quels_formats_fournir">Quels formats fournir ?</h3> + +<p>Le format <strong>MP3 </strong>(pour l'audio) et le format <strong>MP4/H.264</strong> (pour la vidéo) sont très largement supportés. Cepedant, des brevets américains portent sur le format MP3 jusqu'en 2017 au minimum et sur le format H.264 jusqu'en 2027 au minimum. Beaucoup de personnes préfèrent éviter d'utiliser des logiciels restreints à ces brevets, c'est pour cela qu'il est nécessaire de mettre à disposition les fichiers multimédia dans des formats libres (tel qu'<a href="http://xiph.org/vorbis/">Ogg Vorbis</a> pour l'audio et <a href="http://www.webmproject.org/">WebM</a> pour la vidéo).</p> + +<p>Dans un monde idéal, à la façon de Wikipédia, il suffirait de fournir les fichiers uniquement dans ces formats ouverts. Cependant, des navigateurs comme Safari et Microsoft Edge (sans parler d'Internet Explorer) ne supportent pas ces formats. Cela laisserait donc beaucoup d'utilisateurs potentiels sur le banc.</p> + +<p>Pour plus de détails sur cette compatibilité, consultez notre <a href="https://developer.mozilla.org/en-US/Apps/Build/Manipulating_media/Cross-browser_audio_basics#Audio_Codec_Support">tableau de compatibilité pour les codecs audio</a> et notre <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats#Browser_compatibility">tableau de compatibilité pour les codecs audio-vidéo</a>.</p> + +<h3 id="Comment_fournir_le_même_contenu_sous_plusieurs_formats">Comment fournir le même contenu sous plusieurs formats ?</h3> + +<p>HTML fournit l'élément {{htmlelement("source")}} qui peut être utilisé avec l'attribut {{htmlattrxref("src","source")}}. Cet attribut, <code>src</code>, ne doit pas être placé au sein même de l'élément <code><video></code> ou <code><audio></code> car il remplacerait alors le contenu déclaré dans les éléments <code><source></code>. Voici un exemple :</p> + +<pre class="brush: html"><audio controls> + <source src="exemple.mp3" type="audio/mpeg"> + <source src="exemple.ogg" type="audio/ogg"> +</audio></pre> + +<div class="note"> +<p>Assurez-vous de ne pas oublier l'attribut {{htmlattrxref("type","source")}}. S'il manque, les navigateurs chargeront et essaieront chaque fichier, ce qui prendra plus de temps et consommera plus de ressources. <code>type</code> permet aux navigateurs de sauter tous les fichiers qu'ils ne peuvent pas lire. Dans <a href="/en-US/docs/Web/HTML/Supported_media_formats">cet article sur les formats de médias supportés</a>, les {{glossary("type MIME","types MIME")}} les plus communs sont explicités.</p> +</div> + +<h2 id="Les_transcriptions_et_les_sous-titres">Les transcriptions et les sous-titres</h2> + +<p>Transcrire signifie ici qu'on écrit les dialogues oraux sont forme de texte.</p> + +<p>De nombreuses personnes ne peuvent pas (ou ne veulent pas) utiliser des contenus audio ou vidéos (par exemple dans un environnement bruyant ou dans une bibliothèque). Pour que votre site puisse être consulté par ces visiteurs, il est donc nécessaire de fournir une transcription textuelle du média ainsi qu'une « piste » de texte qui s'affiche en même temps que la vidéo. Cela prend du temps à réaliser mais cela en vaut le coût..</p> + +<p>Les pistes textuelles permettent également d'avoir un meilleur impact pour le référencement ({{glossary("SEO")}}) car les moteurs de recherches utilisent principalement le contenu textuel. Un dialogue d'une vidéo pourra donc être référencé s'il est transcrit.</p> + +<h3 id="Les_pistes_textuelles">Les pistes textuelles</h3> + +<p>Les chaînes de texte affichées durant une vidéo peuvent prendre différentes formes, dont voici les principales :</p> + +<dl> + <dt>Les sous-titres</dt> + <dd>La traduction des dialogues à l'écrit, éventuellement dans une langue autre que celle parlée dans la vidéo.</dd> + <dt>La description</dt> + <dd>Une transcription synchronisée des dialogues et les descriptions des sons entendus dans la vidéo (ce qui permet aux personnes de regarder un film sans le son par exemple)</dd> + <dt>L'audio-description</dt> + <dd>Du texte, décrivant les scènes qui est fourni en audio (notamment pour les personnes souffrant d'une déficience visuelle).</dd> +</dl> + +<p>HTML permet d'inclure facilement de telles pistes :</p> + +<ol> + <li><a href="/fr/docs/Web/API/Web_Video_Text_Tracks_Format">Il faut écrire un ou plusieurs fichiers texte WebVTT.</a> Un fichier WebVTT contient les textes à utiliser et définit à quels moment ces textes doivent apparaître ou disparraître (dans ces cas, avoir une bonne transcription dès le début aide énormément).</li> + <li>Puis lier le ou les fichiers WebVTT à l'élément {{htmlelement("track")}}. <code><track></code> se place dans les éléments <code><audio></code> ou <code><video></code> et est situé après les éléments <code><source></code>. L'attribut {{htmlattrxref("kind","track")}} doit être utilisé pour indiquer s'il s'agit de <code>subtitles</code> (sous-titres), <code>captions</code> (description) ou de <code>descriptions</code> (audio description). L'attribut {{htmlattrxref("srclang","track")}} peut également être utilisé pour compléter et indiquer au navigateur le langage utilisé pour les sous-titres.</li> +</ol> + +<p>Voici un exemple :</p> + +<pre class="brush: html"><video controls> + <source src="exemple.mp4" type="video/mp4"> + <source src="exemple.webm" type="video/webm"> + <track kind="subtitles" src="sous-titres-en.vtt" srclang="en"> +</video></pre> + +<p>Pour plus de détails, n'hésitez pas à lire <a href="/fr/Apps/Build/Audio_and_video_delivery/Adding_captions_and_subtitles_to_HTML5_video">l'article décrivant comment ajouter des sous-titres et légendes à une vidéo HTML5</a>.</p> + +<h2 id="Contenu_de_secours_pour_les_navigateurs_historiques">Contenu de secours pour les navigateurs historiques</h2> + +<p>Il est possible d'ajouter un contenu qui sera utilisé dans le cas où le navigateur ne connaît pas ces éléments HTML5. Ce contenu doit être ajouté avant la balise de fermeture. Il est par exemple possible d'ajouter un lien de téléchargement vers le fichier média :</p> + +<pre class="brush: html"><video src="exemple.webm" controls> + <track kind="captions" src="captions.vtt" srclang="fr"> + <a href="exemple.webm">Télécharger la vidéo</a> +</video></pre> + +<p>Un lien de téléchargement n'est pas parfaitement adapté pour tous les utilisateurs (notamment pour ceux qui sont sur des mobiles) mais c'est une meilleure solution que d'indiquer uniquement que le navigateur doit être mis à jour. <a href="https://dev.opera.com/articles/html5-video-flash-fallback-custom-controls/">Il existe des techniques plus avancées pour répondre à ce cas</a> mais une solution rapide à mettre en œuvre consiste à utiliser les plateformes vidéos évoquées au début de cet article, qui fournissent un script tiers fonctionnel.</p> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<ul> + <li><a href="/fr/docs/Web/HTML/Utilisation_d'audio_et_video_en_HTML5">Un guide plus détaillé</a></li> + <li>{{htmlelement("audio")}}</li> + <li>{{htmlelement("video")}}</li> + <li>{{htmlelement("source")}}</li> + <li>{{htmlelement("track")}}</li> + <li><a href="/fr/Apps/Build/Audio_and_video_delivery/Adding_captions_and_subtitles_to_HTML5_video">Ajouter des sous-titres à une vidéo HTML5</a></li> +</ul> diff --git a/files/fr/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content_040b1c36f4218ba488ffb0284dfe52bf/index.html b/files/fr/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content_040b1c36f4218ba488ffb0284dfe52bf/index.html new file mode 100644 index 0000000000..efa30853e6 --- /dev/null +++ b/files/fr/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content_040b1c36f4218ba488ffb0284dfe52bf/index.html @@ -0,0 +1,245 @@ +--- +title: Utilisation d'audio et video en HTML5 +slug: Web/HTML/Utilisation_d'audio_et_video_en_HTML5 +tags: + - Aperçu + - Featured + - Guide + - HTML + - HTML5 + - Media + - Web +translation_of: Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +translation_of_original: Web/Guide/HTML/Using_HTML5_audio_and_video +--- +<p>{{ gecko_minversion_header("1.9.1") }}</p> + +<p>La gestion des éléments HTML 5 <a class="internal" href="/fr/HTML/Element/Audio" title="fr/HTML/Element/Audio"><code>audio</code></a> et <a class="internal" href="/Fr/HTML/Element/Video" title="fr/HTML/Element/Video"><code>video</code></a> a été introduite dans Firefox 3.5, ce qui permet d'intégrer facilement des médias dans des documents HTML. Actuellement, les formats de média Ogg Theora, Ogg Vorbis et WAV sont gérés.</p> + +<h2 id="Intégration_de_médias">Intégration de médias</h2> + +<p>Il est trivial d'intégrer des médias dans vos documents HTML :</p> + +<pre class="brush: html"><video src="http://v2v.cc/~j/theora_testsuite/320x240.ogg" controls> + Votre navigateur ne gère pas l'élément <code>video</code>. +</video> +</pre> + +<p>Cet exemple jouera une vidéo exemple du site web de Theora.</p> + +<p>Plusieurs fichiers sources peuvent être référencés à l'aide de l'élément <a class="internal" href="/fr/HTML/Element/Source" title="fr/HTML/Element/Source"><code>source</code></a> afin de fournir des vidéos/extraits audio encodés dans différents formats pour différents navigateurs. Par exemple,</p> + +<pre class="brush: html"><video controls> + <source src="foo.ogg" type="video/ogg"> + <source src="foo.mp4"> + Votre navigateur ne gère pas l'élément <code>video</code>. +</video> +</pre> + +<p>jouera le fichier Ogg dans les navigateurs gérant ce format. Si ce n'est pas le cas, il essaiera de jouer le fichier MPEG-4.</p> + +<p>Il est également possible d'indiquer les codecs dont le fichier média a besoin ; cela permet au navigateur de prendre de meilleurs décisions :</p> + +<pre class="brush: html"><video controls> + <source src="foo.ogg" type="video/ogg; codecs=&quot;dirac, speex&quot;"> + Votre navigateur ne gère pas l'élément <code>video</code>. +</video></pre> + +<p>Ici, on indique que la vidéo utilise les codecs Dirac et Speex. Si le navigateur gère les médias Ogg, mais pas les codecs spécifiés, la vidéo ne se chargera pas.</p> + +<p>Si l'attribut <code>type</code> n'est pas spécifié le type du média est récupéré depuis le serveur et vérifié pour voir s'il est géré par Gecko ; s'il n'est pas utilisable, l'élément <code>source</code> suivant est vérifié. Si aucun des éléments <code>source</code> ne peut être utilisé, un évènement <code>error</code> est transmis à l'élément <code>video</code>. Si l'attribut <code>type</code> est spécifié, il est comparé avec ceux qui peuvent être joués ; s'il n'est pas reconnu, le serveur n'est même pas interrogé, et on passe directement à la vérification de l'élément <code>source</code> suivant.</p> + +<p> </p> + +<h2 id="Contrôle_de_la_lecture">Contrôle de la lecture</h2> + +<p>Une fois le média intégré dans votre document HTML à l'aide de ces nouveaux éléments, vous pouvez les contrôler programmatiquement depuis du code JavaScript. Par exemple, pour démarrer (ou redémarrer) la lecture, vous pouvez faire ceci :</p> + +<pre class="brush: js">var v = document.getElementsByTagName("video")[0]; +v.play(); +</pre> + +<p>La première ligne récupère le premier élément video dans le document, et la seconde appelle la méthode <a class="external" href="/fr/NsIDOMHTMLMediaElement#play()" title="https://developer.mozilla.org/editor/fckeditor/core/editor/fr/NsIDOMHTMLMediaElement#play()"><code>play()</code></a> de l'élément, telle que définie dans l'interface {{ interface("nsIDOMHTMLMediaElement") }} utilisée pour implémenter les éléments de médias.</p> + +<h2 id="Évènements_des_médias">Évènements des médias</h2> + +<p>Différents évènements sont envoyés lors du traitement de médias :</p> + +<table class="standard-table"> + <tbody> + <tr> + <td class="header">Nom de l'évènement</td> + <td class="header">Description</td> + </tr> + <tr> + <td><code>abort</code></td> + <td>Envoyé lorsque la lecture est annulée ; par exemple il sera envoyé si le média est en cours de lecture et redémarré depuis le début.</td> + </tr> + <tr> + <td><code>canplay</code></td> + <td>Envoyé lorsque suffisamment de données sont disponibles pour débuter la lecture du média, au moins pour quelques premières images. Il correspond à la valeur <code>CAN_PLAY</code> de <code>readyState</code>.</td> + </tr> + <tr> + <td><code>canplaythrough</code></td> + <td>Envoyé lorsque l'état devient <code>CAN_PLAY_THROUGH</code>, ce qui indique que le média peut être entièrement lu sans interruption, en supposant que la vitesse de téléchargement reste au niveau actuel.</td> + </tr> + <tr> + <td><code>canshowcurrentframe</code></td> + <td>L'image courante est chargée et peut être présentée. Ceci correspond à la valeur <code>CAN_SHOW_CURRENT_FRAME</code> de <code>readyState</code>.</td> + </tr> + <tr> + <td><code>dataunavailable</code></td> + <td>Envoyé lorsque l'état devient <code>DATA_UNAVAILABLE</code>.</td> + </tr> + <tr> + <td><code>durationchange</code></td> + <td>Les métadonnées ont été chargées ou modifiées, ce qui indique un changement dans la durée du média. Sera par exemple envoyé lorsque le média est suffisamment chargé pour que sa durée soit connue.</td> + </tr> + <tr> + <td><code>emptied</code></td> + <td>Le média est devenu vide ; par exemple si le média est déjà chargé (ou partiellement chargé) et qu'on appelle la méthode <a class="internal" href="/fr/nsIDOMMediaHTMLElement#load()" title="fr/nsIDOMMediaHTMLElement#load()"><code>load()</code></a> pour le recharger.</td> + </tr> + <tr> + <td><code>empty</code></td> + <td>Envoyé lorsqu'une erreur survient et que le média est vide.</td> + </tr> + <tr> + <td><code>ended</code></td> + <td>Envoyé lorsque la lecture se termine.</td> + </tr> + <tr> + <td><code>error</code></td> + <td>Envoyé lorsqu'une erreur se produit. L'attribut <code>error</code> de l'élément contient plus d'informations.</td> + </tr> + <tr> + <td><code>loadedfirstframe</code></td> + <td>La première image du média a été chargée.</td> + </tr> + <tr> + <td><code>loadedmetadata</code></td> + <td>Les métadonnées du média ont été chargées ; tous les attributs contiennent autant d'informations que possible.</td> + </tr> + <tr> + <td><code>loadstart</code></td> + <td>Envoyé lorsque le chargement du média débute.</td> + </tr> + <tr> + <td><code>pause</code></td> + <td>Envoyé lorsque la lecture est interrompue.</td> + </tr> + <tr> + <td><code>play</code></td> + <td>Envoyé lorsque la lecture débute ou reprend.</td> + </tr> + <tr> + <td><code>progress</code></td> + <td> + <p>Envoyé périodiquement pour informer les parties intéressées de la progression du téléchargement du média. L'évènement progress dispose de trois attributs :</p> + + <dl> + <dt><code>lengthComputable</code></dt> + <dd>vaut <code>true</code> si la taille totale du média est connue, <code>false</code> sinon.</dd> + <dt><code>loaded</code></dt> + <dd>Le nombre d'octets du fichier de média qui ont été reçus jusqu'à présent.</dd> + <dt><code>total</code></dt> + <dd>Le nombre total d'octets dans le fichier de média.</dd> + </dl> + </td> + </tr> + <tr> + <td><code>ratechange</code></td> + <td>Envoyé lorsque la vitesse de lecture change.</td> + </tr> + <tr> + <td><code>seeked</code></td> + <td>Envoyé lorsqu'une opération de positionnement est effectuée.</td> + </tr> + <tr> + <td><code>seeking</code></td> + <td>Envoyé lorsqu'une opération de positionnement débute.</td> + </tr> + <tr> + <td><code>suspend</code> {{ gecko_minversion_inline("1.9.2") }}</td> + <td>Envoyé lorsque le chargement du média est interrompu ; cela peut arriver parce que le téléchargement est terminé ou parce qu'il a été mis en pause pour toute autre raison.</td> + </tr> + <tr> + <td><code>timeupdate</code></td> + <td>Le temps indiqué par l'attribut <code>currentTime</code> de l'élément a été modifié.</td> + </tr> + <tr> + <td><code>volumechange</code></td> + <td>Envoyé lorsque le volume audio est modifié (qu'il s'agisse d'une modification du volume ou d'un changement de l'attribut <code>muted</code>).</td> + </tr> + <tr> + <td><code>waiting</code></td> + <td>Envoyé lorsque l'opération demandée (comme une lecture) est retardée en attendant la fin d'une autre opération (comme un positionnement).</td> + </tr> + </tbody> +</table> + +<p>{{ gecko_minversion_note("1.9.2", "L'ancien évènement <code>load</code> a été retiré de Gecko 1.9.2, il n'était pas déclenché quand il fallait et ne doit pas être utilisé.") }}</p> + +<p>Ces évènements peuvent facilement être interceptés à l'aide ce ce genre de code :</p> + +<pre>var v = document.getElementsByTagName("video")[0]; + +v.addEventListener("seeked", function() { document.getElementsByTagName("video")[0].play(); }, true); +v.currentTime = 10.0; +</pre> + +<p>Cet exemple récupère le premier élément vidéo du document et lui attache un écouteur d'évènement, vérifiant l'évènement seeked qui est envoyé lorsqu'une opération de positionnement se termine. La fonction appelle simplement la méthode <code>play()</code> de l'élément, qui lance la lecture.</p> + +<p>Ensuite, à la ligne 4, cet exemple positionne l'attribut <code>currentTime</code> de l'élément à 10.0, ce qui lance une opération de positionnement à la dixième seconde du média. Cela déclenche l'envoi d'un évènement <code>seeking</code> au début de l'opération, ensuite d'un évènement <code>seeked</code> lorsque le positionnement est terminé.</p> + +<p>Autrement dit, l'exemple se positionne à dix secondes du début du média, puis commence la lecture dès que c'est fait.</p> + +<h2 id="Options_de_rechange">Options de rechange</h2> + +<p>Le code HTML fourni entre les balises, par exemple <code><video></code> et <code></video></code>, est utilisé par les navigateurs ne gérant pas les médias HTML 5. Vous pouvez tirer parti de cela pour fournir un contenu alternatif de rechange pour ces navigateurs.</p> + +<p>Cette section propose deux options de rechange possibles pour la vidéo. Dans les deux cas, si le navigateur gère la vidéo HTML 5, c'est celle-ci qui sera utilisée.</p> + +<h3 id="Utilisation_de_Flash">Utilisation de Flash</h3> + +<p>Vous pouvez utiliser Flash pour lire une vidéo Flash si l'élément <code>video</code> n'est pas géré :</p> + +<pre class="brush: html"><video src="video.ogv" controls> + <object data="flvplayer.swf" type="application/x-shockwave-flash"> + <param value="flvplayer.swf" name="movie"/> + </object> +</video> +</pre> + +<p>Notez qu'il ne faut pas mettre d'attribut <code>classid</code> à la balise <code>object</code> afin de rester compatible avec les autres navigateurs qu'Internet Explorer.</p> + +<h3 id="Lecture_de_vidéos_Ogg_dans_une_applet_Java">Lecture de vidéos Ogg dans une applet Java</h3> + +<p>Une applet Java appelée <a class="external" href="http://maikmerten.livejournal.com/2256.html" title="http://maikmerten.livejournal.com/2256.html">Cortado</a> peut-être utilisée pour lire les vidéos Ogg dans les navigateurs ne pouvant pas lire les vidéos HTML 5 mais où Java est géré :</p> + +<pre class="brush: html"><video src="my_ogg_video.ogg" controls width="320" height="240"> + <object type="application/x-java-applet" + width="320" height="240"> + <param name="archive" value="cortado.jar"> + <param name="code" value="com.fluendo.player.Cortado.class"> + <param name="url" value="my_ogg_video.ogg"> + <p>You need to install Java to play this file.</p> + </object> +</video> +</pre> + +<p>Si vous ne créez pas d'élément enfant de l'objet cortado comme l'élément <p> dans l'exemple ci-dessus, les installations de Firefox 3.5 qui gèrent la vidéo nativement mais où Java n'est pas installé informeront incorrectement l'utilisateur qu'il doit installer un plugin pour lire le contenu de la page.</p> + +<h2 id="Voir_également">Voir également</h2> + +<ul> + <li><a class="internal" href="/fr/HTML/Element/Audio" title="fr/HTML/Element/Audio"><code>audio</code></a></li> + <li><a class="internal" href="/Fr/HTML/Element/Video" title="fr/HTML/Element/Video"><code>video</code></a></li> + <li><a class="internal" href="/fr/HTML/Element/Source" title="fr/HTML/Element/Source"><code>source</code></a></li> + <li><a class="internal" href="/fr/Manipulation_de_vidéos_avec_canvas" title="fr/Manipulation de vidéos avec canvas"><code>Manipulation de vidéos avec canvas</code></a></li> + <li>{{ interface("nsIDOMHTMLMediaElement") }}</li> + <li><a class="internal" href="/fr/docs/Web/HTML/formats_media_support" title="fr/Formats de médias gérés par les éléments audio et video"><code>Formats de médias gérés par les éléments audio et video</code></a></li> +</ul> + +<p> {{ languages( { "en": "en/Using_audio_and_video_in_Firefox" } ) }}</p> + +<p> {{ languages( { "es": "es/Etiquetas audio y video en Firefox" } ) }}</p> diff --git a/files/fr/conflicting/learn/index.html b/files/fr/conflicting/learn/index.html new file mode 100644 index 0000000000..b1aee4ae00 --- /dev/null +++ b/files/fr/conflicting/learn/index.html @@ -0,0 +1,22 @@ +--- +title: Compétences +slug: Apprendre/Compétences +tags: + - Index +translation_of: Learn +translation_of_original: Learn/Skills +--- +<p>Lorsqu'il s'agit d'apprendre le développement Web, il existe plusieurs compétences, listées par <a href="https://webmaker.org" rel="external">WebMaker</a> dans la <a href="https://webmaker.org/literacy" rel="external">littéracie web</a> : une carte destinée aux débutants pour apprendre les bases. Sur MDN, les articles de cette section sont consacrés au développement de sites web et sont destinés à tous publics :</p> + +<dl> + <dt><a href="/fr/Apprendre/Mécanismes_Web">Les mécanismes du Web</a></dt> + <dd>Comprendre l'écosystème du Web.</dd> + <dt><a href="/fr/Apprendre/Infrastructure">Infrastructure</a></dt> + <dd>Comprendre l'aspect technique du Web.</dd> + <dt><a href="/fr/Apprendre/Coder-scripter">Coder/Scripter</a></dt> + <dd>Créer des expériences interactives sur le Web.</dd> + <dt><a href="/fr/Apprendre/Design_Accessibilité">Conception et accessibilité</a></dt> + <dd>Utiliser les ressources du Web pour communiquer efficacement avec tout le monde.</dd> + <dt><a href="/fr/Apprendre/Redaction_web">Écrire pour le Web</a></dt> + <dd>Créer et organiser du contenu sur le Web.</dd> +</dl> diff --git a/files/fr/conflicting/learn/javascript/client-side_web_apis/manipulating_documents/index.html b/files/fr/conflicting/learn/javascript/client-side_web_apis/manipulating_documents/index.html new file mode 100644 index 0000000000..6e9414972d --- /dev/null +++ b/files/fr/conflicting/learn/javascript/client-side_web_apis/manipulating_documents/index.html @@ -0,0 +1,147 @@ +--- +title: JavaScript +slug: CSS/Premiers_pas/JavaScript +tags: + - CSS + - 'CSS:Premiers_pas' +translation_of: Learn/JavaScript/Client-side_web_APIs/Manipulating_documents +translation_of_original: Web/Guide/CSS/Getting_started/JavaScript +--- +<p> </p> +<p>Vous entrez dans la partie II du tutoriel. Cette partie contient des exemples montrant toute la portée de CSS dans Mozilla.</p> +<p>Chaque page de la partie II illustre la manière dont CSS interagit avec une autre technologie donnée. Ces pages ne sont pas prévues pour vous apprendre à utiliser ces autres technologies. Pour cela, vous devrez consulter d'autres tutoriels pour les comprendre en détail.</p> +<p>Au lieu de cela, ces pages sont conçues pour illustrer les nombreux usages de CSS. Pour les comprendre, vous devriez avoir une certaine connaissance de CSS, mais il n'est pas nécessaire de maîtriser aucune des autres technologies évoquées.</p> +<h3 id="Information_:_JavaScript" name="Information_:_JavaScript">Information : JavaScript</h3> +<p>JavaScript est un + <i> + langage de programmation</i> + . Lorsque vous utilisez une application Mozilla (par exemple votre navigateur), une grande partie du code exécuté par votre ordinateur est écrit en JavaScript.</p> +<p>JavaScript peut interagir avec les feuilles de style, ce qui permet d'écrire des programmes modifiant le style d'un document dynamiquement.</p> +<p>Il existe trois manières de le faire :</p> +<ul> + <li>En travaillant avec la liste de feuilles de style du document — par exemple en ajoutant, retirant ou modifiant une feuille de style.</li> + <li>En travaillant avec les règles d'une feuille de style — par exemple en ajoutant, retirant ou modifiant une règle.</li> + <li>En travaillant avec un élément individuel du DOM — en modifiant son style indépendamment des feuilles de style du document.</li> +</ul> +<table style="border: 1px solid #36b; padding: 1em; background-color: #f4f4f4; margin-bottom: 1em; width: 100%;"> + <caption> + Plus de détails</caption> + <tbody> + <tr> + <td>Pour plus d'informations à propos de JavaScript dans Mozilla, consultez la page <a href="fr/JavaScript">JavaScript</a> de ce wiki.</td> + </tr> + </tbody> +</table> +<h3 id="Action_:_une_d.C3.A9monstration_en_JavaScript" name="Action_:_une_d.C3.A9monstration_en_JavaScript">Action : une démonstration en JavaScript</h3> +<p>Créez un nouveau document HTML, <code>doc5.html</code>. Copiez et collez-y le contenu ci-dessous, en vous assurant de faire défiler pour en obtenir l'entièreté :</p> +<div style="width: 48em; height: 12em; overflow: auto;"> + <pre><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> +<HTML> + +<HEAD> +<TITLE>Premiers pas en CSS avec Mozilla - Démonstration en JavaScript</TITLE> +<LINK rel="stylesheet" type="text/css" href="style5.css"></strong> +<SCRIPT type="text/javascript" src="script5.js"></SCRIPT> +</HEAD> + +<BODY> +<H1>Exemple en JavaScript</H1> + +<DIV id="square"></DIV> + +<BUTTON type="button" onclick="doDemo(this);">Cliquez ici</BUTTON> + +</BODY> +</HTML> +</pre> +</div> +<p>Créez un nouveau fichier CSS, <code>style5.css</code>. Copiez et collez-y le contenu ci-dessous :</p> +<div style="width: 48em;"> + <pre>/*** Démonstration en JavaScript ***/ +#square { + width: 20em; + height: 20em; + border: 2px inset gray; + margin-bottom: 1em; + } + +button { + padding: .5em 2em; + } +</pre> +</div> +<p>Créez un nouveau fichier texte, <code>script5.js</code>. Copiez et collez-y le contenu ci-dessous :</p> +<div style="width: 48em;"> + <pre>// JavaScript demonstration +function doDemo (button) { + var square = document.getElementById("square") + square.style.backgroundColor = "#fa4" + button.setAttribute("disabled", "true") + setTimeout(clearDemo, 2000, button) + } + +function clearDemo (button) { + var square = document.getElementById("square") + square.style.backgroundColor = "transparent" + button.removeAttribute("disabled") + } +</pre> +</div> +<p>Ouvrez le document dans votre navigateur et appuyez sur le bouton.</p> +<p>Ce wiki ne permet pas d'utiliser JavaScript dans ses pages, il n'est donc pas possible de montrer la démonstration ici. Cela ressemble à ceci, avant et après que vous appuyiez sur le bouton :</p> +<table> + <tbody> + <tr> + <td style="padding-right: 2em;"> + <table style="border: 2px outset #36b; padding: 0 1em .5em .5em;"> + <tbody> + <tr> + <td> + <p><b>Démonstration en JavaScript</b></p> + <div style="width: 5em; height: 5em; border: 2px inset gray; background-color: white;"> + <div style="width: 2em; height: 1em; border: 1px outset black; background-color: #ccc; margin-top: 4px;"> + </div> + </div> + </td> + </tr> + </tbody> + </table> + </td> + <td> + <table style="border: 2px outset #36b; padding: 0 1em .5em .5em;"> + <tbody> + <tr> + <td> + <p><b>Démonstration en JavaScript</b></p> + <div style="width: 5em; height: 5em; border: 2px inset gray; background-color: #fa4;"> + <div style="width: 2em; height: 1em; border: 1px inset black; background-color: #ccc; margin-top: 4px;"> + </div> + </div> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +<p>Remarques à propos de cette démonstration :</p> +<ul> + <li>Le document HTML est lié à la feuille de style de la manière habituelle et est également lié au script.</li> + <li>Le script traite des éléments individuels du DOM. Il modifie le style du carré directement. Il modifie le style du bouton indirectement en changeant un de ses attributs.</li> + <li>En JavaScript, <code>document.getElementById("square")</code> fonctionne de manière similaire au sélecteur CSS <code>#square</code>.</li> + <li>En JavaScript, <code>backgroundColor</code> correspond à la propriété CSS <code>background-color</code>.</li> + <li>Votre navigateur possède une règle de style interne pour <code>button{{ mediawiki.external('disabled=\"true\"') }}</code> qui modifie l'apparence du bouton lorsqu'il est désactivé.</li> +</ul> +<table style="border: 1px solid #36b; padding: 1em; background-color: #fffff4; margin-bottom: .5em;"> + <caption> + Challenge</caption> + <tbody> + <tr> + <td>Modifiez le script pour que le carré se déplace vers la droite de 20 em lorsque sa couleur change et revienne à sa place lors de l'opération inverse.</td> + </tr> + </tbody> +</table> +<h4 id="Pour_continuer" name="Pour_continuer">Pour continuer</h4> +<p>Si vous avez eu des difficultés à comprendre cette page ou si vous avez d'autres commentaires à son sujet, n'hésitez pas à contribuer à sa <a>page de discussion</a>.</p> +<p>Dans cette démonstration, le document HTML est lié au script même si seul l'élément button utilise le script. Mozilla étend CSS afin qu'il puisse lier du code JavaScript (ainsi que du contenu et d'autres feuilles de style) aux éléments sélectionnés. La page suivante en fournit la démonstration : <b><a href="/fr/docs/CSS/Premiers_pas/Liaisons_XBL">Liaisons XBL</a></b></p> diff --git a/files/fr/conflicting/learn/javascript/objects/index.html b/files/fr/conflicting/learn/javascript/objects/index.html new file mode 100644 index 0000000000..c778187586 --- /dev/null +++ b/files/fr/conflicting/learn/javascript/objects/index.html @@ -0,0 +1,372 @@ +--- +title: Introduction à JavaScript orienté objet +slug: Web/JavaScript/Introduction_à_JavaScript_orienté_objet +tags: + - Encapsulation + - Intermédiaire + - JavaScript + - OOP + - Object + - Orienté objet +translation_of: Learn/JavaScript/Objects +translation_of_original: Web/JavaScript/Introduction_to_Object-Oriented_JavaScript +--- +<div>{{jsSidebar("Introductory")}}</div> + +<p>JavaScript possède un grand potentiel pour la programmation orientée objet (aussi appelée {{Glossary("OOP")}}). Cet article débutera par une introduction à la programmation orientée objet puis abordera le modèle objet de JavaScript et finira par les concepts de la programmation orientée objet appliquée à JavaScript.</p> + +<div class="note"> +<p><strong>Note :</strong> Une nouvelle façon de créer des objets a été introduite avec ECMAScript 2015 (ES6) et n'est pas décrite ici. Il s'agit <a href="/fr/docs/Web/JavaScript/Reference/Classes">des classes</a>.</p> +</div> + +<h2 id="Un_aperçu_de_JavaScript">Un aperçu de JavaScript</h2> + +<p>Si vous n'êtes pas certain de connaître certains concepts comme les variables, les types, les fonctions, et les portées vous pouvez lire <a href="/fr/docs/Web/JavaScript/Une_réintroduction_à_JavaScript">Une réintroduction à JavaScript</a>. Vous pouvez également consulter le <a href="/fr/docs/Web/JavaScript/Guide">guide JavaScript</a>.</p> + +<h2 id="La_programmation_orientée_objet">La programmation orientée objet</h2> + +<p>La programmation orientée objet est un paradigme de programmation qui se base sur une abstraction du monde réel pour créer des modèles. Plusieurs techniques sont utilisées, provenant de paradigmes précédents, comme la modularité, le polymorphisme, ou l'encapsulation. Aujourd'hui, de nombreux langages de programmation (Java, JavaScript, C#, C++, Python, PHP, Ruby et Objective-C par exemple) utilisent la programmation orientée objet (OOP en anglais pour <em>Object-Oriented Programmation</em>).</p> + +<p>La programmation orientée objet peut être vue comme une façon de concevoir un ou des logiciel(s) grâce à un ensemble d'objets qui coopèrent plutôt que d'utiliser, avec une approche plus traditionnelle, un ensemble de fonctions ou encore une liste d'instructions à envoyer à un ordinateur. En programmation orientée objet, chaque objet est capable d'envoyer et de recevoir des messages provenant d'autres objets, de traiter des données. Chaque objet peut être compris comme une entité indépendante avec un rôle distinct.</p> + +<p>La programmation orientée objet a pour but de permettre une plus grande flexibilité et maintenabilité du code. Elle est populaire pour les projets logiciels de grande ampleur. Étant donné l'accent mis sur la modularité, le code orienté objet est censé être plus simple à développer, plus facile à reprendre, à analyser et permettre de répondre à des situations complexes en comparaison à d'autres méthodes de programmation moins modulaires.</p> + +<h2 id="Terminologie">Terminologie</h2> + +<dl> + <dt>{{Glossary("Namespace","Espace de noms")}}</dt> + <dd>Un conteneur qui permet aux développeurs d'empaqueter les différentes fonctionnalités d'un programme sous un même nom d'application.</dd> + <dt>{{Glossary("Class", "Classe")}}</dt> + <dd>Définit les caractéristiques de l'objet.</dd> + <dt>{{Glossary("Objet")}}</dt> + <dd>Une instance (un « exemplaire ») d'une classe.</dd> + <dt>{{Glossary("Property", "Propriété")}}</dt> + <dd>Une caractéristique d'un objet (sa couleur par exemple).</dd> + <dt>{{Glossary("Méthode")}}</dt> + <dd>Une capacité d'un objet (changer de couleur par exemple).</dd> + <dt>{{Glossary("Constructeur")}}</dt> + <dd>Une méthode appelée au moment de l'instantiation.</dd> + <dt>{{Glossary("Héritage")}}</dt> + <dd>Une classe peut hériter des caractéristiques et des fonctionnalités d'une autre classe.</dd> + <dt>{{Glossary("Encapsulation")}}</dt> + <dd>Une classe définit uniquement les caractéristiques de son objet, une méthode définit uniquement la façon dont elle s'exécute. On regroupe donc les données et les méthodes qui utilisent ces données.</dd> + <dt>{{Glossary("Abstraction")}}</dt> + <dd>La conjonction entre l'utilisation de l'héritage, de méthodes ou de propriétés d'un objet pour simuler un modèle de la réalité.</dd> + <dt>{{Glossary("Polymorphisme")}}</dt> + <dd>Poly signifie « plusieurs » et morphisme signifie « formes ». Cela signifie que différentes classes peuvent définir la même méthode ou la même propriété.</dd> +</dl> + +<p>Pour une description plus étendue, lire l'article {{interwiki("wikipedia","Programmation_orientée_objet","Programmation orientée objet")}} de Wikipédia.</p> + +<h2 id="Programmation_orientée_prototype">Programmation orientée prototype</h2> + +<p>La programmation orientée prototype est un style de programmation orientée objet qui n'utilise pas les classes. La réutilisation des propriétés d'un objet (appelée héritage pour les langages à classe) est effectuée via des objets qui seront des prototypes pour d'autres objets. Parmi les autres noms de ce modèle, on retrouve la programmation sans classe ou la programmation à base d'instances.</p> + +<p>L'exemple premier d'un langage utilisant les prototypes est le langage de programmation {{interwiki("wikipedia", "Self_(langage)", "Self")}}, développé par David Ungar et Randall Smith. Toutefois, ce modèle de programmation s'est popularisé à différents langages comme JavaScript, Cecil, NewtonScript, Io, MOO, REBOL, Kevo, Squeak (quand le framework Viewer est utilisé pour manipuler des composants Morphic), et d'autres encore.</p> + +<h2 id="La_programmation_orientée_objet_avec_JavaScript">La programmation orientée objet avec JavaScript</h2> + +<h3 id="Les_espaces_de_noms">Les espaces de noms</h3> + +<p>Un espace de noms est un conteneur qui permet de regrouper l'ensemble des fonctionnalités d'une application sous un un nom unique, spécifique à cette application. <strong>En JavaScript, un espace de noms est un objet comme les autres qui contient des méthodes et des propriétés.</strong></p> + +<div class="note"> +<p><strong>Note :</strong> il est important de bien faire la différence avec d'autres langages ou les espaces de noms et les objets sont des entités distinctes. En JavaScript, ce n'est pas le cas.</p> +</div> + +<p>Pourquoi créer un espace de noms en JavaScript ? La réponse est simple, on peut ainsi disposer d'un seul objet global qui contient l'ensemble des variables, méthodes et fonctions en tant que propriétés. L'utilisation d'un tel objet permet ainsi de réduire le risque de conflit (utilisation d'un même nom) au sein d'une application qui en utilise une autre.</p> + +<p>Par exemple : on peut créer un objet global MONAPPLICATION :</p> + +<pre class="brush: js">// espace de nom global +var MONAPPLICATION = MONAPPLICATION || {};</pre> + +<p>Dans l'exemple ci-dessus, on vérifie d'abord que MONAPPLICATION n'est pas déjà défini (dans ce fichier ou dans un autre). S'il est déjà défini, on l'utilise, sinon on crée un objet vide MONAPPLICATION qui recevra les différentes méthodes, fonctions et variables à encapsuler.</p> + +<p>Il est également possible de créer des espaces de noms à un niveau inférieur (une fois qu'on a bien défini le <em>namespace</em> global) :</p> + +<pre class="brush: js">// espace de noms "fils" +MONAPPLICATION.event = {};</pre> + +<p>L'exemple ci-dessous permet de créer un espace de noms et de lui ajouter des variables, des fonctions et des méthodes :</p> + +<pre class="brush: js">// On crée un conteneur MONAPPLICATION.méthodesCommunes pour regrouper certaines méthodes +MONAPPLICATION.méthodesCommunes = { + regExPourNom: "", // on définit une expression rationnelle pour un nom + regExPourTéléphone: "", // une autre pour un numéro de téléphone + validerNom: function(nom){ + // On valide le nom en utilisant + // la regexp par exemple + }, + + validerNumTéléphone: function(numTéléphone){ + // on valide le numéro de téléphone + } +} + +// On utilise un conteneur pour les événements +MONAPPLICATION.event = { + addListener: function(el, type, fn) { + // le corps de la méthode + }, + removeListener: function(el, type, fn) { + // le corps de la méthode + }, + getEvent: function(e) { + // le corps de la méthode + } + + // Il est possible d'ajouter des méthodes et des propriétés +} + +// Exemple de syntaxe pour utiliser la méthode addListener : +MONAPPLICATION.event.addListener("monÉlément", "type", callback);</pre> + +<h3 id="Objets_natifs_standard">Objets natifs standard</h3> + +<p>JavaScript dispose de plusieurs objets essentiels inclus dans le langage. On y trouve entre autres les objets <code>Math</code>, <code>Object</code>, <code>Array</code>, et <code>String</code>. L'exemple ci-après illustre comment utiliser l'objet <code>Math</code> pour obtenir un nombre aléatoire en utilisant la méthode <code>random()</code>.</p> + +<pre class="brush: js">console.log(Math.random()); +</pre> + +<div class="note"><strong>Note :</strong> Cet exemple, ainsi que les suivants, utilisent une fonction {{domxref("console.log()")}} définie globalement. La fonction <code>console.log </code>n'est pas, à proprement parler, une fonctionnalité de JavaScript en tant que telle mais est implémentée dans la plupart des navigateurs à des fins de débogage.</div> + +<p>Voir la page sur <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux">les objets globaux</a> pour une liste de ces objets essentiels.</p> + +<p>En JavaScript, chaque objet est une instance de l'objet <a href="/fr/docs/JavaScript/R%C3%A9f%C3%A9rence_JavaScript/Objets_globaux/Object"><code>Object</code></a> et hérite donc des propriétés et des méthodes de ce dernier.</p> + +<h3 id="Objets_créés_sur_mesure">Objets créés sur mesure</h3> + +<h4 id="Le_constructeur">Le constructeur</h4> + +<p>JavaScript est un langage utilisant les prototypes, il ne dispose pas d'une instruction pour déclarer une classe (à la différence de C++ ou Java). Cela peut sembler déroutant pour les développeurs utilisant d'autres langages de classe. JavaScript utilise des fonctions comme constructeurs pour définir un objet. On définit les propriétés et méthodes d'un objet en définissant une fonction qui sera utilisée par la suite pour construire l'objet souhaité. Ici, on définit un constructeur <code>Personne</code>.</p> + +<pre class="brush: js">var Personne = function () { } +</pre> + +<div class="note"> +<p><strong>Note :</strong> Par convention, le nom d'un constructeur commence par une majuscule. Cela permet de différencier les fonctions classiques des constructeurs et de mieux les utiliser.</p> +</div> + +<h4 id="L'instance">L'instance</h4> + +<p>Pour créer une nouvelle instance, on utilise l'instruction <code>new <em>objet</em></code>, et on affecte le résultat de cette expression à une variable qu'on utilisera par la suite. Il est également possible d'utiliser la méthode <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/create"><code>Object.create</code></a> afin de créer une instance non initialisée.</p> + +<p>Dans l'exemple qui suit, on utilise le constructeur <code>Personne</code> définit précédemment et on crée deux instances grâce à l'opérateur <a href="/fr/docs/JavaScript/Reference/R%C3%A9f%C3%A9rence_JavaScript/Op%C3%A9rateurs/Op%C3%A9rateurs_sp%C3%A9ciaux/L'op%C3%A9rateur_new"><code>new</code></a> (<code>personne1</code> et <code>personne2</code>).</p> + +<pre class="brush: js">var personne1 = new Personne(); +var personne2 = new Personne(); +</pre> + +<div class="note"><strong>Note:</strong> Voir aussi {{jsxref("Object.create()")}} pour une autre méthode d'instanciation.</div> + +<h4 id="Le_constructeur_(suite)">Le constructeur (suite)</h4> + +<p>Le constructeur est la méthode appelée au moment de l'instanciation (l'instant où l'exemplaire de l'objet est créé). En JavaScript, la déclaration vue précédemment suffit à définir un constructeur. Chaque action déclarée dans le constructeur est executée au moment de l'instanciation.</p> + +<p>Le constructeur est utilisé afin de définir les propriétés d'un objet et d'appeler les méthodes nécessaires pour préparer l'objet.</p> + +<p>Dans l'exemple ci-dessous, le constructeur de la classe <code>Personne</code> affiche un message dans la console lorsqu'un objet <code>Personne</code> est instancié.</p> + +<pre class="brush: js">function Personne() { + console.log('Nouvel objet Personne créé'); +} + +var personne1 = new Personne(); +// affiche "Nouvel objet Personne créé" dans la console +var personne2 = new Personne(); +// affiche "Nouvel objet Personne créé" dans la console +</pre> + +<h4 id="Les_propriétés_(ou_attributs)">Les propriétés (ou attributs)</h4> + +<p>Les propriétés sont des variables appartenant à un objet. Les propriétés d'un objet peuvent être définies au sein du prototype afin que tous les objets qui en héritent puissent disposer de cette propriété via la chaîne de prototypes.</p> + +<p>Dans le contexte d'un objet, l'accès à ses propriétés se fait grâce au mot-clé <code>this</code>, qui fait référence à l'objet courant. L'accès (en écriture ou lecture) à une propriété depuis un autre objet se fait grâce à la syntaxe <code>nomInstance.propriété</code>. Cette syntaxe est la même pour d'autres langages comme C++, Java, etc.</p> + +<p>Dans l'exemple qui suit, on crée la propriété <code>nom</code> pour le constructeur <code>Personne</code> et on définit sa valeur lors de l'instanciation :</p> + +<pre class="brush: js">function Personne(nom) { + this.nom = nom; + console.log('Nouvel objet Personne créé'); +} + +var personne1 = new Personne('Alice'); +var personne2 = new Personne('Bob'); + +//on affiche le nom de personne1 +console.log('personne1 est ' + personne1.nom); // personne1 est Alice +console.log('personne2 est ' + personne2.nom); // personne2 est Bob +</pre> + +<h4 id="Les_méthodes">Les méthodes</h4> + +<p>Les méthodes sont également des propriétés d'un objet : ce sont des fonctions plutôt que des objets. L'appel à une méthode se fait de la même façon que pour l'accès à une propriété, les parenthèses <code>()</code> en plus, éventuellement avec des arguments. Pour définir une méthode dont disposeront tous les objets qu'on souhaite définir, il faut l'assigner comme propriété de la propriété <code>prototype</code> de l'objet. Le nom auquel est assigné la fonction est le nom de la méthode.</p> + +<p>Dans l'exemple qui suit, on définit et utilise la méthode <code>direBonjour()</code> pour un objet <code>Personne</code>.</p> + +<pre class="brush: js">function Personne(nom) { + this.nom = nom; +} + +Personne.prototype.direBonjour = function() { + console.log("Bonjour, je suis " + this.nom); +}; + +var personne1 = new Personne('Alice'); +var personne2 = new Personne('Robert'); + +// on appelle la méthode. +personne1.direBonjour(); // Bonjour, je suis Alice +</pre> + +<p>En JavaScript, les méthodes sont des fonctions classiques simplement liées à un objet en tant que propriété. On peut donc appeler la méthode « en dehors de l'objet ». Par exemple :</p> + +<pre class="brush: js">function Personne(nom) { + this.nom = nom; +} + +Personne.prototype.afficherNom = function() { + console.log("Je suis "+this.nom); +}; + +var personne1 = new Personne('Gustave'); +var donnerUnNom = personne1.afficherNom; + +personne1.afficherNom(); // 'Je suis Gustave' +donnerUnNom(); // undefined +console.log(donnerUnNom === personne1.afficherNom); // true +console.log(donnerUnNom === Personne.prototype.afficherNom); // true +donnerUnNom.call(personne1); // 'Je suis Gustave' +</pre> + +<p>On voit ici plusieurs concepts. Tout d'abord, il n'existe pas de méthode propre à un objet car toutes les références à la méthode vont utiliser la fonction définie pour le prototype. Ensuite, JavaScript fait un lien entre le contexte de l'objet courant et la variable <strong>this</strong> quand une fonction est appelée en tant que propriété d'un objet. Ceci est équivalent à utiliser la fonction <code>call</code> :</p> + +<pre class="brush: js">donnerUnNom.call(personne1); // 'Gustave' +</pre> + +<div class="note"><strong>Note :</strong> Voir les pages <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function/call">Function.call</a> et <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function/apply">Function.apply</a> pour plus d'informations. Voir également la page sur l'opérateur <a href="/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_this">this</a> et les différents contextes.</div> + +<h4 id="L'héritage">L'héritage</h4> + +<p>L'héritage permet de créer un objet spécialisé qui découle d'un autre objet. (<em>JavaScript ne supporte que l'héritage unique : c'est-à-dire qu'un objet peut spécialiser un autre objet mais ne peut pas en spécialiser plusieurs à la fois</em>). L'objet spécialisé est appelé l'objet fils et l'objet générique appelé parent. Pour indiquer un lien d'héritage en JavaScript, on assigne une instance de l'objet parent à la propriété <code>prototype</code> de l'objet fils. Grâce aux navigateurs récents, il est également possible d'utiliser la méthode <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/create#H.C3.A9ritage_avec_Object.create">Object.create</a> afin d'implémenter l'héritage.</p> + +<div class="note"> +<p><strong>Note :</strong> Il est également nécessaire de renseigner la propriété <code>prototype.constructor</code> avec le constructeur de la classe parente ! Voir la page de <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/prototype">Object:prototype</a> pour plus d'informations.</p> +</div> + +<p>Dans les exemples qui suivent, on définit le constructeur <code>Étudiant</code> pour créer des objets bénéficiant des propriétés d'un objet <code>Personne</code>. Pour cet objet fils, on redéfinit la méthode <code>direBonjour()</code> et on ajoute la méthode <code>aurevoir()</code>.</p> + +<pre class="brush: js">// Le constructeur Personne +var Personne = function(nom) { + this.nom = nom; +}; + +Personne.prototype.marcher = function(){ + console.log("Je marche !"); +}; +Personne.prototype.direBonjour = function(){ + console.log("Bonjour, je suis "+this.nom); +}; + +// Le constructeur Étudiant +function Étudiant(nom, sujet) { + // On appelle le constructeur parent + // pour profiter des propriétés définies dans la fonction + Personne.call(this, nom); + this.sujet = sujet; +} + +// On déclare l'héritage pour bénéficier de la chaîne de prototypes +// Attention à ne pas utiliser "new Personne()". Ceci est incorrect +// on ne peut pas fournir l'argument "nom". C'est pourquoi on appelle +// Personne avant, dans le constructeur Étudiant. +Étudiant.prototype = Object.create(Personne.prototype); + +// on corrige le constructeur qui pointe sur celui de Personne +Étudiant.prototype.constructor = Étudiant; + +// on remplace la méthode direBonjour pour l'étudiant +Étudiant.prototype.direBonjour = function(){ + console.log("Bonjour, je suis "+ this.nom + ". J'étudie " + this.sujet + "."); +}; + +// on ajoute la méthode aurevoir +Étudiant.prototype.aurevoir = function(){ + console.log('Au revoir'); +}; + +var étudiant1 = new Étudiant("Jean", "la physique appliquée"); +étudiant1.direBonjour(); +étudiant1.marcher(); +étudiant1.aurevoir(); + +// on vérifie l'héritage +console.log(étudiant1 instanceof Personne); // true +console.log(étudiant1 instanceof Étudiant); // true +</pre> + +<p>Les anciens navigateurs peuvent ne pas disposer de la méthode <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/create"><code>Object.create</code></a>. Pour résoudre ce problème, il est possible d'utiliser une prothèse d'émulation (<em>polyfill</em> ou <em>shim</em>) comme :</p> + +<pre class="brush: js">function createObject(proto) { + function ctor() { } + ctor.prototype = proto; + return new ctor(); +} + +// Exemple d'utilisation: +Étudiant.prototype = createObject(Personne.prototype);</pre> + +<div class="note"><strong>Note :</strong> Voir la page <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/create">Object.create</a> pour plus d'informations et pour une prothèse d'émulation pour les anciens navigateurs.</div> + +<p class="note">Il peut parfois être utile de vérifier la valeur de this utilisée au sein de la fonction pour appliquer les bons traitements. Par exemple, on pourra utiliser</p> + +<pre class="brush: js">var Person = function(nom) { + if (this instanceof Personne) { + this.nom = nom; + } else { + return new Personne(nom); + } +} +</pre> + +<h4 id="L'encapsulation">L'encapsulation</h4> + +<p>Dans l'exemple précédent, <code>Étudiant</code> n'a pas besoin de réimplémenter la méthode <code>marcher() </code>de <code>Personne</code> : il peut l'utiliser directement. L'encapsulation signifie qu'on a seulement besoin d'implémenter les changements (ex : <code>direBonjour</code>) par rapport à l'objet parent, le reste sera hérité naturellement et pourra être utilisé par l'objet fils. Chaque prototype regroupe les données et les méthodes dans une seule et même unitée.</p> + +<p>D'autres langages permettent de masquer des informations grâce des méthodes/propriétés privées et/ou protégées. Bien qu'il soit possible de simuler ce comportement en JavaScript, cet aspect n'est pas obligatoire en programmation orientée objet.</p> + +<h4 id="L'abstraction">L'abstraction</h4> + +<p>L'abstraction permet de modéliser le problème qu'on souhaite résoudre. On peut créer un modèle abstrait en utilisant l'héritage (autrement dit une spécialisation des objets) et la composition. Comme on l'a vu JavaScript permet de créer un héritage (simple) entre objets et la composition est obtenue car les propriétés d'un objet peuvent elles-mêmes être des objets.</p> + +<p>L'objet JavaScript <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function"><code>Function</code></a> hérite de <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object">Object</a></code> (on a l'héritage) et la propriété <code>Function.prototype</code> est une instance d'<code>Object</code> (on a la composition)</p> + +<pre class="brush: js">var toto = function(){}; +console.log('toto est une Function : ' + (toto instanceof Function) ); +console.log('toto.prototype est un Object : ' + (toto.prototype instanceof Object) ); +</pre> + +<h4 id="Le_polymorphisme">Le polymorphisme</h4> + +<p>Le polymorphisme est rendu possible par l'héritage des méthodes. Les différents objets fils peuvent définir différentes méthodes avec le même nom. Ainsi si on itère sur une collection d'objets dont on sait que ces objets sont des instances du type parent, on pourra utiliser la méthode nommée qui utilisera la méthode définie pour l'objet fils.</p> + +<h2 id="Notes">Notes</h2> + +<p>Les techniques présentées ici ne sont qu'un fragment des techniques utilisables en JavaScript. JavaScript, grâce à sa nature prototypale, est très flexible et permet d'implémenter différentes façons de programmer avec des objets.</p> + +<p>Les techniques présentées ici ne tirent pas partie de l'implémentation des objets d'autres langages ni de bidouilles spécifiques au langage. Il existe d'autres techniques permettant de construire différentes architectures objet en JavaScript mais celles-ci dépassent le cadre de cet article.</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="/fr/docs/Web/JavaScript/Guide">Guide JavaScript</a> sur MDN</li> + <li>L'article Wikipédia : <a href="https://fr.wikipedia.org/wiki/Programmation_orient%C3%A9e_objet">Programmation orientée objet</a></li> + <li>L'article Wikipédia : <a href="https://fr.wikipedia.org/wiki/Programmation_orient%C3%A9e_prototype">Programmation orientée prototype</a></li> + <li>L'article Wikipédia : <a href="https://fr.wikipedia.org/wiki/Encapsulation_(programmation)">l'encapsulation</a></li> + <li><a href="https://davidwalsh.name/javascript-objects">Aperçu de JavaScript pour la POO</a>, une série d'articles en anglais écrite par Kyle Simpson</li> + <li>{{jsxref("Function.prototype.call()")}}</li> + <li>{{jsxref("Function.prototype.apply()")}}</li> + <li>{{jsxref("Object.create()")}}</li> + <li><a href="/fr/docs/Web/JavaScript/Reference/Strict_mode">Le mode strict</a></li> +</ul> |