.parent { display: grid; grid-template-columns: repeat(5, 1fr); grid-template-rows: repeat(3, 1fr); grid-column-gap: 2px; grid-row-gap: 2px; max-height: 75vh; } .div1 { grid-area: 1 / 1 / 4 / 4; } .div2 { grid-area: 1 / 4 / 3 / 6; } .div3 { grid-area: 3 / 4 / 4 / 5; } .div4 { grid-area: 3 / 5 / 4 / 6; } img{ width: 100%; height: 100%; object-fit: cover; } .parent > div { position: relative; overflow: hidden; } .overlay { position: absolute; inset: 0; display: flex; align-items: flex-end; padding: 20px; background: linear-gradient( to top, rgba(0,0,0,0.75), rgba(0,0,0,0) ); opacity: 0; transition: opacity 0.3s ease; } .overlay p { color: white; margin: 0; font-size: 18px; transform: translateY(20px); transition: transform 0.3s ease; } .parent > div:hover .overlay { opacity: 1; } .parent > div:hover .overlay p { transform: translateY(0); } .banniere { height: 400px; /* hauteur de la bannière */ background-size: cover; /* effet image coupée */ background-position: center; background-repeat: no-repeat; display: flex; align-items: center; justify-content: center; position: relative; } /* léger voile sombre sur toute l'image */ .banniere::before { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, 0.4); } /* texte */ .texte-banniere { position: relative; /* important pour passer au-dessus du voile */ color: white; font-size: 3rem; font-weight: bold; text-align: center; }