?
<!DOCTYPE html>
<!--sans le doctype html les differents navigateurs ont des comportements etranges, comme par exemple chrome qui ne reconnait pas le padding pour l'element body-->
<html>
<head>
<meta charset="UTF8">
<!--pour que les mediaqueries qui rendent le site responsive fonctionnent sur les telephones et tablettes il faut que celles-ci utilisent leurs veritables dimensions, ce qu'elles ne font pas par defaut, elles ont un viewport qui correspond aux dimensions d'un ecran d'ordinateur, plutot que de le preciser ici on pourrait aussi dans le css a chaque fois ecrire (min-device-width) au lieu de (min-width)-->
<meta name="viewport" content="width=device-width">
<title>my css skills</title>
<link href="./cssskills.css" type="text/css" rel="stylesheet">
<style>
   /*general settings*/
   * {
      margin: 0;
   }
   body {
      margin: 0;
      padding: 0;
   /*lorsque la page scroll automatiquement, vers une ancre par exemple elle y va doucement*/
      scroll-behavior: smooth;
   }
   body * {
      margin: auto;
   }
   /*les apparences des textes dans le site*/
   a, p, h1, h2, h3, h4, span, option, label {
      position: relative;
      font-family: "Courier New";
      text-decoration: none;
      text-align: center;
      z-index: 1;
   }
   span, option, label {
      text-align: left;
      font-size: 15px;
   }
   button {
      font-size: 13px;
   }
   a, h1, h2, h3 {
      color: rgb(204, 51, 255);
   }
   h1, h2 {
      text-shadow: 0px 0px 9px black;
   }
   a, p, h3 {
      font-size: 15px;
   }
   p {
      position: relative;
      background-color: rgba(204, 51, 255, 0.8);
      border-radius: 5px;
      padding: 10px;
      color: rgb(255, 204, 255);
   }
</style>
</head>
<body>
   <!--ce n'est pas du css pure, mais pour que les boutons marchent sur les telephones et tablettes apple il faut rajouter onclick, sur les boutons mais aussi sur la div generale pour pouvoir cliquer en dehors du bouton pour fermer son action-->
   <titre onclick="">
   <div id="title">
      <h1>my skills in css</h1>
      <h2>boom<br> </h2>
      <h2>ce site vous fait mal aux yeux</h2>
      <h2>sans meme vous toucher</h2>
      <h2>c'est ca l'intelligence artificielle</h2>
      <h2>on est dans le dualisme corps esprit</h2>
      <h2>a fond</h2>
   </div>
   <div id="instructions">
      <h3>cliquez ou survolez ces petits points d'interrogation</h3>
      <h3>pour avoir les codes css et html des elements de la page</h3>
   </div>
   </titre>
</body>
</html>
?
<!DOCTYPE html>
<html>
<head>
<style>
   /*mise en place des petits boutons pour expliquer le code*/
   /*ils sont places de manniere absolute un peu partout sur la page*/
   .question {
      display: block;
      position: absolute;
   }
   /*dessin du rond*/
   .circle {
      z-index: 4;
      position: relative;
      width: 14px;
      height: 14px;
      border-radius: 7px;
      background-color: rgba(204, 51, 255, 0.8);
      cursor: pointer;
   }
   /*apparence du point d'interrogation qui tourne, un peu en dessous du rond pour ne pas empecher de cliquer dessus, avec un padding inferieur qui descend jusqu'au milieu du rond pour etre le centre de rotation*/
   .questionmark {
      display: block;
      position: absolute;
      top: -20px;
      left: 2px;
      z-index: 3;
      margin: 0;
      padding: 0 0 10px 0;
      font-size: 16px;
      background-color: transparent;
      color: rgb(204, 51, 255);
      transform-origin: bottom center;
      cursor: default;
      opacity: 1;
   }
   /*le cadre qui apparait avec les transitions de visibility et d'opacity qui permettent d'avoir une transition a l'apparition contrairement au display:none mais d'avoir un element inexistant tant qu'il n'est pas visible pour eviter qu'il apparaisse quand on passe la souris au dessus, ainsi qu'une variation du z-index pour qu'il ne bloque pas les elements au-dessus duquel il se trouve avant l'apparition et qu'il soit le plus eleve apres*/
   .tooltip {
      opacity: 0;
      visibility: hidden;
      position: fixed;
      z-index: 0;
      top: 10vh;
      left: calc(50% - 250px);
      width: 500px;
      max-width: 80vw;
      height: 80vh;
      padding: 10px;
      overflow: hidden;
      border-radius: 10px;
      background-color: rgba(50, 50, 50, 0.9);
      transition: all 0.5s;
      transition: opacity 0.5s, visibility 0.5s, z-index 0.1s 0.5s;
   }
   /*mettre max-width n'est pas suffisant generalement sur les telephones car leur viewport ne correspond pas a leur veritable largeur d'ecran, ils se croient plus grand qu'ils ne sont, ca pourrait etre resolu en mettant max-device-width mais j'ai choisis plutôt de le preciser une fois pour toute dans les meta du html avec name="viewport" et content="width=device-width"*/
   @media screen and (max-width: 600px){
      .tooltip {
         left: 7%;
      }
   }
   /*le texte dans le cadre qui apparait*/
   .questionScroll {
      height: 100%;
      width: calc(100% + 25px);
      box-sizing: border-box;
      padding-right: 10px;
      overflow-y: scroll;
   }
   .questionScroll p {
      margin: 0;
      padding: 0;
      background-color: transparent;
      text-align: left;
      color: #d3d3d3;
   }
   .questionScroll #tag {
      color: #669999;
   }
   .questionScroll #sign {
      color: white;
   }
   .questionScroll #action {
      color: #cc66cc;
   }
   .questionScroll #selec {
      color: #ff6633;
   }
   .questionScroll #pseudo {
      color: yellow;
   }
   .questionScroll #special {
      color: #8585ad;
   }
   .questionScroll #comment {
      color: #909090;
   }
   /*quand la souris passe au dessus du rond sa position augmente, c'est necessaire pour que la position des elements qui apparaissent puisse etre elevee aussi, car ils sont dépendant de cet element parent et n'iront donc jamais plus haut*/
   .circle:hover {
      z-index: 7;
   }
   /*quand la souris passe au dessus du point ou clique dessus la fenetre apparait doucement, avec un delay specialement pour le z-index afin de laisser le temps au point d'interrogation de faire son animation meme quand la fenetre apparaitra au dessus de lui*/
   .circle:focus ~ .tooltip, .circle:hover ~ .tooltip {
      z-index: 6;
      opacity: 1;
      visibility: visible;
      transition: opacity 1s 0.5s, z-index 0.1s 0.5s;
   }
   /*animation du point d'interrogation*/
   .circle:focus + p, .circle:hover + p {
      opacity: 0;
      transform: rotate(180deg);
      transition: all 1s;
   }
   /*une fois la fenetre apparu, on la maintient presente si la souris passe dessus*/
   .tooltip:hover {
      z-index: 6;
      opacity: 1;
      visibility: visible;
   }
   /*positionnement des questions*/
   /*les divs avec toutes les elements necessaires pour le fonctionnement de ces quesitons sont placees un peu partout dans la page et c'est ici qu'on gere toutes les positions*/
   #questionOne {
      right: 45%;
      top: 30%;
   }
   /*la couleur de fond est fonce alors on change la couleur du point d'interrogation*/
   #questionOne > p {
      color: rgb(255, 204, 255);
   }
   /*et du cercle*/
   #questionOne .circle {
      background-color: rgb(255, 204, 255);
   }
   #questionTwo {
      left: 30%;
      top: 70%;
   }
</style>
</head>
<body>
<div class="question" onclick="" id="questionOne">
<div class="circle" tabindex="0"></div>
   <p class="questionmark">?</p>
   <div class="tooltip">
      <div class="questionScroll">
      <p>some</p>
      <p id="tag">text</p>
      <p id="sign">with</p>
      <p id="action">differents</p>
      <p id="selec">colors</p>
      <p id="pseudo">on</p>
      <p id="special">each</p>
      <p id="comment">words</p>
      </div>
   </div>
</div>
<div class="question" onclick="" id="questionTwo">
<div class="circle" tabindex="0"></div>
   <p class="questionmark">?</p>
   <div class="tooltip">
      <div class="questionScroll">
      <p>another</p>
      <p id="tag">text</p>
      <p id="sign">with</p>
      <p id="action">differents</p>
      <p id="selec">colors</p>
      <p id="pseudo">on</p>
      <p id="special">each</p>
      <p id="comment">words</p>
      </div>
   </div>
