I am trying to code my own copy of an example website for practice.
How my current page looks
The effect I want to add (rounded corners)
I just want .nav-and-main
to end with a nice curve effect that blends back into the white of the page without having to re-apply the gradient (which makes it look poorly designed due to the sudden change in pattern).
* {
padding: 0;
margin: 0;
box-sizing: border-box;
list-style-type: none;
text-decoration: none;
font-family: Arial, Helvetica, sans-serif;
}
.nav-and-main {
background: rgb(34, 195, 93);
background: linear-gradient(50deg, rgba(34, 195, 93, 1) 0%, rgba(45, 75, 253, 1) 100%);
}
nav {
display: flex;
align-items: center;
gap: 60px;
height: 50px;
padding: 0 20px;
border-bottom: 1px solid rgb(255, 255, 255, 0.2);
}
.site-icon-name {
display: flex;
gap: 10px;
}
.site-icon {
height: 18px;
width: 18px;
border: 2px solid black;
border-radius: 5px;
box-shadow: 5px 5px black;
}
.site-directory {
display: flex;
gap: 20px;
}
.site-directory li a {
font-size: 12px;
color: white;
text-transform: uppercase;
font-weight: bold;
}
.site-directory li a:hover {
color: rgb(25, 41, 41);
}
.user-icon {
height: 22px;
width: 22px;
background-color: white;
border-radius: 50%;
margin-left: auto;
}
form {
position: relative;
}
.search-icon {
position: absolute;
top: 25%;
left: 10px;
}
.search-bar {
width: calc(100vw / 2);
height: 50px;
border-radius: 25px;
border: none;
padding-left: 35px;
}
.search-button {
position: absolute;
top: 15%;
left: 375px;
padding: 10px 20px;
background: rgb(34, 195, 93);
background: linear-gradient(50deg, rgba(34, 195, 93, 1) 0%, rgba(45, 75, 253, 1) 100%);
border: none;
border-radius: 25px;
color: white;
font-weight: bold;
}
.main {
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
margin-top: 50px;
}
.main-headers {
text-align: center;
}
.main-title {
color: white;
font-size: 36px;
margin-bottom: 10px;
}
.main-subtitle {
color: rgb(25, 41, 41);
font-size: 16px;
}
.main-cards {
display: flex;
gap: 15px;
}
.main-card-1 {
height: 275px;
width: 250px;
background-color: white;
border-radius: 10px;
padding: 15px;
}
.code-img {
height: 100px;
width: 100px;
}
.main-card-2 {
height: 275px;
width: 350px;
background-image: url(./img/graph.jpg);
border-radius: 10px;
padding: 15px;
}
.curve {
height: 50px;
border-bottom-left-radius: 70px;
border-bottom-right-radius: 70px;
}
<div class="nav-and-main">
<nav>
<div class="site-icon-name">
<div class="site-icon"></div>
<h1 class="site-name">Topic</h1>
</div>
<ul class="site-directory">
<li><a href="#">home</a></li>
<li><a href="#">browse topics</a></li>
<li><a href="#">how it works</a></li>
<li><a href="#">faqs</a></li>
<li><a href="#">contact</a></li>
<li><a href="#">pages</a></li>
</ul>
<img class="user-icon" src="./img/user-icon.png" alt="User Icon">
</nav>
<div class="main">
<div class="main-headers">
<h2 class="main-title">Discover. Learn. Enjoy</h2>
<h3 class="main-subtitle">platform for creatives around the world</h3>
</div>
<form>
<div class="search-icon">🔍</div>
<input class="search-bar" type="text" placeholder="Design, Code, Marketing, Finance ...">
<button class="search-button" type="submit">Search</button>
</form>
<div class="main-cards">
<div class="main-card-1">
<h4 class="card-title">Web Design</h4>
<p class="card-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi iusto animi molestias temporibus cupiditate, labore quo architecto.</p>
<img class="code-img" src="./img/code.jpg" alt="Coding Image">
</div>
<div class="main-card-2">
<h4 class="card-title">Finance</h4>
<p class="card-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione nihil quae alias quisquam consectetur, sequi asperiores dignissimos enim quidem accusantium laudantium obcaecati fugit culpa.</p>
</div>
</div>
</div>
<div class="curve"></div>
</div>
I have tried the following with the expectation of getting white corners:
.curve
at the bottom of .nav-and-main
with a height of 50px. I can make a border bottom right radius and border bottom left radius (which I can see if I change .curve background color to red) but it still includes the gradient in the corners rather than white corners. Setting background to white changes the entire .curve div not the corners..curve
div, making them white squares, putting them on both corners and changing the z-index..main
and changing it's border radius instead of using .curve
.curve
and changing the z-indexes.nav-and-main
to see if making the background color white will leave the corners of .curve
white when the .nav-and-main
gradient is applied on top..curve
in a container div and setting the container div background color to whiteTo achieve the desired effect, simply add the
border-radius: 0 0 70px 70px;
property to the .nav-and-main class.
* {
padding: 0;
margin: 0;
box-sizing: border-box;
list-style-type: none;
text-decoration: none;
font-family: Arial, Helvetica, sans-serif;
}
.nav-and-main {
border-radius: 0 0 70px 70px;
background: rgb(34,195,93);
background: linear-gradient(50deg, rgba(34,195,93,1) 0%, rgba(45,75,253,1) 100%);
}
nav {
display: flex;
align-items: center;
gap: 60px;
height: 50px;
padding: 0 20px;
border-bottom: 1px solid rgb(255, 255, 255, 0.2);
}
.site-icon-name {
display: flex;
gap: 10px;
}
.site-icon {
height: 18px;
width: 18px;
border: 2px solid black;
border-radius: 5px;
box-shadow: 5px 5px black;
}
.site-directory {
display: flex;
gap: 20px;
}
.site-directory li a {
font-size: 12px;
color: white;
text-transform: uppercase;
font-weight: bold;
}
.site-directory li a:hover {
color: rgb(25, 41, 41);
}
.user-icon {
height: 22px;
width: 22px;
background-color: white;
border-radius: 50%;
margin-left: auto;
}
form {
position: relative;
}
.search-icon {
position: absolute;
top: 25%;
left: 10px;
}
.search-bar {
width: calc(100vw / 2);
height: 50px;
border-radius: 25px;
border: none;
padding-left: 35px;
}
.search-button {
position: absolute;
top: 15%;
left: 375px;
padding: 10px 20px;
background: rgb(34,195,93);
background: linear-gradient(50deg, rgba(34,195,93,1) 0%, rgba(45,75,253,1) 100%);
border: none;
border-radius: 25px;
color: white;
font-weight: bold;
}
.main {
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
margin-top: 50px;
}
.main-headers {
text-align: center;
}
.main-title {
color: white;
font-size: 36px;
margin-bottom: 10px;
}
.main-subtitle {
color: rgb(25, 41, 41);
font-size: 16px;
}
.main-cards {
display: flex;
gap: 15px;
}
.main-card-1 {
height: 275px;
width: 250px;
background-color: white;
border-radius: 10px;
padding: 15px;
}
.code-img {
height: 100px;
width: 100px;
}
.main-card-2 {
height: 275px;
width: 350px;
background-image: url(./img/graph.jpg);
border-radius: 10px;
padding: 15px;
}
.curve {
height: 50px;
border-bottom-left-radius: 70px;
border-bottom-right-radius: 70px;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="./style.css">
<title>Test Site</title>
</head>
<body>
<div class="nav-and-main">
<nav>
<div class="site-icon-name">
<div class="site-icon"></div>
<h1 class="site-name">Topic</h1>
</div>
<ul class="site-directory">
<li><a href="#">home</a></li>
<li><a href="#">browse topics</a></li>
<li><a href="#">how it works</a></li>
<li><a href="#">faqs</a></li>
<li><a href="#">contact</a></li>
<li><a href="#">pages</a></li>
</ul>
<img class="user-icon" src="./img/user-icon.png" alt="User Icon">
</nav>
<div class="main">
<div class="main-headers">
<h2 class="main-title">Discover. Learn. Enjoy</h2>
<h3 class="main-subtitle">platform for creatives around the world</h3>
</div>
<form>
<div class="search-icon">🔍</div>
<input class="search-bar" type="text" placeholder="Design, Code, Marketing, Finance ...">
<button class="search-button" type="submit">Search</button>
</form>
<div class="main-cards">
<div class="main-card-1">
<h4 class="card-title">Web Design</h4>
<p class="card-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi iusto animi molestias temporibus cupiditate, labore quo architecto.</p>
<img class="code-img" src="./img/code.jpg" alt="Coding Image">
</div>
<div class="main-card-2">
<h4 class="card-title">Finance</h4>
<p class="card-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione nihil quae alias quisquam consectetur, sequi asperiores dignissimos enim quidem accusantium laudantium obcaecati fugit culpa.</p>
</div>
</div>
</div>
<div class="curve"></div>
</div>
</body>
</html>