how to make inside border-radius in css?

前端 未结 2 1874
小蘑菇
小蘑菇 2021-01-27 02:11

How can I make the border radius towards inside?

.circle {
   width:100px;
   height:100px;
   background-color:solid red;
   border-radius:-50px 50px -50px [ent         


        
相关标签:
2条回答
  • 2021-01-27 02:47

    Maybe with some radial-gradient:

    body {
     background:linear-gradient(pink,yellow);
     height:100vh;
     margin:0;
    }
    
    .box {
      width:150px;
      height:150px;
      margin:10px;
      border-radius:50%;
      overflow:hidden;
      position:relative;
    }
    .box:before {
      content:"";
      position:absolute;
      top:0;
      bottom:50%;
      left:0;
      right:0;
      background:radial-gradient(circle at top left,transparent 44%, red 44.5%);
    }
    .box:after {
      content:"";
      position:absolute;
      bottom:0;
      top:50%;
      left:0;
      right:0;
      background:radial-gradient(circle at bottom left,transparent 44%, red 44.5%);
    }
    <div class="box">
    </div>

    0 讨论(0)
  • 2021-01-27 02:48

    SVG

    You should not use css to create complex shapes.
    Use SVG instead.

    Shape created with a SVG Path
    In addition to 3 curves in the path

    Highlighted each curve so you can see how to create the final shape.

    <svg viewBox="0 0 100 100" width="200">
      <path d="M50 10 C 100 10, 100 90, 50 90" stroke="green" fill="transparent"/><!--Large curve-->
      <path d="M50 90 C 50 65, 35 50, 10 50" stroke="red" fill="transparent"/><!--Smaller down curve-->
      <path d="M10 50 C 35 50, 50 35, 50 10" stroke="blue" fill="transparent"/><!--Smaller up curve-->
    </svg>
    
    <svg viewBox="0 0 100 100" width="200">
      <path d="M50 10 C 100 10, 100 90, 50 90 C 50 65, 35 50, 10 50 C 35 50, 50 35, 50 10" stroke="gray" fill="red"/>
    </svg>

    0 讨论(0)
提交回复
热议问题