</div>
</body>
</html>
:hover
disco
?
<!DOCTYPE html>
<html>
<head>
<style>
   /*ce bouton clignote grace a une transition sur le z-index : au hover de l'element, le bouton change d'apparence, et un autre element cache derriere augmente son z-index au dessus en 1s, et une fois arrive devant le hover ne marche plus, donc la transition fait repasser l'element cache en 1s en dessous du coup le hover re-marche, etc...*/
   /*sur le site la position est relative et le bouton est place en display:flex mais si le code est copie pour voir c'est plus simple de le mettre au milieu de la page*/
   #clignote {
      position: absolute;
      top: 50%;
      left: 50%;
   }
   #disco {
      position: relative;
      z-index: 5;
      font-family: "Courier New";
      text-decoration: none;
      text-align: center;
      font-size: 15px;
      background-color: rgba(204, 51, 255, 0.8);
      border-radius: 5px;
      padding: 10px;
      color: rgb(255, 204, 255);
   }
   /*le z-index est inferieur au bouton*/
   #camoufle {
      position: absolute;
      content: "";
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      z-index: 4;
      transition: z-index 1s;
   }
   /*quand on passe au dessus du bouton il change de couleur*/
   #disco:hover {
      background-color: rgba(255, 204, 255, 0.8);
      color: rgb(204, 51, 255);
      cursor: default;
   }
   /*et quand on passe au dessus du bouton, l'objet #camouffle passe au dessus du bouton*/
   #disco:hover + #camoufle {
      z-index: 6;
      transition: z-index 1s;
   }
/*mettre max-width n'est pas suffisant generalement sur les telephones car leur viewport ne correspond pas a leur veritable largeur d'ecran, ils se croient plus grand qu'ils ne sont, ca pourrait etre resolu en mettant max-device-width mais j'ai choisis plutot de le preciser une fois pour toute dans les meta du html avec name="viewport" et content="width=device-width"*/
/*pour les ecrans de tablettes en position horizontale*/
@media screen and (max-width: 900px) {
   /*pour aligner les boutons verticalement*/
   pseudo {
      flex-direction: column;
      /*on change le padding haut et bas en plus petit*/
      padding: 100px 0;
      /*pour les bulles qui apparaissent et sortent du cadre*/
      overflow: hidden;
   }
   /*pour mettre de l'espace entre les boutons*/
   pseudo > div {
      margin: 90px auto;
   }
   /*elargissement des boutons quand ils sont dans la position verticale*/
   #disco, #hoverextended > p, #focus > p, #windowstarget > a, #beforeafter > p {
      padding: 10px 50px;
   }
}
</style>
</head>
<body>
<div id="clignote">
   <p id="disco">:hover<br>disco</p>
   <span id="camoufle"></span>
</div>
</body>
</html>
:focus
?
<!DOCTYPE html>
<html>
<head>
<style>
   /*en cliquant sur le bouton des bulles apparaissent pour que au clique sur le bouton un autre element, ici les bulles, subissent une action, ce n'est pas aussi simple que le hover ou le active, il faut ajouter un tabindex="0" a cet element pour que ses enfants soient touchees*/
      /*sur le site la position est relative et le bouton est place en display:flex mais si le code est copie pour voir c'est plus simple de le mettre au milieu de la page*/
   #focus {
      position: absolute;
      top: 50%;
      left: 50%;
   }
   /*le cadre du bouton*/
   /*on enleve le cadre habituel car on veut que le cadre soit independant du texte pour se transformer en bulle*/
   #focus > p {
      padding: 10px;
      z-index: 2;
   }
   /*dessin du cadre*/
   #bull {
      margin: auto;
      border-radius: 5px;
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0;
      bottom: 0;
      left: 50%;
      margin-left: -50%;
      transition: all 0.3s;
      background-color: rgba(204, 51, 255, 0.8);
   }
   /*l'apparence generale des bulles, qui sont petites et vont grossir au focus*/
   .bulles {
      /*le margin:auto change le comportement du placement en absolute, en creant des marges autour de chaque bulle qui la placent au milieu, par exemple top et bottom a 0 permet d'etre centre verticalement, et left a -210px et right a 0 met la bulle a -105px*/
      margin: auto;
      position: absolute;
      width: 0;
      height: 0;
      border-radius: 50%;
      /*toutes les bulles sont definies a 0 sur les quatre axes par defaut, puis un valeure sur un axe les place au bon endroit*/
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      background-color: rgba(255, 204, 255, 0.8);
      transition: all 0.3s;
   }
   /*la position et taille de chaque bulle*/
   #bulla {top: -210px;}
   #bullb {right: -210px;}
   #bullc {bottom: -210px;}
   #bulld {left: -210px;}
   #bulle {top: -350px;}
   #bullf {right: -350px;}
   #bullg {bottom: -350px;}
   #bullh {left: -350px;}
   #bulli {top: -460px;}
   #bullj {right: -460px;}
   #bullk {bottom: -460px;}
   #bulll {left: -460px;}
   /*l'activation des bulles*/
   /*pour que les bulles passent au premier plan quand elles sont activees*/
   #focus:focus {
      outline: none;
      z-index: 7;
   }
   /*la couleur du text du bouton*/
   #focus:focus > p {
      color: rgb(204, 51, 255);
      z-index: 6;
   }
   /*l'apparition des bulles en cliquant sur le bouton, toujours grace au
   tabindex="0" sur le bouton pour que le focus marche sur les enfants*/
   /*chaque bulle*/
   #focus:focus #bull {
      width: 100px;
      height: 100px;
      top: 0;
      z-index: 5;
      bottom: 0;
      left: 50%;
      margin-left: -50px;
      border-radius: 50%;
      background-color: rgba(255, 204, 255, 0.8);
      transition: all 0.3s;
   }
   /*la taille de chaque bulle est definis au moment de l'apparition, avec un leger delay pour chaque rang de bulle*/
   #focus:focus .bull1 {
      width: 60px;
      height: 60px;
      transition: all 0.4s;
      transition-delay: 0.1s;
   }
   #focus:focus .bull2 {
      width: 45px;
      height: 45px;
      transition: all 0.4s;
      transition-delay: 0.2s;
   }
   #focus:focus .bull3 {
      width: 35px;
      height: 35px;
      transition: all 0.4s;
      transition-delay: 0.3s;
   }
/*mettre max-width n'est pas suffisant generalement sur les telephones car leur viewport ne correspond pas a leur veritable largeur d'ecran, ils se croient plus grand qu'ils ne sont, ca pourrait etre resolu en mettant max-device-width mais j'ai choisis plutot de le preciser une fois pour toute dans les meta du html avec name="viewport" et content="width=device-width"*/
/*pour les ecrans de tablettes en position horizontale*/
@media screen and (max-width: 900px) {
   /*pour aligner les boutons verticalement*/
   pseudo {
      flex-direction: column;
      /*on change le padding haut et bas en plus petit*/
      padding: 100px 0;
      /*pour les bulles qui apparaissent et sortent du cadre*/
      overflow: hidden;
   }
   /*pour mettre de l'espace entre les boutons*/
   pseudo > div {
      margin: 90px auto;
   }
   /*elargissement des boutons quand ils sont dans la position verticale*/
   #disco, #hoverextended > p, #focus > p, #windowstarget > a, #beforeafter > p {
      padding: 10px 50px;
   }
}
</style>
</head>
<body>
<div id="focus" tabindex="0">
   <p>:focus</p>
   <span id="bull"></span>
   <span class="bulles bull1" id="bulla"></span>
   <span class="bulles bull1" id="bullb"></span>
   <span class="bulles bull1" id="bullc"></span>
   <span class="bulles bull1" id="bulld"></span>
   <span class="bulles bull2" id="bulle"></span>
   <span class="bulles bull2" id="bullf"></span>
   <span class="bulles bull2" id="bullg"></span>
   <span class="bulles bull2" id="bullh"></span>
   <span class="bulles bull3" id="bulli"></span>
   <span class="bulles bull3" id="bullj"></span>
   <span class="bulles bull3" id="bullk"></span>
   <span class="bulles bull3" id="bulll"></span>
