2012-11-12 2 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/ 여기 당신이 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 함께 플레이하는 필자도 jsfiddle에 붙어

.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 더 이상 이미지를 일치시킬 필요가 없으며 리본 끝에 만 관심이있었습니다. 지금 이걸 시도 해보려고. –