From 890576928da51630f9fcd58c2a046b211c6ef98c Mon Sep 17 00:00:00 2001 From: Denis Monnerat <monnerat@u-pec.fr> Date: Tue, 3 Dec 2024 09:45:10 +0100 Subject: [PATCH] tp3 --- R1.02/tp/tp2/correction/exercice1.html | 26 +++++ R1.02/tp/tp2/correction/exercice2.html | 83 ++++++++++++++++ R1.02/tp/tp2/correction/exercice3.html | 85 ++++++++++++++++ R1.02/tp/tp2/correction/exercice4.html | 53 ++++++++++ R1.02/tp/tp2/correction/exercice5.html | 85 ++++++++++++++++ R1.02/tp/tp2/correction/exercice6.html | 20 ++++ R1.02/tp/tp2/correction/style4.css | 21 ++++ R1.02/tp/tp2/correction/style5.css | 26 +++++ R1.02/tp/tp2/correction/style6.css | 9 ++ R1.02/tp/tp3/README.md | 129 +++++++++++++++++++++++++ R1.02/tp/tp3/img/eastwood.png | Bin 0 -> 21374 bytes R1.02/tp/tp3/img/smiley.png | Bin 0 -> 2210 bytes R1.02/tp/tp3/img/web_stack.png | Bin 0 -> 3474 bytes R1.02/tp/tp3/src/exercice1.html | 23 +++++ R1.02/tp/tp3/src/exercice2.html | 15 +++ R1.02/tp/tp3/src/exercice3.html | 14 +++ R1.02/tp/tp3/src/exercice4.html | 60 ++++++++++++ R1.02/tp/tp3/src/style4.css | 21 ++++ 18 files changed, 670 insertions(+) create mode 100644 R1.02/tp/tp2/correction/exercice1.html create mode 100644 R1.02/tp/tp2/correction/exercice2.html create mode 100644 R1.02/tp/tp2/correction/exercice3.html create mode 100644 R1.02/tp/tp2/correction/exercice4.html create mode 100644 R1.02/tp/tp2/correction/exercice5.html create mode 100644 R1.02/tp/tp2/correction/exercice6.html create mode 100644 R1.02/tp/tp2/correction/style4.css create mode 100644 R1.02/tp/tp2/correction/style5.css create mode 100644 R1.02/tp/tp2/correction/style6.css create mode 100644 R1.02/tp/tp3/README.md create mode 100644 R1.02/tp/tp3/img/eastwood.png create mode 100644 R1.02/tp/tp3/img/smiley.png create mode 100644 R1.02/tp/tp3/img/web_stack.png create mode 100644 R1.02/tp/tp3/src/exercice1.html create mode 100644 R1.02/tp/tp3/src/exercice2.html create mode 100644 R1.02/tp/tp3/src/exercice3.html create mode 100644 R1.02/tp/tp3/src/exercice4.html create mode 100644 R1.02/tp/tp3/src/style4.css diff --git a/R1.02/tp/tp2/correction/exercice1.html b/R1.02/tp/tp2/correction/exercice1.html new file mode 100644 index 0000000..b0af8a1 --- /dev/null +++ b/R1.02/tp/tp2/correction/exercice1.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html lang="zxx"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="initial-scale=1,witdh=device-width"> + + <title>Exercice 1</title> + </head> + <body> + <ul> + <li><a href="#partie_1">Partie 1</a></li> + <li><a href="#partie_2">Partie 2</a></li> + <li><a href="exercice1_copie.html#partie_2">Partie 2</a></li> + </ul> + <h1 id="partie_1">Première partie</h1> + <p>Lorem ipsum dolor sit amet. Fugiat beatae aut fugiat dolores qui consequuntur perferendis et dolores repudiandae. Et ullam maxime sapiente veritatis quo consequatur ducimus. Cum dolor blanditiis <strong>Ut ullam</strong> ut voluptas neque ea fugiat amet! Et asperiores quam <a href="https://www.loremipzum.com" target="_blank">Qui dolor id illum ullam</a>. Qui dolorem autem et soluta nostrum 33 galisum nostrum est exercitationem enim! Et harum animi non obcaecati fuga ut repellendus quas ea perspiciatis ducimus. Aut doloremque animi <em>Et quia et saepe quaerat aut velit incidunt et perferendis voluptatem</em> ex quia voluptas ea accusamus nostrum. Qui commodi laboriosam ad dicta galisum ut tempora unde et dolorem suscipit. Ut illum illum id dolor tempore ut quos voluptatem aut internos molestias quo adipisci ipsum. 33 expedita molestias aut iusto nihil aut nemo optio et cupiditate velit. Et cupiditate omnis ex explicabo fugit in voluptas ducimus et eaque quae et dolor odio aut consectetur rerum nam consequuntur quisquam. </p><blockquote cite="https://www.loremipzum.com">Sed eaque quas sed vitae quae et dolor ratione sed rerum saepe rem sunt rerum. </blockquote><p>Rem alias blanditiis <em>Aut delectus quo modi velit a similique assumenda</em>. At nobis natus et natus tenetur est quaerat dolor aut sequi harum sed dignissimos nihil. Ut iure unde et voluptatem enim cum consequatur totam rem veniam maxime ab exercitationem modi ut cumque magni! Eum illo aliquam et vitae earum eos sint mollitia. Non dolor natus est aperiam laudantium aut reiciendis incidunt quia fugit ad earum vero aut quasi rerum et corrupti quibusdam? Et molestiae itaque id voluptatem maxime qui velit fuga eum eius dolorum sit saepe iste id similique consectetur. Et consequatur autem et doloribus nemo quo minima consequatur qui repellendus voluptatum? Aut facilis quaerat ut omnis aperiam <a href="https://www.loremipzum.com" target="_blank">Ut eveniet sed neque maxime</a> At voluptas molestiae a sapiente voluptas ex nulla amet. Eos sint ducimus est odit rerum vel dolorem itaque est suscipit architecto non veritatis sequi et voluptatum exercitationem. Vel esse nulla et exercitationem laudantium non assumenda nesciunt? Qui dicta quia vel magni pariatur sit ratione atque qui quia fugiat est eligendi quidem. </p><ul><li>Eum neque molestias est commodi quia sed voluptatem quia. </li><li>Non omnis ratione qui voluptas fuga in optio rerum? </li></ul><p>Quo repudiandae rerum ea doloribus nihil eos temporibus beatae ab libero nobis aut ullam voluptatem eos totam fuga sit velit sequi. Id consequatur nobis a quae possimus aut nesciunt temporibus! Et iure quod <strong>Qui eius</strong> sed quas molestias vel quod voluptas! Sit molestiae ipsam <em>In expedita et voluptas sequi</em>! Eos ducimus laudantium et quia reiciendis aut numquam quos sed necessitatibus omnis et exercitationem repudiandae? Ab totam odit aut expedita omnis sit praesentium aliquam est accusantium fugiat qui omnis qui illo dolorem. Sed expedita galisum ut officia reprehenderitet accusamus ad nemo placeat. Ut fugiat totam a facere quaerat et esse corrupti sed dolor pariatur in mollitia necessitatibus. </p> + <p>Lorem ipsum dolor sit amet. Fugiat beatae aut fugiat dolores qui consequuntur perferendis et dolores repudiandae. Et ullam maxime sapiente veritatis quo consequatur ducimus. Cum dolor blanditiis <strong>Ut ullam</strong> ut voluptas neque ea fugiat amet! Et asperiores quam <a href="https://www.loremipzum.com" target="_blank">Qui dolor id illum ullam</a>. Qui dolorem autem et soluta nostrum 33 galisum nostrum est exercitationem enim! Et harum animi non obcaecati fuga ut repellendus quas ea perspiciatis ducimus. Aut doloremque animi <em>Et quia et saepe quaerat aut velit incidunt et perferendis voluptatem</em> ex quia voluptas ea accusamus nostrum. Qui commodi laboriosam ad dicta galisum ut tempora unde et dolorem suscipit. Ut illum illum id dolor tempore ut quos voluptatem aut internos molestias quo adipisci ipsum. 33 expedita molestias aut iusto nihil aut nemo optio et cupiditate velit. Et cupiditate omnis ex explicabo fugit in voluptas ducimus et eaque quae et dolor odio aut consectetur rerum nam consequuntur quisquam. </p><blockquote cite="https://www.loremipzum.com">Sed eaque quas sed vitae quae et dolor ratione sed rerum saepe rem sunt rerum. </blockquote><p>Rem alias blanditiis <em>Aut delectus quo modi velit a similique assumenda</em>. At nobis natus et natus tenetur est quaerat dolor aut sequi harum sed dignissimos nihil. Ut iure unde et voluptatem enim cum consequatur totam rem veniam maxime ab exercitationem modi ut cumque magni! Eum illo aliquam et vitae earum eos sint mollitia. Non dolor natus est aperiam laudantium aut reiciendis incidunt quia fugit ad earum vero aut quasi rerum et corrupti quibusdam? Et molestiae itaque id voluptatem maxime qui velit fuga eum eius dolorum sit saepe iste id similique consectetur. Et consequatur autem et doloribus nemo quo minima consequatur qui repellendus voluptatum? Aut facilis quaerat ut omnis aperiam <a href="https://www.loremipzum.com" target="_blank">Ut eveniet sed neque maxime</a> At voluptas molestiae a sapiente voluptas ex nulla amet. Eos sint ducimus est odit rerum vel dolorem itaque est suscipit architecto non veritatis sequi et voluptatum exercitationem. Vel esse nulla et exercitationem laudantium non assumenda nesciunt? Qui dicta quia vel magni pariatur sit ratione atque qui quia fugiat est eligendi quidem. </p><ul><li>Eum neque molestias est commodi quia sed voluptatem quia. </li><li>Non omnis ratione qui voluptas fuga in optio rerum? </li></ul><p>Quo repudiandae rerum ea doloribus nihil eos temporibus beatae ab libero nobis aut ullam voluptatem eos totam fuga sit velit sequi. Id consequatur nobis a quae possimus aut nesciunt temporibus! Et iure quod <strong>Qui eius</strong> sed quas molestias vel quod voluptas! Sit molestiae ipsam <em>In expedita et voluptas sequi</em>! Eos ducimus laudantium et quia reiciendis aut numquam quos sed necessitatibus omnis et exercitationem repudiandae? Ab totam odit aut expedita omnis sit praesentium aliquam est accusantium fugiat qui omnis qui illo dolorem. Sed expedita galisum ut officia reprehenderitet accusamus ad nemo placeat. Ut fugiat totam a facere quaerat et esse corrupti sed dolor pariatur in mollitia necessitatibus. </p> + <p>Lorem ipsum dolor sit amet. Fugiat beatae aut fugiat dolores qui consequuntur perferendis et dolores repudiandae. Et ullam maxime sapiente veritatis quo consequatur ducimus. Cum dolor blanditiis <strong>Ut ullam</strong> ut voluptas neque ea fugiat amet! Et asperiores quam <a href="https://www.loremipzum.com" target="_blank">Qui dolor id illum ullam</a>. Qui dolorem autem et soluta nostrum 33 galisum nostrum est exercitationem enim! Et harum animi non obcaecati fuga ut repellendus quas ea perspiciatis ducimus. Aut doloremque animi <em>Et quia et saepe quaerat aut velit incidunt et perferendis voluptatem</em> ex quia voluptas ea accusamus nostrum. Qui commodi laboriosam ad dicta galisum ut tempora unde et dolorem suscipit. Ut illum illum id dolor tempore ut quos voluptatem aut internos molestias quo adipisci ipsum. 33 expedita molestias aut iusto nihil aut nemo optio et cupiditate velit. Et cupiditate omnis ex explicabo fugit in voluptas ducimus et eaque quae et dolor odio aut consectetur rerum nam consequuntur quisquam. </p><blockquote cite="https://www.loremipzum.com">Sed eaque quas sed vitae quae et dolor ratione sed rerum saepe rem sunt rerum. </blockquote><p>Rem alias blanditiis <em>Aut delectus quo modi velit a similique assumenda</em>. At nobis natus et natus tenetur est quaerat dolor aut sequi harum sed dignissimos nihil. Ut iure unde et voluptatem enim cum consequatur totam rem veniam maxime ab exercitationem modi ut cumque magni! Eum illo aliquam et vitae earum eos sint mollitia. Non dolor natus est aperiam laudantium aut reiciendis incidunt quia fugit ad earum vero aut quasi rerum et corrupti quibusdam? Et molestiae itaque id voluptatem maxime qui velit fuga eum eius dolorum sit saepe iste id similique consectetur. Et consequatur autem et doloribus nemo quo minima consequatur qui repellendus voluptatum? Aut facilis quaerat ut omnis aperiam <a href="https://www.loremipzum.com" target="_blank">Ut eveniet sed neque maxime</a> At voluptas molestiae a sapiente voluptas ex nulla amet. Eos sint ducimus est odit rerum vel dolorem itaque est suscipit architecto non veritatis sequi et voluptatum exercitationem. Vel esse nulla et exercitationem laudantium non assumenda nesciunt? Qui dicta quia vel magni pariatur sit ratione atque qui quia fugiat est eligendi quidem. </p><ul><li>Eum neque molestias est commodi quia sed voluptatem quia. </li><li>Non omnis ratione qui voluptas fuga in optio rerum? </li></ul><p>Quo repudiandae rerum ea doloribus nihil eos temporibus beatae ab libero nobis aut ullam voluptatem eos totam fuga sit velit sequi. Id consequatur nobis a quae possimus aut nesciunt temporibus! Et iure quod <strong>Qui eius</strong> sed quas molestias vel quod voluptas! Sit molestiae ipsam <em>In expedita et voluptas sequi</em>! Eos ducimus laudantium et quia reiciendis aut numquam quos sed necessitatibus omnis et exercitationem repudiandae? Ab totam odit aut expedita omnis sit praesentium aliquam est accusantium fugiat qui omnis qui illo dolorem. Sed expedita galisum ut officia reprehenderitet accusamus ad nemo placeat. Ut fugiat totam a facere quaerat et esse corrupti sed dolor pariatur in mollitia necessitatibus. </p> + + <h1 id="partie_2">Deuxième partie</h1> + + <p>Lorem ipsum dolor sit amet. Fugiat beatae aut fugiat dolores qui consequuntur perferendis et dolores repudiandae. Et ullam maxime sapiente veritatis quo consequatur ducimus. Cum dolor blanditiis <strong>Ut ullam</strong> ut voluptas neque ea fugiat amet! Et asperiores quam <a href="https://www.loremipzum.com" target="_blank">Qui dolor id illum ullam</a>. Qui dolorem autem et soluta nostrum 33 galisum nostrum est exercitationem enim! Et harum animi non obcaecati fuga ut repellendus quas ea perspiciatis ducimus. Aut doloremque animi <em>Et quia et saepe quaerat aut velit incidunt et perferendis voluptatem</em> ex quia voluptas ea accusamus nostrum. Qui commodi laboriosam ad dicta galisum ut tempora unde et dolorem suscipit. Ut illum illum id dolor tempore ut quos voluptatem aut internos molestias quo adipisci ipsum. 33 expedita molestias aut iusto nihil aut nemo optio et cupiditate velit. Et cupiditate omnis ex explicabo fugit in voluptas ducimus et eaque quae et dolor odio aut consectetur rerum nam consequuntur quisquam. </p><blockquote cite="https://www.loremipzum.com">Sed eaque quas sed vitae quae et dolor ratione sed rerum saepe rem sunt rerum. </blockquote><p>Rem alias blanditiis <em>Aut delectus quo modi velit a similique assumenda</em>. At nobis natus et natus tenetur est quaerat dolor aut sequi harum sed dignissimos nihil. Ut iure unde et voluptatem enim cum consequatur totam rem veniam maxime ab exercitationem modi ut cumque magni! Eum illo aliquam et vitae earum eos sint mollitia. Non dolor natus est aperiam laudantium aut reiciendis incidunt quia fugit ad earum vero aut quasi rerum et corrupti quibusdam? Et molestiae itaque id voluptatem maxime qui velit fuga eum eius dolorum sit saepe iste id similique consectetur. Et consequatur autem et doloribus nemo quo minima consequatur qui repellendus voluptatum? Aut facilis quaerat ut omnis aperiam <a href="https://www.loremipzum.com" target="_blank">Ut eveniet sed neque maxime</a> At voluptas molestiae a sapiente voluptas ex nulla amet. Eos sint ducimus est odit rerum vel dolorem itaque est suscipit architecto non veritatis sequi et voluptatum exercitationem. Vel esse nulla et exercitationem laudantium non assumenda nesciunt? Qui dicta quia vel magni pariatur sit ratione atque qui quia fugiat est eligendi quidem. </p><ul><li>Eum neque molestias est commodi quia sed voluptatem quia. </li><li>Non omnis ratione qui voluptas fuga in optio rerum? </li></ul><p>Quo repudiandae rerum ea doloribus nihil eos temporibus beatae ab libero nobis aut ullam voluptatem eos totam fuga sit velit sequi. Id consequatur nobis a quae possimus aut nesciunt temporibus! Et iure quod <strong>Qui eius</strong> sed quas molestias vel quod voluptas! Sit molestiae ipsam <em>In expedita et voluptas sequi</em>! Eos ducimus laudantium et quia reiciendis aut numquam quos sed necessitatibus omnis et exercitationem repudiandae? Ab totam odit aut expedita omnis sit praesentium aliquam est accusantium fugiat qui omnis qui illo dolorem. Sed expedita galisum ut officia reprehenderitet accusamus ad nemo placeat. Ut fugiat totam a facere quaerat et esse corrupti sed dolor pariatur in mollitia necessitatibus. </p> + <p>Lorem ipsum dolor sit amet. Fugiat beatae aut fugiat dolores qui consequuntur perferendis et dolores repudiandae. Et ullam maxime sapiente veritatis quo consequatur ducimus. Cum dolor blanditiis <strong>Ut ullam</strong> ut voluptas neque ea fugiat amet! Et asperiores quam <a href="https://www.loremipzum.com" target="_blank">Qui dolor id illum ullam</a>. Qui dolorem autem et soluta nostrum 33 galisum nostrum est exercitationem enim! Et harum animi non obcaecati fuga ut repellendus quas ea perspiciatis ducimus. Aut doloremque animi <em>Et quia et saepe quaerat aut velit incidunt et perferendis voluptatem</em> ex quia voluptas ea accusamus nostrum. Qui commodi laboriosam ad dicta galisum ut tempora unde et dolorem suscipit. Ut illum illum id dolor tempore ut quos voluptatem aut internos molestias quo adipisci ipsum. 33 expedita molestias aut iusto nihil aut nemo optio et cupiditate velit. Et cupiditate omnis ex explicabo fugit in voluptas ducimus et eaque quae et dolor odio aut consectetur rerum nam consequuntur quisquam. </p><blockquote cite="https://www.loremipzum.com">Sed eaque quas sed vitae quae et dolor ratione sed rerum saepe rem sunt rerum. </blockquote><p>Rem alias blanditiis <em>Aut delectus quo modi velit a similique assumenda</em>. At nobis natus et natus tenetur est quaerat dolor aut sequi harum sed dignissimos nihil. Ut iure unde et voluptatem enim cum consequatur totam rem veniam maxime ab exercitationem modi ut cumque magni! Eum illo aliquam et vitae earum eos sint mollitia. Non dolor natus est aperiam laudantium aut reiciendis incidunt quia fugit ad earum vero aut quasi rerum et corrupti quibusdam? Et molestiae itaque id voluptatem maxime qui velit fuga eum eius dolorum sit saepe iste id similique consectetur. Et consequatur autem et doloribus nemo quo minima consequatur qui repellendus voluptatum? Aut facilis quaerat ut omnis aperiam <a href="https://www.loremipzum.com" target="_blank">Ut eveniet sed neque maxime</a> At voluptas molestiae a sapiente voluptas ex nulla amet. Eos sint ducimus est odit rerum vel dolorem itaque est suscipit architecto non veritatis sequi et voluptatum exercitationem. Vel esse nulla et exercitationem laudantium non assumenda nesciunt? Qui dicta quia vel magni pariatur sit ratione atque qui quia fugiat est eligendi quidem. </p><ul><li>Eum neque molestias est commodi quia sed voluptatem quia. </li><li>Non omnis ratione qui voluptas fuga in optio rerum? </li></ul><p>Quo repudiandae rerum ea doloribus nihil eos temporibus beatae ab libero nobis aut ullam voluptatem eos totam fuga sit velit sequi. Id consequatur nobis a quae possimus aut nesciunt temporibus! Et iure quod <strong>Qui eius</strong> sed quas molestias vel quod voluptas! Sit molestiae ipsam <em>In expedita et voluptas sequi</em>! Eos ducimus laudantium et quia reiciendis aut numquam quos sed necessitatibus omnis et exercitationem repudiandae? Ab totam odit aut expedita omnis sit praesentium aliquam est accusantium fugiat qui omnis qui illo dolorem. Sed expedita galisum ut officia reprehenderitet accusamus ad nemo placeat. Ut fugiat totam a facere quaerat et esse corrupti sed dolor pariatur in mollitia necessitatibus. </p> + <p>Lorem ipsum dolor sit amet. Fugiat beatae aut fugiat dolores qui consequuntur perferendis et dolores repudiandae. Et ullam maxime sapiente veritatis quo consequatur ducimus. Cum dolor blanditiis <strong>Ut ullam</strong> ut voluptas neque ea fugiat amet! Et asperiores quam <a href="https://www.loremipzum.com" target="_blank">Qui dolor id illum ullam</a>. Qui dolorem autem et soluta nostrum 33 galisum nostrum est exercitationem enim! Et harum animi non obcaecati fuga ut repellendus quas ea perspiciatis ducimus. Aut doloremque animi <em>Et quia et saepe quaerat aut velit incidunt et perferendis voluptatem</em> ex quia voluptas ea accusamus nostrum. Qui commodi laboriosam ad dicta galisum ut tempora unde et dolorem suscipit. Ut illum illum id dolor tempore ut quos voluptatem aut internos molestias quo adipisci ipsum. 33 expedita molestias aut iusto nihil aut nemo optio et cupiditate velit. Et cupiditate omnis ex explicabo fugit in voluptas ducimus et eaque quae et dolor odio aut consectetur rerum nam consequuntur quisquam. </p><blockquote cite="https://www.loremipzum.com">Sed eaque quas sed vitae quae et dolor ratione sed rerum saepe rem sunt rerum. </blockquote><p>Rem alias blanditiis <em>Aut delectus quo modi velit a similique assumenda</em>. At nobis natus et natus tenetur est quaerat dolor aut sequi harum sed dignissimos nihil. Ut iure unde et voluptatem enim cum consequatur totam rem veniam maxime ab exercitationem modi ut cumque magni! Eum illo aliquam et vitae earum eos sint mollitia. Non dolor natus est aperiam laudantium aut reiciendis incidunt quia fugit ad earum vero aut quasi rerum et corrupti quibusdam? Et molestiae itaque id voluptatem maxime qui velit fuga eum eius dolorum sit saepe iste id similique consectetur. Et consequatur autem et doloribus nemo quo minima consequatur qui repellendus voluptatum? Aut facilis quaerat ut omnis aperiam <a href="https://www.loremipzum.com" target="_blank">Ut eveniet sed neque maxime</a> At voluptas molestiae a sapiente voluptas ex nulla amet. Eos sint ducimus est odit rerum vel dolorem itaque est suscipit architecto non veritatis sequi et voluptatum exercitationem. Vel esse nulla et exercitationem laudantium non assumenda nesciunt? Qui dicta quia vel magni pariatur sit ratione atque qui quia fugiat est eligendi quidem. </p><ul><li>Eum neque molestias est commodi quia sed voluptatem quia. </li><li>Non omnis ratione qui voluptas fuga in optio rerum? </li></ul><p>Quo repudiandae rerum ea doloribus nihil eos temporibus beatae ab libero nobis aut ullam voluptatem eos totam fuga sit velit sequi. Id consequatur nobis a quae possimus aut nesciunt temporibus! Et iure quod <strong>Qui eius</strong> sed quas molestias vel quod voluptas! Sit molestiae ipsam <em>In expedita et voluptas sequi</em>! Eos ducimus laudantium et quia reiciendis aut numquam quos sed necessitatibus omnis et exercitationem repudiandae? Ab totam odit aut expedita omnis sit praesentium aliquam est accusantium fugiat qui omnis qui illo dolorem. Sed expedita galisum ut officia reprehenderitet accusamus ad nemo placeat. Ut fugiat totam a facere quaerat et esse corrupti sed dolor pariatur in mollitia necessitatibus. </p> + </body> +</html> diff --git a/R1.02/tp/tp2/correction/exercice2.html b/R1.02/tp/tp2/correction/exercice2.html new file mode 100644 index 0000000..8d775ce --- /dev/null +++ b/R1.02/tp/tp2/correction/exercice2.html @@ -0,0 +1,83 @@ +<!DOCTYPE html> +<html lang="fr"> + + <head> + <title>Exercice 2</title> + <meta charset="utf-8"> + <meta name="viewport" content="initial-scale=1,witdh=device-width"> + </head> + + <body> + <form method="POST" action="https://dwarves.iut-fbleau.fr/requete.php"> + + <div> + <label for="lastname">Nom : </label> + <input type="text" name="lastname" id="lastname" placeholder="ex: Dupont" required> + </div> + + <div> + <label for="firstname">Prénom : </label> + <input type="text" name="firstname" id="firstname" placeholder="ex: Jean-Paul" required> + </div> + + <div> + <label for="birthdate">Date de naissance : </label> + <input type="date" name="birthdate" id="birthdate"> + </div> + + <div> + <label for="email">Adresse email : </label> + <input type="email" name="email" id="email" placeholder="ex: jean-paul.dupont@gmail.com" required> + </div> + + <div> + <label for="postcode">Code postal : </label> + <input type="number" name="postcode" id="postcode" placeholder="ex: 75000" min="5" max="99999" required> + <!-- + Validation d'un code postal avec une expression régulière + <input type="text" name="postcode" id="postcode" placeholder="ex: 75000" pattern="(?:[0-8]\d|9[0-8])\d{3}"> + --> + </div> + + <div> + <label for="phonenumber">N° Télephone portable : </label> + <input type="text" name="phonenumber" id="phonenumber" placeholder="ex: 0655664488" pattern="^(\+33|0)[6-7](\d\d){4}$" required> + <!-- Il n'y a pas d'attribut pour afficher un message d'erreur personnalisé, c'est pour cela qu'il y a JavaScript --> + </div> + + <div> + <input type="radio" name="gender" id="femme" value="Madame" required> + <label for="femme">Femme </label> + <input type="radio" name="gender" id="homme" value="Monsieur" required> + <label for="homme">Homme </label> + <input type="radio" name="gender" id="autre" value="Autre" required> + <label for="autre">Autre </label> + </div> + + <div> + <label for="semester">Semestre : </label> + <select name="semester" id="semester" size="4" required> + <option value="Semestre 1">Semestre 1</option> + <option value="Semestre 2" selected>Semestre 2</option> + <option value="Semestre 3">Semestre 3</option> + <option value="Semestre 4">Semestre 4</option> + </select> + </div> + + <div> + <label for="niveau">Niveau en HTML (entre 0 et 10) : </label> + <input type="range" name="niveau" id="niveau" min="0" max="10" value="5"> + </div> + + <div> + <label for="message">Message : </label> + <textarea name="message" id="message" required></textarea> + </div> + + <div> + <input type="submit" value="Envoyer"> + <input type="reset" value="Remettre à zéro"> + </div> + </form> + </body> +</html> diff --git a/R1.02/tp/tp2/correction/exercice3.html b/R1.02/tp/tp2/correction/exercice3.html new file mode 100644 index 0000000..e20fbf4 --- /dev/null +++ b/R1.02/tp/tp2/correction/exercice3.html @@ -0,0 +1,85 @@ +<!DOCTYPE html> +<html lang="fr"> + + <head> + <title>Exercice 3</title> + + <meta name="viewport" content="initial-scale=1,witdh=device-width"> + <meta charset="utf-8"> + </head> + + <body> + <form method="POST" action="https://dwarves.iut-fbleau.fr/requete.php"> + + <div> + <label for="lastname">Nom : </label> + <input type="text" name="lastname" id="lastname" placeholder="ex: Dupont" required> + </div> + + <div> + <label for="firstname">Prénom : </label> + <input type="text" name="firstname" id="firstname" placeholder="ex: Jean-Paul" required> + </div> + + <div> + <label for="birthdate">Date de naissance : </label> + <input type="date" name="birthdate" id="birthdate"> + </div> + + <div> + <label for="email">Adresse email : </label> + <input type="email" name="email" id="email" placeholder="ex: jean-paul.dupont@gmail.com" required> + </div> + + <div> + <label for="postcode">Code postal : </label> + <input type="number" name="postcode" id="postcode" placeholder="ex: 75000" min="5" max="99999" required> + <!-- + Validation d'un code postal avec une expression régulière + <input type="text" name="postcode" id="postcode" placeholder="ex: 75000" pattern="(?:[0-8]\d|9[0-8])\d{3}"> + --> + </div> + + <div> + <label for="phonenumber">N° Télephone portable : </label> + <input type="text" name="phonenumber" id="phonenumber" placeholder="ex: 0655664488" pattern="^(\+33|0)[6-7](\d\d){4}$" required> + <!-- Il n'y a pas d'attribut pour afficher un message d'erreur personnalisé, c'est pour cela qu'il y a JavaScript --> + </div> + + <div> + <input type="radio" name="gender" id="femme" value="Madame" required> + <label for="femme">Femme </label> + <input type="radio" name="gender" id="homme" value="Monsieur" required> + <label for="homme">Homme </label> + <input type="radio" name="gender" id="autre" value="Autre" required> + <label for="autre">Autre </label> + </div> + + <div> + <label for="semester">Semestre : </label> + <select name="semester" id="semester" size="4" required> + <option value="Semestre 1">Semestre 1</option> + <option value="Semestre 2" selected>Semestre 2</option> + <option value="Semestre 3">Semestre 3</option> + <option value="Semestre 4">Semestre 4</option> + </select> + </div> + + <div> + <label for="niveau">Niveau en HTML (entre 0 et 10) : </label> + <input type="range" name="niveau" id="niveau" min="0" max="10" value="5"> + </div> + + <div> + <label for="message">Message : </label> + <textarea name="message" id="message" required></textarea> + </div> + + <div> + <input type="submit" value="Envoyer"> + <input type="reset" value="Remettre à zéro"> + </div> + </form> + </body> + +</html> diff --git a/R1.02/tp/tp2/correction/exercice4.html b/R1.02/tp/tp2/correction/exercice4.html new file mode 100644 index 0000000..7a6851d --- /dev/null +++ b/R1.02/tp/tp2/correction/exercice4.html @@ -0,0 +1,53 @@ +<!doctype html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="initial-scale=1,witdh=device-width"> + <title>Exercice 4</title> + <link rel="stylesheet" href="./style4.css"> + </head> + <body> + <h1>Emoticons</h1> + + <p> + Emoticons are textual portrayals of a writer's moods or facial + expressions in the form of icons. Originally, these icons + consisted of ASCII art. + </p> + + <p> + Emoticons can generally be divided into two groups: Western (mainly + from America and Europe) or horizontal; Eastern or vertical (mainly + from east Asia). + </p> + + <h2>Western</h2> + + <p> + Western style emoticons are mostly written from left to right as + though the head is rotated counter-clockwise 90 degrees. + </p> + + <ul> + <li>Smiley: <span>:‑) :-></span></li> + <li>Tongue-tied: <span>:‑&</span></li> + <li>Broken heart: <span><\3</span></li> + <li>Rose: <span>@}->--</span></li> + <li>Fish: <span>><(((*></span></li> + </ul> + + <h2>Eastern</h2> + + <p> + Eastern emoticons generally are not rotated sideways. They first + arose in Japan, where they are referred to as kaomoji. + </p> + + <ul> + <li>Troubled: <span>(>_<)</span></li> + <li>Sad: <span>("_")</span></li> + <li>Cat: <span>(=^·^=)</span></li> + <li>Headphones: <span>((d[-_-]b))</span></li> + </ul> + </body> +</html> diff --git a/R1.02/tp/tp2/correction/exercice5.html b/R1.02/tp/tp2/correction/exercice5.html new file mode 100644 index 0000000..4b7e8a2 --- /dev/null +++ b/R1.02/tp/tp2/correction/exercice5.html @@ -0,0 +1,85 @@ +<!doctype html> +<html lang="fr"> + <head> + <meta charset="utf-8"> + <title>Exercice 5</title> + <meta name="viewport" content="initial-scale=1,witdh=device-width"> + <link rel="stylesheet" href="./style5.css"> + </head> + <body> + <table> + <caption>Orbites des planètes du Système solaire</caption> + <thead> + <tr> + <th>Planète</th> + <th>Distance moyenne (UA)</th> + <th>Exentricité </th><th>Inclinaison (°)</th> + <th>Période de révolution (an)</th> + </tr> + </thead> + <tbody> + <tr> + <td>Mercure</td> + <td>0,38709893</td> + <td>0,205</td> + <td>7</td> + <td>0,241</td> + </tr> + + <tr> + <td>Venus</td> + <td>0,72333199</td> + <td>0,007</td> + <td>3,4</td> + <td>0,615</td> + </tr> + <tr> + <td>Terre</td> + <td>1</td> + <td>0,017</td> + <td>0</td> + <td>1</td> + </tr> + <tr> + <td>Mars</td> + <td>1,52366231</td> + <td>0,094</td> + <td>1,9</td> + <td>1,881</td> + </tr> + + + <tr> + <td>Jupiter</td> + <td>5,20336301</td> + <td>0,049</td> + <td>1,3</td> + <td>11,862</td> + </tr> + <tr> + <td>Saturne</td> + <td>9,6</td> + <td>0,057</td> + <td>2,5</td> + <td>29,452</td> + </tr> + <tr> + <td>Uranus</td> + <td>2872,5</td> + <td>0,8</td> + <td>97,8</td> + <td>30,589</td> + </tr> + + <tr> + <td>Neptune</td> + <td>4495,1</td> + <td>1,8</td> + <td>28,3</td> + <td>59,8</td> + </tr> + </tbody> + + </table> + </body> +</html> diff --git a/R1.02/tp/tp2/correction/exercice6.html b/R1.02/tp/tp2/correction/exercice6.html new file mode 100644 index 0000000..4ac5224 --- /dev/null +++ b/R1.02/tp/tp2/correction/exercice6.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html lang="fr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="initial-scale=1,witdh=device-width"> + <title>Exercice 6</title> + <link rel="stylesheet" href="./style6.css"> + </head> + <body> + <table> + <tbody> + <tr><td rowspan="5"></td><td colspan="3"></td><td rowspan="4"></td></tr> + <tr><td rowspan="3"></td><td></td><td rowspan="2"></td></tr> + <tr><td></td></tr> + <tr><td colspan="2"></td></tr> + <tr><td colspan="4"></td></tr> + </tbody> + </table> + </body> +</html> diff --git a/R1.02/tp/tp2/correction/style4.css b/R1.02/tp/tp2/correction/style4.css new file mode 100644 index 0000000..ae629ba --- /dev/null +++ b/R1.02/tp/tp2/correction/style4.css @@ -0,0 +1,21 @@ +body { + font-family:sans-serif; +} + +h1 { + font-variant:small-caps; + text-decoration : underline; +} + +h2 { + background-color:#aaaaaa; + padding : 10px; + font-style:italic; +} + +span { + font-family: monospace; + font-weight:bold; + color : #aa4512; +} + diff --git a/R1.02/tp/tp2/correction/style5.css b/R1.02/tp/tp2/correction/style5.css new file mode 100644 index 0000000..34c07f5 --- /dev/null +++ b/R1.02/tp/tp2/correction/style5.css @@ -0,0 +1,26 @@ +table { + font-family: sans-serif; + border-collapse: collapse; + margin : auto; + width:700px; +} +table caption { + + font-weight: bold; + font-variant: small-caps; + +} + +th { + border-bottom: 3px solid black; + border-top: 3px solid black; + text-align: left; + font-weight: bold; + font-variant: small-caps; +} + +td { + border-bottom: 1px solid lightgray; + text-align: left; +} + diff --git a/R1.02/tp/tp2/correction/style6.css b/R1.02/tp/tp2/correction/style6.css new file mode 100644 index 0000000..a54f611 --- /dev/null +++ b/R1.02/tp/tp2/correction/style6.css @@ -0,0 +1,9 @@ +table { + border-collapse: collapse; +} +td { + border:1px solid black; + width:50px; + height:50px; +} + diff --git a/R1.02/tp/tp3/README.md b/R1.02/tp/tp3/README.md new file mode 100644 index 0000000..96debd8 --- /dev/null +++ b/R1.02/tp/tp3/README.md @@ -0,0 +1,129 @@ +# TP CSS +> Vous trouverez une correction du tp1 [ici](../tp1/correction). +> Vous trouverez une correction du tp2 [ici](../tp2/correction). +> Vous trouverez une correction du tp3 [ici](../tp3/correction). + + + +## Exercice 1 : stylisation d'une liste + +Soit le code [html](src/exercice1.html) suivant + +```html +<h1>Mes films préférés de Clint Eastwood</h1> +<ul> + <li>Gran Torino (2008)</li> + <li>Impitoyable (1992)</li> + <li>Mystic River (2003)</li> + <li>Sur la route de Madison (1995)</li> + <li>Lettres d'Iwo Jima (2006)</li> + <li>L'Échange (2008)</li> + <li>Josey Wales hors-la-loi (1976)</li> + <li>Breezy (1973)</li> +</ul> +``` + +Donnez une feuille de style pour obtenir la mise en page suivante ; + + + +> Propriétés css utiles : +> - `list-style-type` : contrôle l'apparence de la puce d'un élément de liste. +> - `padding`, `margin` : espace intérieur et extérieur +> - `background-color` : couleur de fond +> - `font-style` : italique, oblique ou normal +> +> Pseudo-classes utiles : +> - `nth-child` : nth-child(an+b) permet de selctionner les éléments en fonction de leur position. + +## Exercice 2 : positionnement des boîtes avec la propriété `position`. + +Soit le code [html](./src/exercice2.html) suivant : + +```html +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8"> + <title>Exercice 2</title> + </head> + <body> + <main> + <header></header> + <section></section> + <aside></aside> + <footer></footer> + </main> + </body> +</html> +``` +Donnez une feuille de style pour obtenir la mise en page suivante : + + +> Propriétés utiles +> - `position` : static, relative, absolute, fixed, sticky +> - `top`, `bottom`, `right`, `left` : coordonnées de l'élément. Attention, pour le +> positionnement absolu, les **coordonnées s'entendent par rapport au premier ascendant en position relative, +> le body s'il n'y en a pas**. +> - `ẁidth` et `height` : largeur et hauteur. +> - `border-radius` et `border` : arrondi des coins, et bordure. + +## Exercice 3 : selection à l'aide d'attributs. +Soit le code [html](src/exercice3.html) suivant +```html +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8"> + <title>Exercice 3</title> + </head> + <body> + <ul> + <li><a href="https://developer.mozilla.org/docs/Web/HTML">HTML</a></li> + <li><a href="https://developer.mozilla.org/docs/Web/CSS">CSS</a></li> + <li><a href="https://developer.mozilla.org/docs/Web/Javascript">JS</a></li> + </ul> + </body> +</html> +``` +Donnez une feuille de style pour obtenir la mise en page suivante : + + +Vous pouvez utiliser les images suivantes : +- [html](https://raw.githubusercontent.com/devicons/devicon/master/icons/html5/html5-plain.svg) +- [css](https://raw.githubusercontent.com/devicons/devicon/master/icons/css3/css3-plain.svg) +- [javascript](https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-plain.svg) + +> On peut selectionner un élément en utilisant la valeur d'un attribut. Par exemple : +> ```css +> a[href*="toto"] +> ``` +> selectionne les liens dont l'url cible contient "toto". +> Propriétés utiles : +> - `background-image` : permet de définir une image comme arrière plan. +> - `display` : permet de définir le rendu d'un élément (bloc ou en ligne) +> - `font-size` : contrôle la taille de la fonte. +> - `text-align`, `vertical-align` : contrôle l'alignement horizontal et vertical des éléments inline. + +## Exercice 4 : media queries +Soit le code [html](src/exercice4.html) et sa feuille de [style](src/style4.css). + +Lorsque la largeur de l'écran est inférieur à `640px`, le menu n'est plus affiché. + +> Utilisez une requête media `@media`. + +## Exercice 5 : mise en page avec la propriété `float` +On reprend le source précédent. + +À l'aide de la propriété `float`, affichez les articles sur 2 colonnes avec une bordure de 1px grise et +une marge entre les articles de 40px. + +> Vous aurez besoin d'utiliser la propriété `width` que vous pouvez utiliser avec la fonction CSS `calc()` pour le calcul, +> exemple: +> ```css +> width: calc(100px + 2*20px) +> ``` +> Penser quand vous cherchez la bonne largeur (+/- 50%), qu'il faut prendre en compte la taille de marge et des bordures. Vous pouvez utiliser +> la propriété `box-sizing`. + +Ajoutez une requête media pour que les articles s'affichent à nouveau verticalement lorsque la taille de l'écran est en dessous de 720px. diff --git a/R1.02/tp/tp3/img/eastwood.png b/R1.02/tp/tp3/img/eastwood.png new file mode 100644 index 0000000000000000000000000000000000000000..3a1ff45ea6dadbcf6a2ae467253b51d15dad92f0 GIT binary patch literal 21374 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 literal 0 HcmV?d00001 diff --git a/R1.02/tp/tp3/img/smiley.png b/R1.02/tp/tp3/img/smiley.png new file mode 100644 index 0000000000000000000000000000000000000000..8e561846721aace7d5f7721ecbacd99f541201e9 GIT binary patch literal 2210 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 literal 0 HcmV?d00001 diff --git a/R1.02/tp/tp3/img/web_stack.png b/R1.02/tp/tp3/img/web_stack.png new file mode 100644 index 0000000000000000000000000000000000000000..58436d13f4dcf647e4877d133813107932bc5590 GIT binary patch literal 3474 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 literal 0 HcmV?d00001 diff --git a/R1.02/tp/tp3/src/exercice1.html b/R1.02/tp/tp3/src/exercice1.html new file mode 100644 index 0000000..5be8589 --- /dev/null +++ b/R1.02/tp/tp3/src/exercice1.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html lang="fr"> + <head> + <meta charset="UTF-8"> + <meta name="viewport" content="initial-scale=1,witdh=device-width"> + <title>CEastwood</title> + </head> + + <body> + <h1>Mes films préférés de Clint Eastwood</h1> + <ul> + <li>Gran Torino (2008)</li> + <li>Impitoyable (1992)</li> + <li>Mystic River (2003)</li> + <li>Sur la route de Madison (1995)</li> + <li>Lettres d'Iwo Jima (2006)</li> + <li>L'Échange (2008)</li> + <li>Josey Wales hors-la-loi (1976)</li> + <li>Breezy (1973)</li> + </ul> + </body> +</html> + diff --git a/R1.02/tp/tp3/src/exercice2.html b/R1.02/tp/tp3/src/exercice2.html new file mode 100644 index 0000000..dc7e3af --- /dev/null +++ b/R1.02/tp/tp3/src/exercice2.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8"> + <title>Exercice 2</title> + </head> + <body> + <main> + <header></header> + <section></section> + <!--aside></aside--> + <footer></footer> + </main> + </body> +</html> diff --git a/R1.02/tp/tp3/src/exercice3.html b/R1.02/tp/tp3/src/exercice3.html new file mode 100644 index 0000000..15feafa --- /dev/null +++ b/R1.02/tp/tp3/src/exercice3.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8"> + <title>Exercice 3</title> + </head> + <body> + <ul> + <li><a href="https://developer.mozilla.org/docs/Web/HTML">HTML</a></li> + <li><a href="https://developer.mozilla.org/docs/Web/CSS">CSS</a></li> + <li><a href="https://developer.mozilla.org/docs/Web/Javascript">JS</a></li> + </ul> + </body> +</html> diff --git a/R1.02/tp/tp3/src/exercice4.html b/R1.02/tp/tp3/src/exercice4.html new file mode 100644 index 0000000..21a28e6 --- /dev/null +++ b/R1.02/tp/tp3/src/exercice4.html @@ -0,0 +1,60 @@ +<!DOCTYPE html> +<html lang="en"> + + <head> + <meta charset="UTF-8"> + <meta name="viewport" content="initial-scale=1,witdh=device-width"> + <link rel="stylesheet" href="style4.css"> + <title>Document</title> + </head> + + <body> + <header> + <nav> + <ul> + <li><a href="/">Home</a></li> + <li><a href="/">About</a></li> + <li><a href="/">Contact</a></li> + </ul> + </nav> + </header> + <main> + <article> + <header> + <h1>Article title 1</h1> + </header> + <section> + <img src="https://picsum.photos/300/200" alt=""> + <p>lorem ipsum</p> + </section> + </article> + <article> + <header> + <h1>Article title 2</h1> + </header> + <section> + <img src="https://picsum.photos/300/200" alt=""> + <p>lorem ipsum</p> + </section> + </article> + <article> + <header> + <h1>Article title 3</h1> + </header> + <section> + <img src="https://picsum.photos/300/200" alt=""> + <p>lorem ipsum</p> + </section> + </article> + <article> + <header> + <h1>Article title 3</h1> + </header> + <section> + <img src="https://picsum.photos/300/200" alt=""> + <p>lorem ipsum</p> + </section> + </article> + </main> + </body> +</html> diff --git a/R1.02/tp/tp3/src/style4.css b/R1.02/tp/tp3/src/style4.css new file mode 100644 index 0000000..b97f333 --- /dev/null +++ b/R1.02/tp/tp3/src/style4.css @@ -0,0 +1,21 @@ +ul { + + text-align: center; + padding:0; +} +li { + list-style-type: none; + list-style-position: inside; + display: inline-block; + margin-right: 2em; + font-size : 2em; +} +li:last-child{ + margin-right:0; + +} +article { + text-align: justify; + border : 1px solid grey; + padding : 1em; +}