2012-11-12 13 views
6

Jak narysować koniec wstążki, jak po lewej stronie tego obrazu, używając tylko CSS? enter image description hereCSS na koniec wstążki

wiem, że mogę skorzystać z faktu, że rogi w CSS są skosem, więc mogę mieć div z granicy rozmiaru 0 i innych granicach większego dać mi trójkąty. Czy istnieje sposób, aby to zrobić tylko z 1 div? Czy muszę ułożyć kilka trójkątów? Naprawdę wolałbym mieć 1 div, aby użytkownicy nie musieli o tym myśleć i mogę po prostu użyć pseudo elementu CSS :before do wstawienia tego. Jaki jest najlepszy sposób na wdrożenie tego?

Tylko wersje IE9 + i nowsze wersje innych przeglądarek muszą być obsługiwane.

+0

@at. Czy uzyskałeś pomoc w odpowiedzi? – freebird

Odpowiedz

2

W Internecie jest dużo zasobów, które pokazują, jak to zrobić. Bardzo dobry tutorial jest na stronie internetowej tutaj CSS sztuczki http://css-tricks.com/snippets/css/ribbon/

Ive wytrzymaliśmy również w jsfiddle dla ciebie tutaj, aby grać z http://jsfiddle.net/WqNQU/

<h1 class="ribbon"> 
    <strong class="ribbon-content">Everybody loves ribbons</strong> 
</h1> 



.ribbon { 
font-size: 16px !important; 
/* This ribbon is based on a 16px font side and a 24px vertical rhythm. I've used em's to position each element for scalability. If you want to use a different font size you may have to play with the position of the ribbon elements */ 

width: 50%; 

position: relative; 
background: #ba89b6; 
color: #fff; 
text-align: center; 
padding: 1em 2em; /* Adjust to suit */ 
margin: 2em auto 3em; /* Based on 24px vertical rhythm. 48px bottom margin - normally 24 but the ribbon 'graphics' take up 24px themselves so we double it. */ 
} 
.ribbon:before, .ribbon:after { 
content: ""; 
position: absolute; 
display: block; 
bottom: -1em; 
border: 1.5em solid #986794; 
z-index: -1; 
} 
.ribbon:before { 
left: -2em; 
border-right-width: 1.5em; 
border-left-color: transparent; 
} 
.ribbon:after { 
right: -2em; 
border-left-width: 1.5em; 
border-right-color: transparent; 
} 
.ribbon .ribbon-content:before, .ribbon .ribbon-content:after { 
content: ""; 
position: absolute; 
display: block; 
border-style: solid; 
border-color: #804f7c transparent transparent transparent; 
bottom: -1em; 
} 
.ribbon .ribbon-content:before { 
left: 0; 
border-width: 1em 0 0 1em; 
} 
.ribbon .ribbon-content:after { 
right: 0; 
border-width: 1em 1em 0 0; 
} 
4

HTML

<div class="ribbon"> 
    <strong class="ribbon-content">Everybody loves ribbons</strong> 
</div>​ 

CSS

.ribbon { 
    font-size: 16px !important; 
    width: 50%; 
    position: relative; 
    background: #ba89b6; 
    color: #fff; 
    text-align: center; 
    padding: 1em 2em; /* Adjust to suit */ 
    margin: 2em auto 3em; 
    } 
    .ribbon:before { 
    content: ""; 
    position: absolute; 
    display: block; 
    bottom: -1em; 
    border: 1.5em solid #986794; 
    z-index: -1; 
    } 
    .ribbon:before { 
    left: -2em; 
    border-right-width: 1.5em; 
    border-left-color: transparent; 
    } 

.ribbon .ribbon-content:before { 
content: ""; 
position: absolute; 
display: block; 
border-style: solid; 
border-color: #804f7c transparent transparent transparent; 
bottom: -1em; 
} 
.ribbon .ribbon-content:before { 
left: 0; 
border-width: 1em 0 0 1em; 
} 

See Demo

Reference

+0

Jestem pod wrażeniem! Nawet IE8 obsługuje to! –

+0

@BramVanroy Dziękuję kolego! Konieczne jest dalsze dostosowanie, aby dopasować obraz. – freebird

+0

@freebird bez potrzeby dalszego dopasowywania obrazu, interesował mnie tylko koniec wstążki. Teraz spróbuję tego. –