2016-12-02 1 views
1

Ich versuche ein Trapez mit einer konkaven Seite zu erstellen.Wie man Trapezoide mit konkaver Seite in CSS3 erstellt?

Ich bevorzuge eine CSS3-Lösung, die Browser-kompatibel und reaktionsfähig ist.

Ich habe diese post gefunden, die eine Lösung bietet, die meiner erwarteten Lösung ziemlich ähnlich ist. Ich bevorzuge jedoch, dass die konkave Seite nicht so rund ist wie in der vorgesehenen Lösung, was ich bisher nicht erreichen konnte.

Sehr wichtig ist, dass die Form einen Alpha-Kanal (rgba) unterstützt, weil ich ein Bild hinter die Form legen möchte, die durch die Form scheinen sollte.

Die Lösung sollte wie folgt aussehen:

Trapezoide with concave side

+0

Was wird auf der anderen Seite der Form vorhanden sein? Muss es zeigen, was dahinter ist (wie in transparent sein)? Wie sollten die Hover-Effekte aussehen? Sollte es auf die Formgrenzen beschränkt sein oder keine Hover-Effekte? Haben Sie auch versucht, diesen verlinkten Beitrag an Ihre Bedürfnisse anzupassen? – Harry

+0

@Harry Die Form wird vor einem Bild angezeigt. Es sollte eine Transparenz haben. Hover wird nicht benötigt. Ja, ich habe versucht, die Geige im verlinkten Post zu modifizieren, aber ich konnte nicht erreichen, dass die konkave Seite so flach wird, wie ich es erwarte. – mian

+0

@Harry und die Lösung unterstützt keine Transparenz – mian

Antwort

1

Sie ein div kann ein Rechteck mit der gewünschten Größe zu erstellen. Setzen Sie die div auf position: relative und overflow: hidden.

Dann verwenden Sie ein Pseudo-Element mit position: absolute und ein undurchsichtiges box-shadow.

#container{ 
 
    width: 400px; 
 
    height: 200px; 
 
    background-image: url("http://www.menucool.com/slider/jsImgSlider/images/image-slider-2.jpg"); 
 
    padding: 50px; 
 
} 
 
#trapezoide{ 
 
    position:relative; 
 
    overflow: hidden; 
 
    
 
    /* Play with this properties to achieve the trapezoide just like you want. */ 
 
    height: 100px; 
 
    width: 300px; 
 
} 
 

 
#trapezoide:before{ 
 
    content: ""; 
 
    border-radius: 50%; 
 
    transform: translate(50%, -50%); 
 
    position: absolute; 
 
    box-shadow: 0 0 0 500px black; 
 
    
 
    /* Play with this properties to achieve the trapezoide just like you want. */ 
 
    width: 800px; 
 
    height: 800px; 
 
    top: -288px; 
 
    right: -100px; 
 
}
<div id="container"> 
 
    <div id="trapezoide"></div> 
 
</div>

Passen Sie die angegebenen Eigenschaften der machen trapezoide aussehen nur Sie wollen.

+0

wäre eine angemessene Lösung, wenn ich keine Transparenz benötigen würde, habe ich nicht erwähnt, dass die Entschuldigung – mian

+0

@mian Snippet aktualisiert, überprüfen Sie es jetzt. –

Verwandte Themen