2012-04-18 154 views
19

我正在創建一個調整相鄰div的JavaScript小部件,以便在用戶懸停時顯示更多div的背景圖像。這很簡單,並且很好地處理具有直邊的div(顯然)。然而,邊緣'需要'傾斜。使用CSS3傾斜邊框的Div?

是否有使用CSS3,使2個DOM元素之間的傾斜邊界的簡單方法?

我所遇到的CSS3轉換(即,歪斜),對角線邊框招(使用一半的顏色,透明度的一半),但是這些都似乎能夠達到我需要什麼。

我想要達到的效果是這樣的形象:

diaglonal border between dom elements

+9

+1只是爲了例如圖像的選擇。 – 2012-04-18 08:49:30

回答

8

您可以在技術上將圖像嵌入旋轉(請參閱CSS3的transform: rotate(<X>deg)<div/>,然後以相反角度旋轉嵌入的圖像。

或者,你可以使用SVG(與<clipPath>)來達到這種效果。加上嵌入在<object/>標籤中的SVG可以使用JavaScript,所以響應部分可以成爲騎行的一部分。

兩個JSFiddle都在路上。

EDIT1:CSS版本:http://jsfiddle.net/kU3tu/
EDIT2:SVG版本:http://jsfiddle.net/b2JJK/

+0

謝謝大家的答案!不幸的是,優先級改變了,我還沒有機會真正實現任何這些解決方案,但檢查小提琴,我相信他們會工作,當我終於到了! – 2012-04-20 10:45:32

1

我能想到的解決方案是使用兩個絕對定位的圖像,並與溢出的div容器設置爲隱藏。

紅色和綠色是圖像(紅色可能是短距離,因爲這些部件是不可見反正頂部和綠色之一可能是從底部短)。 藍色是容器溢出:隱藏。

Image

但是這種解決方案需要旋轉圖像,這可能不適合你使用。

第二種解決方案是使用一個圖像和一個分離器的div僅僅是一個旋轉的邊框。但是在這種情況下,無論如何你都可以在不需要黑客的情況下準備適當的圖像。

+0

第二個選項是不可行的,因爲當邊框從一邊滑到另一邊時邊框圖像需要改變。 第一個選項,我可能會有一個去,我想我可以嘗試和反轉圖像本身以撤消旋轉的div ... – 2012-04-18 09:09:01

4

我已經從我身邊試圖可能這是幫助你。

HTML

<div class="container"> 
<div class="imageWrap ro"> 
    <div class="pic"></div> 
</div> 
<div class="imageWrap"> 
    <div class="pic2"></div> 
</div> 
</div>​ 

CSS

.container{ 
    width:600px; 
    height:400px; 
    border:1px solid red; 
    overflow:hidden; 
    white-space:nowrap; 
} 
.imageWrap{ 
    width:300px; 
    display:inline-block; 
    height:500px; 
    position:relative; 
    width:400px; 
    vertical-align:top; 
    margin-left:-70px; 
} 
.imageWrap.ro{ 
    border-right:5px solid red; 
    -webkit-transform:rotate(15deg); 
    -moz-transform:rotate(15deg); 
    transform:rotate(15deg); 
    overflow:hidden; 
    z-index:1; 
    margin-left:-100px; 
    margin-top:-80px; 
} 
.pic{ 
    background:url('http://lorempixel.com/output/nightlife-q-c-746-711-9.jpg'); 
    -webkit-transform:rotate(-15deg); 
    -moz-transform:rotate(-15deg); 
    transform:rotate(-15deg); 
    width:640px; 
    height:640px; 
    position:absolute; 
    left:-50px; 
} 
.pic2{ 
    width:400px; 
    height:400px; 
    background:url('http://lorempixel.com/output/sports-h-c-609-626-7.jpg'); 
} 

入住這http://jsfiddle.net/fZMuJ/5/