2012-04-23 10 views
0

私のウェブサイトのコンテンツ部門には、あらゆる種類のレイヤースタイルの独特の背景があります。 HTML/CSSでは、私はちょうどPhotoshopから背景を取り、それを背景画像として使うことができます。 私の問題は、コンテンツdivの高さが可変であるということです。これを解決するために、上のピクセルをとり、中央に1ピクセルの行を配置し、repeat-yと下のピクセルを配置し、それらを下に配置します。これは機能しますが、中間の背景画像は、先頭の背景画像の後ろ、および、背景画像の前に開始する必要があります。他の背景画像がある場合、リピートを伴う背景画像は停止する必要があります

div#content{ 
    background: url('contentbghead.png') top center no-repeat, 
       url('contentbgfoot.png') bottom center no-repeat, 
       url('contentbgmid.png') 0px 10px repeat-y; 
    width:680px; 
    height:300px; 
} 

私の結果は、ここで見つけることができます:http://tinypic.com?ref=30muazs

+0

これは...いないすべてのブラウザがサポートしていることを、言って申し訳ありませんCSS3の契約であるが、ブラウザの特定になるだろうか、あるいは、それはすべてのパラメータを失敗します。最初と最後を除いて...時々... – Relic

答えて

3

複数の背景は、CSS2ではサポートされていません。あなたは、あなたが探しているものを達成するために複数のdivが必要になります。あなたはまたに複数の背景のためのいくつかのCSS3のメソッドを見てみることができます

方法

Multiple Backgrounds with CSS3

、しかし、IE9よりも古いIEのバージョンでは動作しません。

+0

CSS3では3つのdivがないのですか? – yoeriboven

+0

正解ですが、上記のRelicがコメントしたように、まだすべてのブラウザで動作していません。画像やコードを投稿すると、少しお手伝いできるかもしれません。 – magzalez

0

これは、各背景エントリが別の背景と関係がないため、複数の背景では不可能です。ただし、擬似要素を使用してこの効果を実現できます。

div#content{ 
    position:relative; 
    background: url('contentbghead.png') top center no-repeat, 
       url('contentbgfoot.png') bottom center no-repeat; 
    width:680px; 
    height:300px; 
} 
div#content:before { 
    content:"\0020"; font-size:0px; 
    display:block; position:absolute; top:10px; left:0px; bottom:10px; 
    width: /* Whatever your BG's width is */; 
    background:transparent url('contentbgmid.png') repeat-y left top; 
    pointer-events:none; 
} 

それが可能だとしてあなたはそれがブラウザのために(あなたのコンテンツの上に重ねています場合、擬似要素は、クリックイベントをキャプチャする可能性がある、Zインデックスレイヤリングの予防策を取るしたいと思いますポインタイベントをサポートしていない)。

0

こんにちは、あなたが使用して結果を得ることができ前:CSSの擬似要素後。

私は1つのdivでコードを作成し、その1つのdivとmid画像ですべての3つの画像を使用しました。y軸で繰り返すことができます。

前: * 擬似要素後*サポートまでIE-8

HTML

<div id="content"> 
Dummy Content Dummy Content Dummy Content Dummy Content Dummy Content Dummy Content Dummy Content Dummy Content Dummy Content Dummy Content Dummy Content Dummy Content Dummy Content Dummy Content 
</div> 

CSS

#content:after { 
    background: url("http://i.imgur.com/5agws.png") no-repeat 0 0; 
    content: " "; 
    height: 50px; 
    left: 0; 
    position: absolute; 
    width: 680px; 
} 

#content:before { 
    background: url("http://i.imgur.com/P7jL5.png") no-repeat 0 0; 
    content: " "; 
    height: 50px; 
    position: absolute; 
    top: -50px; 
    width: 680px; 
} 

#content { 
    background: url("http://i.imgur.com/vAqRU.png") repeat-y 0 0; 
    color: white; 
    position: relative; 
    top: 50px; 
    width: 680px; 
    white-space: pre-wrap; 

} 

はより良く理解するためのデモを参照してください - http://jsfiddle.net/5Lkmr/40/

+0

IE8をサポートする必要がある場合は、問題の問題を解決するのに非常にきれいな解決策だと思います。左と右の画像が固定された水平方向のリピートに使用できますか? – ProgramCpp