2016-07-22 45 views
14

muszę zrobić ten przycisk:Przycisk strzałki z pionowego gradientu tle

Button

Zazwyczaj kiedy trzeba zrobić przycisk strzałki z gradientu i granicy, dodaję .button:before elementu z pozycjonowania bezwzględnego, używając transform: rotate(-45deg) translate(%SOMETHING%); i dodawanie background: linear-gradient(45deg, %COLORS%);. Ale teraz muszę zrobić przycisk, którego kąt strzałki jest nieprawidłowy. Jak mogę to zrobić?

+0

dlaczego nie możesz użyć **: przed ** dla przycisku również. to zadziała, prawda? – Thinker

Odpowiedz

10

Można zaprojektować ten przycisk za pomocą :before selektora:

.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

Jestem pod wrażeniem. Dla takiego przycisku nie spróbuję nawet czystego rozwiązania CSS. Pójdę bezpośrednio do SVG, ponieważ nie wyobrażam sobie, że rozwiązanie CSS może osiągnąć zgodność z promieniami narożnymi, tak jak tutaj osiągnąłeś. Gratulacje! – zJorge

+0

Awesome! Działa bardzo dobrze, myślę, że dobrze jest dodać do niego "outline: none". – M98

10

Można to zrobić tak:

#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>

Nadzieja to pomaga :)

+0

Możesz również dodać 'scaleX (0.6)' do właściwości transform, aby dostosować kąt strzałki – felixyadomi

+0

@Thinker, tak, napisałem, że zwykle go używam, ale kąt jest właściwy. – michaeluskov

+0

@FelixYadomi problem będzie w gradiencie, gradient nie będzie taki sam jak "przycisk" gradientu – michaeluskov