TOP 5 ACTEURS
HTML – CSS – JQUERY
CODE HTML
<!DOCTYPE html>
<html>
<head>
<title> Top 5 des meilleurs acteurs </title>
<link rel="stylesheet" type="text/css" href="style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="script.js"></script>
<link href="https://fonts.googleapis.com/css2?family=Limelight&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Limelight&family=Lobster&display=swap" rel="stylesheet">
</head>
<body>
<header>
<h1>Top 5 des meilleurs acteurs</h1>
</header>
<section id="main-menu">
<ul>
<li>
<div id="Part1" class="images">
<div class="bw"></div>
<div class="color"></div>
</div>
<div class="description">
<h2>Dwayne <br> Johnson </h2>
<h3>Ses meilleurs films</h3>
<p>Jumanji</p>
<p>San Andreas</p>
<p>Fast and Furious</p>
</div>
</li>
<li>
<div id="Part2" class="images">
<div class="bw"></div>
<div class="color"></div>
</div>
<div class="description">
<h2>Scarlett <br> Johansson </h2>
<h3>Ses meilleurs films</h3>
<p>Lucy</p>
<p>Avengers</p>
<p>The Island</p>
</div>
</li>
<li>
<div id="Part3" class="images">
<div class="bw"></div>
<div class="color"></div>
</div>
<div class="description">
<h2>Robert <br> Downey Jr </h2>
<h3>Ses meilleurs films</h3>
<p>Iron Man</p>
<p>Oppenheimer</p>
<p>Sherlock Holmes</p>
</div>
</li>
<li>
<div id="Part4" class="images">
<div class="bw"></div>
<div class="color"></div>
</div>
<div class="description">
<h2>Margot <br> Robbie </h2>
<h3>Ses meilleurs films</h3>
<p>Le Loup de Wall Street</p>
<p>Suicide Squad</p>
<p>Barbie</p>
</div>
</li>
<li>
<div id="Part5" class="images">
<div class="bw"></div>
<div class="color"></div>
</div>
<div class="description">
<h2>Tom <br> Holland </h2>
<h3>Ses meilleurs films</h3>
<p>Spider-Man </p>
<p>Avengers</p>
<p>Cherry</p>
</div>
</li>
</ul>
</section>
<section id="buttons-menu">
<ul>
<li class="button">Dwayne <br> Johnson</li>
<li class="button">Scarlett <br> Johansson</li>
<li class="button">Robert <br> Downey Jr</li>
<li class="button">Margot <br> Robbie</li>
<li class="button">Tom <br> Holland</li>
</ul>
</section>
</body>
</html>
CODE CSS
/* GENERAL */
* {
margin: 0;
padding: 0;
}
ul, ol {
list-style: none;
}
body {
background: #bfbfbf url('images/background.jpg') repeat-x;
font-family: Arial, sans-serif;
}
header {
padding: 30px 0;
}
header h1 {
font-size: 40px;
text-align: center;
color: white;
text-transform: uppercase;
text-shadow: 2px 2px 2px black;
font-family: 'Limelight', sans-serif;
}
/* Main Menu */
#main-menu ul {
width: 980px;
height: 500px;
margin: 0 auto;
padding-top: 148px;
}
.bw {
position: absolute;
left: 0px;
width: 140px;
height: 500px;
cursor: pointer;
background: url('images/bw-image.jpg') no-repeat;
}
.color {
position: absolute;
left: 140px;
width: 140px;
height: 500px;
cursor: pointer;
background: url('images/color-image.jpg') no-repeat;
}
#Part2 div {
background-position: -140px 0; /* Decaler l'image de 140 px */
}
#Part3 div {
background-position: -280px 0; /* Decaler l'image de 140 px */
}
#Part4 div {
background-position: -420px 0; /* Decaler l'image de 140 px */
}
#Part5 div {
background-position: -560px 0; /* Decaler l'image de 140 px */
}
.description {
position: absolute;
left: 140px;
width: 240px;
height: 460px;
padding: 20px;
background: white;
}
.description h2 {
padding-top: 20px;
font-size: 30px;
text-align: center;
color: #333;
text-transform: uppercase;
font-family: 'Limelight', sans-serif;
}
.description h3 {
margin-top: 30px;
padding: 10px;
font-size: 26px;
background: #d70000;
color: white;
text-align: center;
text-shadow: 1px 1px 1px black;
border-radius: 5px;
font-family: 'Lobster', sans-serif;
}
.description p {
padding-top: 35px;
font-size: 22px;
text-align: center;
color: #333;
font-family: 'Lobster', sans-serif;
}
#main-menu ul li {
float: left;
width: 140px;
height: 500px;
overflow: hidden; /* Ce qui depasse ne se voit pas */
position: relative;
}
/* BUTTONS */
#buttons-menu {
float: left;
width: 100%;
padding: 170px 0 50px 0;
}
#buttons-menu ul {
float: left;
position: relative;
left: 50%;
text-align: center;
}
.button {
float: left;
width: 150px;
margin-left: 30px;
padding: 10px 0;
position: relative;
right: 50%;
text-shadow: 1px 1px 1px black;
font-family: 'Lobster', sans-serif;
text-align: center;
color: white;
border-radius: 5px;
box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.75);
background: #333;
border: 2px solid #b70000;
font-size: 22px;
cursor: pointer;
opacity: 0.9;
}
.button:hover {
background: #b70000;
border: 2px solid #333;
font-size: 24px;
}
CODE JQUERY
$(function(){
var $mainMenuItems = $("#main-menu ul").children("li"), //prendre les enfants du menu ul. ici c'est li
totalMainMenuItems = $mainMenuItems.length, //retourner le nombre d'éléments dans le main menu items
openedIndex = 0, //savoir index de l'élément ouvert . et ouvrir sur l'index 0
//déclarer la fonction init
init = function(){
bindEvents();
if(validIndex(openedIndex))
animateItem($mainMenuItems.eq(openedIndex), true, 700); //ouvrir le numéro dans "openedIndex" lors du chargement de la page en 700ms
},
bindEvents = function(){
$mainMenuItems.children(".images").click(function(){ //filtrer les enfants directs de mainMenu possédant la classe "image"
var newIndex = $(this).parent().index(); //Élément sur lequel je viens de cliquer. Index = Me retourner l'index de cet élément parmi ses parents.
//this = l'élément sur lequel je suis quand j'y exécute la fonction sur lequel sur laquelle j'ai mis un clic
checkAndAnimateItem(newIndex);
});
$(".button").hover(function(){ //quand je rentre sur le bouton j'ajoute la classe .hover
$(this).addClass("hover");
},
function(){ //quand je sors du bouton j'enlève la classe .hover
$(this).removeClass("hover");
});
$(".button").click(function(){ //quand je clique sur le bouton
var newIndex = $(this).index();
checkAndAnimateItem(newIndex);
});
},
validIndex = function(indexToCheck){
return (indexToCheck >= 0) && (indexToCheck < totalMainMenuItems); //est-ce que l'index est valide
},
animateItem = function($item, toOpen, speed){ //item que je veux animer + ouverture ou fermeture + vitesse
var $colorImage = $item.find(".color"), //trouver parmi les descendants, l'item qui a la classe "color"
itemParam = toOpen ? {width: "420px"}: {width: "140px"}, //si ouverture est vraie alors attribuer la valeur 1 (420) SINON false et valeur = 140px
colorImageParam = toOpen ? {left: "0px"}: {left: "140px"};
$colorImage.animate(colorImageParam,speed); //animation sur color image et la passer en fonction des paramètres de "colorImageParam"
$item.animate(itemParam,speed); //animation pour faire apparaître la description
},
checkAndAnimateItem = function(indexToCheckAndAnimate){
if(openedIndex === indexToCheckAndAnimate){ //Si l'Index sur lequel je viens de cliquer est égal à l'index qui était déjà ouvert
animateItem($mainMenuItems.eq(indexToCheckAndAnimate), false, 150); //fermer l'item (false) d'une vitesse de 150ms
openedIndex = -1;
}
else {
if(validIndex(indexToCheckAndAnimate)) { //vérifier si l'index sur lequel je clique est valide
if(validIndex(openedIndex)) {
animateItem($mainMenuItems.eq(openedIndex), false, 150); //fermer l'index précédent
}
openedIndex = indexToCheckAndAnimate; //ouvrir le nouvel index
animateItem($mainMenuItems.eq(openedIndex), true, 150); //ouvrir l'item (true) d'une vitesse de 150ms
}
}
};
init(); //exécuter la fonction init
});