28114 sujets

CSS et mise en forme, CSS3

Bonjour,

J'ai le code suivant:

#navigation {
  display: flex;
  flex-direction: row;
  align-items: center;
  /*justify-content: space-between;*/
  width:auto;
  height: 100px;
}
#navigation img {
  height: 100%;
}
nav {
  font-family: 'Fira Sans Condensed',sans-serif;
  background: var(--white);
  padding: 0 5px;
  flex: 20;
}
nav a {
  color: var(--black);
  text-decoration: none;
}


    <div id="navigation">
      <img class="logo" src="logo-ti-goudoul-image.jpg" alt="logo gite ti Goudoul">
      <!-- menu sur  https://webdesign.tutsplus.com/how-to-build-a-responsive-navigation-bar-with-flexbox--cms-33535t  -->
      <div>
        <span class="font-reenie">ti Goudoul</span>
        <h1 class="h1-logo">gite à Moelan sur mer</h1>
      </div>
      <nav>
        <ul class="menu">
          <li class="item"><a href="#">Accueil</a></li>
          <li class="item"><a href="#">Gite<br><small>8 personnes</small></a></li>
          <li class="item"><a href="#">Services<br><small>& équipements</small></a></li>
          <li class="item"><a href="#">Tourisme<br><small>& activités</small></a></li>
          <li class="item"><a href="#">Blog</a></li>
          <li class="item"><a href="#">Contact</a></li>
          <li class="item button secondary"><a href="#">Réserver</a></li>
          <li class="item button secondary"><a href="#"><i class="fa-solid fa-magnifying-glass"></i> Rechercher</a></li>
          <li class="item button secondary"><a href="tel:+33633188199"><i class="fa-solid fa-phone"></i> 06 33 18 81 99</a></li>
          <li class="toggle"><a href="#"><i class="fas fa-bars"></i></a></li>
        </ul>
      </nav>   
    </div> 


Cel fonctionne bien en mettant une hauteur fixe en pixels sur le conteneur de l'image (height: 100px;). Comment faire pour les images qui sont dans le corps de la page et dont je ne peux pas donner une hauteur fixe au conteneur, c'est-à-dire qui doivent être responsives.

Merci beaucoup pour votre aide.
Cdt
Administrateur
Hello,

Il y a plusieurs choses que je ne comprends pas dans ton message :
- qu'est-ce qui "fonctionne bien" ?
- que souhaites-tu apporter à tes images pour qu'elles "soient responsive" ?
- pourquoi une valeur de "flex: 20" ? Je ne vois qu'un seul élément flexible donc la valeur "1" me semble suffisante plutôt qu'une valeur qui semble magique

Pour tenter de répondre quand-même à ta question :
- Une valeur en pourcentage (telle que "height: 100%;" que tu tentes d'appliquer à ton image) se réfère la valeur du parent
- Dans ton cas, si tu donnes une valeur explicite au parent (ex. "height: 100px") alors la hauteur en % de l'image s'applique; sinon elle n'a pas de valeur de référence et ne pourra pas s'appliquer.

EDIT:

ChrisLebure a écrit :

img {
width: 100%;
height: auto;
}


Bonne idée à appliquer sur toutes les images en général. Attention toutefois à préférer "max-width" plutôt que "width" qui aura pour fâcheuse conséquence d'étirer les images plus petites que leur parent.
Modifié par Raphael (22 Jan 2024 - 13:48)
Bonsoir,

je voulais dire que ce qui marche bien c'est d'avoir une image qui ne déborde pas en hauteur du menu de navigation.


Le résultat avec
height: 100%;
width: auto;

appliqués à l'image.
upload/1705958619-77584-height100pc.jpg
Cela me convient bien car le logo est bien adapté en hauteur.

Le résultat avec
width: 100%;
height: auto;

upload/1705958766-77584-width100pc.jpg

Ce résultat ne me convient pas car l'image est trop grande.

Dois-je garder la 1ere solution ou y-a-t-il une meilleure manière ?

Merci
Cdt
Modifié par gite-tigoudoul (22 Jan 2024 - 22:27)