◆ Portail Antalaha

Annuaire › Code ouvert

Convertisseur Ariary, Euro, Dollar

tutorial · Voir le site ↗
Connectez-vous pour copier ce site

Code publié par son auteur, en lecture seule. « Copier dans mon espace » crée un nouveau site à vous (non publié) que vous pouvez modifier librement.

index.html · 5.8 Ko

<!DOCTYPE html>
<!--
  ============================================================
  Fichier : index.html
  Rôle    : structure (le « squelette ») du convertisseur de monnaie.
  Dépend de : css/style.css (apparence) et js/app.js (comportement).
  ------------------------------------------------------------
  Règle d'or : le HTML décrit CE QUE LA PAGE CONTIENT,
  le CSS décrit COMMENT ELLE SE VOIT,
  le JavaScript décrit CE QU'ELLE FAIT.
  ============================================================
-->
<html lang="fr">
<head>
  <meta charset="utf-8">
  <!-- Indispensable sur téléphone : la page prend la largeur de l'écran -->
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Convertisseur Ariary, Euro, Dollar</title>
  <!-- Chemin RELATIF (sans « / » au début) : le site est servi dans un sous-dossier -->
  <link rel="stylesheet" href="css/style.css">
</head>
<body>

  <header class="entete">
    <!-- Image décorative : alt="" dit aux lecteurs d'écran de l'ignorer -->
    <img class="entete__image" src="medias/antalaha-baie-aube-paysage.svg" alt="">
    <div class="entete__texte">
      <h1>Convertisseur de monnaie</h1>
      <p>Ariary (Ar), Euro (€) et Dollar ($)</p>
    </div>
  </header>

  <main class="page">

    <!-- ===== Section 1 : la conversion ===== -->
    <section class="carte" aria-labelledby="titre-conversion">
      <h2 id="titre-conversion">Convertir un montant</h2>

      <!-- novalidate : c'est NOTRE JavaScript qui valide, pour afficher nos messages en français -->
      <form id="formulaire-conversion" novalidate>

        <div class="champ">
          <label for="montant">Montant</label>
          <!-- type="text" + inputmode="decimal" : clavier numérique sur mobile, mais on accepte aussi la virgule -->
          <input id="montant" name="montant" type="text" inputmode="decimal"
                 autocomplete="off" placeholder="Exemple : 25 000"
                 aria-describedby="erreur-montant">
          <!-- role="alert" : le message est lu à voix haute dès qu'il apparaît -->
          <p id="erreur-montant" class="erreur" role="alert"></p>
        </div>

        <div class="ligne-devises">
          <div class="champ">
            <label for="devise-source">De</label>
            <select id="devise-source" name="source">
              <option value="MGA">Ariary (Ar)</option>
              <option value="EUR">Euro (€)</option>
              <option value="USD">Dollar ($)</option>
            </select>
          </div>

          <!-- Bouton qui échange les deux devises -->
          <button type="button" id="bouton-inverser" class="bouton bouton--discret"
                  aria-label="Inverser les deux devises" title="Inverser">⇄</button>

          <div class="champ">
            <label for="devise-cible">Vers</label>
            <select id="devise-cible" name="cible">
              <option value="MGA">Ariary (Ar)</option>
              <option value="EUR" selected>Euro (€)</option>
              <option value="USD">Dollar ($)</option>
            </select>
          </div>
        </div>

        <button type="submit" class="bouton">Convertir</button>
      </form>

      <!-- aria-live="polite" : un lecteur d'écran annonce le nouveau résultat -->
      <div id="resultat" class="resultat" aria-live="polite">
        Saisissez un montant puis appuyez sur « Convertir ».
      </div>
    </section>

    <!-- ===== Section 2 : les taux ===== -->
    <section class="carte" aria-labelledby="titre-taux">
      <h2 id="titre-taux">Les taux de change</h2>
      <p class="aide">
        Ce site <strong>n'a pas accès à Internet</strong> : il ne peut pas connaître le taux du jour.
        Les valeurs ci-dessous sont des <strong>exemples</strong>. Demandez le taux à votre
        banque ou à votre changeur, puis modifiez-le ici : tous les calculs en tiennent compte.
      </p>

      <form id="formulaire-taux" novalidate>
        <div class="champ">
          <label for="taux-eur">1 Euro (€) vaut combien d'Ariary ?</label>
          <input id="taux-eur" type="text" inputmode="decimal" autocomplete="off"
                 aria-describedby="erreur-taux">
        </div>
        <div class="champ">
          <label for="taux-usd">1 Dollar ($) vaut combien d'Ariary ?</label>
          <input id="taux-usd" type="text" inputmode="decimal" autocomplete="off"
                 aria-describedby="erreur-taux">
        </div>
        <p id="erreur-taux" class="erreur" role="alert"></p>

        <div class="boutons">
          <button type="submit" class="bouton">Enregistrer les taux</button>
          <button type="button" id="bouton-reinitialiser" class="bouton bouton--discret">Valeurs d'exemple</button>
        </div>
      </form>
    </section>

    <!-- ===== Section 3 : tableau de référence (rempli par JavaScript) ===== -->
    <section class="carte" aria-labelledby="titre-tableau">
      <h2 id="titre-tableau">Repères rapides</h2>
      <p class="aide">Ce tableau est construit par JavaScript à partir des taux ci-dessus.</p>
      <div class="tableau-defilant">
        <table>
          <caption class="sr-only">Équivalences de quelques montants en Ariary</caption>
          <thead>
            <tr><th scope="col">Ariary</th><th scope="col">Euro</th><th scope="col">Dollar</th></tr>
          </thead>
          <!-- Les lignes seront ajoutées ici par la fonction afficherReperes() -->
          <tbody id="corps-reperes"></tbody>
        </table>
      </div>
    </section>

  </main>

  <footer class="pied">
    <p>Site pédagogique du Portail Antalaha – code ouvert : lisez <code>js/app.js</code> pour comprendre.</p>
  </footer>

  <!-- Le script est chargé EN DERNIER : ainsi tous les éléments ci-dessus existent déjà
       quand le JavaScript cherche à les retrouver avec getElementById. -->
  <script src="js/app.js"></script>
</body>
</html>