</div>
</body>
</html>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
?
<!DOCTYPE html>
<html>
<head>
<style>
   /*le principe c'est que le bouton est un lien <a> et quand on clique dessus il renvoit le href="#quelqueChose", ce qui ajoute #quelqueChose a l'url de navigation, puis, lorsqu'on applique le pseudo element target, quelqueChose:target, les actions precisees dans le code css s'activent pour l'element quelqueChose des que l'url est transformee*/
   /*ici c'est une fenetre qui passe de display:none a display:block au target*/
   /*il faut bien placer l'ancre #target parce que la page va scroller dessus*/
   /*les reglages principaux*/
   /*le texte du lien*/
   #windowstarget > a {
      position: relative;
      background-color: rgba(204, 51, 255, 0.8);
      border-radius: 5px;
      padding: 5px;
      color: rgb(255, 204, 255);
      cursor: pointer;
   }
   /*la fenetre qui apparaitra*/
   #target {
      display: none;
      position: absolute;
      width: 400px;
      max-width: 80%;
      top: 50%;
      left: 50%;
      padding: 200px 0;
      transform: translate(-50%, -50%);
      background-color: transparent;
      z-index: 7;
   }
   /*le texte dans la fenetre*/
   #target p {
      text-align: justify;
   }
   /*le fond de la fenetre, translucide*/
   #target #autour {
      padding: 5px;
      background-color: rgba(100, 100, 100, 0.4);
      border: 1px solid #777;
      border-radius: 10px;
   }
   /*le bouton, juste la lettre x, pour fermer le target, c'est a dire juste changer l'url en cliquant sur le x*/
   #close {
      margin: 5px;
      font-size: 30px;
      font-weight: bold;
      text-decoration: none;
      color: rgb(204, 51, 255);
      background-color: transparent;
   }
   /*le bouton change d'apparence au clic*/
   #close:hover, #close:focus {
      color: rgb(255, 204, 255);
      cursor: pointer;
      /*pour empecher le soulignement automatique des liens par le navigateur*/
      text-decoration: none;
   }
   /*quand l'url se termine par #target, l'action target s'active, ici faire apparaitre la fenetre*/
   #target:target {
      display: block;
   }
/*mettre max-width n'est pas suffisant generalement sur les telephones car leur viewport ne correspond pas a leur veritable largeur d'ecran, ils se croient plus grand qu'ils ne sont, ca pourrait etre resolu en mettant max-device-width mais j'ai choisis plutot de le preciser une fois pour toute dans les meta du html avec name="viewport" et content="width=device-width"*/
/*pour les ecrans de tablettes en position horizontale*/
@media screen and (max-width: 900px) {
   /*pour aligner les boutons verticalement*/
   pseudo {
      flex-direction: column;
      /*on change le padding haut et bas en plus petit*/
      padding: 100px 0;
      /*pour les bulles qui apparaissent et sortent du cadre*/
      overflow: hidden;
   }
   /*pour mettre de l'espace entre les boutons*/
   pseudo > div {
      margin: 90px auto;
   }
   /*elargissement des boutons quand ils sont dans la position verticale*/
   #disco, #hoverextended > p, #focus > p, #windowstarget > a, #beforeafter > p {
      padding: 10px 50px;
   }
}
</style>
</head>
<body>
<div id="windowstarget">
   <a href="#target" title="target">:target</a>
   <div id="target">
      <div id="autour">
      <a href="#pseudo" id="close">x</a>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      </div>
   </div>
</div>
</body>
</html>
:before
:after
?
<!DOCTYPE html>
<html>
<head>
<style>
   /*on utilise ici deux pseudos elements, before et after, pour faire une ombre tordue*/
   /*reglages generaux*/
   /*sur le site la position est relative et le bouton est place en display:flex mais si le code est copie pour voir c'est plus simple de le mettre au milieu de la page*/
   #beforeafter {
      position: absolute;
      top: 50%;
      left: 50%;
      outline: none;
      width: 100px;
   }
   #beforeafter p {
      text-align: center;
   }
   /*le dessin des deux ombres qui forment l'ombre courbee*/
   #beforeafter:before, #beforeafter:after {
      position: absolute;
      content: "";
      bottom: 23px;
      width: 43%;
      height: 3px;
      background-color: transparent;
      /*je definis deux ombres, pour affiner l'effet
      dans l'ordre les valeurs correspondents à : deplacement horizontal,
      deplacement vertical, effet blur, et la couleur*/
      box-shadow: 0 20px 3px rgba(0, 0, 0, 0.4), 0 18px 5px rgba(0, 0, 0, 1);
      transition: all 0.5s;
   }
   /*l'ombre de droite*/
   #beforeafter:after {
      right: 5px;
      transform: rotate(9deg);
   }
   /*l'ombre de gauche*/
   #beforeafter:before {
      left: 5px;
      transform: rotate(-9deg);
   }
   /*l'animation au clic pour montrer les deux ombres*/
   #beforeafter:focus:after {
      bottom: -50px;
      right: 53%;
      transform: rotate(-171deg);
      transform-origin: right;
      transition: all 0.5s linear;
   }
   #beforeafter:focus:before {
      bottom: -50px;
      left: 53%;
      transform: rotate(171deg);
      transform-origin: left;
      transition: all 0.5s linear;
   }
/*mettre max-width n'est pas suffisant generalement sur les telephones car leur viewport ne correspond pas a leur veritable largeur d'ecran, ils se croient plus grand qu'ils ne sont, ca pourrait etre resolu en mettant max-device-width mais j'ai choisis plutot de le preciser une fois pour toute dans les meta du html avec name="viewport" et content="width=device-width"*/
/*pour les ecrans de tablettes en position horizontale*/
@media screen and (max-width: 900px) {
   /*pour aligner les boutons verticalement*/
   pseudo {
      flex-direction: column;
      /*on change le padding haut et bas en plus petit*/
      padding: 100px 0;
      /*pour les bulles qui apparaissent et sortent du cadre*/
      overflow: hidden;
   }
   /*pour mettre de l'espace entre les boutons*/
   pseudo > div {
      margin: 90px auto;
   }
   /*elargissement des boutons quand ils sont dans la position verticale*/
   #disco, #hoverextended > p, #focus > p, #windowstarget > a, #beforeafter > p {
      padding: 10px 50px;
   }
}
</style>
</head>
<body>
<div id="beforeafter" tabindex="0">
   <p>:before<br />:after</p>
