Author: Tale spé NSI 2020 - 2021

Projets

Site avec un piano fonctionnelle , un générateur de…

Site qui renvoie aléatoirement vers un piano fonctionnel, un générateur de citation, ou un compte à rebours.

Ce projet est un site composé de 4 pages codées en html : 

La page principale

  • Présentation 

Voici la page principale de notre site, c’est elle qui renverra l’utilisateur vers 3 autres pages au hasard grâce à un script javascript que vous retrouver plus tard dans cette article. La redirection vers les sites est effectué par une interaction sur un bouton cliquable situé au centre de la page. De plus autre bouton placé en bas à droite de la page permet de changer la couleur du dégradé de fond.

  • Le code HTML
<html lang="fr">
<head>
        <link rel="stylesheet" href="main.css">
        <link rel="icon" type="image/ico" href="favicon.ico" />
        <title>Bienvenue</title>
        <meta charset="utf-8"/>
        <script src="https://package.nsi.xyz/api/"></script>
        <nsi-xyz add="menu" ref="0NSI 2020"></nsi-xyz>
</head>
<body>
  <div id="container" class="orange1">
        <h2> CLIQUEZ SUR CE BOUTON POUR ACCÉDER À UN DE NOS SITES</h2>
        <button id="style_boutton"; type="button"; ><h2>CLIQUEZ MOI</h2></button>
  </div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="target" class="orange"></button>
</body>
  • Le code CSS
html{
        margin: 0;
        height: 100%;
}
 
body {
    font-family: Verdana;
 
}
 
#container {
    width: 32rem;
    height: 21rem;
    box-shadow: 0 0 1rem 0 rgba(0, 0, 0, .2);
    border-radius: 20px;
    overflow: hidden;
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
 
 
 
h2{
  color: #d3d3d3;
  text-align: center;
}
 
 
 
#style_boutton {
        border-radius: 20px;
    font-family: Verdana;
    animation: boutton_animation 3s infinite;
    background-color: transparent;
    color: #C0C0C0;
    height: 6rem;
    width: 15rem;
    border-width: 4px;
    margin: 0;
    position: absolute;
    top: 52%;
    left: 50%;
    transform: translate(-50%, -50%);
    transition: 0.3s;
}
 
 
 
#style_boutton:hover {
    animation: boutton_animation 2s ease infinite;
    animation-fill-mode: forwards;
    cursor: pointer;
    height:40%;
    width:60%;
    font-size: 100%;
}
 
 
 
@keyframes boutton_animation {
    0% {border-color: red;}
    25%{border-color:yellow;}
                35%{border-color:orange;}
    50%{border-color:green;}
    75%{border-color:blue;}
    100% {border-color: purple;}
}
 
 
 
