2013-03-08 4 views
0

Я пытаюсь достичь этой формы в css, пробовал несколькими способами, проверял онлайн на примерах, но выглядит так, что эта форма довольно сложна. Любой, у кого есть идея, как это сделать? Не уверен, что это возможно даже при использовании CSS.Формирование сложной формы на div

enter image description here

Спасибо!

+1

Что вы пробовали? Я боюсь, что все подобные трюки в сети - это просто хаки, использующие границы css. Это хороший эффект, но вы не сможете разместить текст внутри. Я предлагаю использовать фоновое изображение, это просто, кросс-совместимо, и я боюсь, что единственное решение – amik

+1

однажды попробует мое решение ... –

+0

Это возможно, и это очень просто. Я сделаю демоверсию. – Ana

ответ

3

Да, это возможно, и это очень просто.

demo

Результат:

result:

Я использую только один элемент, а псевдо для нижнего левого угла так HTML просто:

<div class='shape'></div> 

Соответствующие CSS:

.shape { 
    overflow: hidden; /* to hide the top right corner 
         of the parallelogram formed by the pseudo */ 
    position: relative; 
    width: 20em; height: 10em; /* any values really */ 
} 
.shape:before { 
    position: absolute; 
    bottom: 0; left: 0; 
    width: 150%; height: 150%; 
    transform-origin: 0 100%; 
    transform: rotate(-3deg) skewX(-10deg); 
    background: black; 
    content: ''; 
} 

Вы можете получить много форм с использованием CSS преобразования. И они являются реальными формами, у вас может быть какой-то фон.

+0

Этот код скалы ... спасибо! – Jaypee

1

Я думаю, что это идеальное решение для вашего вопроса ...

#trapezoid { 
height: 0; 
width: 120px; 
border-bottom: 80px solid #05ed08; 
border-left: 45px solid transparent; 
border-right: 5px solid transparent; 
padding: 10 8px 5 5; 
} 
+0

Эй, парень !! это так близко !!! Трудная часть, если вы видите, является нижней частью, которая также является диагональю, на этом css вы прислали мне, что это прямо, правая граница shoudl будет прямой, но я решил, что сменив границу на 0px или даже удалив ее. Трудная часть - это дно, но то, что вы мне прислали, близко. Большое спасибо! – Jaypee

+1

@Jaypee, пожалуйста, примите ответ, когда он позволит вам: –

1

Вы также можете использовать :before, :after псевдо и transform свойство. Вот example.

#box { 
    width: 400px; 
    height: 200px; 
    background-color: #212121; 
    position: relative; 
} 

#box:after, #box:before { 
    display: block; 
    content: "\0020"; 
    color: transparent; 
    width: 411px; 
    height: 45px; 
    background: white; 
    position: absolute; 
    bottom: -20px; 
    -moz-transform: rotate(-2deg); 
    -webkit-transform: rotate(-2deg); 
    -o-transform: rotate(-2deg); 
    -ms-transform: rotate(-2deg); 
    transform: rotate(-2deg); 
} 
#box:before { 
    bottom: 80px; 
    left: -200px; 
    -moz-transform: rotate(92deg); 
    -webkit-transform: rotate(92deg); 
    -o-transform: rotate(92deg); 
    -ms-transform: rotate(92deg); 
    transform: rotate(92deg); 
} 

Вы, возможно, придется изменить некоторые значения, чтобы получить нужную форму.

+0

Это может работать да, но только если у вас сплошной цвет на заднем плане. фон: белый; или любой другой цвет, который вы положили, должен быть таким же, как цвет на фоне. Если вы, например, над изображением (над баннером предположим), вы не можете использовать эту технику, правильно? – Jaypee

+0

Правильно, в этом случае я бы рекомендовал использовать изображение вместо CSS. –