</div>
</body>
</html>
au dessus de cette limite la nav bar est visible
en dessous de cette limite la nav bar est cachée
Blaise Pascal a 19 ans fabrique la premiere machine a calculer, la pascaline, qui fait les additions et les soustractions. Leibniz ajoute les multiplication 50 ans plus tard, sur la multiplicatrice.
Vaucanson fabrique des automates fonctionnants a base de bandes perforees qui atteignent un but en le decomposant en une succession d'etapes formelles.
Baddage invente la machine a difference, aussi appelee machine baddage, qui a pour but de calculer des polynomes sans faire d'erreur et d'eviter ainsi beaucoup d'accidents de navigations resultants de calculs faux. La machine possede une architecture proche de celle des ordinateurs d'aujourd'hui, avec des peripheriques d'entree, une unite centrale, et des peropheriques de sortie.
Ada Lovelace travaille avec baddage pour la construction de sa machine et propose le premier algorithme destine a etre execute par une machine, la machine baddage. Elle parle deja demachines universelles capables de faire d'autres choses que resoudre de calculs, comme ecrire de la musique ou automatiser des taches repetitives.
George Boole, mathematicien, met au point l'algebre binaire, qui est le fondement du langage binaire et des operations booleennes.
Hermann Hollerith invente une machine a calculer qui peut imprimer ses resultats et qui fonctionne electriquement et non pas mecaniquement. Elle est utilise pour le recensement de la population des etats-unis, qui ne prend ducoup que 6 mois et fait economiser 5 millions de dollars. Il fonde la Computing Tabulating Machine Corporation qui devient IBM, i pour international, en 1924.
Alan Turing publie sa these dans laquelle il decrit le fonctionnement de la machine de turing, qui consiste a montrer que pour n'importe quel calcul il existe une machine qui peut effectuer la bonne succession d'action pour le resoudre, puis de la machine de turing universelle, une machine qui peut simuler n'importe quelle machine de turing grace a un langage de programmation.
Konrad Zuse construit une machine a calculer qui fonctionne sur le langage binaire et est programmable comme l'avait imaginee Ada Lovelace, le Z3, qui fait 17m de long et calcul 5 fois plus vite qu'un humain.
Howard Aiken, ingenieur chez IBM, construit avec l'universite de Harvard le premier ordinateur qui pouvait stocker des programmes, le Mark 1, en s'appuyant sur les travaux du mathematicien John von Neumann mais en proposant une architecture differente, en theorie plus rapide mais en pratique trop complexe et donc peut performante, il fait 16m de long et peut faire trois additions par secondes mais parfois presqu'une minute pour une division ou un logarithme.
John von Neumann invente le premier ordinateur qui soit entierement une machine de turing electronique, l'ENIAC!, il ne presente pas de pieces mecaniques, il peut faire environ 330 additions par secondes, et occupe une surface de 72m2. Il se programme manuellement en binaire avec des commutateurs et des cables a enficher.
lors d'un test du Mark 2, un insecte, bug en anglais, fait griller un circuit, provoquant le premier cas de bug dans l'histoire et l'invention de cette expression
Maurice Wilkes developpe le langage assembleur, qui permet de ne plus coder directement en binaire. Il est utilisé comme une moyen mnémotechnique pour ecrire les programmes a la main plus facilement qu'en manipulant une suite de 0 et de 1, puis il est traduit a la main en langage binaire, il n'y a pas encore de programme assembleur. Il est utilisé sur l'EDSAC, fabriqué par Maurice Wilkes, et le premier ordinateur totalement a architeccture de Von Neumann, et le premier calculateur a programmes enregistrés.
Eckert et Mauchly mettent au point l'UNIVAC, le premier ordinateur commercial, qu'on voit la bd Tintin Objectif Lune de Herge.
Nathaniel Rochester développe le premier programme assembleur pour automatiser la tache de traduire du langage assembleur en langage binaire, pour le premier IBM commercial, le IBM 701.
Grace Hopper developpe le langage FlowMatic, qui devint le COBOL en 1959.
la firm Bell créer le premier modem pour echanger des donnees par le biais des lignes telephoniques.
le MIT et d'autres universites utilisent CTSS pour echanger des informations a distance et Leonard Kleinrock du MIT publie une theorie sur l'utilisation de la commutation par paquets pour transferer des donnees.
l'agence DARPA de la defense americaine debute des recherches menees par Licklider sur un reseau global d'ordinateurs.
Mauchly construit le premier ordinateur portable qui tient dans une malette.
IBM utilise le nouveau satellite de telecommunication TELSTAR 1 fabrique par un consortium AT&T, les Bells Labs, la NASA, la Poste Anglaise et les PTT franais. Le satellite arreta de fonctionner au bout de 7 mois. Il est muet aujourd'hui mais on peut encore suivre sa trajectoire sur le site http://www.n2yo.com/satellite/?s=340.
Gordon Moore ennonce la loi de moore, qui predit une evolution exponentielle des capacite de ordinateurs et qui est toujours vraie aujourd'hui.
la DARPA lance le projet ARPANET, en collaboration avec 4 universités, qui essaye de creer une reseau d'ordinateurs.
Douglas Engelbart invente la souris.
Ray Tomlisson envoi le premier email, 23 ordinateurs sont relies a l'ARPANET
John Blankenbaker fabrique et commercialise le premier micro ordinateur, le kenbak-1, qui fonctionne sans micro-processeur.
Martin Cooper met au point le premier telephone portable, il fait 1,2 kg et a 20 minutes d'autonomies en communication.
?
<!DOCTYPE html>
<html>
<head>
<style>
   /*section remplie de formulaires :-) */
   /*reglages generaux de la section*/
   * {
      margin: auto;
   }
   formulaire {
      position: relative;
      display: flex;
      flex-direction: row;
      width: 100%;
      color: rgb(255, 204, 255);
   }
   /*suppression des pointilles automatiques lors de la selection*/
   formulaire * {
      outline: none;
      cursor: default;
   }
   /*creation d'un voile devant le fond*/
   formulaire:before {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: rgba(50, 50, 50, 0.5);
   }
   /*repartir les deux zones de formulaire sur la page*/
   #form1 {
      position: relative;
      width: 60%;
      overflow: hidden;
      margin: 0;
   }
   #form2 {
      position: relative;
      width: 40%;
      margin: 0;
   }
   /*quand on clique sur un bouton du formulaire ou qu'on remplis un champs ca assombri le fond*/
   #form1:focus-within, #form2:focus-within {
      background-color: rgba(50, 50, 50, 0.2);
   }
   /*cacher les inputs par defaut*/
      input:not([type="text"]) {
      visibility: hidden;
      position: absolute;
   }
   /*les bouts de formulaires qui doivent etre alignes en ligne*/
   .inputline {
      display: flex;
      flex-direction: line;
   }
   /*les bouts de formulaires qui doivent etre alignes en colonnes*/
   .inputcolumn {
      display: flex;
      flex-direction: column;
   }
   /*on met le compteur a zero*/
   #form2 form {
      counter-reset: sum;
   }
   /*pour gerer tous les input les uns apres les autres on va devoir organiser la page en ligne avec wrap, attention ca va etre galere*/
   #form2 {
      position: relative;
      flex-wrap: wrap;
   }
   #clavier {
      display: flex;
      flex-wrap: wrap;
   }
   /*la couleur des textes des labels*/
   #form2 label {
      color: rgb(204, 51, 255);
   }
   /*mise en page du cadre general du formulaire*/
   #form2 form {
      width: 60%;
      width: 350px;
      flex-wrap: wrap;
      position: relative;
      margin: 20px auto 100px auto;
      /*ce z-index permet de positionner le formulaire au bon niveau pour que les boutons puissent etre cache en dessous*/
      z-index: 1;
   }
   /*mise en page de la zone de regles*/
   /*les espaces autour de cette zone*/
   #reglecount {
      margin: 100px 0 20px 0;
   }
   /*le texte*/
   #reglecount p {
      text-align: center;
      width: 80%;
      margin: 0 10%;
   }
   /*mise en page de la zone des boutons ronds*/
   /*les intstructions*/
   #form2 form > p {
      position: absolute;
      width: 100%;
      text-align: center;
      left: 0;
      top: 45px;
      visibility: hidden;
   }
   /*quand un des cinq boutons est selectionne ca affiche le texte*/
   #form2 form input:checked + label + p {
      visibility: visible;
   }
   /*la position et le texte des boutons ronds*/
   #form2 form > label {
      position: relative;
      height: 60px;
      /*on met width a 20% pour que les boutons remplissent toute la largeur*/
      width: 20%;
      text-align: center;
      padding-top: 10px;
      cursor: default;
   }
   /*le texte des boutons ronds au clique*/
   #form2 form input:checked + label {
      color: rgb(255, 204, 255);
   }
   /*l'apparence du cadre des boutons ronds*/
   #form2 form > label:before {
      content: "";
      position: absolute;
      top: -7px;
      left: calc(50% - 25px);
      height: 50px;
      width: 50px;
      border-radius: 50%;
      background-color: rgb(255, 204, 255);
      z-index: -1;
   }
   /*pour que le cercle affiche une curseur cliquable au survol on creer le meme bouton que before, mais transparent et au dessus du label*/
   #form2 form > label:after {
      content: "";
      position: absolute;
      top: -7px;
      left: calc(50% - 25px);
      height: 50px;
      width: 50px;
      border-radius: 50%;
      background-color: transparent;
      cursor: pointer;
   }
   /*l'apparence des boutons ronds au clique*/
   #form2 input:checked + label:before {
      content: "";
      position: absolute;
      top: -3px;
      left: calc(50% - 20px);
      height: 40px;
      width: 40px;
      border-radius: 50%;
      background-color: rgb(204, 51, 255);
   }
   /*mise en page de la zone calculette*/
   /*l'apparence des boutons de la calculette*/
   /*la disposition des boutons carres*/
   #clavier label {
      position: relative;
      width: 20%;
      text-align: center;
      padding: 10px 0;
      margin: 10px 0;
      cursor: default;
   }
   /*le texte des boutons carres au clique*/
   #clavier input:checked + label {
      color: rgb(255, 204, 255);
   }
   /*l'apparence des boutons carres*/
   #clavier label:before {
      content: "";
      position: absolute;
      top: 0;
      left: calc(50% - 25px);
      height: 100%;
      width: 50px;
      border-radius: 10px;
      background-color: rgb(255, 204, 255);
      z-index: -1;
   }
   /*l'apparence des boutons carres au clique*/
   #clavier input:checked + label:before {
      content: "";
      position: absolute;
      top: 0;
      left: calc(50% - 25px);
      height: 100%;
      width: 50px;
      border-radius: 10px;
      background-color: rgb(204, 51, 255);
   }
   /*pour que le bouton affiche une curseur cliquable au survol on creer le meme bouton que before, mais transparent et au dessus du label*/
   #clavier label:after {
      content: "";
      position: absolute;
      top: 0;
      left: calc(50% - 25px);
      height: 100%;
      width: 50px;
      border-radius: 10px;
      background-color: transparent;
      cursor: pointer;
   }
   /*le message quand on gagne*/
   #win {
      visibility: hidden;
      background-color: rgb(255, 204, 255);
      color: rgb(204, 51, 255);
      width: 100%;
      border-radius: 5px;
      margin: 0;
   }
   /*les messages d'erreur*/
   #clavier p {
      display: none;
      text-align: center;
      width: 100%;
      margin: 10px 0;
   }
   /*mise en page de la zone somme*/
   #sum {
      padding: 10px;
      margin: 10px;
      border-radius: 10px;
      border: 2px solid rgb(255, 204, 255);
      cursor: pointer;
      font-size: 15px;
      background-color: transparent;
      color: rgb(255, 204, 255);
   }
   /*le counter qui affiche la somme des boutons*/
   #sum:after {
      height: 100%;
      width: 100%;
      content: counter(sum);
   }
   /*quand on selectionne un bouton rond ca camouffle certains boutons carres*/
   #quatre:checked ~ #clavier .quatre,
   #cinquanquatre:checked ~ #clavier .cinquanquatre,
   #cinquante:checked ~ #clavier .cinquante,
   #dixsept:checked ~ #clavier .dixsept,
   #soixantreize:checked ~ #clavier .soixantreize {
      z-index: -1;
   }
   #quatre:checked ~ #clavier .quatre:after,
   #cinquanquatre:checked ~ #clavier .cinquanquatre:after,
   #cinquante:checked ~ #clavier .cinquante:after,
   #dixsept:checked ~ #clavier .dixsept:after,
   #soixantreize:checked ~ #clavier .soixantreize:after {
      background-color: rgba(50, 50, 50, 0.5);
   }
   /*attribution de la valeur aux boutons pour le compteur*/
   #a:checked { counter-increment: sum 6; }
   #b:checked { counter-increment: sum -17; }
   #c:checked { counter-increment: sum 38; }
   #d:checked { counter-increment: sum 23; }
   #e:checked { counter-increment: sum -21; }
   #f:checked { counter-increment: sum 18; }
   #g:checked { counter-increment: sum 41; }
   #h:checked { counter-increment: sum -37; }
   #i:checked { counter-increment: sum 5; }
   #j:checked { counter-increment: sum -7; }
   #k:checked { counter-increment: sum 15; }
   #l:checked { counter-increment: sum 33; }
   #m:checked { counter-increment: sum 25; }
   #n:checked { counter-increment: sum 13; }
   #o:checked { counter-increment: sum 43; }
   /*l'affichage des messages pour les differentes combinaisons*/
   #quatre:checked ~ #clavier #a:not(:checked) ~ #b:checked ~ #c:not(:checked) ~ #d:not(:checked) ~ #e:not(:checked) ~ #f:checked ~ #g:not(:checked) ~ #h:checked ~ #i:not(:checked) ~ #j:not(:checked) ~ #k:checked ~ #l:not(:checked) ~ #m:checked ~ #n:not(:checked) ~ #o:not(:checked) ~ #win {
      visibility: visible;
   }
   /*les messages d'erreur pour quatre*/
   #quatre:checked ~ #clavier #a:not(:checked) ~ #b:not(:checked) ~ #c:not(:checked) ~ #d:checked ~ #e:not(:checked) ~ #f:not(:checked) ~ #g:not(:checked) ~ #h:checked ~ #i:not(:checked) ~ #j:checked ~ #k:not(:checked) ~ #l:not(:checked) ~ #m:checked ~ #n:not(:checked) ~ #o:not(:checked) ~ #error1 {
      display: block;
   }
   #quatre:checked ~ #clavier #a:not(:checked) ~ #b:not(:checked) ~ #c:not(:checked) ~ #d:not(:checked) ~ #e:checked ~ #f:not(:checked) ~ #g:not(:checked) ~ #h:not(:checked) ~ #i:not(:checked) ~ #j:not(:checked) ~ #k:not(:checked) ~ #l:not(:checked) ~ #m:checked ~ #n:not(:checked) ~ #o:not(:checked) ~ #error1 {
      display: block;
   }
   #quatre:checked ~ #clavier #a:not(:checked) ~ #b:not(:checked) ~ #c:not(:checked) ~ #d:checked ~ #e:not(:checked) ~ #f:checked ~ #g:not(:checked) ~ #h:checked ~ #i:not(:checked) ~ #j:not(:checked) ~ #k:not(:checked) ~ #l:not(:checked) ~ #m:not(:checked) ~ #n:not(:checked) ~ #o:not(:checked) ~ #error1 {
      display: block;
   }
   #quatre:checked ~ #clavier #a:not(:checked) ~ #b:checked ~ #c:not(:checked) ~ #d:checked ~ #e:checked ~ #f:checked ~ #g:not(:checked) ~ #h:checked ~ #i:not(:checked) ~ #j:not(:checked) ~ #k:not(:checked) ~ #l:not(:checked) ~ #m:checked ~ #n:checked ~ #o:not(:checked) ~ #error1 {
      display: block;
   }
   #quatre:checked ~ #clavier #a:checked ~ #b:not(:checked) ~ #c:not(:checked) ~ #d:checked ~ #e:checked ~ #f:checked ~ #g:not(:checked) ~ #h:checked ~ #i:not(:checked) ~ #j:not(:checked) ~ #k:checked ~ #l:not(:checked) ~ #m:not(:checked) ~ #n:not(:checked) ~ #o:not(:checked) ~ #error1 {
      display: block;
   }
   /*premiere solution pour soixantreize*/
   #soixantreize:checked ~ #clavier #a:not(:checked) ~ #b:not(:checked) ~ #c:not(:checked) ~ #d:not(:checked) ~ #e:checked ~ #f:not(:checked) ~ #g:checked ~ #h:not(:checked) ~ #i:checked ~ #j:not(:checked) ~ #k:checked ~ #l:checked ~ #m:not(:checked) ~ #n:not(:checked) ~ #o:not(:checked) ~ #win {
      visibility: visible;
   }
   /*le message qui indique les autres solutions*/
   #soixantreize:checked ~ #clavier #a:not(:checked) ~ #b:not(:checked) ~ #c:not(:checked) ~ #d:not(:checked) ~ #e:checked ~ #f:not(:checked) ~ #g:checked ~ #h:not(:checked) ~ #i:checked ~ #j:not(:checked) ~ #k:checked ~ #l:checked ~ #m:not(:checked) ~ #n:not(:checked) ~ #o:not(:checked) ~ #error3 {
      display: block;
   }
   /*deuxieme solution pour soixantreize*/
   #soixantreize:checked ~ #clavier #a:not(:checked) ~ #b:not(:checked) ~ #c:not(:checked) ~ #d:not(:checked) ~ #e:not(:checked) ~ #f:not(:checked) ~ #g:checked ~ #h:checked ~ #i:not(:checked) ~ #j:checked ~ #k:not(:checked) ~ #l:checked ~ #m:not(:checked) ~ #n:not(:checked) ~ #o:checked ~ #win {
      visibility: visible;
   }
   /*le message qui indique les autres solutions*/
   #soixantreize:checked ~ #clavier #a:not(:checked) ~ #b:not(:checked) ~ #c:not(:checked) ~ #d:not(:checked) ~ #e:not(:checked) ~ #f:not(:checked) ~ #g:checked ~ #h:checked ~ #i:not(:checked) ~ #j:checked ~ #k:not(:checked) ~ #l:checked ~ #m:not(:checked) ~ #n:not(:checked) ~ #o:checked ~ #error3 {
      display: block;
   }
   /*troisieme solution pour soixantreize*/
   #soixantreize:checked ~ #clavier #a:not(:checked) ~ #b:checked ~ #c:not(:checked) ~ #d:checked ~ #e:not(:checked) ~ #f:not(:checked) ~ #g:checked ~ #h:not(:checked) ~ #i:not(:checked) ~ #j:checked ~ #k:not(:checked) ~ #l:checked ~ #m:not(:checked) ~ #n:not(:checked) ~ #o:not(:checked) ~ #win {
      visibility: visible;
   }
   /*le message qui indique les autres solutions*/
   #soixantreize:checked ~ #clavier #a:not(:checked) ~ #b:checked ~ #c:not(:checked) ~ #d:checked ~ #e:not(:checked) ~ #f:not(:checked) ~ #g:checked ~ #h:not(:checked) ~ #i:not(:checked) ~ #j:checked ~ #k:not(:checked) ~ #l:checked ~ #m:not(:checked) ~ #n:not(:checked) ~ #o:not(:checked) ~ #error3 {
      display: block;
   }
   /*les messages d'erreur pour soixantreize*/
   #soixantreize:checked ~ #clavier #a:not(:checked) ~ #b:checked ~ #c:not(:checked) ~ #d:checked ~ #e:checked ~ #f:not(:checked) ~ #g:checked ~ #h:checked ~ #i:not(:checked) ~ #j:checked ~ #k:checked ~ #l:checked ~ #m:not(:checked) ~ #n:not(:checked) ~ #o:checked ~ #error1 {
      display: block;
   }
   /*premiere solution pour cinquanquatre*/
   #cinquanquatre:checked ~ #clavier #a:checked ~ #b:not(:checked) ~ #c:checked ~ #d:not(:checked) ~ #e:checked ~ #f:checked ~ #g:not(:checked) ~ #h:not(:checked) ~ #i:not(:checked) ~ #j:not(:checked) ~ #k:not(:checked) ~ #l:not(:checked) ~ #m:not(:checked) ~ #n:checked ~ #o:not(:checked) ~ #win {
      visibility: visible;
   }
   /*le message qui indique l'autre solution*/
   #cinquanquatre:checked ~ #clavier #a:checked ~ #b:not(:checked) ~ #c:checked ~ #d:not(:checked) ~ #e:checked ~ #f:checked ~ #g:not(:checked) ~ #h:not(:checked) ~ #i:not(:checked) ~ #j:not(:checked) ~ #k:not(:checked) ~ #l:not(:checked) ~ #m:not(:checked) ~ #n:checked ~ #o:not(:checked) ~ #error2 {
      display: block;
   }
   /*deuxieme solution pour cinquanquatre*/
   #cinquanquatre:checked ~ #clavier #a:checked ~ #b:not(:checked) ~ #c:not(:checked) ~ #d:checked ~ #e:checked ~ #f:not(:checked) ~ #g:checked ~ #h:not(:checked) ~ #i:checked ~ #j:not(:checked) ~ #k:not(:checked) ~ #l:not(:checked) ~ #m:not(:checked) ~ #n:not(:checked) ~ #o:not(:checked) ~ #win {
      visibility: visible;
   }
   /*le message qui indique l'autre solution*/
   #cinquanquatre:checked ~ #clavier #a:checked ~ #b:not(:checked) ~ #c:not(:checked) ~ #d:checked ~ #e:checked ~ #f:not(:checked) ~ #g:checked ~ #h:not(:checked) ~ #i:checked ~ #j:not(:checked) ~ #k:not(:checked) ~ #l:not(:checked) ~ #m:not(:checked) ~ #n:not(:checked) ~ #o:not(:checked) ~ #error2 {
      display: block;
   }
   /*les messages d'erreur pour cinquanquatre*/
   #cinquanquatre:checked ~ #clavier #a:not(:checked) ~ #b:not(:checked) ~ #c:not(:checked) ~ #d:checked ~ #e:not(:checked) ~ #f:checked ~ #g:not(:checked) ~ #h:not(:checked) ~ #i:not(:checked) ~ #j:not(:checked) ~ #k:not(:checked) ~ #l:not(:checked) ~ #m:not(:checked) ~ #n:checked ~ #o:not(:checked) ~ #error1 {
      display: block;
   }
   /*les messages d'erreur pour cinquanquatre*/
   #cinquanquatre:checked ~ #clavier #a:checked ~ #b:not(:checked) ~ #c:not(:checked) ~ #d:not(:checked) ~ #e:not(:checked) ~ #f:not(:checked) ~ #g:not(:checked) ~ #h:not(:checked) ~ #i:checked ~ #j:not(:checked) ~ #k:not(:checked) ~ #l:not(:checked) ~ #m:not(:checked) ~ #n:not(:checked) ~ #o:checked ~ #error1 {
      display: block;
   }
   #dixsept:checked ~ #clavier #a:not(:checked) ~ #b:not(:checked) ~ #c:not(:checked) ~ #d:not(:checked) ~ #e:not(:checked) ~ #f:not(:checked) ~ #g:not(:checked) ~ #h:checked ~ #i:checked ~ #j:checked ~ #k:not(:checked) ~ #l:not(:checked) ~ #m:not(:checked) ~ #n:checked ~ #o:not(:checked) ~ #win {
      visibility: visible;
   }
   #cinquante:checked ~ #clavier #a:not(:checked) ~ #b:checked ~ #c:checked ~ #d:checked ~ #e:not(:checked) ~ #f:not(:checked) ~ #g:not(:checked) ~ #h:not(:checked) ~ #i:not(:checked) ~ #j:checked ~ #k:not(:checked) ~ #l:not(:checked) ~ #m:not(:checked) ~ #n:checked ~ #o:not(:checked) ~ #win {
      visibility: visible;
   }