html {
  background: linear-gradient(to bottom right, #1B998B, #0D1317);
}
.black {
     background: linear-gradient(to bottom right, #006BA6, #D81159);
}
.blue {
     background: linear-gradient(to bottom right, #C81D25, #23395B);
}
.orange{
     background: linear-gradient(to bottom right, #1B998B, #0D1317);
}
.black1 {
     background: linear-gradient(to top left , #006BA6, #D81159);
}
.blue1 {
     background: linear-gradient(to top left , #C81D25, #23395B);
}
.orange1 {
     background: linear-gradient(to top left , #1B998B, #0D1317);
}
#target {
          height: 50px;
          width: 50px;
        color: #fff;
        border-radius: 50%;
          display: inline-block;
          text-shadow: #000 1px 1px 1px;
          cursor: pointer;
          border: none;
          position:absolute;
          bottom:0;
          right:0;
          transition: 0.5s;
}
#target:hover{
          height: 58px;
          width: 58px;
}
  • Les scripts javascript
  • Le script changeur de thème

Ce script sera exécuté lorsque l’utilisateur appuiera sur le bouton en bas à droite de l’écran. Il changera alors la class de l’arrière-plan. Les classes (dans le css) « black », « blue », et « orange » sont utilisé pour l’arrère plan de l’html alors que « black1 », « blue1 », et « orange1 » sont utilisé pour l’arrière plan du container au ilieu de l’écran.

<script>
    var colors = [
    'orange',
    'blue',
    'black'
  ];
    var colors1 = [
    'orange1',
    'blue1',
    'black1'
  ];
    var currentColor = 0;
    var currentColor1 = 0;
    var target = jQuery('#target');
    var target1 = jQuery('html');
    var target2 = jQuery('#container');
 
 
    target.click(function (evt) {
      currentColor += 1;
      currentColor1 += 1;
      currentColor %= colors.length;
      currentColor1 %= colors1.length;
      target1.prop('class', colors[currentColor]);
      target.prop('class', colors[currentColor]);
      target2.prop('class', colors1[currentColor1]);
 
    });
</script>
Télécharger

Le scripte qui renvoi vers d'autre sites
Lorsque le bouton au milieu de l'écran est utilisé, le script sera utilisé, et l'utilisateur sera renvoyé vers une de nos pages aléatoirement.

<script>
  var links = new Array();
  links[0] = "http://kebab.nsi42.net/new/compte_a_rebours.html";
  links[1] = "http://kebab.nsi42.net/new/citation.html";
  links[2] = "http://kebab.nsi42.net/new/piano.html";
 
  function openLink() {
    var i = Math.floor(Math.random() * links.length);
    parent.location = links[i];
    return false;
  }
</script>

Le piano

  • Présentation

Voici notre page piano dans laquelle est présent un « extrait » de piano que l’utilisateur pourra utiliser grâce aux touches de son clavier. Lorsque l’utilisateur appuiera sur l’une des touches du clavier, la note correspondante à la touche s’affichera au dessus du piano.

  • Le code HTML
<html lang="fr">
<head>
        <title>Piano</title>
        <link rel="stylesheet" type="text/css" href="piano111.css">
        <meta charset="utf-8">
  <script src="https://package.nsi.xyz/api/"></script>
</head>
<header>
  <h1>Piano</h1>
  <h2>Afin d'utiliser ce magnifique piano il faut utiliser les touches de ton clavier. Regarde le tableau de correspondance des touches. Et vas y petit Mozart.</h2>
</header>
<body>
  <nsi-xyz add="menu" ref="0NSI 2020"></nsi-xyz>
  <section id="wrap">
    <section id="main">
        <div class="nowplaying"></div>
        <div class="keys">
                        <div data-key="81" class="key" data-note="Do"><p>Q</p></div>
                        <div data-key="90" class="key sharp" data-note="Do#"><p>Z</p></div>
                        <div data-key="83" class="key" data-note="Ré"><p>S</p></div>
                        <div data-key="69" class="key sharp" data-note="Ré#"><p>E</p></div>
                        <div data-key="68" class="key" data-note="Mi"><p>D</p></div>
                        <div data-key="70" class="key" data-note="Fa"><p>F</p></div>
                        <div data-key="84" class="key sharp" data-note="Fa#"><p>T</p></div>
                        <div data-key="71" class="key" data-note="Sol"><p>G</p></div>
                        <div data-key="89" class="key sharp" data-note="Sol#"><p>Y</p></div>
                        <div data-key="72" class="key" data-note="La"><p>H</p></div>
                        <div data-key="85" class="key sharp" data-note="La#"><p>U</p></div>
                        <div data-key="74" class="key" data-note="Si"><p>J</p></div>
                        <div data-key="75" class="key" data-note="Do"><p>K</p></div>
                        <div data-key="79" class="key sharp" data-note="Do#"><p>O</p></div>
                        <div data-key="76" class="key" data-note="Ré"><p>L</p></div>
                        <div data-key="80" class="key sharp" data-note="Ré#"><p>P</p></div>
                        <div data-key="77" class="key" data-note="Mi"><p>M</p></div>
        </div>
 
      <audio data-key="81" src="http://carolinegabriel.com/demo/js-keyboard/sounds/040.wav"></audio>
      <audio data-key="90" src="http://carolinegabriel.com/demo/js-keyboard/sounds/041.wav"></audio>
      <audio data-key="83" src="http://carolinegabriel.com/demo/js-keyboard/sounds/042.wav"></audio>
      <audio data-key="69" src="http://carolinegabriel.com/demo/js-keyboard/sounds/043.wav"></audio>
      <audio data-key="68" src="http://carolinegabriel.com/demo/js-keyboard/sounds/044.wav"></audio>
      <audio data-key="70" src="http://carolinegabriel.com/demo/js-keyboard/sounds/045.wav"></audio>
      <audio data-key="84" src="http://carolinegabriel.com/demo/js-keyboard/sounds/046.wav"></audio>
      <audio data-key="71" src="http://carolinegabriel.com/demo/js-keyboard/sounds/047.wav"></audio>
      <audio data-key="89" src="http://carolinegabriel.com/demo/js-keyboard/sounds/048.wav"></audio>
      <audio data-key="72" src="http://carolinegabriel.com/demo/js-keyboard/sounds/049.wav"></audio>
      <audio data-key="85" src="http://carolinegabriel.com/demo/js-keyboard/sounds/050.wav"></audio>
      <audio data-key="74" src="http://carolinegabriel.com/demo/js-keyboard/sounds/051.wav"></audio>
      <audio data-key="75" src="http://carolinegabriel.com/demo/js-keyboard/sounds/052.wav"></audio>
      <audio data-key="79" src="http://carolinegabriel.com/demo/js-keyboard/sounds/053.wav"></audio>
      <audio data-key="76" src="http://carolinegabriel.com/demo/js-keyboard/sounds/054.wav"></audio>
      <audio data-key="80" src="http://carolinegabriel.com/demo/js-keyboard/sounds/055.wav"></audio>
      <audio data-key="77" src="http://carolinegabriel.com/demo/js-keyboard/sounds/056.wav"></audio>
      </section>
  </section>
 
    <table class="tableau-style">
 
        <thead>
            <tr>
                <th>Do</th>
                <th>Ré</th>
                <th>Mi</th>
                <th>Fa</th>
                <th>Sol</th>
                <th>La</th>
                <th>Si</th>
                <th>Do</th>
                <th>Ré</th>
                <th>Mi</th>
                <th>Do#</th>
                                <th>Ré#</th>
                                <th>Fa#</th>
                                <th>Sol#</th>
                                <th>La#</th>
                <th>Do#</th>
                                <th>Ré#</th>
            </tr>
        </thead>
 
 
        <tbody>
            <tr>
                <td>Q</td>
                <td>S</td>
                <td>D</td>
                <td>F</td>
                <td>G</td>
                <td>H</td>
                <td>J</td>
                <td>K</td>
                <td>L</td>
                <td>M</td>
                <td>Z</td>
                <td>E</td>
                <td>T</td>
                <td>Y</td>
                <td>U</td>
                <td>O</td>
                <td>P</td>
 
            </tr>
 
        </tbody>
 
    </table>
  • Le code CSS
html{
  background: linear-gradient(#006494, #FF1053);
        margin: 0;
        height: 100%;
}
 
body  {
        font-family: 'Noto Serif', serif;
        text-align: center;
      }
 
 
header {
      position: relative;
      margin: 30px 0;
    }
 
header:after {
      content: '';
      width: 460px;
      height: 15px;
      display: inline-block;
      text-align: center;
      background-size: 70%;
    }
 
h1 {
      color: #fff;
      font-size: 50px;
      font-weight: 400;
      letter-spacing: 0.18em;
      text-transform: uppercase;
      margin: 0;
    }
 
h2 {
      color: #fff;
      font-size: 24px;
      font-style: italic;
      font-weight: 400;
      margin: 0 250px 30px;
 
    }
 
 
 
.nowplaying {
      font-size: 120px;
      line-height: 1;
      color: #eee;
      text-shadow: 0 0 5rem #028ae9;
      transition: all .07s ease;
      min-height: 120px;
    }
 
.keys {
      display: block;
      width: 100%;
      height: 350px;
      max-width: 880px;
      position: relative;
      margin: 40px auto 0;
      cursor: none;
    }
 
.key {
      position: relative;
      border: 4px solid black;
      border-radius: .5rem;
      transition: all .07s ease;
      display: block;
      box-sizing: border-box;
      z-index: 2;
    }
 
.key:not(.sharp) {
      float: left;
      width: 10%;
      height: 100%;
      background: rgba(255, 255, 255, .8);
    }
 
.key.sharp {
      position: absolute;
      width: 6%;
      height: 60%;
      background: #000;
      color: #eee;
      top: 0;
      z-index: 3;
    }
 
.key[data-key="90"] {
      left: 7%;
    }
 
.key[data-key="69"] {
      left: 17%;
    }
 
.key[data-key="84"]  {
      left: 37%;
    }
 
.key[data-key="89"] {
      left: 47%;
    }
 
.key[data-key="85"] {
      left: 57%;
    }
 
.key[data-key="79"] {
      left: 77%;
    }
 
.key[data-key="80"] {
      left: 87%;
    }
 
.playing {
      transform: scale(.95);
      border-color: #028ae9;
      box-shadow: 0 0 1rem #028ae9;
 
    }
 
.hints {
      display: block;
      width: 100%;
      opacity: 0;
      position: absolute;
      bottom: 7px;
 
      font-size: 20px;
        }
 
 
 
.tableau-style  {
        cursor: none;
    border-collapse: collapse;
    min-width: 400px;
         font-style: italic;
    width: auto;
    box-shadow: 0 5px 50px rgba(0,0,0,0.15);
    margin: 100px auto;
    border: 2px solid black;
}
 
thead tr {
    background-color: black;
    color: #fff;
    text-align: center;
}
 
tbody tr {
    background-color: white;
    color: black;
    text-align: center;
}
 
th, td {
    padding: 15px 20px;
}
 
tbody tr, td, th {
    border: 1px solid ;
}
 
tbody tr:nth-child(even){
    background-color: #f3f3f3;
}
  • Le scripts javascript du piano

Dans ce script javascript est présent une ligne très importante :

if (e.repeat) return;

qui empèche la répétition de la note de musique qui ferait planter le piano lorsque l’utilisateur maintiendrai la touche enfoncée.

<script>
                const keys = document.querySelectorAll(".key"),
                note = document.querySelector(".nowplaying"),
                hints = document.querySelectorAll(".hints");
 
                function playNote(e) {
                const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`),
                key = document.querySelector(`.key[data-key="${e.keyCode}"]`);
 
                if (!key) return;
                if (e.repeat) return;
 
                const keyNote = key.getAttribute("data-note");
 
                key.classList.add("playing");
                note.innerHTML = keyNote;
                audio.currentTime = 0;
                audio.play();
                }
 
                function removeTransition(e) {
                if (e.propertyName !== "transform") return;
                this.classList.remove("playing");
                }
 
                function hintsOn(e, index) {
                e.setAttribute("style", "transition-delay:" + index * 50 + "ms");
                }
 
                hints.forEach(hintsOn);
 
                keys.forEach(key => key.addEventListener("transitionend", removeTransition));
 
                window.addEventListener("keydown", playNote);
        </script>

Le compte à rebours

  • Présentation

Voici la page compte à rebours de la fin présumé d’internet. Au centre de l’ecran se trouve le compte à rebours ayant pour fin 2023 sur un fond gif.

  • Le code HTML
<html lang="fr">
<html>
<head>
  <link rel="stylesheet" href="compte_a_rebours.css">
  <link rel="icon" type="image/ico" href="favicon.ico" />
  <title>END</title>
  <meta charset="utf-8"/>
  <script src="https://package.nsi.xyz/api/"></script>
</head>
<body>
<nsi-xyz add="menu" ref="0NSI 2020"></nsi-xyz>
<div class="container">
  <h1 id="headline">Compte a rebours de la Fin d'Internet:</h1>
  <div id="countdown">
    <ul>
      <li><span id="days"></span>days</li>
      <li><span id="hours"></span>Hours</li>
      <li><span id="minutes"></span>Minutes</li>
      <li><span id="seconds"></span>Seconds</li>
    </ul>
  </div>
  <div class="message">
    <div id="content">
      <span class="emoji">&#128126; </span>
      <span class="emoji">&#128187;</span>
      <span class="emoji">&#128128;</span>
    </div>
  </div>
</div>
  • Le code CSS
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
 
html, body {
  height: 100%;
  margin: 0;
}
 
body {
  align-items: center;
  background-image:url(images/36010.gif);
  display: flex;
  font-family: -apple-system,
    "Segoe UI",
    "Helvetica Neue",
    sans-serif;
}
 
.container {
  color: white;
  margin: 0 auto;
  text-align: center;
}
 
h1 {
  font-weight: bolder;
  letter-spacing: .125rem;
  text-transform: uppercase;
}
 
li {
  display: inline-block;
  font-size: 1.5em;
  list-style-type: none;
  padding: 1em;
  text-transform: uppercase;
}
 
li span {
  display: block;
  font-size: 4.5rem;
}
 
.message {
  font-size: 4rem;
}
 
#content {
  display: none;
  padding: 1rem;
}
 
.emoji {
  padding: 0 .25rem;
}
  • Le scripts javascript du compte à rebours
<script>
(function () {
  const second = 1000,
        minute = second * 60,
        hour = minute * 60,
        day = hour * 24;
 
  let annee = "Janvier 1, 2023 00:00:01",
      countDown = new Date(annee).getTime(),
      x = setInterval(function() {
 
        let now = new Date().getTime(),
            distance = countDown - now;
 
        document.getElementById("days").innerText = Math.floor(distance / (day)),
          document.getElementById("hours").innerText = Math.floor((distance % (day)) / (hour)),
          document.getElementById("minutes").innerText = Math.floor((distance % (hour)) / (minute)),
          document.getElementById("seconds").innerText = Math.floor((distance % (minute)) / second);
 
        //do something later when date is reached
        if (distance < 0) {
          let headline = document.getElementById("headline"),
              countdown = document.getElementById("countdown"),
              content = document.getElementById("content");
 
          headline.innerText = "C'est la Fin !";
          countdown.style.display = "none";
          content.style.display = "block";
 
          clearInterval(x);
        }
        //seconds
      }, 0)
  }());
 
</script>
  • Le script javascript de la page qui s’ouvre

Ce script Javascript permet de d’ouvrir une page lorsque l’utilisateur écrira le mot « end » avec les touches de son clavier.

<script>
function openPage(pageName,elmnt,color) {
  var i, tabcontent, tablinks;
  tabcontent = document.getElementsByClassName("tabcontent");
  for (i = 0; i < tabcontent.length; i++) {
    tabcontent[i].style.display = "none";
  }
  tablinks = document.getElementsByClassName("tablink");
  for (i = 0; i < tablinks.length; i++) {
    tablinks[i].style.backgroundColor = "";
  }
  document.getElementById(pageName).style.display = "block";
  elmnt.style.backgroundColor = color;
}
 
// Get the element with id="defaultOpen" and click on it
document.getElementById("defaultOpen").click();
</script>
<script>
            var index = 0;
            var magic_word = "end";
                if (e.key == magic_word[index]) {
                    index++;
 
                    if (index == magic_word.length) {
                        window.open("https://www.youtube.com/watch?v=EqaHgjv_Snc", "_blank");
                        index = 0;
                    }
                } else {
                    index = 0;
                }
            }
</script>

Le générateur de citations

  • Présentation

Voici la page générateur de citations qui présentera à l’utilisateur lorsqu’il qu’il le voudra divers citation de personne fictif ou bien réel. Enregistré en variable dans les scripts javascript. De plus le fond de la page est une gradation de couleur en mouvement constant.

  • Le code HTML
<html lang="fr">
<head>
        <link rel="stylesheet" href="citation.css">
        <link rel="icon" type="image/ico" href="favicon.ico" />
        <title>Citation</title>
        <meta charset="utf-8"/>
        <script src="https://package.nsi.xyz/api/"></script>
<body>
        <nsi-xyz add="menu" ref="0NSI 2020"></nsi-xyz>
</body>
 
        <div class="container">
                <div class="citation">
                        <div id="citationplace"></div>
                </div>
                <div class="auteur">
                        <div id="auteurplace"></div>
                </div>
        <button>Nouvelle Citation</button>
</div>
</body>
</html>
  • Le code CSS
@import url('https://fonts.googleapis.com/css2?family=Montserrat&display=swap');
 
.container{
        width: 32rem;
        height: 21rem;
        box-shadow: 0 0 1rem 0 rgba(0, 0, 0, .3);
        border-radius: 20px;
        overflow: hidden;
        position: fixed;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        background-color: rgba(0, 0, 0, 0.08);
        overflow: hidden;
        color:white;
}
 
.guil{
        font-size: 10%;
}
 
.citation{
        text-align: left;
        margin-top: 20px;
        margin-left: 10px;
        margin-right: 10px;
        font-size:31px;
}
 
.auteur{
        margin-left: 10px;
        margin-right: 10px;
        margin-bottom: 10px;
        text-align: right;
        font-size:28px;
}
 
html {
        font-family: 'Montserrat', sans-serif;
        background: linear-gradient(to top left, #ee7752, #e73c7e, #23a6d5, #23d5ab);
        background-size: 400% 400%;
        animation: gradient 15s ease infinite;
        width:100%;
        height:100%;
}
 
button{
        width:30%;
        height:20%;
    position:absolute;
    bottom:0;
    right:0;
        transition: 0.3s;
    cursor:pointer;
        color: white;
        text-transform: uppercase;
        background-color: rgba(0, 0, 0, 0.08);
        padding: 20px;
        border-radius: 5px;
        display: inline-block;
        border: none;
        transition: all 0.4s ease 0s;
        border-radius: 5px;
}
 
button:hover{
        background-color: rgba(0, 0, 0, 0.2);
        letter-spacing: 2px;
        animation: titre 1s;
        width:31%;
        height:21%;
}
 
 
@keyframes gradient {
        0% {background-position: 0% 50%;}
        50% {background-position: 100% 50%;}
        100% {background-position: 0% 50%;}
}
  • Les scripts javascript
  • Le script changeur de citation

A chaque fois que l’utilisateur actualise la page ou que le bouton est utiliser, une nouvelle citation qui est dans dans la variable « citations » sera affiché.

<script>
        var auteur = [
                "Maitre Oogway",
                "Maitre Oogway",
                "Martin Luther King",
                "Confucius",
                "Jean-Paul Sartre",
                "Victor Hugo",
                "Albert Einstein",
                "Oscar Wilde",
                "Albert Einstein",
                "Emmanuel Kant",
                "Douglas Adams",
                "Maitre Yoda"
        ]
        var citations = [
                "❝Hier est derrière, demain est mystère, et aujourd'hui est un cadeau, c'est pour cela qu'on l'appelle le présent.❞",
                "❝On rencontre souvent sa destinée par les chemins qu'on a pris pour l'éviter.❞",
                "❝Celui qui accepte le mal sans lutter contre lui coopère avec lui.❞",
                "❝Exige beaucoup de toi-même et attends peu des autres. Ainsi beaucoup d'ennuis te seront épargnés.❞",
                "❝Dans la vie on ne fait pas ce que l'on veut mais on est responsable de ce que l'on est.❞",
                "❝On passe une moitié de sa vie à attendre ceux qu'on aimera et l'autre moitié à quitter ceux qu'on aime.❞",
                "❝La vie, c'est comme une bicyclette, il faut avancer pour ne pas perdre l'équilibre.❞",
                "❝La beauté est dans les yeux de celui qui regarde.❞",
                "❝Un problème sans solution est un problème mal posé.❞",
                "❝La musique est la langue des émotions.❞",
                "❝42 est la réponse à la grande question sur la vie, l'univers et le reste❞",
                "❝Difficile à voir. toujours en mouvement est l'avenir.❞"
        ]
        function nouveaux() {
                var rand = Math.floor(Math.random() * (citations.length));
                document.getElementById('citationplace').innerHTML = citations[rand];
                document.getElementById('auteurplace').innerHTML = auteur[rand];
        }
        </script>
  • Le script javascript changeur d’image

A chaque fois que l’utilisateur actualise la page ou que le bouton est utiliser, une nouvelle image tiré au hasard de Flickr sera affiché. Cette image est trouvé grâce au mot clé « autumn forest ».

</script>
 
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
        <script type="text/javascript">
        var keyword = "autumn forest";
        $(document).ready(function (){
                        $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
                        {
                                        tags: keyword,
                                        tagmode: "any",
                                        format: "json"
                        },
                        function (data) {
                                        var rnd = Math.floor(Math.random() * data.items.length);
                                        var image_src = data.items[rnd]['media']['m'].replace("_m", "_b");
                                        $('.container').css('background-image', "url('" + image_src + "')");
                        });
        });
 
 
        </script>

Un problème rencontré

Lors de la programation de nos page nous avons constaté plus précisément dans la page du piano, que la personne ayant codé le javascript avait codé avec un choix de touche adapté au clavier QWERTY il a donc fallut modifié les touches du clavier en l’adaptant pour un clavier AZERTY. Cette action a était possible en changeant les DATA-KEY des touches.

Tutoriels

Comment prendre le contrôle d’un ordinateur à distance ?

Nous le savons tous, il arrive (trop) souvent que l’un de vos parents ou grands-parents pas très habile en terme d’utilisation des appareils informatiques, notamment l’ordinateur, vous appelle pour de l’aide ou un dépannage. Voici un tutoriel qui vous permettra d’aider quelconque personne en difficulté sans bouger de chez vous et sans avoir à débattre des heures aux téléphone, quoi de mieux ?

Nous le savons tous, il arrive (trop) souvent que l’un de vos parents ou grands-parents pas très habile en terme d’utilisation d’appareils informatiques, notamment l’ordinateur, vous appelle pour de l’aide ou un dépannage. Voici un tutoriel qui vous permettra d’aider quelconque personne en difficulté sans bouger de chez vous et sans avoir à débattre des heures aux téléphone. Quoi de mieux ?

1 – Installation du logiciel TeamViewer

TeamViewer propose aux utilisateurs un outil d’assistance à distance via Internet et reste gratuit si il est utilisé dans un cadre privé.

logo_teamviewer.jpg

Commencez par télécharger TeamViewer à partir de son site internet. Il doit être impérativement installé sur les deux postes (sur votre ordinateur et celui de la personne qui a besoin d’aide). Cliquez simplement sur Télécharger gratuitement.

Vous pouvez également le télécharger depuis son site internet en cliquant juste ici.

Procédez maintenant à son installation sur les deux postes toujours. Des fenêtres s’ouvriront successivement, il vous faudra cliquer sur les instructions suivantes :

  • Cocher Installer puis après avoir lu l’accord de licence, cliquez sur J’accepte – Suivant. L’installation commencera aussitôt.

  • Une fois l’installation terminée, TeamViewer vous demandera si vous souhaitez l’utiliser pour des raisons professionnelles et vous proposera un essai gratuit de 14 jours. Si ça n’est pas le cas, cocher Non, je n’utilise TeamViewer qu’à des fins personnelles.

2 – Coordination des deux ordinateurs

Tout de suite après l’installation, une page se lance. La rubrique Contrôle à distance s’affichera par défaut. En-dessous d’Autoriser le contrôle à distance, vous pourrez observer deux éléments essentiels au jumelage de vos appareils : l’ID et le Mot de passe. Ils servent d’identité à l’ordinateur et chaque ordinateur a sa propre identité à chaque nouvelle connexion. Ce sont ces données qui permettront l’accès à l’ordinateur.

Sur la partie droite, en-dessous de Contrôler un ordinateur distant, rentrez l’ID du partenaire (la personne que vous aidez aura fait les mêmes manipulations de son côté et doit vous communiquer l’ID de son ordinateur) puis appuyez sur le bouton bleu Connecter juste en-dessous.

Le logiciel vous demandera aussitôt de rentrer le Mot de passe associé à l’ID de l’autre ordinateur puis cliquez sur Connexion.

Et voilà ! Vous verrez aussitôt apparaître l’écran de l’ordinateur de l’autre personne. Vous pouvez désormais tout contrôler et ce que vous faites sur son écran reste visible, ce qui est pratique pour montrer comment procéder. 

Lorsqu’une connexion est faite, cela sera notifié en bas à droite.

Vous pouvez voir l’écran de mon autre ordinateur par dessus celui que j’utilise actuellement. Il est toujours possible d’utiliser le votre en parallèle.

Pour terminer la connexion, cliquez sur le petit triangle ▼ à côté du nom de l’autre ordinateur en bas à droite puis cliquez sur Terminer la connexion.

Si nécessaire

Vous pouvez discuter dans une petite page de discussion si l’appel téléphonique n’est pas possible, ce qui peut s’avérer pratique dans certains cas. Pour l’ouvrir, il suffit de recliquer sur le petit triangle ▼ puis de cliquer sur Envoyer un message de conversation…. Votre discussion s’affichera plus haut.

S’il s’avère que cette personne vous demande souvent de l’aide, vous avez la possibilité de créer un compte, ce qui vous facilitera l’interaction avec l’ordinateur en particulier.

3 – Depuis un smartphone 

Eh oui c’est possible ! TeamViewer est également disponible en version AndroidWindows Phone et IOS. Donc si vous n’avez pas votre ordinateur devant vous, vous avez la possibilité de contrôler celui de votre partenaire à l’aide de votre smartphone.

Il suffit de télécharger l’application gratuite TeamViewer depuis le store et de rentrer l’ID et le Mot de passe de l’ordinateur. La connexion se fera automatiquement.

L’attribut alt de cette image est vide, son nom de fichier est img-1346.png.

Je peut voir l’écran de mon ordinateur sur mon smartphone et le contrôler sans aucun problème. On peut aussi utiliser les fonctionnalités sur la droite comme le clavier pour taper du texte sur l’ordinateur.

Maintenant plus d’excuses !

Tutoriels

Automatiser l’éclairage de sa maison grâce a l’applications Raccourci…

Ce tutoriel explique comment faire une automatisation de l’éclairage de sa maison a l’aide d’application native sur votre Iphone ou tout autres appareils Apple (Ce tutoriel est valable pour les utilisateurs Apple)

Création d’automatisations avec l’application Raccourcie

Les automatisations vous permettent d’éteindre toutes les lumières quand vous partez, de les allumer dès qu’un mouvement est détecté, ou encore d’exécuter une scène quand vous ouvrez la porte d’entrée. Grâce à l’app Raccourcie, vous pouvez automatiser vos accessoires et scènes afin de les utiliser comme vous le souhaitez.

L’application Raccourcie vous permet de créer facilement des automatisations personnalisées. Vous pouvez configurer une scène ou un accessoire en fonction de l’heure de la journée, de l’endroit où vous vous trouvez, de la détection des capteurs, etc.

Éléments dont vous avez besoin :

• Un appareil Apple avec l’application Raccourcie ainsi que une ou plusieurs ampoules connectées
Ajoutez des accessoires HomeKit dans l’app Maison.
• Mettez à jour votre appareil Apple vers la dernière version d’iOS.

Pour créer une automatisation qui se déclenche en fonction de l’endroit, vous devez activer Partager ma position pour l’appareil iOS principal1 utilisé pour contrôler votre domicile. Accédez à Réglages > [votre nom] > Partager ma position, touchez À partir de, puis vérifiez que « Cet appareil » est sélectionné.

Ensuite, ouvrez l’application Raccourcie sur votre appareil iOS ou votre Mac, puis suivez les étapes ci-dessous.

  1. Touchez l’onglet Automatisation, puis touchez le + et touchez le bouton « Créer une automatisation perso. »

2. Choisissez si vous souhaitez que l’automatisation se produise à l’arrivée ou au départ.

3. Sélectionnez tout d’abord le lieu de votre domicile puis cochez la plage de temps durant la quelle l’automatisation devra ce mettre en marche.

4. Touchez « Ajouter une action » puis aller dans « Apps » puis sélectionnez l’icone « Maison » ou rechercher directement « maison dans la barre de recherche.

5. Sélectionnez « Commande Maison », touchez « Scènes et accessoires » et sélectionnez la ou les ampoules que vous voulez contrôler.

6. Enfin choisissez si vos ou votre ampoule doit s’allumer ou s’éteindre, puis cliquer sur « OK » et ensuite « Suivant ».

Votre automatisation et enfin prête et fonctionnelle vous n’avez plus qu’à l’essayer !

Automatisez vos scènes et vos accessoires afin qu’ils s’activent ou se désactivent lorsque vous entrez ou quittez votre domicile n’à jamais été aussi simple.

Tutoriels

La double identification, à quoi ça sert et comment…

Ce tutoriel concerne toutes les personnes qui veulent mettre la double identification sur IOS.

Qu’est ce que la double identification ?

La double identification est un système de sécurité en plus qui permet de protéger une deuxième fois la sécurité de votre identifiant, compte ou autre…
La double identification est aussi appelée validation en deux étapes

A quoi sert la double identification ?

Il s’agit d’un processus qui permet d’ajouter un niveau de sécurité supplémentaire à un identifiant, un compte sur un réseau social ou sur un site, généralement grâce à votre numéro de téléphone portable ou une autre adresse-email. Cela permet ainsi de renforce considérablement la sécurité à votre compte, même si quelqu’un d’autre connaît votre mot de passe.

Comment ça marche ?

Lors d’une connexion à un compte, il vous faudra, en plus de votre mot de passe habituel, un code de sécurité unique dont vous êtes le seul à pouvoir détenir. Ce code peut être reçu par SMS, par e-mail ou via un logiciel d’authentification. Vous pouvez, dès lors, confirmer que c’est bien vous qui essayez de vous connecter pour sécuriser d’avantage votre compte.
Si vous recevez un SMS ou e-mail dont vous n’êtes pas l’origine, vous pouvez constatez que c’est une tentative de piratage.

Dans ce tutoriel je vais vous montrer les 2 façons d’activer la double identification sur n’importe quel appareil IOS (iPhone, iPad, iPod, Mac).
Méthode 1 pour les iPhone, iPad, iPod.
Méthode 2 pour les Mac.

Méthode 1 :

1 Aller dans réglages
2 Mon identifiant

3 Mot de passe et sécurité

4 Activer l’identification à deux facteurs puis appuyez sur Continuer

5 Saisir le numéro de téléphone pour votre double identification

6 Envoyer
7 Saisir le code de validation pour confirmer votre numéro de téléphone et activer l’identification à deux facteurs.

Méthode 2

1 Choisissez le menu
2 Puis Préférences système

3 Mot de passe et sécurité

4 Activer en regard de l’option Identification à deux facteurs

Voici comment mettre l’identification à deux facteurs sur les différent appareil IOS et vous savez maintenant à quoi ça sert.

Projets

Générateur de citations

Vous êtes à la recherche d’inspiration ? Ne vous en faites pas, le générateur de citations de notre site est fait pour ça ! 
Vous connaissez les bases du HTML ? Cette article vous présente et explique pas à pas la création du site ainsi que l’intégration des quelques modules utilisés.

Si vous êtes sur cet article, il est probable que créer un générateur, de citations en l’occurrence, vous a intrigué. Voilà les explications du procédé de sa création et de son intégration sur notre site :

Notre projet a été de créer un site qui comporte un générateur de citations de grands auteurs ou philosophes mais également certaines répliques de films connus afin d’apporter une source d’inspiration pour nos visiteurs. Pour cela, nous avons fait le choix de créer qu’une seule page de site, ce qui est amplement suffisant pour mener à bien le projet. Cependant, une consigne a été imposée : intégrer des modules. Heureusement pour nous, la toile regorge de scripts intéressants et variés de générateurs : de JavaScript à Python, le choix est large.

Avant de commencer

Tout d’abord, avant d’intégrer quelconque script choisi par nos soins, nous devions mettre la balise <nsi-xyz> préalablement installée sur l’éditeur de texte avant la réalisation du site. Cette balise sert de « support » pour les fonctionnalités que nos professeurs peuvent ajouter. Cette ligne doit se situer entre les balises <head>.

<script src="https://package.nsi.xyz/api/"></script>

Après avoir ajouté la fonction menu fournie par nos professeurs, ils pourront relier les sites réalisés par les autres élèves avec le notre.

< !— Appel du menu —>
<nsi-xyz add="menu" ref="0NSI 2020"></nsi-xyz>

Icône du menu

Le script du générateur et du bouton

Pour pouvoir générer des citations aléatoirement nous avons pris un module sur le site freeCodeCamp.org qui nous permet d’apprendre le codage chez soi et apporte des aides précieuses pour les projets. Pour le nôtre, il explique pas à pas le processus de construction du script JavaScript complet. Il contient également un bouton qui permet de générer les citations que nous avons préalablement choisi ainsi que le générateur. Ce script sera le cœur de notre site. 

Cependant, la question se pose : comment un bouton a pu être relié au générateur me direz-vous ? Le déroulement est simple : il existe une fonction dans le langage HTML nommé “onclick” qui permet, ainsi inséré dans les balise “button”, de définir une fonction sur le bouton, qui dans notre cas, sera paramétré dans le script JavaScript et que nous aurons appelé “newQuote()”.

<button onclick="newQuote()"> Appuyez </button>
function newQuote() {
    var randomNumber = Math.floor(Math.random() * (quotes.length));
    document.getElementById('quoteDisplay').innerHTML = quotes[randomNumber]
    document.getElementById('quoteDisplay').style.fontFamily = 'Scope One', serif;
}

En revanche, au niveau de la stylisation des citations, celle-ci diffère d’une stylisation en CSS car elle se fait directement dans le script JavaScript. En effet, on place les citations entre des balises qu’on utilise également dans le langage HTML, comme les balises de sauts de lignes, d’alignement de texte, de la couleur, de la taille et bien plus encore selon vos envies. Une fois les citations tapées dans le script JavaScript et la stylisation faite, le générateur est prêt à fonctionner !

<br><br><center><div style="font-size : 155%"><p style="color:white ;"> "La vie sans musique est tout simplement une erreur, une fatigue, un exil" </center></p></div> <br> <center><div style="font-size : 120%"><p style="color:white ;"> Friedrich Nietzsche </center></p></div>

Le Header

Au niveau de la mise en page, lorsqu’on vous impose l’intégration de modules, la difficulté est tout autre que ce que l’on peut penser : il faut CHOISIR parmi des CENTAINES de scripts tous aussi beaux et impressionnants les uns que les autres. La difficulté est d’en choisir UN pour chaque fonctionnalités ou décoration du site. Réussir à les intégrer correctement est une autre histoire…

Pour ce faire, nous avons tout d’abord décidé de créer un header plutôt esthétique. Nous le rappelons, ce que nous voulons est de permettre aux visiteurs du site de lire des citations inspirantes. Ces visiteurs sont donc à la recherche d’inspiration, d’apaisement, de revigoration. L’esthétique du site compte alors énormément. Nous allons même jusqu’à dire que c’est ce qui compte ! Pour un site, le header, « en-tête » en anglais, est le haut du site, le commencement et est donc est la première partie sur laquelle arrive le visiteur. Cela signifie qu’elle doit être accrochante et agréable esthétiquement parlant, pour ainsi donner au lecteur une idée de la qualité du site et des citations mis à sa disposition.

Un diaporama de belles images sous une petite opacité et le titre du site fut une très bonne idée. Avec la simple recherche « slider photos css html » (slider qui veut dire « glissant » en anglais), nous avons choisi parmi un très large choix le tutoriel de Salvador el semestre « Speed Code-Full Screen Automatic Image Slider Background-HTML CSS », qui nous a permis d’intégrer un header qui prend toute la largeur de l’écran pour un plus beau résultat et un rendu plus fluide et aéré. L’intégration s’est très bien déroulée sans aucun blocage.

<div class="slider">
			<div class="load">
			</div>
			<div class="content">
				<div class="principal">
                    <h1>Citations Inspirantes</h1>
					<p>Générateur de citations et répliques de films</p>
					<p>Diaporama d'images inspirantes</p>
				</div>
			</div>
		</div>
.load {
  animation : slide 1s;
}

.slider {
  background-repeat : no-repeat;
  background-size : cover;
  background-position : center;
  width : 100%;
  height : 100vh;
  animation : slide 20s infinite;
}

.content {
  color : black;
  width : 100%;
  height : 100vh;
  background-color : rgba(255, 255, 255, 0.2);
}

.principal {
  left : 50%;
  top : 50%;
  transform : translate(-50%, -50%);
  position : absolute;
  letter-spacing : 5px;
  text-align : center;
}

.principal h1 {
  font-size : 70px;
  margin-bottom : 20px;
  font-family : 'Playfair Display', serif;
}

.principal p {
  font-size : 20px;
  font-family : 'Playfair Display', serif;
}

Résultat :

Par rapport au script original, nous avons modifié les images du slider avec background-image, le texte aux balises h1, p et nous avons ajouté un peu d’opacité avec opacity

Création de la boîte qui contient le générateur de citations

Ensuite, dans le corps du site, le « body« , il a fallu trouver une mise en page sympa afin d’y insérer le script JavaScript du générateur de citations. L’idée de créer une sorte de boîte avec des ombres pour lui donner du relief mais surtout l’illusion d’une petite feuille avec une citation inscrite dessus était intéressant. Pour cela, rien de plus simple : on tape sur son moteur de recherche « text box html css » et nous avons trouvé le tutoriel de Kevin Powell « CSS box-shadow – how to make them look good ».

En effet, taper votre recherche en anglais vous donne la plupart du temps plus de contenu et de réponses, alors il ne faut pas hésiter ! Pour cette boîte, un simple script suffisait puisqu’on ajuste nous même la forme de la boîte et son apparence selon nos envies en le modifiant.

Cependant, nous avons eu un PROBLEME au niveau de la dimension de la boîte : en effet, lorsqu’on active le générateur en cliquant sur le bouton, les dimensions de la boîte changeaient selon la taille de la citation (elle s’élargissait et inversement). Il a fallu un certain nombre de recherche sur internet avant de comprendre d’où venait le problème et comment le résoudre : le script original ne comportait pas les paramètres width et height, qui indiquent respectivement la largeur et la hauteur d’un objet. Sans eux, la dimensions de la boîte n’a pas été définie, ce qui implique que la taille de la boîte s’adapte à la taille des citations.

<div class="box">

			<div id="quoteDisplay">
				<p>
			< !— citation ici —>
				<p class="titre">...</p>
				</p>
			</div>
		</div>
.titre {
  text-align : center;
  color : black;
  font-family : 'Rubik', sans-serif;
  font-size : 40px;
}

.box {
  background : #F5B7B1;
  width : 1000px;
  height : 400px;
  padding-top : 120px;
  padding-right : 20px;
  padding-left : 20px;
  box-shadow : 10px 10px 9px black;
}

Résultat :

Par rapport au script original, nous avons modifié la taille de la boîte avec width, height, padding-top, padding-right, padding-left, les dimensions de l’ombrage avec box-shadow, la couleur de fond avec background et nous avons remplacé le texte par notre générateur de citations en ajoutant id= »quoteDisplay »

Stylisation du bouton du générateur

Bien sûr, le mieux est que le visiteur puisse activer ce générateur de citation via le bouton sur lequel il devra cliquer. La stylisation d’un bouton est une chose facile puisque des centaines de scripts de styles différents existent sur le web. Cette fois cependant, nous avons essayé d’intégrer une dizaines de scripts mais il arrive que cela ne soit pas aussi simple que ça puisse paraître puisque certains n’affichent pas le résultat espéré, même après maintes et maintes modifications du script.

Nous avons alors opté pour un simple bouton animé très sympa qui utilise du html/css. Il provient du site w3school.com qui est un site optimisé pour l’apprentissage et la formation du langage web. L’intégration n’a causé aucun problème et nous l’avons évidemment adapté aux couleurs de la page.

button {
  position : relative;
  background-color : black;
  border : none;
  border-radius : 3px;
  font-size : 15px;
  color : #FFFFFF;
  padding : 20px;
  width : 100px;
  text-align : center;
 -webkit-transition-duration : 0.4s; /* Safari */
  transition-duration : 0.4s;
  text-decoration : none;
  overflow : hidden;
  cursor : pointer;
}

button:after {
  content : "";
  background : white;
  display : block;
  position : absolute;
  padding-top : 300%;
  padding-left : 350%;
  margin-left : -20px !important;
  margin-top : -120%;
  opacity : 0;
  transition : all 0.8s;
}

button:active:after {
  padding : 0;
  margin : 0;
  opacity : 1;
  transition : 0s;
  border : none ;
}

Résultat :

Par rapport au script original, nous avons modifié la forme du bouton avec border-radius pour arrondir les coins, la couleur avec background-color et background lors du cliquage et le texte dans la balise button

Le Diaporama d’images

Enfin, l’idée finale du projet a été de donner la possibilité aux visiteurs du site d’avoir à disposition également certaines images inspirantes qui pourraient accompagner le concept des citations inspirantes. Pour se faire, encore une fois, la recherche « diaporama css html » nous a permis de choisir le script du site pierre-giraud.com qui est un site incroyablement bien fait pour apprendre à coder et contient toutes les ressources sur le développement web. L’intégration du script s’est très bien déroulé et nous avons bien évidemment intégré nos images dans le diaporama, avec un très beau rendu.

<div class="d1"></div>

	<div class="conteneur"></div>
.d1 {
  width : 576px;
  height : 384px;
  margin : 50px auto;
  box-shadow : 0px 15px 10px -5px #777;
  border-radius : 15px;
  background-color : #EDEDED;
  background-size : contain;
  animation : fondu 15s ease-in-out infinite both;
}

.conteneur {
  max-width : 576px;
  margin : 50px auto;
}

.d1:hover, .d2:hover {
  animation-play-state : paused;
}

@keyframes fondu {
  0% {
    background-image : url(ins.jpg);
  }
  33.33% {
    background-image : url(ins1.jpg);
  }
  66.67% {
    background-image : url(ins2.jpg);
  }
  100% {
    background-image : url(ins.jpg);
  }
}

Résultat :

Par rapport au script original, nous avons modifié la taille du diaporama avec height, arrondi les coins avec border-radius et modifié les images avec background-image

Les Plus+

 Nous avons aussi fait le choix d’intégrer un bouton qui nous ramène automatiquement en haut de page, ce qui est une fonction pratique lorsque le site est très long. Pour notre part, nous voulions permettre au visiteur de remonter la page au moment où il arrive au niveau du diaporama d’images, afin de lui permettre d’atteindre plus rapidement la partie du générateur de citations.

Pour cette fonctionnalité et pour bien d’autres encore, le site w3school.com contient des dizaines de scripts expliqués et que l’on peut modifier directement sur le site pour en comprendre le fonctionnement. Après l’intégration du script JavaScript cette fois-ci du bouton, nous l’avons bien sûr modifié afin de le fondre dans l’esthétique du site.

<button onclick="topFunction()" id="myBtn" title="Go to top">🔝</button>
<script>
//Get the button
var mybutton = document.getElementById("myBtn");

// When the user scrolls down 20px from the top of the document, show the button
window.onscroll = function() scrollFunction();

function scrollFunction() {
  if (document.body.scrollTop > 1400 || document.documentElement.scrollTop > 1400) {
   mybutton.style.display = "block";
  } else {
    mybutton.style.display = "none";
  }
}
// When the user clicks on the button, scroll to the top of the document
function topFunction() {
  document.body.scrollTop = 0;
  document.documentElement.scrollTop = 0;
}
</script>
#myBtn {
  display : none;
  position : fixed;
  bottom : 20px;
  right : 30px;
  z-index : 99;
  font-size : 23px;
  border : none;
  outline : none;
  background-color : #EC7063;
  color : white;
  cursor : pointer;
  padding : 7px;
  border-radius : 30px;
}

#myBtn:hover {
  background-color : #555;
}

Résultat :

Par rapport au script original, nous avons modifié la couleur du bouton avec background-color, le texte dans la balise button, la taille du texte avec font-size, sa taille avec padding et arrondi les coins avec border-radius

 C’est également le cas du scroll bar qui se trouve à l’extrême droite du site. Nous avons intégré son script dans le code de la page et aucune modification n’a été nécessaire dans sa stylisation car elle convient parfaitement aux couleurs de notre site.

<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
/* width */
::-webkit-scrollbar {
  width : 10px ;
}

/* Track */
::-webkit-scrollbar-track {
  background : #f1f1f1 ; 
}

/* Handle */
::-webkit-scrollbar-thumb {
  background : #888 ; 
}

/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
  background : #555 ; 
}

</style>

Résultat :

Pour résumer, l’intégration des modules et des scripts nous ont permis d’obtenir un site avec un rendu agréable et esthétique avec quelques fonctionnalités comme le slider du header, le générateur de citations et le diaporama d’images. Cela donne un aspect sympa et vivant au site car le niveau de codage est plus poussé donc le résultat est plus intéressant et complexe. Cependant, à ne pas oublier que pour intégrer des modules dans de bonnes conditions, vous devriez posséder les connaissances de base du HTML, car il sera très souvent nécessaire de modifier certains paramètres pour obtenir le résultat attendu, que ce soit dans le code HTML, JavaScript ou le style CSS.

Voici une vue d’ensemble de notre site :

Source

Tutoriels

Adresse IP et date du jour en javascript

Dans cet article nous allons voir tout d’abord le but du projet que nous allons vous présenter. Puis, nous allons voir les différents codes de javascript que nous avons inséré dans la page HTML et leurs buts. Pour finir, nous allons vous expliquer les difficultés rencontrées durant la conception de cette page et les solutions que nous avons mis en œuvre pour résoudre ces derniers.

Ce projet a été réalisé par des élèves en spécialité NSI du Lycée Louis Pasteur. Ils sont également les auteurs de ce compte rendu. Pour en savoir plus : Les projets en spécialité NSI

Le but du projet

Ce projet nous a été proposé par nos professeurs.
Le But : Faire de l’insertion de javascript dans une page HTML.
Différentes consignes nous avait été énoncées comme par exemple insérer un module, nous le verrons par la suite, mais aussi un menu et un ou plusieurs codes en javascript.
Au bout de ce projet nous devions donc écrire l’article que vous lisez en ce moment même.

Maintenant que nous vous avons exposé le but de ce projet nous allons donc pouvoir commencer à parler des différents codes qui sont présent dans la page HTML.

Les différents codes de la page

La page est constituée d’un menu qui contient les différentes informations que donnent les codes que nous développerons ensuite. Le menu est généré par 3 lignes au début du code HTML et par 3 lignes qui se situent à chaque début de code, juste avant les codes javascript.
Les différentes lignes sont affichées ci-dessous :

Accueil</button>
Date</button>
Adresse IP</button>

ci dessus sont affichées les lignes de codes qui permettent de créer le menu.

À chaque début de code intégré dans le code de la page HTML nous avons des lignes comme celles-ci :

  <div id="Date" >
</div>

qui permettent d’afficher l’information relatif à cette ligne lorsque l’on sélectionne une partie du menu.

Voici le résultat 

Le premier code dont nous allons parler est le module que nos enseignants nous ont imposé d’insérer. Ce module permettra, dans le futur, de relier les différentes pages des différents élèves.

<script src="https://package.nsi.xyz/api/"></script>
<nsi-xyz add="menu" ref="0NSI 2020"></nsi-xyz>

La première ligne permet d’exporter un script externe tandis que la seconde permet d’insérer le menu qui a été importer avec la ligne précédente 

Au final, on obtient un menu dépliant qui se situe en haut à droite de la page HTML et une fois déplié on obtient ceci :

Maintenant nous allons parler des trois codes javascripts que nous avons insérés dans la page.

Le premier code est un code permettant de donner l’adresse IP de la personne qui ouvre la page. 
Pour obtenir son adresse IP la personne qui a ouvert la page devra cliquer sur un « bouton » qui lancera le programme en javascript.
Le code est affiché ci dessous :

cliquer ici pour avoir votre adresse ip</button>
 <p id="lastcheck"></p>
<script type="text/javascript">
var i = 0;
var prev;
var timer = null;
function stop() {
  clearInterval(timer);
}
function start() {
  checkIP();
  clearInterval(timer);
  timer = setInterval(function() {
    checkIP();
  }, 5000);
}
function checkIP() {
  var text = "";
  $.get("https://api.ipify.org", function(data) {
    text =
      "  L'adresse ip de votre ordinateur est : " + data;
    document.getElementById("lastcheck").innerHTML = text;
    if (data != prev) {
      document.getElementById("log").innerHTML += text;
    }
    prev = data;
  });
}
</script>

la partie du code :

cliquer ici pour avoir votre adresse ip</button>

permet de créer un bouton qui lance le code.

tandis que la ligne :

 text ="  L'adresse ip de votre ordinateur est : " + data

Permet elle de donnée par écrie l’adresse IP

Et on obtient donc au final :

Le second code que nous avons inséré est un code permettant de donner la date. Contrairement au code précédent nous n’avons pas inséré de boutons car cela n’est pas nécessaire. Ce code est associé à un troisième que nous verrons ultérieurement.

Le code qui permet de donner la date à l’écrit est le suivant :

<script type="text/javascript">
        var mois=new Array(13);
        mois[1]="Janvier";
        mois[2]="Février";
        mois[3]="Mars";
        mois[4]="Avril";
        mois[5]="Mai";
        mois[6]="Juin";
        mois[7]="Juillet";
        mois[8]="Août";
        mois[9]="Septembre";
        mois[10]="Octobre";
        mois[11]="Novembre";
        mois[12]="Décembre";
        var time=new Date();
        var month=mois[time.getMonth() + 1];
        var date=time.getDate();
        var year=time.getYear();
        if (year < 2000)
        year = year + 1900;
        document.write("Nous sommes le  " +date + " ");
        document.write(month + " " + year);
</script>

Ce code est relativement court comparé aux autres mais il permet de donner la date à laquelle on ouvre la page.

Et le dernier code est complémentaire du précédent car il fait afficher un calendrier pour se situer dans le mois.Retour ligne automatique
Le code permettant cela est le suivant :

<div id="Date" class="tabcontent">
 
         <br>
         <script type="text/javascript">
         <!--
         var d = new Date();
         var dm = d.getMonth() + 1;
         var dan = d.getYear();
         if(dan < 999) dan+=1900;
         calendrier(dm,dan);
         function calendrier(mois,an) {
         nom_mois = new Array
         ("Janvier","F&eacute;vrier","Mars","Avril","Mai","Juin","Juillet",
         "Ao&ucirc;t","Septembre","Octobre","Novembre","D&eacute;cembre");
         jour = new Array ("Lu","Ma","Me","Je","Ve","Sa","Di");
         var police_entete = "Verdana,Arial"; /* police entête de calendrier  */
         var taille_pol_entete = 3;           /* taille de police 1-7 entête de calendrier  */
         var couleur_pol_entete = "#FFFF00";     /* couleur de police entête de calendrier  */
         var arrplan_entete = "#000066";        /* couleur d'arrière plan entête de calendrier  */
         var police_jours = "Verdana,Arial"; /* police affichage des jours  */
         var taille_pol_jours = 3;           /* taille de police 1-7 affichage des jours  */
         var coul_pol_jours = "#000000";     /* couleur de police affichage des jours  */
         var arrplan_jours = "#D0F0F0";        /* couleur d'arrière plan affichage des jours  */
         var couleur_dim = "#E00000";        /* couleur de police pour dimanches  */
         var couleur_cejour = "#FFFF00";        /* couleur d'arrière plan pour aujourd'hui  */
         var maintenant = new Date();
         var ce_mois = maintenant.getMonth() + 1;
         var cette_annee = maintenant.getYear();
         if(cette_annee < 999) cette_annee+=1900;
         var ce_jour = maintenant.getDate();
         var temps = new Date(an,mois-1,1);
         var Start = temps.getDay();
         if(Start > 0) Start--;
         else Start = 6;
         var Stop = 31;
         if(mois==4 ||mois==6 || mois==9 || mois==11 ) --Stop;
         if(mois==2) {
          Stop = Stop - 3;
          if(an%4==0) Stop++;
          if(an%100==0) Stop--;
          if(an%400==0) Stop++;
         }
         document.write('<table border="3" cellpadding="1" cellspacing="1">');
         var entete_mois = nom_mois[mois-1] + " " + an; inscrit_entete(entete_mois,arrplan_entete,couleur_pol_entete,taille_pol_entete,police_entete);
         var nombre_jours = 1;
         for(var i=0;i<=5;i++) {
           document.write("<tr>");
           for(var j=0;j<=5;j++) {
             if((i==0)&&(j < Start))     inscrit_cellule("&#160;",arrplan_jours,coul_pol_jours,taille_pol_jours,police_jours);
             else {
               if(nombre_jours > Stop)           inscrit_cellule("&#160;",arrplan_jours,coul_pol_jours,taille_pol_jours,police_jours);
               else {
                 if((an==cette_annee)&&(mois==ce_mois)&&(nombre_jours==ce_jour))                  inscrit_cellule(nombre_jours,couleur_cejour,coul_pol_jours,taille_pol_jours,police_jours);
                 else             inscrit_cellule(nombre_jours,arrplan_jours,coul_pol_jours,taille_pol_jours,police_jours);
                 nombre_jours++;
                 }
               }
             }
             if(nombre_jours > Stop)           inscrit_cellule("&#160;",arrplan_jours,couleur_dim,taille_pol_jours,police_jours);
             else {
               if((an==cette_annee)&&(mois==ce_mois)&&(nombre_jours==ce_jour))           inscrit_cellule(nombre_jours,couleur_cejour,couleur_dim,taille_pol_jours,police_jours);
               else              inscrit_cellule(nombre_jours,arrplan_jours,couleur_dim,taille_pol_jours,police_jours);
               nombre_jours++;
             }
             document.write("<\/tr>");
           }
         document.write("<\/table>");
         }
         function inscrit_entete(titre_mois,couleurAP,couleurpolice,taillepolice,police) {
         document.write("<tr>");
         document.write('<td align="center" colspan="7" valign="middle" bgcolor="'+couleurAP+'">');
         document.write('<font size="'+taillepolice+'" color="'+couleurpolice+'" face="'+police+'"><b>');
         document.write(titre_mois);
         document.write("<\/b><\/font><\/td><\/tr>");
         document.write("<tr>");
         for(var i=0;i<=6;i++)
           inscrit_cellule(jour[i],couleurAP,couleurpolice,taillepolice,police);
         document.write("<\/tr>");
         }
         function inscrit_cellule(contenu,couleurAP,couleurpolice,taillepolice,police) {
         document.write('<td align="center" valign="middle" bgcolor="'+couleurAP+'">');
         document.write('<font size="'+taillepolice+'" color="'+couleurpolice+'" face="'+police+'"><b>');
         document.write(contenu);
         document.write("<\/b><\/font><\/td>");
         }
         //-->
         </script>

Grâce à ce code on obtient ceci :

Cependant si vous copier ces codes vous n’obtiendrez malheureusement pas le même résultat car il manque le code CSS qui permet de mettre en « forme » et en « couleur » la page. 

Donc en premier lieu nous allons voir la mise en page en générale puis nous verrons partie par partie les différents code qui permettent de faire la même mise en page finale.

<style>
body {margin:0;}
body {
    margin: 15;
    border : ;
    background-color: #black;
                font-family: 'Gadugi';
}
h3 {
    color : #EFEFEF;
    text-align : center;
    font-family : ;
    font-weight : bold;
        font-size : 20px;
        font-family: 'Gadugi';
}
h2 {
        font-family : ;
    color :#EFEFEF;
    text-align : center;
        font-size : 30px;
                font-family: 'Gadugi';

Cette partie du code permet de faire la mise en page avec la couleur de fond, de définir la police des texte qui auront la balise h2 et h3.

Ensuite nous avons le code qui permet de modifier le « bouton » pour le programme de l’adresse IP :

.bouton {
    padding: 10px 10px;
    background: #CCCCCC;
    color: #39304A;
    border-radius: 30px;
        }

Et enfin voici le code CSS qui permet de faire la mise en page du menu, qui contient toutes les informations, que donnent les codes que nous avons vus précédemment.

Le code est ci-dessous :

/* Style the tab */
.tab {
  float: left;
  border: 1px solid #839788;
  background-color: #BDBBB6;
  width: 30%;
  height: 300px;
}
.tab button {
  display: block;
  background-color: inherit;
  color: black;
  padding: 22px 16px;
  width: 100%;
  border: none;
  outline: none;
  text-align: left;
  cursor: pointer;
  font-size: 17px;
}
.tab button:hover {
  background-color: #ddd;
}
.tab button.active {
  background-color: #ccc;
}
.tabcontent {
  float: left;
  padding: 0px 12px;
  border: 1px solid #ccc;
  width: 70%;
  border-left: none;
  height: 300px;
  display: none;
}
.clearfix::after {
  content: "";
  clear: both;
  display: table;
}

Les lignes de codes ci-dessus permettent la mise page du tableau qui contient les informations données par les codes en javascript.

Nous en avons donc fini avec les différentes lignes de codes qui composent notre page HTML

Les problèmes rencontrés et leurs solutions

Durant la conception de notre page HTML nous avons rencontrés très peu de problèmes concernant les codes. Cependant nous avons eux quelques fois le menu, permettant de faire le lien entre les futures pages des élèves, qui ne s’affichait plus. Le problème était tout simplement que le code n’était pas bien positionné, il se situait dans le partie CSS alors qu’il fallait tout simplement le mettre dans la partie « head ».

Le plus gros problème a été de réussir à trouver des codes qui fonctionnaient correctement et qui n’étaient pas trop complexe ni trop simples.

Les différentes modifications apportées aux codes

Durant la création de la page nous avons très légèrement modifié certains codes. Il y avait des éléments qui paraissaient inutiles. 
Par exemple :

  • Le code qui donne l’adresse IP avait une autre partie de code qui permettait de se souvenir de l’adresse IP du précédent utilisateur du programme. Cela ne faisait que mettre la même adresse, ce qui paraissait un peut inutile, nous l’avons donc supprimé.
  • Nous avons aussi modifié la couleur et la forme du bouton qui permet de lancer le code qui donnait l’adresse IP.

Conclusion et code final

Voici donc ce compte rendu terminé j’espère que nous vous aurons aidé à comprendre les différentes lignes des codes que nous vous avons proposé.

Vous trouverez donc ci-joint le code final, entièrement complété qui vous permettra d’avoir la même page que la mienne.

Merci de votre lecture.