Problème bouton CSS

Fermé
Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023 - 19 avril 2022 à 20:40
Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023 - 20 avril 2022 à 16:55
Bonjour,

Je poste ce message car j'ai un problème concernant un site web que je dois rendre pour un cours : j'ai créé un bouton jour/nuit qui remplit ses fonctions, mais qui ne modifie pas le haut du site comme vous pouvez le voir, le bouton monte également un peu vers le haut lorsque je l'active, alors que je voudrais simplement que toute la page devienne foncée.
Je pense que cela vient sûrement du padding ou du margin, mais je n'en ai aucune certitude et je ne trouve pas le moyen de régler ce problème.





Voici mon CSS :
  html, body{
margin: 0;
padding: 0;
height: 100%;
}
.mode_nuit{
background-color: rgb(68, 20, 20);
filter: brightness(75%);
}


Le code HTML du bouton :
  <label class="switch">
<input type="checkbox" onclick="modeNuit()">
<span class="slider round"></span>
</label>


Ainsi que ma fonction JS :
function modeNuit(){
var element = document.body;
element.classList.toggle("mode_nuit");
}


Merci ! :)

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
20 avril 2022 à 09:14
Bonjour,

Tes extraits de code ne permettent pas de reproduire ton problème. Il faudrait voir le code html et css complet.

Sinon, utilise l'outil Inspecteur d'élément dans les outils de développement de ton navigateur pour mieux analyser le css appliqués sur les éléments de ton html.
0
Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023
Modifié le 20 avril 2022 à 14:13
J'ai justement essayé avec l'outil dont tu me parles, mais je n'ai rien trouvé qui règle le problème

Voici mon code complet :

HTML :
<!doctype html>
<html lang="fr">

<head>
<meta charset="utf-8">
<title>Les phases de l'Univers Cinématographique de Marvel</title>
<link rel="stylesheet" href="css/styles2.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="js/comportements.js"></script>
</head>


<body>
<header>
<h1> PHASE 1 </h1>
</header>

<ul class="films">

<li class="film"><a> <img src="images/captainamericafirstavenger-1.png" class="titre"> <span><img src="https://media.senscritique.com/media/000004857823/source_big/Captain_America_The_First_Avenger_Bande_Originale.jpg"></span></a><p>1941. La Seconde Guerre mondiale fait rage. Après avoir tenté vainement de s'engager dans l'armée pour se battre aux côtés des Alliés, Steve Rogers, frêle et timide, se porte volontaire pour participer à un programme expérimental qui va le transformer en un super soldat connu sous le nom de Captain America. Sous le commandement du colonel Chester Phillips, il s'apprête à affronter l'organisation scientifique secrète des nazis, aux côtés de Bucky Barnes et Peggy Carter.</p></li>
<li class="film"><a> <img src="images/captain-marvel-transparent-2018-logo-1.png" class="titre"> <span><img src="https://fr.web.img6.acsta.net/r_1280_720/newsv7/19/01/17/09/43/32800750.jpg"></span></a><p>Captain Marvel se bat dans le camp des Kree aux côtés de son maître, Yon-Rogg. Des images d'un passé qu'elle a oublié refont surface lorsqu'elle se fait enlever par les Skrulls, qui tentent d'extirper certaines informations de son cerveau. Après une bagarre, elle atterrit sur Terre. Elle est accueillie par Nick Fury, qui la prend sous son aile. Ensemble, ils déterreront des secrets bien enfouis et comprendront que tout n'est pas toujours aussi simple qu'on se l'imagine.</p></li>
<li class="film"><a> <img src="images/ironman-1.png" class="titre"> <span><img src="https://fr.web.img3.acsta.net/medias/nmedia/18/62/89/45/18876909.jpg"></span></a><p>Alors qu'il fait l'essai d'une arme de son invention en Afghanistan, le milliardaire Tony Stark est capturé par des insurgés qui le forcent à travailler pour eux. Mais à leur insu, le scientifique crée pour lui-même une armure superpuissante au moyen de laquelle il s'évade et rentre aux États-Unis. Transformé par son aventure, il décide de mettre son génie et sa fortune au service du Bien.</p></li>
<li class="film"><a> <img src="images/ironman2-logo-1.png" class="titre"> <span><img src="https://www.chroniquedisney.fr/imgFiliale/marvel/2010-ironman2-1-big.jpg"></span></a></li>
<li class="film"><a> <img src="images/hulkincroyable-1.png" class="titre"> <span><img src="https://fr.web.img2.acsta.net/medias/nmedia/18/65/69/21/18949753.jpg"></span></a></li>
<li class="film"><a> <img src="images/thorlogo.png" class="titre"> <span><img src="https://www.telerama.fr/sites/tr_master/files/c882bf92-a0fd-4fd7-825b-2c241b822f62_2.jpg"></span></a></li>
<li class="film"><a> <img src="images/logo-avengers-2.png" class="titre"> <span><img src="https://fr.web.img3.acsta.net/medias/nmedia/18/85/31/58/20042068.jpg"></span></a></li>

</ul>

<div class="hamburger-menu">
<input id="menu__toggle" type="checkbox" />
<label class="menu__btn" for="menu__toggle" >
<span></span>
</label>

<ul class="menu__box">
<li><a class="menu__item" href="phase1.html">Phase 1</a></li>
<li><a class="menu__item" href="phase2.html">Phase 2</a></li>
<li><a class="menu__item" href="phase3.html">Phase 3</a></li>
<li><a class="menu__item" href="phase4.html">Phase 4</a></li>
</ul>
</div>

