?

<!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>

my skills in css

boom
 

ce site vous fait mal aux yeux

sans meme vous toucher

c'est ca l'intelligence artificielle

on est dans le dualisme corps esprit

a fond

cliquez ou survolez ces petits points d'interrogation

pour avoir les codes css et html des elements de la page

?

<!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>

pseudos
elements
sticky
nav bar
formulaire slides

: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>

:target
x

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

histoire de l'invention des ordinateurs informatique internet

C'est partiiiii !

LES MACHINES A CALCULER

1642

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.

1750

Vaucanson fabrique des automates fonctionnants a base de bandes perforees qui atteignent un but en le decomposant en une succession d'etapes formelles.

1821

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.

1843

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.

1854

George Boole, mathematicien, met au point l'algebre binaire, qui est le fondement du langage binaire et des operations booleennes.

1885

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.

LES ORDINATEURS PROGRAMMABLES

1938

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.

1938

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.

1944

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.

1946

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.

1947

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

LES LANGAGES DE PROGRAMMATIONS

1950

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.

LES ORDINATEURS CIVILS

1951

Eckert et Mauchly mettent au point l'UNIVAC, le premier ordinateur commercial, qu'on voit la bd Tintin Objectif Lune de Herge.

1954

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.

1955

Grace Hopper developpe le langage FlowMatic, qui devint le COBOL en 1959.

LE DEBUT D'INTERNET PAR LES COURRIERS ELECTRONIQUES

1958

la firm Bell créer le premier modem pour echanger des donnees par le biais des lignes telephoniques.

1961

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.

1962

l'agence DARPA de la defense americaine debute des recherches menees par Licklider sur un reseau global d'ordinateurs.

1962

Mauchly construit le premier ordinateur portable qui tient dans une malette.

1962

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.

1965

Gordon Moore ennonce la loi de moore, qui predit une evolution exponentielle des capacite de ordinateurs et qui est toujours vraie aujourd'hui.

1966

la DARPA lance le projet ARPANET, en collaboration avec 4 universités, qui essaye de creer une reseau d'ordinateurs.

1968

Douglas Engelbart invente la souris.

1971

Ray Tomlisson envoi le premier email, 23 ordinateurs sont relies a l'ARPANET

LES MICRO-ORDINATEURS

1971

John Blankenbaker fabrique et commercialise le premier micro ordinateur, le kenbak-1, qui fonctionne sans micro-processeur.

1973

Martin Cooper met au point le premier telephone portable, il fait 1,2 kg et a 20 minutes d'autonomies en communication.

to be continued...

?

