2012-11-12 48 views
6

如何仅使用CSS绘制此图像左侧的色带末端? enter image description here用于色带端的CSS

我知道我可以使用,在CSS角斜接的事实,所以我可以有大小为0和其他边界更大的边界div给我三角形。有没有办法做到这一点只有1 div?或者我需要堆叠一些三角形?我真的希望有1 div,以便用户不必考虑这一点,我可以使用CSS :before伪元素来插入它。实现这个最好的方法是什么?

只需要支持IE9 +和其他浏览器的现代版本。

+0

@at。你有答案吗? – freebird

回答

2

网上有很多资源显示如何做到这一点。一个很好的教程在网上这里的CSS技巧http://css-tricks.com/snippets/css/ribbon/

香港专业教育学院还停留它在的jsfiddle你在这里跟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

我印象深刻!即使IE8支持这个! –

+0

@BramVanroy谢谢你的队友!需要进一步调整以匹配图像。 – freebird

+0

@ freebird不需要进一步匹配图像,我只对功能区结束感兴趣。现在就试试这个。 –