В случае, если у градиента всегда будет направление снизу или сверху , вы можете рассмотреть трюк, используя перекос и псевдоэлемент, как показано ниже:
.card {
width: 200px;
height: 200px;
padding-top: 20px;
background-image: linear-gradient(to bottom, blue,red,yellow,green);
background-clip:content-box;
background-size:100% 200px; /*same as height*/
position: relative;
z-index:0;
overflow:hidden;
box-sizing: border-box;
display:inline-block;
}
.card:before {
content: "";
position: absolute;
z-index:-1;
top: 0;
padding: inherit;
left: 0;
right: 0;
background-image: inherit;
background-size:inherit;
transform: skewX(-45deg);
transform-origin: left bottom;
}
body {
background:pink;
}
<div class="card"></div>
<div class="card" style="background-image:linear-gradient(to top,white,purple,green ,red 90%, blue"></div>
Для любого градиента или любого изображения вы можете добавить дополнительный элемент для исправления перекоса:
.card {
width: 200px;
height: 200px;
padding-top: 20px;
background-image: linear-gradient(to bottom, blue,red,yellow,green);
background-clip:content-box;
background-size:auto 200px; /*same as height*/
position: relative;
z-index:0;
overflow:hidden;
box-sizing: border-box;
display:inline-block;
}
.image {
background-size:cover; /*less restriction when it comes to image*/
}
.card span,
.card span::before {
position: absolute;
top: 0;
left: 0;
right: 0;
background-image: inherit;
background-size:inherit;
transform-origin: left bottom;
}
.card span {
z-index:-1;
padding: inherit;
transform: skewX(-45deg);
overflow:hidden;
}
.card span:before {
content:"";
bottom:0;
transform: skewX(45deg);
}
body {
background:pink;
}
<div class="card">
<span></span>
</div>
<div class="card" style="background-image:linear-gradient(60deg,white,purple,green ,red 90%, blue)">
<span></span>
</div>
<div class="card image" style="background-image:url(https://picsum.photos/400/400?image=0)">
<span></span>
</div>
<div class="card image" style="background-image:url(https://picsum.photos/600/600?image=15)">
<span></span>
</div>