Home > Enterprise >  Is it possible to distort images in CSS? (wave effect)
Is it possible to distort images in CSS? (wave effect)

Time:11-13

Im developing a website and one of the requests is a division with an image, like below:

But this is what i got:

Is it possible to make it in CSS?

I already inserted the image and set the background colors, the one thing left on this is that wave effect on the image.

The CSS code, ive only set its position: `

/* Format coffepic */
img#coffee{
    position: absolute;
    top: 1200px;
}

`

CodePudding user response:

Yes, you can do it with clip-path property, I attached a working snippet as example. See this for further information.

img {
   clip-path: polygon(100% 0%, 0% 0% , 0% 65%, 1% 64.95%, 2% 64.8%, 3% 64.6%, 4% 64.3%, 5% 63.9%, 6% 63.45%, 7% 62.9%, 8% 62.25%, 9% 61.55%, 10% 60.8%, 11% 59.95%, 12% 59.05%, 13% 58.1%, 14% 57.1%, 15% 56.05%, 16% 55%, 17% 53.9%, 18% 52.8%, 19% 51.65%, 20% 50.5%, 21% 49.35%, 22% 48.2%, 23% 47.05%, 24% 45.9%, 25% 44.8%, 26% 43.75%, 27% 42.75%, 28% 41.75%, 29% 40.8%, 30% 39.9%, 31% 39.1%, 32% 38.35%, 33% 37.65%, 34% 37.05%, 35% 36.5%, 36% 36.05%, 37% 35.65%, 38% 35.35%, 39% 35.15%, 40% 35.05%, 41% 35%, 42% 35.05%, 43% 35.2%, 44% 35.45%, 45% 35.75%, 46% 36.15%, 47% 36.65%, 48% 37.2%, 49% 37.85%, 50% 38.55%, 51% 39.35%, 52% 40.2%, 53% 41.1%, 54% 42.05%, 55% 43.05%, 56% 44.1%, 57% 45.15%, 58% 46.3%, 59% 47.4%, 60% 48.55%, 61% 49.7%, 62% 50.85%, 63% 52%, 64% 53.15%, 65% 54.25%, 66% 55.35%, 67% 56.4%, 68% 57.45%, 69% 58.4%, 70% 59.35%, 71% 60.2%, 72% 61.05%, 73% 61.8%, 74% 62.45%, 75% 63.05%, 76% 63.6%, 77% 64.05%, 78% 64.4%, 79% 64.7%, 80% 64.85%, 81% 65%, 82% 65%, 83% 64.9%, 84% 64.75%, 85% 64.5%, 86% 64.2%, 87% 63.75%, 88% 63.25%, 89% 62.7%, 90% 62.05%, 91% 61.3%, 92% 60.5%, 93% 59.65%, 94% 58.75%, 95% 57.8%, 96% 56.8%, 97% 55.75%, 98% 54.65%, 99% 53.55%, 100% 52.4%);

}
<img src="https://previews.123rf.com/images/vandycandy/vandycandy1501/vandycandy150100067/35546889-coffee-grains.jpg" width="100%"/>

CodePudding user response:

I have an online generator for such shape: https://css-generators.com/wavy-shapes/.

All you need is to select the top/bottom configuration, adjust the size and you get the code. I simply updated (manually) the position of the top wave to get the alignment you want.

.box {
  height: 200px;
  background: url(https://previews.123rf.com/images/vandycandy/vandycandy1501/vandycandy150100067/35546889-coffee-grains.jpg) 50%/cover;
  --mask:
    radial-gradient(51.22px at 50% 72.00px,#000 99%,#0000 101%) 50% 0/160px 51% repeat-x,
    radial-gradient(51.22px at 50% -32px,#0000 99%,#000 101%) calc(50% - 80px) 40px/160px calc(51% - 40px) repeat-x,
    radial-gradient(51.22px at 50% calc(100% - 72.00px),#000 99%,#0000 101%) calc(50% - 80px) 100%/160px 51% repeat-x,
    radial-gradient(51.22px at 50% calc(100%   32.00px),#0000 99%,#000 101%) 50% calc(100% - 40px)/160px calc(51% - 40px) repeat-x;
  -webkit-mask: var(--mask);
          mask: var(--mask);
}
<div ></div>

  • Related