2012-11-12 5 views
6

Wie zeichne ich das Ende einer Multifunktionsleiste wie die linke Seite dieses Bildes nur mit CSS? enter image description hereCSS für Farbbandende

Ich weiß, dass ich die Tatsache nutzen, dass Ecken in CSS sind auf Gehrung geschnitten, so kann ich ein div mit einer Grenze der Größe 0 und anderen Grenzen habe größere mir Dreiecke zu geben. Gibt es eine Möglichkeit, dies mit nur 1 div zu tun? Oder muss ich einige Dreiecke stapeln? Ich würde wirklich lieber 1 div haben, so dass Benutzer nicht darüber nachdenken müssen, und ich kann einfach das CSS :before Pseudo-Element verwenden, um dies einzufügen. Was ist der beste Weg dies zu implementieren?

IE9 + und moderne Versionen anderer Browser müssen nur unterstützt werden.

+0

@at. Hast du Hilfe bei der Antwort bekommen? – freebird

Antwort

2

Es gibt viele Ressourcen im Web, die zeigen, wie das geht. Ein sehr gutes Tutorial ist online unter CSS-Tricks hier http://css-tricks.com/snippets/css/ribbon/

Ive steckte sie auch in einem jsfiddle für hier Sie mit 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 spielen

.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

Ich bin beeindruckt! Selbst IE8 unterstützt dies! –

+0

@BramVanroy Danke Kumpel! Weitere Anpassungen sind erforderlich, um das Bild anzupassen. – freebird

+0

@freebird keine Notwendigkeit, das Bild weiter anzupassen, war ich nur am Ende des Bandes interessiert. Ich werde es jetzt versuchen. –