/*mettre max-width n'est pas suffisant generalement sur les telephones car leur viewport ne correspond pas a leur veritable largeur d'ecran, ils se croient plus grand qu'ils ne sont, ca pourrait etre resolu en mettant max-device-width mais j'ai choisis plutot de le preciser une fois pour toute dans les meta du html avec name="viewport" et content="width=device-width"*/
/*pour les ecrans de tablettes en position horizontale*/
@media screen and (max-width: 1200px) {
   formulaire {
      flex-direction: column;
   }
   #form1, #form2 {
      padding: 20px;
      width: calc(100% - 40px);
      margin: auto;
   }
}
/*pour les ecrans de tablettes en position verticale*/
@media screen and (max-width: 400px) {
   #form2 form {
      width: 230px;
   }
   /*la taille des textes de la calculette*/
   #form2 #count label {
      font-size: 13px;
   }
   /*les boutons ronds*/
   #form2 form > label:before {
      height: 30px;
      width: 30px;
      top: 2px;
      left: calc(50% - 15px);
   }
   /*le pointeur sur les boutons ronds*/
   #form2 form > label:after {
      height: 30px;
      width: 30px;
      top: 2px;
      left: calc(50% - 15px);
   }
   /*les boutons ronds au clic*/
   #form2 input:checked + label:before {
      height: 25px;
      width: 25px;
      top: 4px;
      left: calc(50% - 12.5px);
   }
   /*les boutons carres*/
   #clavier label:before {
      top: 12%;
      left: calc(50% - 15px);
      height: 70%;
      width: 30px;
      border-radius: 7px;
   }
   /*les boutons carres au clic*/
   #clavier input:checked + label:before {
      top: 12%;
      left: calc(50% - 15px);
      height: 70%;
      width: 30px;
      border-radius: 7px;
   }
   /*le pointeur sur les boutons carres*/
   #clavier label:after {
      top: 12%;
      left: calc(50% - 15px);
      height: 70%;
      width: 30px;
      border-radius: 7px;
   }
   /*l'espace entre les lignes de boutons carres*/
   #clavier label {
      margin: 0;
   }
}
</style>
</head>
<body>
<formulaire id="formulaire" class="inputline" onclick="">
<div id="form2" class="inputcolumn">
   <div id="reglecount">
   <p>pour commencer clique sur un rond !<br>le but du jeu est d'obtenir la somme de ce rond en cliquant sur cinq boutons de la calculatrice<br></p>
   </div>
   <form id="count" class="inputline" action="#formulaire" method="post">
      <input id="quatre" name="cal" type="radio">
      <label tabindex="0" for="quatre">4</label>
      <p>essaye d'obtenir 4 !</p>
      <input id="soixantreize" name="cal" type="radio">
      <label tabindex="0" for="soixantreize">73</label>
      <p>essaye d'obtenir 73 !</p>
      <input id="cinquanquatre" name="cal" type="radio">
      <label tabindex="0" for="cinquanquatre">54</label>
      <p>essaye d'obtenir 54 !</p>
      <input id="dixsept" name="cal" type="radio">
      <label tabindex="0" for="dixsept">17</label>
      <p>essaye d'obtenir 17 !</p>
      <input id="cinquante" name="cal" type="radio">
      <label tabindex="0" for="cinquante">50</label>
      <p>essaye d'obtenir 50 !</p>
      <div id="clavier" class="inputline">
         <input id="a" type="checkbox">
         <label tabindex="0" for="a" class="soixantreize cinquante">6</label>
         <input id="b" type="checkbox">
         <label tabindex="0" for="b" class="cinquanquatre dixsept">-17</label>
         <input id="c" type="checkbox">
         <label tabindex="0" for="c" class="quatre soixantreize">38</label>
         <input id="d" type="checkbox">
         <label tabindex="0" for="d" class="dixsept">23</label>
         <input id="e" type="checkbox">
         <label tabindex="0" for="e" class="dixsept">-21</label>
         <input id="f" type="checkbox">
         <label tabindex="0" for="f" class="soixantreize cinquante">18</label>
         <input id="g" type="checkbox">
         <label tabindex="0" for="g" class="quatre dixsept">41</label>
         <input id="h" type="checkbox">
         <label tabindex="0"for="h"class="cinquanquatre cinquante">-37</label>
         <input id="i" type="checkbox">
         <label tabindex="0" for="i" class="quatre cinquante">5</label>
         <input id="j" type="checkbox">
         <label tabindex="0" for="j" class="cinquanquatre">-7</label>
         <input id="k" type="checkbox">
         <label tabindex="0" for="k" class="cinquante cinquanquatre">15</label>
         <input id="l" type="checkbox">
         <label tabindex="0" for="l" class="quatre cinquanquatre">33</label>
         <input id="m" type="checkbox">
         <label tabindex="0" for="m" class="soixantreize dixsept">25</label>
         <input id="n" type="checkbox">
         <label tabindex="0" for="n" class="soixantreize">13</label>
         <input id="o" type="checkbox">
         <label tabindex="0" for="o" class="quatre">43</label>
         <button type="reset" id="win">bravo ! clique la-dessus pour remettre a zero et rejouer !</button>
         <p id="error1">non! tu dois y arriver avec cinq boutons</p>
         <p id="error2">mais aussi! sache qu'il y a une autre solution!</p>
         <p id="error3">mais aussi! sache qu'il y a deux autres solutions!</p>
      </div>
      <div class="inputline">
         <button type="reset" id="sum">= </button>
      </div>
   </form>
