[RESOLU] Décalage image par rapport au background

Eléphant du PHP | 61 Messages

23 déc. 2020, 21:00

Hello tout le monde,

J'ai un bug d'affichage qui vient du CSS je pense mais je ne sais pas comment le résoudre.
1. Il y a un décalage entre l'image et le background.
2. Le background qui doit jouer un filtre transparent ne s'applique pas. Comment le faire passer au dessus de l'image ?

Une idée pour résoudre ca ? |*()
Merci !

Résultat visuel actuel: https://drive.google.com/file/d/1PFhVf2 ... sp=sharing

code html:

Code : Tout sélectionner

**** ENDROITS À DÉCOUVRIR <br><br /> <?php try { // On se connecte à MySQL $bdd = new PDO('mysql:host=localhost;dbname=visitearth;charset=utf8', 'root', 'root'); } catch(Exception $e) { // En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } $reponse = $bdd->query('SELECT l.comte_nom, l.lieu_nom, l.pays_nom, p.flag_nom, l.lieu_url FROM lieux l LEFT JOIN pays p ON l.pays_nom = p.pays_nom'); ?> <?php while ($donnees = $reponse->fetch()) { ?> <div class="vignette"> <div class="lieu"><?php echo $donnees['lieu_nom']; ?></p></div> <div class="pays"><?php echo $donnees['pays_nom']; ?>, <?php echo $donnees['comte_nom']; ?></div> <img src="<?php echo $donnees['flag_nom']; ?>" alt="drapeau" class="flag"> <img src="<?php echo $donnees['lieu_url']; ?>" alt="Lieu"/> </div> <?php } ?> </body> </html>
Code CSS:

Code : Tout sélectionner

/* Vignette */ .vignette { background: linear-gradient(180deg, rgba(255,255,255,0) 0%, #000000 100%); font-family: montserrat; display: inline-block; width: 270px; height: 302px; border-radius: 2px; } .flag { max-width: 20px; max-height: 15px; display: block; margin-left: auto; margin-right: auto; position: relative; top: 100px; } .lieu { font-size: 20px; color: white; text-transform: uppercase; text-align: center; position: relative; top: 200px; } .pays { font-size: 15px; color: white; position: relative; top: 200px; text-align: center; } .vignette img { object-fit: cover; width: 270px; height: 302px; object-position: 100% 0; }

Eléphant du PHP | 61 Messages

26 déc. 2020, 10:45

Hello, personne pour répondre à ce topic ? :roll:

Mammouth du PHP | 1967 Messages

27 déc. 2020, 19:04

j'ai pas compris ton problème, dans quelle sesn est le décallage ? quelle est le rendu final recherché ?
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 61 Messages

28 déc. 2020, 11:14

Hello @Spols,

Il faudrait que les vignettes soient alignées avec le background gris en haut.
Le background gris a été créé en CSS avec .vignette.
Et les images sont uploadés automatiquement depuis SQL dans la bouche php dans un fichier image.

L'image originale devrait ressembler à cela: https://drive.google.com/file/d/1Gdvujv ... sp=sharing

Deuxième problème : le background est un sorte de transparent qui devrait venir DEVANT l'image mais ce n'est pas pris en compte. je ne sais pas comment mettre le background DEVANT l'image en affichant les infos.

Merci de ton aide !

Mammouth du PHP | 1967 Messages

29 déc. 2020, 17:20

je pense que le plus simple est de mettre les élément dans l'ordre que tu veux afficher, image, un overlay avec le gradient , les textes et drapeau
il est possible de jouer sur l'ordre d'affichage en css avec z-index, mais si tu as accés au code html, c'est mieux.

ce qui veux dire aussi que ton gradient est mieux avec une div dédié que sur le container.

concernant l'attribut position, le mieux est de mettre le contenant en relative. on peut alors s'aligner sur lui pour les alignement des éléments enfants. Eléments enfants qu'on positionne alors en absolute

https://jsfiddle.net/sw23bqgo/1/#&togetherjs=ipHI1H2tzG


Un autre solution serait de mettre l'image de fond en background-image mais l'alignement est plus compliqué
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 61 Messages

30 déc. 2020, 10:59

Salut @Spols !

Ah mais c'est cool c'est presque bon ! :D
J'ai mis les éléments dans l'ordre mais il y a un grand décalage et il ne prend pas en compte le background.
Comme si tout avait bougé de la hauteur d'une vignette vers le bas :
- https://drive.google.com/file/d/1ftsgmX ... sp=sharing
- https://drive.google.com/file/d/1mhsGmP ... sp=sharing

Tu sais comment régler ca ?
Grand merci !!! :)

Code html

Code : Tout sélectionner

<?php while ($donnees = $reponse->fetch()) { ?> <div class="vignette"> <div><img src="<?php echo $donnees['lieu_url']; ?>" alt="Lieu" class="imglieu"/></div> <div class="overlay"></div> <div class="lieu"><?php echo $donnees['lieu_nom']; ?></div> <div class="pays"><?php echo $donnees['pays_nom']; ?>, <?php echo $donnees['comte_nom']; ?></div> <div><img src="<?php echo $donnees['flag_nom']; ?>" alt="drapeau" class="flag"/></div> </div> <?php } ?>
Code CSS

Code : Tout sélectionner

/* Vignette */ .vignette { font-family: Montserrat; max-width: 270px; max-height: 302px; border-radius: 6px; display: inline-flexbox; float: left; margin: 2px; position: static; } .overlay { background: linear-gradient(180deg, rgba(255,255,255,0) 0%, #000000 100%); width: 270px; height: 302px; position: absolute; top: 0; } .imglieu { object-fit: cover; width: 270px; height: 302px; object-position: 100% 0; border-radius: 6px; } .flag { max-width: 20px; max-height: 15px; display: block; margin-left: auto; margin-right: auto; position: relative; top: 100px; } .lieu { font-size: 20px; color: white; text-transform: uppercase; text-align: center; position: relative; top: 200px; } .pays { font-size: 15px; color: white; position: relative; top: 200px; text-align: center; }

Mammouth du PHP | 1967 Messages

30 déc. 2020, 17:17

à partir d'une image difficile de t'aider sans y passer beaucoup de temps.
fais un fiddle ou partage la page web online et on trouvera ce qui cloche

a vue d'oeil mais sans garantie, je dirais que ton image et la div qui la contient est encore dans le flux et décale tout, applique un position: absolute sur l'image et ne met pas de div autour
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 61 Messages

31 déc. 2020, 10:57

Oh yeahhh quelqu'un a résolu mon topic !!!!
C'était un problème d'affichage "relative" et "absolute" des éléments.
Un GRAND MERCI pour votre aide !
@Ryle, Or et Spols ! BIG thanks !!!!