◆ Portail Antalaha

Annuaire › Code ouvert

Maison 3D pour une agence immobilière

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 · 4.0 Ko

<!DOCTYPE html>
<!--
  Maison 3D — Tutoriel Zdog niveau INTERMÉDIAIRE
  --------------------------------------------------------------------------
  Cas d'usage : une agence immobilière d'Antalaha présente une maison
  à vendre. Le visiteur peut changer de vue (face / côté / dessus), zoomer,
  tourner la maison au doigt ou à la souris et essayer plusieurs couleurs
  de façade.

  Structure :  <header> titre · <main> canevas + commandes · <footer> notes
-->
<html lang="fr">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Maison 3D — Zdog</title>
  <meta name="description" content="Présentation 3D interactive d'une maison avec Zdog.">
  <link rel="stylesheet" href="css/style.css">
</head>
<body>

  <noscript>
    <p class="noscript">La présentation 3D a besoin de JavaScript. Activez-le pour visiter la maison.</p>
  </noscript>

  <header class="entete">
    <img src="medias/maison.svg" alt="" width="32" height="32">
    <div>
      <h1>Maison à Antalaha</h1>
      <p class="sous-titre">Agence Vanille Immobilier · maison à étage avec véranda</p>
    </div>
  </header>

  <main>
    <!-- ================= LE CANEVAS 3D ================= -->
    <!-- .scene donne sa taille au canevas (voir style.css) ; Zdog la mesure. -->
    <div class="scene">
      <canvas id="maison-canvas" class="zdog-canvas" width="320" height="300" role="img"
              aria-label="Maquette 3D d'une maison à étage avec véranda, escalier extérieur et deux arbres. Faites glisser pour la tourner, ou utilisez les boutons de vue."></canvas>
    </div>
    <!-- aria-live : les lecteurs d'écran annoncent le changement de vue -->
    <p id="info-vue" class="info" aria-live="polite">Affichage : vue libre</p>

    <!-- ================= COMMANDES ================= -->
    <section class="commandes" aria-label="Commandes de la visite">

      <fieldset>
        <legend>Point de vue</legend>
        <div class="rangee">
          <button type="button" class="bouton" id="btn-face">Vue de face</button>
          <button type="button" class="bouton" id="btn-cote">Vue de côté</button>
          <button type="button" class="bouton" id="btn-dessus">Vue de dessus</button>
          <!-- aria-pressed : bouton « interrupteur » (enfoncé ou non) -->
          <button type="button" class="bouton" id="btn-auto" aria-pressed="false">Rotation auto</button>
        </div>
      </fieldset>

      <fieldset>
        <legend>Zoom</legend>
        <div class="rangee">
          <label for="ctrl-zoom" class="visuel-cache">Niveau de zoom</label>
          <input type="range" id="ctrl-zoom" min="0.6" max="2" step="0.05" value="1">
          <output id="txt-zoom" for="ctrl-zoom">100 %</output>
        </div>
      </fieldset>

      <fieldset>
        <legend>Couleur de la façade</legend>
        <!-- Les boutons sont créés par js/main.js à partir de Maison.FACADES -->
        <div class="rangee" id="choix-facade"></div>
      </fieldset>
    </section>

    <p id="info-dpr" class="info"></p>
  </main>

  <footer class="pied">
    <p>Tutoriel Zdog intermédiaire · Portail Antalaha. Lisez le code dans
       <code>js/</code> : un fichier par objet 3D (maison, véranda, arbre, sol) et un fichier pour la caméra.</p>
  </footer>

  <!-- ================= SCRIPTS (ordre important) =================
       Chaque fichier s'appuie sur les précédents :
       config  -> constantes et couleurs
       outils  -> fonctions utilitaires (couleurs, hasard, fenêtres)
       sol / maison / veranda / arbre -> fabriques d'objets 3D
       camera  -> vues et transitions
       main    -> assemblage et boucle d'animation -->
  <script src="/libs/zdog.min.js"></script>
  <script src="js/config.js"></script>
  <script src="js/outils.js"></script>
  <script src="js/sol.js"></script>
  <script src="js/maison.js"></script>
  <script src="js/veranda.js"></script>
  <script src="js/arbre.js"></script>
  <script src="js/camera.js"></script>
  <script src="js/main.js"></script>
</body>
</html>