How to add border in the clip-path: polygon() using CSS ?
Last Updated :
26 Dec, 2023
Adding a border around shapes can substantially improve the visual attractiveness of your website when it comes to web design. Using the clip-path: polygon() Property is one great and inventive approach to accomplish this. This not only allows you to make unusual shapes but also allows you to add a border that fits your design. In this article, we will learn how to create a custom shape and apply a beautiful border using CSS style.
We will explore both approaches for including the Border to the clip-path Property.
clip-path: polygon() Property
Clip-path Property is used to shape items on your website. By default, an element is a rectangle, but using this property, you can choose which part should be visible. The clip-path polygon() function allows you to construct customized shapes by utilizing coordinates.
In this approach, a basic square-shaped div element is created by providing 200px width and height. Now, we will use the clip-path CSS property to change the shape of this div element from square to hexagon with the help of polygon() function and coordinates. Update the custom-shape class CSS by adding the clip-path property. Now, the div element will look like a hexagon-shaped element instead of a square.
Example: This example illustrates the creation of a Polygon using the clip-path Property by setting the value as a polygon() function, which helps to define a polygon with the help of an SVG filling rule and a set of vertices.
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width,
initial-scale=1.0">
<title>Clip-Path CSS property</title>
<style>
h1 {
color: green;
}
.custom-shape {
width: 200px;
height: 200px;
background-color: #3498db;
clip-path: polygon(50% 0%, 100% 25%, 100% 75%,
50% 100%, 0% 75%, 0% 25%);
}
</style>
</head>
<body>
<h1>GeeksforGeeks</h1>
<div class="custom-shape"></div>
</body>
</html>
Output:
hexagon-shaped div element
Example: In the below code example, we have used the span element as the original element and div as a border.
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width,
initial-scale=1.0">
<link rel="stylesheet"
href="styles.css">
<title>Clip-Path polygon Border</title>
<style>
h1 {
color: green;
}
.custom-shape {
position: relative;
width: 200px;
background-color: black;
height: 200px;
clip-path: polygon(50% 0%, 100% 25%, 100% 75%,
50% 100%, 0% 75%, 0% 25%);
display: flex;
align-items: center;
justify-content: center;
}
.border-span {
width:190px;
height:190px;
clip-path: polygon(50% 0%, 100% 25%, 100% 75%,
50% 100%, 0% 75%, 0% 25%);
background-color: #3498db;
}
</style>
</head>
<body>
<h1>GeeksforGeeks</h1>
<div class="custom-shape">
<span class="border-span"></span>
</div>
</body>
</html>
Output:

Using pseudo-element ::after or ::before
To add a border to an element with a clip-path: polygon(); style using pseudo-elements ::after or ::before, you can create an additional pseudo-element with the same clip-path property and then apply the border to it.
Example: In this example, we will see the implementation of the above approach with an example.
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width,
initial-scale=1.0">
<title>Clip-Path polygon Border</title>
<style>
h1 {
color: green;
}
.custom-shape {
width: 200px;
height: 200px;
position: relative;
background-color: black;
clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%,
50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);
display: flex;
align-items: center;
justify-content: center;
}
.custom-shape::after {
content: "";
width: 190px;
height: 190px;
position: absolute;
background-color: #3498db;
clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%,
50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);
}
</style>
</head>
<body>
<h1>GeeksforGeeks</h1>
<div class="custom-shape"></div>
</body>
</html>
Output:
start shape element
Similar Reads
How to create and style border using CSS ? The border property is used to create a border around an element and defines how it should look. There are three properties of the border. border-colorborder-widthborder-style border-style property: This defines how the border should look like. It can be solid, dashed, offset, etc. The following val
4 min read
How to Add an Iframe Border using CSS ? This article will show you how to add a border to the iframe element using CSS. An inline frame is used to embed another document within the current HTML document. To add the iframe border, we will use the CSS border property. Syntax:<!-- CSS border to the iframe --><style> iframe { bord
1 min read
How to create a 3D outset and inset border using CSS ? In this article, we will create a 3D outset and inset border using CSS. The Inset border property makes the content appear embedded (inside the surface) and on the other hand, the outset property makes the content appear embossed (outside the surface). You can achieve this task by using the border-s
2 min read
How to define the color of the border using CSS ? We can give the color of the border using border or border-color properties. We need to give border-style property. Approach 1: We will give the color of the border using the border property of CSS.We will give our CSS inside the tags which are also known as an inline style.We need to give the borde
2 min read
How to create a 3D ridge border using CSS? In CSS, the border-style property is used to set the line style of the border of an element. The border-style property may have one, two, three, or four values. When the specified value is one, the same style is applied to all four sides. When the specified value is two, the first style is applied t
2 min read