<!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 la photo de 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;

   }

   /*creer la ligne blanche de separation*/

   #form1:before {

      content: "";

      position: absolute;

      right: 0;

      bottom: 20%;

      height: 60%;

      width: 1px;

      background-color: rgb(200, 200, 200);

   }

   /*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);

   }

   /*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;

   }

   /*formatage des textes et du curseur*/

   formulaire h4 {

      cursor: default;

      background-color: transparent;

      color: rgb(255, 204, 255);

      font-size: 12px;

      text-align: left;

      margin: 5px 0;

      padding: 0;

   }

   formulaire p {

      cursor: default;

      background-color: transparent;

      color: rgb(255, 204, 255);

      font-size: 15px;

      text-align: left;

      margin: 10px 0;

      padding: 0;

   }

   #regle > p {

      margin-top: 100px;

   }

   formulaire label {

      cursor: pointer;

      color: rgb(255, 204, 255);

      font-size: 15px;

      text-align: left;

      margin: 5px 0;

      padding: 0;

   }

   formulaire label p, formulaire label p em {

      cursor: pointer;

      margin: 0;

      padding: 0;

   }

   formulaire button {

      cursor: pointer;

      color: rgb(204, 51, 255);

      background-color: rgb(255, 204, 255);

      font-size: 12px;

      margin: 2px;

      padding: 5px;

   }

   /*l'element surprise*/

   #camoufflage {

      position: absolute;

      background-color: rgba(10, 10, 10, 0.9);

      /*width=100% designe 100% de la largeur du formulaire de gauche mais on ne veut que 95% de cette largeur puisqu'on ne fera apparaitre la fenetre que jusqu'a 5% du bord gauche*/

      width: 95%;

      /*la taille est 80% de la hauteur du formulaire, sauf si l'ecran est plus petit, alors c'est 80% de l'ecran, soit 80vh*/

      height: 80%;

      max-height: 80vh;

      top: 10%;

      /*quand la fenetre est rentree a droite, elle est repoussee jusqu'a 100% de la largeur du form1 par rapport au bord gauche*/

      left: 100%;

      border-radius: 10px 0 0 10px;

      /*ce overflow cache la scroll bar qui depasse en bas, mais pas a droite puisque la scroll bar est attachee au texte et que la zone de texte fait 100% de la largeur de la fenetre, car la largeur du texte est facile a reduire mais tres difficile a augmenter au dessus de 100% donc pas possible de faire sortir la scroll bar par ce biais la, son epaisseur a elle est prise en compte dans le calcul de la position de left quand on target #form1 ci-dessous et c'est form1 qui a un overflow aussi*/

      overflow: hidden;

      z-index: 5;

      display: flex;

      transition: left 1s;

   }

   /*apparition de camoufflage*/

   #form1:target #camoufflage {

      /*on fait apparaitre le cadre vers la gauche mais pas jusqu'au bout,

      a 5% plus l'epaisseur du la barre de scroll avec une marge parce

      qu'elle varie suivant le navigateurs*/

      left: calc(5% + 20px);

      transition: left 1s;

   }

   /*bouton-barre pour refermer camoufflage*/

   #closecamoufflage {

      position: relative;

      height: 100%;

      width: 20px;

      background-color: rgba(100, 100, 100, 0.2);

      border-radius: 10px 0 0 10px;

      cursor: pointer;

   }

   /*la fleche pour fermer*/

   #closecamoufflage:after {

      position: absolute;

      content: "";

      top: calc(50% - 8px);

      left: 2px;

      border-width: 10px 0px 10px 16px;

      border-style: solid;

      border-color: transparent rgb(200, 200, 200);

   }

   /*zone de texte*/

   #histoire {

      padding: 20px;

      width: 100%;

      /*la hauteur fait 100% de la fenetre moins 40px pour le padding de 20px

      en haut et en bas, plus 20px pour a peu pres l'epaisseur de la scroll

      bar a cacher en bas*/

      height: calc(100% - 20px);

      overflow: scroll;

      cursor: default;

   }

   #histoire * {

      background-color: transparent;

      color: rgb(200, 200, 200);

   }

   #histoire h2, #histoire h3 {

      margin-top: 40px;

   }

   /*input "pour resumer sa vie"*/

   input#life {

      background-color: rgb(255, 204, 255);

      padding: 5px;

      border: transparent;

      border-radius: 5px;

      color: rgb(204, 51, 255);

      font-size: 15px;

      width: 100%;

      margin: 20px 0;

   }

   /*changement de taille de l'input*/

   input#life:focus {

      box-shadow: 0 0 2px rgba(50, 50, 50, 0.8) inset;

      width: 30%;

      transition: width 0.5s;

   }

   /*section colorbook*/

   /*on aligne les sections vers le haut et on met de l'espace entre elles*/

   #color {

      margin: 0 60px 60px 0;

   }

   #book {

      margin: 0;

   }

   /*on deplaces les labels vers la droite par rapport aux titres*/

   #colorbook label {

      margin-left: 28px;

   }

   /*section de selection des couleurs*/

   /*la ligne au dessus des zones "j'aime" et "j'aime pas"*/

   .couleur {position: relative;}

   .couleur:before {

      content: "";

      width: calc(100% - 7px);

      background-color: rgb(255, 204, 255);

      height: 1px;

      position: absolute;

      top: -3px;

      left: 0;

   }

   /*la fleche a la fin de la zone*/

   .couleur:after {

      content: "V";

      font-weight: lighter;

      position: absolute;

      right: 0;

      top: -4px;

   }

   /*on definit la couleur en la laissant transparente c'est juste pour adoucir l'animation avec des effets de couleurs et d'opacite*/

   #smaragdin {

      background-color: rgba(1, 215, 88, 0);

      width: calc(100% - 28px);

   }

   /*quand la couleur est selectionnee elle change d'ordre*/

   input:checked + #smaragdin {

      order: 2;

      color: rgba(255, 204, 255, 0.5);

      background-color: rgba(1, 215, 88, 1);

      transition: order 0s, color 0.5s, background-color 1s;

   }

   /*et c'est pareil pour toutes le couleurs*/

   #glauque {

      background-color: rgba(100, 155, 136, 0);

      width: calc(100% - 28px);

   }

   input:checked + #glauque {

      order: 2;

      color: rgba(255, 204, 255, 0.5);

      background-color: rgba(100, 155, 136, 1);

      transition: order 0s, color 0.5s, background-color 1s;

   }

   /*couleur pelure d'oignon...*/

   #pelure {

      background-color: rgba(213, 132, 144, 0);

      width: calc(100% - 28px);

   }

   input:checked + #pelure {

      order: 2;

      color: rgba(255, 204, 255, 0.5);

      background-color: rgba(213, 132, 144, 1);

      transition: order 0s, color 0.5s, background-color 1s;

   }

   /*couleur cramoisi*/

   #cramoisi {

      background-color: rgba(220, 20, 60, 0);

      width: calc(100% - 28px);

   }

   input:checked + #cramoisi {

      order: 2;

      color: rgba(255, 204, 255, 0.5);

      background-color: rgba(220, 20, 60, 1);

      transition: order 0s, color 0.5s, background-color 1s;

   }

   /*couleur zinzolin*/

   #zinzolin {

      background-color: rgba(108, 2, 119, 0);

      width: calc(100% - 28px);

   }

   input:checked + #zinzolin {

      order: 2;

      color: rgba(255, 204, 255, 0.5);

      background-color: rgba(100, 2, 119, 1);

      transition: order 0s, color 0.5s, background-color 1s;

   }

   /*et l'ordre des elements par defaut*/

   #color p {

      order: 0;

   }

   #color label {

      order: 4;

   }

   #jaime {

      order: 1;

   }

   #jaimepas {

      order: 3;

   }

   /*personnalisation des inputs pour les couleurs et les livres*/

   /*cacher les inputs par defaut*/

   input:not([type="text"]) {

      visibility: hidden;

      position: absolute;

   }

   /*dessiner le coeur pour la selection des couleurs*/

   #color label:before {

      content: "";

      width: 5px;

      height: 10px;

      border-radius: 4px 4px 9px 0px / 4px 5px 10px 10px;

      background-color: rgb(255, 204, 255);

      position: absolute;

      top: 3px;

      left: -17px;

      transform: rotate(-33deg);

   }

   #color label:after {

      content: "";

      width: 5px;

      height: 10px;

      border-radius: 5px 4px 0px 9px / 4px 4px 10px 10px;

      background-color: rgb(255, 204, 255);

      position: absolute;

      top: 3px;

      left: -15px;

      transform: rotate(37deg);

   }

   /*remplir le coeur en rouge*/

   #color input:checked + label:before {

      background-color: rgb(204, 51, 255);

   }

   #color input:checked + label:after {

      background-color: rgb(204, 51, 255);

   }

   /*puis creation d'un carre a gauche des livres*/

   #book label:before {

      content: "";

      width: 10px;

      height: 10px;

      border-radius: 50%;

      background-color: rgb(255, 204, 255);

      position: absolute;

      top: 3px;

      left: -20px;

   }

   /*creation d'un rond pour quand un livre est selectionne*/

   #book label:after {

      content: "";

      display: none;

      width: 6px;

      height: 6px;

      border-radius: 50%;

      background-color: rgb(204, 51, 255);

      position: absolute;

      top: 5px;

      left: -18px;

   }

   /*pour faire apparaitre les petits ronds*/

   #book input:checked + label:after {

      display: block;

   }

   /*pour faire apparaitre les options sous certains livres*/

   /*pour la horde du contrevent les options sont d'abord applaties*/

   #horde ~ #selecthorde {

      opacity: 0;

      margin: -2px;

      height: 0px;

      transition: all 1s;

   }

   /*puis s'etendent en hauteur pour apparaitre*/

   #horde:checked ~ #selecthorde {

      opacity: 1;

      height: 80px;

      margin: 0;

      margin-bottom: 9px;

      transition: all 1s;

   }

   /*ainsi que le sous-titre*/

   #horde + label h4 {

      opacity: 0;

      margin-top: -20px;

      transition: all 1s;

   }

   /*qui grossissent*/

   #horde:checked + label h4 {

      opacity: 1;

      margin-top: 10px;

      transition: all 1s;

   }

   /*la meme pour city*/

   textarea {

      visibility: hidden;

      margin: 0;

      height: 0px;

      transition: all 1s;

   }

   /*qui grossis aussi*/

   #city:checked ~ #textecity {

      visibility: visible;

      height: 80px;

      transition: all 1s;

   }

   /*les boutons "reinitialise" et "suprise ?"*/

   /*on colle les boutons ensemble au centre et on met de l'espace au dessus*/

   #button {

      justify-content: center;

      margin-top: 50px;

      margin-bottom: 70px;

   }

   /*on redessine la bordure par defaut*/

   button {

      border: transparent;

      border-radius: 0px 7px 7px 0px;

   }

   /*pour les bords plats des deux boutons face a face */

   button[type="reset"] {

      border-radius: 7px 0px 0px 7px;

   }

   /*pour leur apparences au clic*/

   button:active {

      box-shadow: 0 0 2px rgba(50, 50, 50, 0.8) inset;

   }

