2016-08-09 6 views
10

Jak utworzyć wielobarwną ramkę w css3 jak na zdjęciu poniżej?Jak utworzyć wielobarwną obramowanie w css3

enter image description here

+1

http://jsfiddle.net/yH59y/ – Roysh

+1

można użyć obrazu obramowania: http: //www.w3schools. com/cssref/css3_pr_border-image.asp – Andrew

+1

spróbuj tego: http://www.hongkiat.com/blog/css-gradient-border/ –

Odpowiedz

16

Można to zrobić z :after lub :before elementu psuedo i CSS linear-gradient jak pokazano poniżej:

body { 
 
    background: #ccc; 
 
} 
 

 
.box { 
 
    text-align: center; 
 
    position: relative; 
 
    line-height: 100px; 
 
    background: #fff; 
 
    height: 100px; 
 
    width: 300px; 
 
} 
 

 
.box:after { 
 
    background: linear-gradient(to right, #bcbcbc 25%,#ffcd02 25%, #ffcd02 50%, #e84f47 50%, #e84f47 75%, #65c1ac 75%); 
 
    position: absolute; 
 
    content: ''; 
 
    height: 4px; 
 
    right: 0; 
 
    left: 0; 
 
    top: 0; 
 
}
<div class="box">Div</div>

+0

to działa! dzięki – Radian

+0

@Radian serdecznie zapraszamy) –

2

Wypróbuj.

<div class="test"></div> 

    .test { 
     width: 500px; 
     height: 100px; 
     background-color: #ccc; 
     position: relative; 
    } 

    .test:before, .test:after { 
     content: ""; 
     position: absolute; 
     left: 0px; 
     right: 0px; 
     height: 10px; 
     background-image: -webkit-linear-gradient(0deg, red 20px, blue 20px, blue 40px, yellow 40px, yellow 60px, green 60px, green 80px); 
     background-image: -ms-linear-gradient(0deg, red 20px, blue 20px, blue 40px, yellow 40px, yellow 60px, green 60px, green 80px); 
     background-size: 80px; 
    } 

    .test:before { 
     top: 0px; 
    } 
    .test:after { 
     bottom: 0px; 
    } 

Zobacz demo

http://jsfiddle.net/yH59y/

+0

to nie zadziała w firefoxie, tylko w chrome –

+0

To tylko link z komentarza ? –

+0

dla firefox: -webkit-border-image: -webkit-gradient (liniowy, lewy górny, lewy dolny, od (# 00abeb), do (#fff), kolor-stop (0.5, #fff), kolor- stop (0.5, # 66cc00)) 21 30 30 21 powtórz powtórzyć; –

13

Można to zrobić bez pseudo-elements, tylko z border-image: linear-gradient

.fancy-border { 
 
    width: 150px; 
 
    height: 150px; 
 
    text-align:center; 
 
    border-top: 5px solid; 
 
    border-image: linear-gradient(to right, grey 25%, yellow 25%, yellow 50%,red 50%, red 75%, teal 75%) 5; 
 
}
<div class="fancy-border"> 
 
    my content 
 
</div>

+4

To powinna być najlepsza odpowiedź, jest mniej hackowata niż obecnie akceptowana. – Erick

+0

Jak zrobić to za pomocą 3 kolorów? –