</div>
</formulaire>
</body>
</html>
pour commencer clique sur un rond !
le but du jeu est d'obtenir la somme de ce rond
en cliquant sur cinq boutons de la calculatrice
spé dédi a morgan
?
<!DOCTYPE html>
<html>
<head>
<style>
   /*premier slide, avec des boutons pour atteindre directement une image*/
   /*general setting de la section*/
   slide {
      position: relative;
      display: flex;
      flex-direction: column;
      padding-top: 66%;
   }
   /*la trame temporelle pour le deroulement des slides*/
   @keyframes slidy {
      0% { left: 0%; }
      20% { left: 0%; }
      25% { left: -100%; }
      45% { left: -100%; }
      50% { left: -200%; }
      70% { left: -200%; }
      75% { left: -300%; }
      95% { left: -300%; }
      100% { left: -400%; }
   }
   /*les quatre keyframes pour les quatre boutons, ce n'est pas tres propre mais je n'ai pas trouve mieux et je fatigue !*/
   @keyframes slidyone {
      0% { left: 0%; }
      20% { left: 0%; }
      25% { left: -100%; }
      45% { left: -100%; }
      50% { left: -200%; }
      70% { left: -200%; }
      75% { left: -300%; }
      95% { left: -300%; }
      100% { left: -400%; }
   }
   @keyframes slidytwo {
      0% { left: 0%; }
      20% { left: 0%; }
      25% { left: -100%; }
      45% { left: -100%; }
      50% { left: -200%; }
      70% { left: -200%; }
      75% { left: -300%; }
      95% { left: -300%; }
      100% { left: -400%; }
   }
   @keyframes slidythree {
      0% { left: 0%; }
      20% { left: 0%; }
      25% { left: -100%; }
      45% { left: -100%; }
      50% { left: -200%; }
      70% { left: -200%; }
      75% { left: -300%; }
      95% { left: -300%; }
      100% { left: -400%; }
   }
   @keyframes slidyfour {
      0% { left: 0%; }
      20% { left: 0%; }
      25% { left: -100%; }
      45% { left: -100%; }
      50% { left: -200%; }
      70% { left: -200%; }
      75% { left: -300%; }
      95% { left: -300%; }
      100% { left: -400%; }
   }
   /*reglages pour mettre les trois slides cote a cote avec un petit espace entre eux lorsqu'on reduit la fenetre*/
   /*pour que les trois slides reduisent avec la fenetre en gardant le ratio, il faut utiliser le padding-top, car les paddings ont la propriete d'etre determines en fonction de la width de leur element parent, donc en donnant la hauteur d'une div avec son padding-top on lui donne sa hauteur en fonction de la largeur de l'element parent, donc si les elements parents sont bien regles, en fonction de la largeur de la fenetre*/
   /*malheureusement firefox bug, il ne definit pas le padding en fonction du width de l'element parent, sauf si c'est le body directement, c'est pour ca qu'on organise toute la div slide en mettant slide en padding et donc tout le contenu en position absolute avec les problemes d'organisation que ca provoque*/
   #slideall {
      display: flex;
      position: absolute;
      /*on descend la section de div pour laisser la place a la spe dedi de morgan*/
      top: 10%;
      left: 0;
      width: 100%;
      /*c'est la hauteur par rapport a la section entiere donc on met 50% puisque la section a ete calculee deux fois trop grande afin de laisser la place a la spe dedi de morgan*/
      height: 50%;
   }
   /*taille des cadres*/
   .cadre {
      position: relative;
      width: 30%;
      margin: 20px 2%;
      overflow: hidden;
      /*cette ligne n'est pas dans le vrai code c'est juste pour voir mieux celui-ci si vous le copiez*/
      border: 1px solid black;
   }
   /*la boite (invisible) qui contient toutes les images et qui defile*/
   .boite {
      display: flex;
      position: absolute;
      top: 0;
      width: 500%;
      height: 100%;
      animation: 10s slidy infinite -9.7s;
   }
   /*taille des images, il y en a cinq donc on met 20%*/
   .boite img {
      width: 20%;
      margin: 0;
   }
   /*pour le premier slide*/
   /*les boutons qui permettent de selectionner directement une image du slide*/
   .goto {
      position: absolute;
      width: 10px;
      height: 10px;
      background-color: rgb(255, 204, 255);
      bottom: 10px;
      outline: none;
      cursor: pointer;
      /*ces deux lignes ne sont pas dans le vrai code c'est juste pour voir mieux celui-ci si vous le copiez*/
      border: 1px solid black;
      z-index: 1;
   }
   /*l'apparence au clic*/
   .goto:focus {
      background-color: rgb(204, 51, 255);
   }
   /*la position pour chaque bouton*/
   /*ils sont positionnes dans le cadre parce que c'est teeeeellement plus simple*/
   #gotoone {
      left: calc(50% - 30px);
   }
   #gototwo {
      left: calc(50% - 10px);
   }
   #gotothree {
      left: calc(50% + 10px);
   }
   #gotofour {
      left: calc(50% + 30px);
   }
   /*pour aller directement a l'image selectionnee du slide*/
   #gotoone:focus ~ .boite {
      animation: 10s slidyone infinite -9.7s;
   }
   #gototwo:focus ~ .boite {
      animation: 10s slidytwo infinite -2.2s;
   }
   #gotothree:focus ~ .boite {
      animation: 10s slidythree infinite -4.7s;
   }
   #gotofour:focus + .boite {
      animation: 10s slidyfour infinite -7.2s;
   }
