htmlcsscss-shapes

How to make a curved edge hexagon by using CSS


This is my CSS.

CSS

#hexagon-circle { 
    width: 100px; 
    height: 55px; 
    background: red; 
    position: relative;
    border-radius: 10px;} 
#hexagon-circle:before { 
    content: ""; 
    position: absolute; 
    top: -25px; 
    left: 0; 
    width: 0; 
    height: 0; 
    border-left: 50px solid transparent; 
    border-right: 50px solid transparent; 
    border-bottom: 29px solid red;
    border-radius: 10px;} 
#hexagon-circle:after { 
    content: ""; 
    position: absolute; 
    bottom: -25px; 
    left: 0; 
    width: 0; 
    height: 0; 
    border-left: 50px solid transparent; 
    border-right: 50px solid transparent; 
    border-top: 29px solid red;
    border-radius: 10px;}

The output is 4 edges of hexagon is curved, but top and the bottom is not. I want to make all edge of hexagon curved. How to make top and bottom edge to be curved? or How to make the top edge of triangle to be curved?

http://jsfiddle.net/yR7zt/1


Solution

  • I think you are looking for this.

    .hex {
      position: relative;
      margin: 1em auto;
      width: 10em;
      height: 17.32em;
      border-radius: 1em/.5em;
      background: orange;
      transition: opacity .5s;
    }
    
    .hex:before,
    .hex:after {
      position: absolute;
      width: inherit;
      height: inherit;
      border-radius: inherit;
      background: inherit;
      content: '';
    }
    
    .hex:before {
      -webkit-transform: rotate(60deg);
      transform: rotate(60deg);
    }
    
    .hex:after {
      -webkit-transform: rotate(-60deg);
      transform: rotate(-60deg);
    }
    <div class="hex"></div>