Home >Web Front-end >CSS Tutorial >How to Create a Transparent Curved Shape with Rounded Sides Using CSS Radial-gradient?

How to Create a Transparent Curved Shape with Rounded Sides Using CSS Radial-gradient?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-10 16:45:14500browse

How to Create a Transparent Curved Shape with Rounded Sides Using CSS Radial-gradient?

CSS Transparent Curved Shape with Two Rounded Sides

Creating a curved, transparent shape can be a challenge, especially when you want to have rounded sides. In this article, we will explore a solution using radial-gradient.

Initial Attempt

Initially, you attempted to create a curved shape using a combination of absolute positioning and a curved border radius. However, the background remained opaque, preventing the blue background color from showing through.

Solution Using Radial-gradient

A better solution is to use radial-gradient to create the illusion of a transparent, curved shape. Radial-gradient allows you to define a gradient that starts from a specific point and radiates outward.

The CSS:

.box {
  width: 200px;
  height: 100px;
  background: white;
}
.box .top {
  height: 100px;
  width: 150px;
  transform: translateY(-100%);
  background: #fff;
  position: relative;
}

.top:before,
.top:after {
  content: "";
  position: absolute;
  top: 0;
  width: 50px;
  left: 100%;
  bottom: 50%;
  background:
    radial-gradient(100% 50% at top left, #fff 98%, transparent 100%) right,
    radial-gradient(100% 50% at bottom right, transparent 98%, #fff 100%) left;
  background-size: 50% 100%;
  background-repeat: no-repeat;
}

.top:after {
  transform-origin: bottom;
  transform: scaleY(-1);
}

Explanation

The .box element serves as the container for the curved shape. Within it, the .top element is positioned absolutely and translated upwards (-100%) to create the shape.

The .top element has two pseudo-elements (::before and ::after) that create the curved effect using radial-gradient. These pseudo-elements are positioned at the top-left and bottom-right corners of the .top element, with a width of 50px.

The radial-gradients are defined to start from the top-left and bottom-right corners, respectively. The first gradient creates a white (opaque) section on the right, fading into transparent 2% above the bottom edge. The second gradient does the opposite, creating a transparent section on the left and a white section at the bottom.

By combining these gradients, the illusion of a transparent, curved shape is created.

The above is the detailed content of How to Create a Transparent Curved Shape with Rounded Sides Using CSS Radial-gradient?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn