2016-04-18 21 views

Antwort

4

Ja gefunden, es ist möglich, diesen Effekt zu erzielen, indem zwei Pseudo-Elemente. Wir müssen eines der Pseudoelemente in Bezug auf die linke Seite des Containers positionieren, während das andere in Bezug auf die rechte Seite des Containers positioniert wird. Dann fügen Sie eine transform: skew() in entgegengesetzten Richtungen hinzu und weisen den erforderlichen Seiten einen Rand-Radius zu, um die gewünschte Ausgabe zu erhalten.

div { 
 
    position: relative; 
 
    height: 50px; 
 
    width: 100%; 
 
    padding-top: 50px; 
 
    background: blue; 
 
    background-clip: content-box; 
 
    /* make sure blue background doesn't appear behind triangle */ 
 
    overflow: hidden; 
 
    color: white; 
 
} 
 
div:before, 
 
div:after { 
 
    position: absolute; 
 
    content: ''; 
 
    top: 0; 
 
    width: calc(50% + 10px); 
 
    /* don't change */ 
 
    height: 50px; 
 
    /* must be equal to padding-top */ 
 
    background: blue; 
 
} 
 
div:before { 
 
    left: 0; 
 
    transform: skew(45deg); 
 
    transform-origin: right bottom; 
 
    border-top-right-radius: 12px; 
 
} 
 
div:after { 
 
    right: 0; 
 
    transform: skew(-45deg); 
 
    transform-origin: left bottom; 
 
    border-top-left-radius: 12px; 
 
}
<div class='shape'>This is a shape.</div>

+0

wow danken u! Es ist möglich, Text in diesem div hinzuzufügen? ich versuche hier http://jsfiddle.net/nhqKb/284/ das Dreieck ist groß, aber der Text zeigt nicht – JoTaRo

+0

@JoTaRo, ich kann Text in Ihrer Geige sehen. –

+0

@Harry, Damn ... schnell wie Blitz XD –