<label class="switch">
<input type="checkbox" onclick="modeNuit()">
<span class="slider round"></span>
</label>

<button class="btn" onclick="window.location.href='index.html'"><i class="fa fa-home"></i></button>

</body>

</html>


CSS :
html{
font-family:'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
background: rgb(218, 185, 185);
}

html, body{
margin: 0;
padding: 0;
height: 100%;
}

h1{
text-align: center;
text-decoration: underline;
font-size: 50px;
}

p{
font-size: 15px;
font-weight: normal;
}

.films{
position: relative;
justify-content: right;
font-size: 25px;
font-weight:bold;
display: flex;
flex-wrap: wrap;
}

.film{
list-style:decimal;
flex: 0 0 45%;
padding-right: 50px;
padding-top: 100px;
}

img{
height: 500px;
}

.titre{
height: 50px;
}

.film a{
position:relative;
}

.film a span{
position:absolute;
display:none;
z-index: 1;
}
.film a:hover span{
display:block;
}

.btn {
background-color: #802a2a;
border: none;
color: white;
padding: 12px 16px;
font-size: 16px;
cursor: pointer;
position: absolute;
top: 45px;
right: 180px;
}

.btn:hover {
background-color: rgb(224, 13, 13);
}

.mode_nuit{
background-color: rgb(68, 20, 20);
filter: brightness(75%);
}

.mode_nuit, .h1{
color: #aeafae
}

/* ------------------------------------------------------------- Bouton Jour/Nuit -------------------------------------------------------------*/

.switch {
position: absolute;
display: inline-block;
width: 60px;
height: 34px;
top: 50px;
right: 100px;
}

.switch input {
opacity: 0;
width: 0;
height: 0;
}

.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #802a2a;
-webkit-transition: 0.4s;
transition: 0.4s;
}

.slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: 0.4s;
transition: 0.4s;
}

input:checked + .slider {
background-color: #000000;
}

input:checked + .slider:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
transform: translateX(26px);
}

.slider.round {
border-radius: 30px;
}

.slider.round:before {
border-radius: 100%;
}

.slider:hover {
background-color: rgb(224, 13, 13);
}




/* ------------------------------------------------------------- Menu -------------------------------------------------------------*/

#menu__toggle {
opacity: 0;
}
#menu__toggle:checked + .menu__btn > span {
transform: rotate(45deg);
}
#menu__toggle:checked + .menu__btn > span::before {
top: 0;
transform: rotate(0deg);
}
#menu__toggle:checked + .menu__btn > span::after {
top: 0;
transform: rotate(90deg);
}
#menu__toggle:checked ~ .menu__box {
left: 0 !important;
}
.menu__btn {
position: fixed;
top: 40px;
left: 25px;
width: 50px;
height: 50px;
cursor: pointer;
z-index: 1;;
}
.menu__btn > span,
.menu__btn > span::before,
.menu__btn > span::after {
display: block;
position: absolute;
width: 100%;
height: 2px;
background-color: #000000;
transition-duration: 0.15s;
}
.menu__btn > span::before {
content: '';
top: -8px;
}
.menu__btn > span::after {
content: '';
top: 8px;
}
.menu__box {
display: block;
position: fixed;
top: 0;
left: -100%;
width: 300px;
height: 100%;
margin: 0;
padding: 80px 0;
list-style: none;
background-color: #AAAAAA;
box-shadow: 2px 2px 6px rgb(0, 0, 0);
transition-duration: .25s;
}
.menu__item {
display: block;
padding: 101px;
text-align: center;
color: rgb(0, 0, 0);
font-family: 'Roboto', sans-serif;
font-size: 20px;
font-weight: 600;
text-decoration: none;
transition-duration: .25s;
}
.menu__item:hover {
background-color: #802a2aa6;
}
}
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525 > Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023
20 avril 2022 à 15:00
Le problème vient du margin-top appliqué par défaut sur la balise h1 et la fusion des marges css avec la balise body.

Une solution simple est de remplacer le margin-top par un padding-top pour le titre de la page :
<header>
  <h1 class="page-title">PHASE 1</h1>
</header>

.page-title {
  margin-top: 0;
  padding-top: 0.67em; 
}
1
Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023 > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
20 avril 2022 à 16:05
Merci beaucoup !
est-ce que par hasard tu saurais aussi comment régler le même problème qui apparaît quand on descend la page avec un coup de molette ?
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525 > Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023
Modifié le 20 avril 2022 à 16:36
Pour ce problème, ca doit surement venir du height: 100%; appliqué sur les balises html et body dans ton css. Avec cette instruction, les balises vont avoir une hauteur égale à la taille de l'écran et pas égale à l'espace occupé par le contenu.
Tu devrais pouvoir corriger ca supprimant le height: 100%; appliqué sur les balises html et body, ou en le remplaçant par un min-height: 100%; pour occuper tout l'espace dans le cas où le contenu serait plus petit que la hauteur de l'écran.

J'ai aussi remarqué que la page scroll tout en bas dès qu'on clique sur le burger-menu, ceci vient surement du fait que le code html de ce menu est placé sous la liste des films dans le document html. A mon avis, il serait mieux que le code html du menu soit placé avant la liste ul.
0
Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023 > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
20 avril 2022 à 16:48
Pour le scroll de la page ta solution fonctionne, merci!
Par contre j'ai essayé de changer et bricoler le height: 100%; mais ça ne règle pas mon problème :/
0