/*mettre max-width n'est pas suffisant generalement sur les telephones car leur viewport ne correspond pas a leur veritable largeur d'ecran, ils se croient plus grand qu'ils ne sont, ca pourrait etre resolu en mettant max-device-width mais j'ai choisis plutot de le preciser une fois pour toute dans les meta du html avec name="viewport" et content="width=device-width"*/
@media screen and (max-width: 900px) {
   /*pour que les slides s'affichent en column il faut que la section soit trois fois plus haute que large*/
   slide {
      padding-top: 180%;
   }
   #dedi {
      top: 7%;
   }
   /*on met l'affichage de slides en column et on le centre sur la page avec les marges et width*/
   #slideall {
      flex-direction: column;
      top: 15%;
      height: 80%;
      width: 40%;
      margin: 0 30%;
   }
   .cadre {
      margin: 3% 0;
      width: 100%;
      height: 200%;
   }
}
@media screen and (max-width: 600px) {
   /*pour que les slides s'affichent en column il faut que la section soit trois fois plus haute que large*/
   slide {
      padding-top: 300%;
   }
   #slideall {
      width: 70%;
      margin: 0 15%;
   }
}
</style>
</head>
<body>
<slide id="slide" onclick="">
<div id="slideall">
<div class="cadre" id="cadre1">
   <span id="gotoone" class="goto" tabindex="0"></span>
   <span id="gototwo" class="goto" tabindex="0"></span>
   <span id="gotothree" class="goto" tabindex="0"></span>
   <span id="gotofour" class="goto" tabindex="0"></span>
   <div class="boite">
      <img src="./ressources/archi1.jpg" alt="archi">
      <img src="./ressources/archi2.jpg" alt="archi">
      <img src="./ressources/archi3.jpg" alt="archi">
      <img src="./ressources/archi4.jpg" alt="archi">
      <img src="./ressources/archi1.jpg" alt="archi">
   </div>
