2016-07-22 17 views
14

Ich brauche diese Schaltfläche, um zu machen:Pfeiltaste mit vertikalem Gradienten Hintergrund

Button

Normalerweise, wenn ich Pfeiltaste mit Farbverlauf und Grenze machen muß, füge ich .button:before Element mit absoluter Positionierung, mit transform: rotate(-45deg) translate(%SOMETHING%); und dem Hinzufügen background: linear-gradient(45deg, %COLORS%);. Aber jetzt muss ich Knopf machen, Pfeilwinkel davon ist nicht richtig. Wie kann ich es tun?

+0

Warum können Sie nicht ** ** vor ** für die Taste auch verwenden. es wird funktionieren, oder? – Thinker

Antwort

10

Sie können diese Schaltfläche Design mit :before Selektor:

.button { 
 
    width: 120px; 
 
    height: 50px; 
 
    position: relative; 
 
    -moz-border-radius: 5px; 
 
    -webkit-border-radius: 5px; 
 
    border-radius:   5px; 
 
    border:1px solid #4d7a9c; 
 
    position:relative; 
 
    color:white; 
 
    font-size:18px; 
 
    
 
    background: #238fe7; /* Old browsers */ 
 
    background: -moz-linear-gradient(top, #238fe7 0%, #156fba 100%); /* FF3.6-15 */ 
 
    background: -webkit-linear-gradient(top, #238fe7 0%,#156fba 100%); /* Chrome10-25,Safari5.1-6 */ 
 
    background: linear-gradient(to bottom, #238fe7 0%,#156fba 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ 
 
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#238fe7', endColorstr='#156fba',GradientType=0); /* IE6-9 */ 
 
} 
 

 
.button:before { 
 
    content: ""; 
 
    position: absolute; 
 
    transform: scaleX(0.6) rotate(45deg); 
 
    height: 38px; 
 
    width: 38px; 
 
    right:-18px; 
 
    top:5px; 
 
    border-radius: 5px; 
 
    z-index:-1px; 
 
    
 
    background: #238fe7; /* Old browsers */ 
 
    background: -moz-linear-gradient(-45deg, #238fe7 0%, #156fba 100%); /* FF3.6-15 */ 
 
    background: -webkit-linear-gradient(-45deg, #238fe7 0%,#156fba 100%); /* Chrome10-25,Safari5.1-6 */ 
 
    background: linear-gradient(135deg, #238fe7 0%,#156fba 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ 
 
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#238fe7', endColorstr='#156fba',GradientType=1); /* IE6-9 fallback on horizontal gradient */ 
 
}
<button class="button">Text</button>

+1

Ich bin beeindruckt. Für einen Button wie diesen werde ich nicht mal eine reine CSS-Lösung ausprobieren. Ich gehe SVG direkt, weil ich mir nicht vorstellen kann, dass eine CSS-Lösung sogar eine Übereinstimmung auf Eckradien erreichen würde, wie Sie es hier erreicht haben. Glückwunsch! – zJorge

+0

Super! Es funktioniert sehr gut, ich denke es ist auch gut, "outline: none;" hinzuzufügen. – M98

10

Sie können es wie folgt tun:

#trape { 
 
    position: absolute; 
 
    height: 50px; 
 
    color: white; 
 
    width: 80px; 
 
    border:0; 
 
    background-image: linear-gradient(0deg, red, tan); 
 
} 
 

 
#trape:before { 
 
    content: ""; 
 
    position: absolute; 
 
    transform: scaleX(0.6) rotate(45deg); 
 
    height: 35px; 
 
    width: 35px; 
 
    right:-18px; 
 
    top:7px; 
 
    background-image: linear-gradient(-45deg, red, tan); 
 
}
<button id="trape"></button>

Hoffe, es hilft :)

+0

Sie können auch 'scaleX (0.6)' zu der Eigenschaft transform hinzufügen, um den Winkel des Pfeils anzupassen – felixyadomi

+0

@Thinker, ja, ich habe geschrieben, dass ich es normalerweise verwende, aber der Winkel ist richtig. – michaeluskov

+0

@FelixYadomi das Problem wird in Gradient sein, Gradient wird nicht das gleiche sein wie 'Button' Gradient – michaeluskov