toothful
toothful

Reputation: 892

How to achieve this visual using CSS

enter image description here

I need to create the above visual using only css and only one div having 300px height and width. I tried gradient but could not get anything same. Anyone can help please?

Upvotes: 0

Views: 54

Answers (2)

Miss.Vy
Miss.Vy

Reputation: 176

You can try having a few divs and then have it encapsulated inside one div. Check out my code on JSfiddle.

.main {
  width: 300px;
  height: 300px;
}
.first {
  width: 300px;
  height: 150px;
}
.blue {
  width:150px;
  height: 150px;
  position: relative;
  float: left;
  background-color: blue;
}
.yellow {
  width:150px;
  height: 150px;
  position: relative;
  float: right;
  background-color: yellow;
}
.green {
  width: 300px;
  height: 150px;
  background-color: green;
  border-radius: 0 0 500px 500px;
}

.red {
  position: relative;
  height: 150px;
  top: -400px;
  border-left: 150px solid transparent;
  border-right: 150px solid transparent;
  border-bottom: 150px solid red;
}



<div class="main">
  <div class="first">
    <div class="blue">
    </div>
    <div class="yellow">
    </div>
  </div>
  <div class="green">
  </div>
  <div class="red">
  </div>
</div>

Upvotes: 0

G-Cyrillus
G-Cyrillus

Reputation: 105893

gradient is a fine idea, you could even add content, no matter the size for the gradient, as long as you size it to be a square:

div {
  background-color: red;
  border-radius: 0 0 50% 50%;
  background-image: 
       linear-gradient(-45deg, transparent 75%, blue 75%), 
       linear-gradient(45deg, transparent 75%, yellow 75%), 
       linear-gradient(to top, green 50%, transparent 50%);
  height: 300px;
  width: 300px;
  transition:0.5s;
}
div:hover {
  height: 150px;
  width: 150px;
}
/* fun */

div {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  font-size: 2.5em;
  color: white;
  text-shadow: 0 0 1px black, 0 0 1px black, 0 0 1px black, 0 0 1px black, 0 0 1px black, 0 0 1px black;
  box-shadow: 0 0 5px gray, inset 0 0 0 3px white,inset 0 0 5px black;
}
<div>Hover me</div>

Upvotes: 1

Related Questions