</div>
</div>
</slide>
</body>
</html>
?
<!DOCTYPE html>
<html>
<head>
<style>
   /*deuxieme slide, avec une fenetre qui avance devant pour donner des infos*/
   /*general setting de la section*/
   slide {
      position: relative;
      display: flex;
      flex-direction: column;
      padding-top: 66%;
   }
   /*la trame temporelle pour le deroulement des slides*/
   @keyframes slidy {
      0% { left: 0%; }
      20% { left: 0%; }
      25% { left: -100%; }
      45% { left: -100%; }
      50% { left: -200%; }
      70% { left: -200%; }
      75% { left: -300%; }
      95% { left: -300%; }
      100% { left: -400%; }
   }
   /*la keyframe pour le cadre info qui apparait sur la deuxieme slide*/
   @keyframes timeliner {
      0% { width: 35px; opacity: 1; }
      50% { width: 80%; opacity: 1; }
      70% { width: 80%; opacity: 1; }
      90% { width: 80%; opacity: 0; }
      100% { width: 35px; opacity: 0; }
   }
   
   /*reglages pour mettre les trois slides cote a cote avec un petit espace entre eux lorsqu'on reduit la fenetre (mieux detaille sur la premiere slide)*/
   #slideall {
      display: flex;
      position: absolute;
      top: 40%;
      left: 0;
      width: 100%;
      height: 50%;
   }
   /*taille des cadres*/
   .cadre {
      position: relative;
      width: 30%;
      margin: 20px 2%;
      overflow: hidden;
      /*cette ligne n'est pas dans le vrai code c'est juste pour voir mieux celui-ci si vous le copiez*/
      border: 1px solid black;
   }
   /*la boite (invisible) qui contient toutes les images et qui defile*/
   .boite {
      display: flex;
      position: absolute;
      top: 0;
      width: 500%;
      height: 100%;
      animation: 10s slidy infinite -9.7s;
   }
   /*taille des images, il y en a cinq donc on met 20%*/
   .boite img {
      width: 20%;
      margin: 0;
   }
   /*pour le deuxieme slide*/
   /*l'apparition du petit encart descriptif*/
   #timeline {
      position: absolute;
      bottom: 70px;
      left: 0;
      padding: 5px;
      text-align: right;
      width: 0px;
      color: rgb(255, 204, 255);
      background-color: rgb(204, 51, 255);
      animation: timeliner 2.5s infinite;
      z-index: 1;
   }
/*mettre max-width n'est pas suffisant generalement sur les telephones car leur viewport ne correspond pas a leur veritable largeur d'ecran, ils se croient plus grand qu'ils ne sont, ca pourrait etre resolu en mettant max-device-width mais j'ai choisis plutot de le preciser une fois pour toute dans les meta du html avec name="viewport" et content="width=device-width"*/
@media screen and (max-width: 900px) {
   /*pour que les slides s'affichent en column il faut que la section soit trois fois plus haute que large*/
   slide {
      padding-top: 180%;
   }
   #dedi {
      top: 7%;
   }
   /*on met l'affichage de slides en column et on le centre sur la page avec les marges et width*/
   #slideall {
      flex-direction: column;
      top: 15%;
      height: 80%;
      width: 40%;
      margin: 0 30%;
   }
   .cadre {
      margin: 3% 0;
      width: 100%;
      height: 200%;
   }
}
@media screen and (max-width: 600px) {
   /*pour que les slides s'affichent en column il faut que la section soit trois fois plus haute que large*/
   slide {
      padding-top: 300%;
   }
   #slideall {
      width: 70%;
      margin: 0 15%;
   }
}
</style>
</head>
<body>
<slide id="slide" onclick="">
<div id="slideall">
   <div class="cadre" id="cadre2">
   <div class="boite">
      <img src="./ressources/archi1.jpg" alt="archi">
      <img src="./ressources/archi2.jpg" alt="archi">
      <img src="./ressources/archi3.jpg" alt="archi">
      <img src="./ressources/archi4.jpg" alt="archi">
      <img src="./ressources/archi1.jpg" alt="archi">
   </div>
   <span id="timeline">info</span>
   </div>
</div>
</slide>
</body>
</html>
?
<!DOCTYPE html>
<html>
<head>
<style>
   /*troisieme slide, avec un bouton play et pause*/
   /*general setting de la section*/
   slide {
      position: relative;
      display: flex;
      flex-direction: column;
      padding-top: 66%;
   }
   /*la trame temporelle pour le deroulement des slides*/
   @keyframes slidy {
      0% { left: 0%; }
      20% { left: 0%; }
      25% { left: -100%; }
      45% { left: -100%; }
      50% { left: -200%; }
      70% { left: -200%; }
      75% { left: -300%; }
      95% { left: -300%; }
      100% { left: -400%; }
   }
   /*reglages pour mettre les trois slides cote a cote avec un petit espace entre eux lorsqu'on reduit la fenetre (mieux detaille dans la premiere slide)*/
   #slideall {
      display: flex;
      position: absolute;
      top: 40%;
      left: 0;
      width: 100%;
      height: 50%;
   }
   /*taille des cadres*/
   .cadre {
      position: relative;
      width: 30%;
      margin: 20px 2%;
      overflow: hidden;
      /*cette ligne n'est pas dans le vrai code c'est juste pour voir mieux celui-ci si vous le copiez*/
      border: 1px solid black;
   }
   /*la boite (invisible) qui contient toutes les images et qui defile*/
   .boite {
      display: flex;
      position: absolute;
      top: 0;
      width: 500%;
      height: 100%;
      animation: 10s slidy infinite -9.7s;
   }
   /*taille des images, il y en a cinq donc on met 20%*/
   .boite img {
      width: 20%;
      margin: 0;
   }
   /*pour la troisieme slide*/
   /*c'est la creation des boutons play et pause*/
   #playbtn, #pausebtn {
      position: absolute;
      top: 25px;
      right: 25px;
      opacity: 0;
      width: 22px;
      height: 22px;
      transition: opacity 1s;
      z-index: 2;
   }
   /*dessin du bouton pause*/
   #pausebtn:after, #pausebtn:before {
      position: absolute;
      display: block;
      content: " ";
      width: 38%;
      height: 22px;
      background-color: rgba(204, 51, 255, 0.7);
      z-index: 2;
   }
   /*position des deux rectangle du bouton*/
   #pausebtn:before {
      left: 0;
   }
   #pausebtn:after {
      right: 0;
   }
   /*dessin du bouton play*/
   #playbtn {
      width: 1px;
      height: 1px;
      /*ce sont les transparences qui dessinent les deux triangles*/
      border-top: 10px solid transparent;
      border-bottom: 10px solid transparent;
      border-left: 20px solid rgba(204, 51, 255, 0.7);
      z-index:2;
   }
   /*stopper le slide*/
   .command:target ~ #cadre3 .boite {
      animation-play-state: paused;
   }
   /*redemarrer le slide*/
   #play:target ~ #cadre3 .boite {
      animation-play-state: running;
   }
   /*switch entre les boutons*/
   #cadre3:hover #pausebtn {
      opacity: 1;
   }
   #pause:target ~ #cadre3 #pausebtn {
      opacity: 0;
      cursor: default;
      z-index: 1;
   }
   #pause:target ~ #cadre3:hover #playbtn {
      opacity: 1;
   }
   #play:target ~ #cadre3 #playbtn {
      cursor: default;
   }
/*mettre max-width n'est pas suffisant generalement sur les telephones car leur viewport ne correspond pas a leur veritable largeur d'ecran, ils se croient plus grand qu'ils ne sont, ca pourrait etre resolu en mettant max-device-width mais j'ai choisis plutot de le preciser une fois pour toute dans les meta du html avec name="viewport" et content="width=device-width"*/
@media screen and (max-width: 900px) {
   /*pour que les slides s'affichent en column il faut que la section soit trois fois plus haute que large*/
   slide {
      padding-top: 180%;
   }
   #dedi {
      top: 7%;
   }
   /*on met l'affichage de slides en column et on le centre sur la page avec les marges et width*/
   #slideall {
      flex-direction: column;
      top: 15%;
      height: 80%;
      width: 40%;
      margin: 0 30%;
   }
   .cadre {
      margin: 3% 0;
      width: 100%;
      height: 200%;
   }
}
@media screen and (max-width: 600px) {
   /*pour que les slides s'affichent en column il faut que la section soit trois fois plus haute que large*/
   slide {
      padding-top: 300%;
   }
   #slideall {
      width: 70%;
      margin: 0 15%;
   }
}
</style>
</head>
<body>
<slide id="slide" onclick="">
<div id="slideall">
<div class="cadre">
   <span id="play" class="command"></span>
   <span id="pause" class="command"></span>
   <div id="cadre3">
      <a id="playbtn" class ="btn" href="#play" title="play"></a>
      <a id="pausebtn" class="btn" href="#pause" title="pause"></a>
      <div class="boite">
         <img src="./ressources/archi1.jpg" alt="archi">
         <img src="./ressources/archi2.jpg" alt="archi">
         <img src="./ressources/archi3.jpg" alt="archi">
         <img src="./ressources/archi4.jpg" alt="archi">
         <img src="./ressources/archi1.jpg" alt="archi">
      </div>
   </div>
</div>
</div>
</slide>
</body>
</html>