2011-11-08 6 views
5

単一のCSSエントリを含むドロップダウンメニューのクールな背景効果(アルファ透明度と丸みを帯びたコーナー)を作ろうとしています。CSS限定バックグラウンドリピート(複数の背景画像)

私はトップキャップ(180x4px)、ボトムキャップ(180x20px)、中間の繰り返し(180x2px)を持っています。ここで

は私の既存の関連CSSです:

background-image: url('images/drop_top.png'), url('images/drop_bottom.png'), url('images/drop_middle.png'); 
background-position:left top, left bottom, 0px 10px; 
background-repeat:no-repeat, no-repeat, repeat-y; 

問題が拡張/タイル可能にする必要があり、中央部分が上部と下部のキャップの下にすべての方法を繰り返しているということである - など私の丸みを帯びた角ということ彼らはそれらの下に繰り返しの中間を持っているので、今正方形です。

複数の背景が重なり合わないようにする方法はありますか?

ありがとうございます!

+1

あなたが複数の背景プロパティを使用している場合は、その理由ではありません'border-radius'を使うだけです。 – motoxer4533

+0

私は一番下にfancy-schmancyシャドーエフェクトを使用しています(CSSではなく) –

+1

私はそれを使ったことがないので、うまくいくかどうかわかりませんが、 'background-clip'ですか? http://dev.opera.com/articles/view/css3-border-background-boxshadow/#background-clip – motoxer4533

答えて

8

Background-origin and/or background-clipはすべきことです。ちょうどその時、あなたのキャップグラフィックの高さに等しいトップ&下の境界線を設定background-clip:padding-box


EDIT drop_middle設定: http://jsfiddle.net/nGSba/

#box 
{ 
    display: inline-block; 
    margin: 1em; 
    padding: 9px; 
    border-left:9px solid transparent; 
    border-right:9px solid transparent; 
    background-image: url(http://s11.postimage.org/ufpdknvjz/left.png), 
      url(http://s11.postimage.org/6ng294tj3/right.png), 
      url(http://www.css3.info/wp-content/themes/new_css3/img/main.png); 
    background-repeat: no-repeat, no-repeat, repeat-x; 
    background-position: left top, right top, left top; 
    background-origin: border-box,border-box,padding-box; 
    background-clip: border-box,border-box,padding-box; 
} 

:ここに完全なソリューションであるが、しかし、水平方向について何が私をつかまえたのはborder-colortransparentでした。背景は常にになります。の境界線です。境界線が堅ければ、背景は見えなくなります。あなたの要素は、あなたが、次やっしようとする画像を適用していることが何であれ

+0

これは私が使用しているもので、まだ重複しています:\t border-top-width:4px; \t border-bottom-width:19px;\t背景画像:url( 'images/drop_top.png')、url( 'images/drop_bottom.png')、url( 'images/drop_middle.png'); \t背景位置:左上、左下、0px 10px; \t background-repeat:no-repeat、no-repeat、repeat-y; \t背景クリップ:border-box、border-box、padding-box; –

+0

正しく動作するためには、 'background-origin'と' background-clip'の両方を設定する必要があるようです。 – philipd

0

(私は説明のためにdivを仮定します):

div { 
    background-image: url('images/drop_top.png'), url('images/drop_bottom.png'); 
    background-position:left top, left bottom; 
    background-repeat:no-repeat, no-repeat; 
    position: relative; 
} 

div:after { 
    position: absolute; 
    top: 10px ; /* whatever your top image height is */ 
    bottom: 10px; /* whatever your bottom image height is */ 
    left: 0; 
    right: 0; 
    z-index: -1; 
    background-image: url('images/drop_middle.png'); 
    background-position: left top; 
    background-repeat: repeat-y; 
} 
+0

IEが混乱していると考えると、これがクロスブラウザのソリューションになるかどうか不思議です。 – ehime

+1

テストしませんでしたが、古いブラウザは ':after'疑似要素を認識できませんでした。 – ScottS