2012-01-05 12 views
28

divの3辺にボックスシャドーを付けたい(上辺を除く)。どうすればいい?divの3辺のCSSボックスシャドウ?

+0

http://stackoverflow.com/questions/1429605/creating-a-css3-box-shadow-on-all-sides-but-oneの複製と見なされます – jcuenod

+0

これは偽薬ですが、この偽薬はあります私の意見ではより良い答え。彼らは合併することができますか? –

答えて

32

あなたのためにJS Fiddleがあります。これは1つのdivだけを使用して動作します。

#shadowBox { 
    background-color: #ddd; 
    margin: 0px auto; 
    padding: 10px; 
    width: 220px; 
    box-shadow: 0px 8px 10px gray, 
     -10px 8px 15px gray, 10px 8px 15px gray; 
} 

シャドーを左下と右下に設定しました。柔らかい影ではややこしいですが、それは実行可能です。ミドルシャドウのぼかし半径を小さくするにはちょっとした推測が必要です。そのため、サイドシャドウと重なってもシームレスで、あまりにも暗く見えません。

+3

1箱の影のy位置を調整するだけで同じ効果を得ることはできませんでしたか? – Vigrond

+1

@Vigrond私はそれを試みました、それは十分に遠くの側面から影のぼかしを落とさせません。両側をより均一にするために、2つのコーナーシャドウを追加する必要があります。 –

+2

これは正しい答えではないと思います。これは、3つの別々のボックスシャドウを重ねて重ねて、各エッジを予想よりも暗くしているようです。それぞれの面に単一の影を追加する方法、または3つすべてをカバーする影を追加する方法はありませんか? – jenlampton

1

は、ここでは、固体の背景色を持っている場合は、あなたがbackground-colorz-indexの組み合わせを使用することによって、これを達成することができます@Vigrond

box-shadow: 0px -8px 10px 0px rgba(0,0,0,0.15); 
0

によって提案された負のY値の一例です。そのトリックは、要素をbox-shadowとそれ以前の兄弟の位置付けを与え、次に前の兄弟に背景色を与え、を高く設定して、要素の上にbox-shadowで積み重ねられます。

あなたがここにデモを見ることができます:http://codepen.io/thdoan/pen/vNvpKv

で動作するように即時前の兄弟がありません場合、あなたはまた、:before:afterとして擬似要素を使用することができます:http://codepen.io/thdoan/pen/ojJEMj

2

あなたが探している場合Googleの材料設計の影のようなもののために:

.shadow1 { 
    box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); 
} 
.shadow2 { 
    box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); 
} 
.shadow3 { 
    box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); 
} 
.shadow4 { 
    box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); 
} 
.shadow5 { 
    box-shadow: 0 19px 38px rgba(0,0,0,0.30), 0 15px 12px rgba(0,0,0,0.22); 
} 

出典:https://medium.com/@Florian/freebie-google-material-design-shadow-helper-2a0501295a2d#.wyvbmcq10

0

ハードコーナーの半透明シャドー(すなわち、私はこれを使用しました:

.shadow-no-top { 
    position: relative; 
    box-shadow: -5px 0 0 0 rgba(0,0,0,.2), 5px 0 0 0 rgba(0,0,0,.2); 
} 
.shadow-no-top:before { 
    content: ""; 
    position: absolute; 
    top: 100%; 
    left: -5px; 
    right: -5px; 
    bottom: -5px; 
    background-color: rgba(0,0,0,.2); 
} 

これは、左右の部分に影を使用し、:after擬似コンテンツを下の影として追加します。これにより、影をより暗くしたり、欠けたりするオーバーラップを避けることができます。

ただし、これは要素の背景が実線であることを必要とします。