codefreaK
codefreaK

Reputation: 3662

Css Shape Creation Curved Wave

How this Css shapes are created

This is what i have got so far After after checking out tutorial

Css

#MenuShape{
   height:50px;
   background-color:orange; 
   width:200px;
    position:relative;
    text-align:center;
    left:100px;

}
#MenuShape:after{
        content:"";
   position: absolute;
    width: 0;
   height: 0;
   left:200px;
  border-top: 50px solid transparent;
    border-left: 100px solid orange;
    border-bottom: 0px solid transparent;

}
#MenuShape:before{
        content:"";
   position: absolute;
    width: 0;
   height: -50;
   left:-100px;
  border-top: 50px solid transparent;
    border-right: 100px solid orange;
    border-bottom: 0px solid transparent;

}

HTML

<div id="MenuShape"  >
    sachin

</div>

https://css-tricks.com/ this the site on inspecting it i found its span wrapped anchor tag along with svg tag

  <a href="/" class="home">
    <svg viewBox="0 0 100 25" class="shape-tab">
      <use xlink:href="#shape-tab"></use>
    </svg>

  <span>Blog</span></a>

Click here to see the unexpected behaviour it works fine in codepen

Upvotes: 1

Views: 7523

Answers (1)

JayD
JayD

Reputation: 6551

Here is a final demo (archived) on the folded corners:

and the following code is how you can create them:

.note {
  position: relative;
  width: 30%;
  padding: 1em 1.5em;
  margin: 2em auto;
  color: #fff;
  background: #97C02F;
  overflow: hidden;
}

.note:before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  border-width: 0 16px 16px 0;
  border-style: solid;
  border-color: #fff #fff #658E15 #658E15;
  background: #658E15;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.3), -1px 1px 1px rgba(0, 0, 0, 0.2);
  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.3), -1px 1px 1px rgba(0, 0, 0, 0.2);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.3), -1px 1px 1px rgba(0, 0, 0, 0.2);
  /* Firefox 3.0 damage limitation */
  display: block;
  width: 0;
}

.note.rounded {
  -moz-border-radius: 5px 0 5px 5px;
  border-radius: 5px 0 5px 5px;
}

.note.rounded:before {
  border-width: 8px;
  border-color: #fff #fff transparent transparent;
  -moz-border-radius: 0 0 0 5px;
  border-radius: 0 0 0 5px;
}
<div class="note"></div>

To create a curved wave effect you can use this code:

#wave {
  position: relative;
  height: 70px;
  width: 600px;
  background: #e0efe3;
}

#wave:before {
  content: "";
  display: block;
  position: absolute;
  border-radius: 100% 50%;
  width: 340px;
  height: 80px;
  background-color: white;
  right: -5px;
  top: 40px;
}

#wave:after {
  content: "";
  display: block;
  position: absolute;
  border-radius: 100% 50%;
  width: 300px;
  height: 70px;
  background-color: #e0efe3;
  left: 0;
  top: 27px;
}
<div id="wave"></div>

To achieve the curve you’ll need to inverse where it starts. Follow the same demo, just reverse your values.

See a live demonstration (archived) of how border radius can create the shapes and effects you want and adjust each corner to see it in action.

Upvotes: 3

Related Questions