Skip to content Skip to sidebar Skip to footer

Skew One Side Of Image While Keeping Border-radius

TLDR; is this shape possible using vanilla CSS? tried skewing but it applies to the entire image and therefore rules out the 'skew one side' part of the problem.

Solution 1:

You need something like this.

div {
  width: 300px;
  height: 200px;
  margin: 10px 90px;
  border-radius: 30px;
  overflow: hidden;
  -webkit-transform: perspective(300px) rotateX(-19deg);
  -o-transform: perspective(300px) rotateX(-30deg);
  -moz-transform: perspective(300px) rotateX(-30deg);
  -webkit-transform-origin: 100% 50%;
  -moz-transform-origin: 100% 50%;
  -o-transform-origin: 100% 50%;
  transform-origin: 100% 50%;
}

img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <div>
    <img src="https://static.scientificamerican.com/sciam/cache/file/4E0744CD-793A-4EF8-B550B54F7F2C4406_source.jpg">
  </div>
</body>

</html>

Ping me if it works for you.


Solution 2:

With some extra wrapper it's doable:

.box {
  display:inline-block;
  border-radius:25px;
  overflow:hidden;
}
.box div {
  border-radius:inherit;
  transform-origin:top;
  transform:skew(20deg);
  overflow:hidden;
}
.box div img {
  display:block;
  transform-origin:inherit;
  transform:skew(-20deg);
}
<div class="box">
  <div>
    <img src="https://picsum.photos/id/1069/300/200" >
  </div>
</div>

Post a Comment for "Skew One Side Of Image While Keeping Border-radius"