Requires specific clip-path: polygon() pointwise. Any example in the code below.
.wrapper { width: 960px; height: 720px; display: flex; align-items: center; justify-content: center; margin: 0 auto; background-image: url(http://beerhold.it/960/722); background-repeat: no-repeat; backgorund-position: center center; position: relative; } .key { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 10em; height: 10em; border: 2em solid rgba(255, 255, 255, .3); border-radius: 10em; } .block1, .block2 { position: absolute; top: 0; width: 480px; height: 720px; } .block1 { left: 0; background-color: rgba(255, 0, 0, .2); } .block2 { right: 0; } .block3 { top: 0; width: 100%; height: calc(50% - 7em); background: rgba(0, 0, 0, 0.7); } .block4 { top: calc(50% - 7em); background: rgba(0, 0, 0, 0.7); width: 100%; height: 14em; clip-path: polygon(1% 0%, 100% 0%, 100% 100%, 0% 100%, 8% 94%, 15% 88%, 22% 78%, 29% 69%, 34% 60%, 34% 48%, 33% 36%, 30% 22%, 23% 14%, 12% 7%); } .block5 { bottom: 0; height: calc(50% - 7em); width: 100%; background: rgba(0, 0, 0, 0.7); } <div class="wrapper"> <div class="block1"></div> <div class="block2"> <div class='block3'></div> <div class='block4'></div> <div class='block5'></div> <div class='block6'></div> </div> <div class="key"></div> </div> As it is noticeable, at the moment it is just a curve, concave in a figure. The task is to draw a semicircle (or as close as possible to it), concave in the shape. In my understanding, this requires less , sass and more. And also sin , cos . I don’t understand what and how to start, I didn’t come across it. Thanks @AndreyFedorov for the piece of his code used here.
(!) I agree on any other options that give the same result.