/*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"*/

/*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;

   }

   /*la ligne blanche qui separe les deux formulaires passe en dessous*/

   #form1:before {

      bottom: 0;

      right: 20%;

      width: 60%;

      height: 1px;

   }

   /*sur les telephones le texte est un peu colle a droite si la taille de la scroll barre est trop petite, donc je rajoute un padding*/

   #histoire {

      padding-right: 50px;

   }

}

/*pour les ecrans de tablettes en position verticale*/

@media screen and (max-width: 600px) {

   #form1 #colorbook {

      flex-direction: column;

   }

   input#life:focus {

      width: 50%;

   }

}

</style>

</head>



<body>

<formulaire id="formulaire" class="inputline" onclick="">

<div id="form1">

<div id="camoufflage">

   <a href="#surprise" id="closecamoufflage"></a>

   <div id="histoire">

   <p>du texte</p>

   </div>

</div>

<!--je precise l'action du formulaire pour qu'il l'ajoute a la barre d'adresse et que je puisse utiliser le target sur id=form1, par contre je n'ai pas mis de methode tout comme je n'ai pas mis de type submit un peu plus bas au button puisque je n'envois pas le formulaire au serveur donc sinon j'aurais une error 405-->

<form id="surprise" class="inputcolumn" action="#form1">

   <div id="regle">

      <p>remplis les bons champs pour voir la surprise !<br>indice: caracole aime les couleurs moches</p>

      <input type="text" id="life" list="resume" placeholder="resume ta vie en un mot" required>

      <datalist id="resume">

         <option value="prairie">

         <option value="simplon">

         <option value="css">

         <option value="javascript">

      </datalist>

      <div id="colorbook" class="inputline">

         <div id="color" class="inputcolumn">

            <p>quelles couleurs aimes-tu ?</p>

            <h4 class="couleur" id="jaime">j'aime :</h4>

            <h4 class="couleur" id="jaimepas">j'aime pas :</h4>

            <input type="checkbox" name="couleur" id="smaragdin">

            <label tabindex="0"id="smaragdin" for="smaragdin">smaragdin</label>

            <input type="checkbox" name="couleur" id="glauque" required>

            <label tabindex="0" id="glauque" for="glauque">glauque</label>

            <input type="checkbox" name="couleur" id="pelure" required>

            <label tabindex="0"id="pelure" for="pelure">pelure d'oignon</label>

            <input type="checkbox" name="couleur" id="cramoisi" required>

            <label tabindex="0" id="cramoisi" for="cramoisi">cramoisi</label>

            <input type="checkbox" name="couleur" id="zinzolin">

            <label tabindex="0" id="zinzolin" for="zinzolin">zinzolin</label>

         </div>

         <div id="book" class="inputcolumn">

            <p>quel bouquin preferes-tu ?</p>

            <input type="radio" name="livre" id="horde">

            <label tabindex="0" for="horde">

               <p><em>la horde du contrevent</em><br>de Alain Damasio</p>

               <h4>ton hero-ine ?</h4>

            </label>

            <select id="selecthorde" name"horde" size="5" required>

               <option value="" style="display:none">golgoth</option>

               <option value="horde">golgoth</option>

               <option id="caracole" value="horde">caracole</option>

               <option value="horde">oroshi</option>

               <option value="horde">sov</option>

               <option value="horde">erg</option>

               <option value="horde">talweg</option>

               <option value="horde">firost</option>

               <option value="horde">tourse</option>

               <option value="horde">steppe</option>

               <option value="horde">arval</option>

               <option value="horde">darbon</option>

               <option value="horde">horst</option>

               <option value="horde">pietro</option>

               <option value="horde">alme</option>

               <option value="horde">aoi</option>

               <option value="horde">larco</option>

               <option value="horde">learch</option>

               <option value="horde">callirhoe</option>

               <option value="horde">boscavo</option>

               <option value="horde">coriolis</option>

               <option value="horde">sveziest</option>

               <option value="horde">barbak</option>

            </select>

            <input type="radio" name="livre" id="ya">

            <label tabindex="0" for="ya">

               <p><em>ja</em><br>de Thomas Bernard</p>

            </label>

            <input type="radio" name="livre" id="city">

            <label tabindex="0" for="city">

               <p><em>city</em><br>de Clifford D. Simak</p>

            </label>

            <textarea id="textecity" name="livre">pourquoi ??</textarea>

            <input type="radio" name="livre" id="dirk">

            <label tabindex="0" for="dirk">

               <p><em>Dirk Gently</em><br>de Douglas Adams</p>

            </label>

         </div>

      </div>

      <div id="button" class="inputline">

         <button type="reset">reinitialise</button>

         <!--je ne precise pas que le button est de type="submit" car je n'envois pas le formulaire en back, je ne le soumet pas, le button seul suffit donc-->

         <button>surprise ?</button>

      </div>

   </div>

</form>

</div>

</formulaire>

</body>

</html>

remplis les bons champs pour voir la surprise !
indice: caracole aime les couleurs moches

quelles couleurs aimes-tu ?

j'aime :

j'aime pas :

quel bouquin preferes-tu ?

?

<!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

essaye d'obtenir 4 !

essaye d'obtenir 73 !

essaye d'obtenir 54 !

essaye d'obtenir 17 !

essaye d'obtenir 50 !

non! tu dois y arriver avec cinq boutons

mais aussi! sache qu'il y a une autre solution!

mais aussi! sache qu'il y a deux autres solutions!

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>

archi archi archi archi archi

?

<!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>

archi archi archi archi archi
info

?

<!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>

archi archi archi archi archi