2015-08-13 301 views
2

我只想問是否可以創建帶有CSS的不規則形狀的div。我已經搜索過,但我找不到一個好例子。風格是這樣的:(抱歉不能上傳圖像)。如何創建具有不規則形狀的div

  /
      /     \ 
      /      \ 
     /      \ 
      /___________________________\  

應該是連接它的頂部線。基本上它在左右側有不同的高度。

這將是真正有用的示例代碼。

+0

查看以下鏈接它包含用於創建不同類型的使用CSS形狀的代碼。 https://css-tricks.com/examples/ShapesOfCSS/ 我希望這可以幫助你。 –

+0

[我怎樣才能使用css3和html5形狀不規則的div?](http://stackoverflow.com/questions/12126731/how-can-i-make-a-div-with-irregular-shapes -with-css3-and-html5) – TylerH

回答

15

THE WAY SVG

既然你要求的形狀是不可能的,只有CSS,我建議你使用SVG繪製形狀。

下面一段代碼將創建以下形狀:

<svg height="150" width="150"> 
    <polygon points="20,10 100,30 120,100 0,100" style="fill:red;" /> 
</svg> 

enter image description here

SVG是一個功能強大的工具,使形狀否則不可能不使用的圖像。請閱讀here


CSS回答

這可以通過使用perspectivetransform來完成。您創建兩個div:一個將獲得perspective,另一個將被轉換。只要知道.test -div中的任何內容都會被轉換,所以如果你在那裏放置文本,它也會被轉換。

HTML

<div class="wrapper"> 
    <div class="test"></div> 
</div> 

CSS

.wrapper { 
    width: 100px; 
    height: 100px; 
    margin-left: 100px; 
    -webkit-perspective: 150px; /* Chrome, Safari, Opera */ 
    perspective: 150px; 
} 

.test { 
    height: 100px; 
    width: 100px; 
    background: red; 
    -webkit-transform: rotateX(45deg); 
    /* Chrome, Safari, Opera */ 
    transform: rotateX(45deg); 
} 

結果

enter image description here

JSFIDDLE

+0

是的,我是一個新手,當談到CSS我覺得很難遵循你的指示,但生病嘗試你的答案。 –

+0

只需點擊底部的Fiddle鏈接即可查看代碼。我已經爲包裝添加了邊框,所以您實際上可以看到透視圖:http://jsfiddle.net/a517sb5m/1/ – Rvervuurt

+0

我通常會這樣想,但是如何獲得右側短於左邊? –

-1

它後面的鑽石,讓周圍的方式旋轉它,你會得到你的形狀:

#diamond-shield { 
    width: 0; 
    height: 0; 
    border: 50px solid transparent; 
    border-bottom: 20px solid red; 
    position: relative; 
    top: -50px; 
} 

#diamond-shield:after { 
    content: ''; 
    position: absolute; 
    left: -50px; top: 20px; 
    width: 0; 
    height: 0; 
    border: 50px solid transparent; 
    border-top: 70px solid red; 
} 
+0

這不會創建他的形狀:http://jsfiddle.net/a517sb5m/2/ – Rvervuurt

2

這也可以使用CSS clip-path

div { 
 
    width: 200px; 
 
    height: 150px; 
 
    background: red; 
 
    -webkit-clip-path: polygon(20% 10%, 85% 30%, 100% 100%, 0% 100%); 
 
    clip-path: polygon(20% 10%, 85% 30%, 100% 100%, 0% 100%); 
 
}
<div></div>
完成

您可以那麼只需要更改背景元素,如果你需要一個圖像。

div { 
 
    width: 200px; 
 
    height: 150px; 
 
    background: url(http://lorempixel.com/200/150/); 
 
    -webkit-clip-path: polygon(20% 10%, 85% 30%, 100% 100%, 0% 100%); 
 
    clip-path: polygon(20% 10%, 85% 30%, 100% 100%, 0% 100%); 
 
}
<div></div>

在其當前狀態,剪輯路徑沒有被廣泛支持的內聯或進口SVG但它是一個更清潔,而且在某些情況下,更容易變種使用。

1

您可以嘗試使用溢出隱藏和變換,但最好的辦法將是SVG。

HTML

<div class="out"> 
    <div class="in"></div> 
</div> 

CSS

body { background:url(http://www.placecage.com/g/640/480) } 
.out { 
    height: 100px; 
    width: 150px; 
    transform-origin: 0% 100%; 
    transform: skew(-10deg); 
    overflow: hidden; 
} 
.in { 
    height: 110px; 
    width: 148px; 
    position: relative; 
    left: -43px; 
    top: -7px; 
    transform-origin: 0% 0%; 
    transform: skew(30deg) rotate(10deg); 
    background: rgba(9,40,0,0.8); 
    transition: 0.5s ease; 
} 
.in:hover { 
    background: rgba(50,0,70,0.7); 
    transition: 0.5s ease; 
} 

FIDDLE:https://jsfiddle.net/xb1jxd7g/

+0

最好在'.out'中添加'backface-visibility:hidden;'以平滑鋸齒狀邊緣(或者您可以還要爲變換堆棧添加一個空變換'translateZ(0)':) – Harry