2012-11-12 3 views
6

Как нарисовать конец ленты, как левая сторона этого изображения, используя только CSS? enter image description hereCSS для конца ленты

Я знаю, что я могу использовать тот факт, что углы в CSS являются митрофорными, так что я могу иметь div с границей размера 0 и других границ больше, чтобы дать мне треугольники. Есть ли способ сделать это только с 1 div? Или мне нужно собрать несколько треугольников? Я бы предпочел иметь 1 div, чтобы пользователи не думали об этом, и я могу просто использовать псевдоэлемент CSS :before, чтобы вставить это. Каков наилучший способ реализации этого?

IE9 + и современные версии других браузеров должны поддерживаться только.

+0

@at. Помогли ли вы с ответом? – freebird

ответ

2

В Интернете есть много ресурсов, показывающих, как это сделать. Очень хороший учебник онлайн на CSS-уловок здесь http://css-tricks.com/snippets/css/ribbon/

Ive также воткнул в 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 не нужно больше соответствовать изображению, меня интересовал только конец ленты. Попытаемся попробовать это сейчас. –

 Смежные вопросы

  • Нет связанных вопросов^_^