Heim  >  Fragen und Antworten  >  Hauptteil

Div mit transparentem Halbkreisausschnitt

Ich möchte nur mit CSS3 eine transparent ausgeschnittene Halbkreisform erstellen. Die einzige Voraussetzung ist, dass alle Elemente , die die Form bilden, schwarz oder transparent sein müssen.

Ich kann kein schwarzes Rechteck mit einem weißen Kreis darauf verwenden, da der Halbkreis transparent sein muss und den Hintergrund durchscheinen lassen muss.

Erforderliche Form:

P粉022285768P粉022285768384 Tage vor731

Antworte allen(2)Ich werde antworten

  • P粉138871485

    P粉1388714852023-10-23 14:34:32

    您可以使用盒子阴影来制作透明剪切圆

    body {
      background: url(http://i.imgur.com/qi5FGET.jpg) no-repeat;
      background-size: cover;
    }
    div {
      display: inline-block;
      width: 300px; height: 300px;
      position: relative;
      overflow: hidden;
    }
    div:before {
      content: '';
      position: absolute;
      bottom: 50%;
      width: 100%; height: 100%;
      border-radius: 100%;
      box-shadow: 0px 300px 0px 300px #000;
    }
    .transparent {
      opacity: 0.5;
    }

    这可以是具有百分比长度的响应式

    body {
      background: url(http://lorempixel.com/output/people-q-c-640-480-1.jpg) no-repeat;
      background-size: cover;
    }
    div {
      width: 40%; height: 300px;
      position: relative;
      overflow: hidden;
    }
    div:before {
      content: '';
      position: absolute;
      bottom: 50%;
      width: 100%; height: 100%;
      border-radius: 100%;
      box-shadow: 0px 300px 0px 300px #000;
    }
    .transparent {
      opacity: 0.5;
    }

    Antwort
    0
  • P粉851401475

    P粉8514014752023-10-23 09:09:07

    也许可以使用 CSS ::after 伪属性来做到这一点,如下所示:

    body {
      background: green;
    }
    
    .rect {
      height: 100px;
      width: 100px;
      background: rgba(0, 0, 0, 0.5);
      position: relative;
      margin-top: 100px;
      margin-left: 100px;
    }
    
    .circle {
      display: block;
      width: 100px;
      height: 50px;
      top: -50px;
      left: 0;
      overflow: hidden;
      position: absolute;
    }
    
    .circle::after {
      content: '';
      width: 100px;
      height: 100px;
      -moz-border-radius: 100px;
      -webkit-border-radius: 100px;
      border-radius: 100px;
      background: rgba(0, 0, 0, 0);
      position: absolute;
      top: -100px;
      left: -40px;
      border: 40px solid rgba(0, 0, 0, 0.5);
    }
     

    Antwort
    0
  • StornierenAntwort