Cette réponse est pour un Conception matérielle mise en page d'une carte horizontale avec une hauteur dynamique et une image.
Pour éviter toute distorsion de l'image due à la hauteur dynamique de la carte, vous pourriez utiliser une image de fond de type placeholder avec un flou qui s'ajuste aux changements de hauteur.
Explication
- La carte est contenue dans un
<div>
avec la classe emballage qui est un flexbox.
- La carte est composée de deux éléments, une image qui est aussi un lien et un contenu. lien, et un contenu.
- Le lien
<a>
, la classe lien est positionné relatif .
- Le lien se compose de deux sous-éléments, d'un élément de remplacement.
<div>
classe flou et un <img>
classe image qui est l'image claire.
- Les deux sont positionnés absolu et ont
width: 100%
mais la classe image a un ordre d'empilement plus élevé, c'est-à-dire, z-index: 2
ce qui le place au-dessus de l'espace réservé.
- L'image d'arrière-plan de l'espace réservé flou est définie par le biais de l'option style en ligne dans le HTML.
Code
.wrapper {
display: flex;
width: 100%;
border: 1px solid rgba(0, 0, 0, 0.16);
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.16), 0 1px 1px rgba(0, 0, 0, 0.23);
background-color: #fff;
margin: 1rem auto;
height: auto;
}
.wrapper:hover {
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
}
.link {
display: block;
width: 200px;
height: auto;
overflow: hidden;
position: relative;
border-right: 2px solid #ddd;
}
.blur {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
width: 100%;
height: 100%;
filter: blur(5px);
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
}
.pic {
width: calc(100% - 20px);
max-width: 100%;
height: auto;
margin: auto;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 2;
}
.pic:hover {
transition: all 0.2s ease-out;
transform: scale(1.1);
text-decoration: none;
border: none;
}
.content {
display: flex;
flex-direction: column;
width: 100%;
max-width: 100%;
padding: 20px;
overflow-x: hidden;
}
.text {
margin: 0;
}
<div class="wrapper">
<a href="#" class="link">
<div class="blur" style="background: url('http://www.planwallpaper.com/static/assets/img/header.jpg') 50% 50% / cover;"></div>
<img src="http://www.planwallpaper.com/static/assets/img/header.jpg" alt="Title" class="pic" />
</a>
<div class="content">
<p class="text">Agendum dicendo memores du gi ad. Perciperem occasionem ei ac im ac designabam. Ista rom sibi vul apud tam. Notaverim to extendere expendere concilium ab. Aliae cogor tales fas modus parum sap nullo. Voluntate ingressus infirmari ex mentemque ac manifeste
eo. Ac gnum ei utor sive se. Nec curant contra seriem amisit res gaudet adsunt. </p>
</div>
</div>
4 votes
Ne flouter qu'une partie d'une image : codepen.io/vsync/pen/gjMEWm