2012-11-02 76 views
20

我不明白爲什麼,但內嵌框陰影在我的內容下。內容下方的內嵌框陰影

下面是一個例子:

div { 
    box-shadow:inset 0 0 10px black; 
    height:300px; 
    color:red; 
} 


​<div> 
    a 
</div>​ 

http://jsfiddle.net/MAckM/

你看a是包裝盒上的陰影的頂部。

我怎樣才能得到箱子陰影在a之上?

+0

我已經使用這個解決方案很好,但另外重要的是這個div的z-index:before。 當您無法覆蓋全部內容時,請不要忘記使用它。 –

回答

23

您需要在div內製作一個新的元素,絕對定位,高度和寬度爲100%,然後爲該元素指定方塊陰影。

HTML:

<div> 
    <div></div> 
    a 
</div>​ 

CSS:

div { 
    height:300px; 
    color:red; 
    position:relative; 
} 

div div { 
    box-shadow:inset 0 0 10px black; 
    position:absolute; 
    top:0; 
    left:0; 
    width:100%; 
    height:100%; 
}​ 

這裏是一個JSFiddle

編輯:

或者,你可以使用僞元素:

HTML:

<div> 
    a 
</div>​ 

CSS:

div { 
    height:300px; 
    color:red; 
    position:relative; 
} 

div:before { 
    content:''; 
    display:block; 
    box-shadow:inset 0 0 10px black; 
    position:absolute; 
    top:0; 
    left:0; 
    width:100%; 
    height:100%; 
}​ 

JSFiddle

+0

在現代瀏覽器(包括IE9 +)中,可以使用生成的內容(':before',':after')而不是真實元素。 (IE8也支持生成的內容,但有一個錯誤,防止生成的內容超過真實內容,當然不支持CSS盒陰影本身。) –

+0

@MaratTanalin絕對正確。它也是一個更美麗的解決方案。更新了答案。 – fncombo

+0

我的答案很好,但我有一個問題。當我在div中央有另一個'div'時,shadow元素或僞類位於內部'div'的頂部。如果我添加一個z-index到內部div,那麼它會在box-shadow的頂部。嘗試單擊此演示中的鏈接:http://jsfiddle.net/MAckM/5/ – henryaaron