2016-10-17 4 views
2

divの右側に背景画像を表示しようとしていますが、これはdiv全体をカバーしていません。divの画像:afterまたは:before?

は、今のところは(DIV1は、背景色である)このようなものだ:

<div id="div1"> 
    <div id="image"></div> 
    Text 
</div> 

CSS:

.div1 { 
    background: #324458; 
    color: #FFF; 
    font-size: 0.9em; 
    font-weight: bold; 
    padding: 10px; 
    width: 100%; 
    position: relative; 
    border-radius:4px; 
    height:40px; 
    clear:both; 
    overflow: hidden; 
} 

.image { 
    background: url("url here"); 
    background-position: center center; 
    background-size: cover; 
    opacity: 0.3; 
    height: 39px; 
    margin: -10px; 
    width: 300px; 
    position:absolute; 
    right: 10px; 
    border-top-right-radius: 4px; 
    border-bottom-right-radius: 4px; 
    z-index: 0; 
} 

しかし、div要素として、それがなくても、それに示す画像を持つことが可能ですdiv1の中に? :after:beforeなどを使用していますか? div1の右側にdiv imageが表示され、Xの幅にしたいだけです。

+0

達成しようとしている効果のイメージがありますか? –

+1

はい、可能です。 – Terry

+0

@Paulie_D http://prntscr.com/cvg7e3 –

答えて

3

:: afterや:: beforeのような擬似要素に背景画像を表示するには、content: '';を含める必要があります。

クラスセレクタでIDをターゲティングしようとしていましたが、上記の背景画像をthis fiddleに追加しました。しかし、それはこのように書きます:

.div1 { 
 
    background: #324458; 
 
    color: #FFF; 
 
    font-size: 0.9em; 
 
    font-weight: bold; 
 
    padding: 10px; 
 
    width: 100%; 
 
    position: relative; 
 
    border-radius: 4px; 
 
    height: 40px; 
 
    clear: both; 
 
    overflow: hidden; 
 
} 
 

 
.div1::after { 
 
    content: ''; 
 
    background: url("https://unsplash.it/200/300"); 
 
    background-position: center center; 
 
    background-size: cover; 
 
    opacity: 0.3; 
 
    height: 39px; 
 
    margin: -10px; 
 
    width: 300px; 
 
    position: absolute; 
 
    right: 10px; 
 
    border-top-right-radius: 4px; 
 
    border-bottom-right-radius: 4px; 
 
    z-index: 0; 
 
}
<div class="div1"> 
 
    Text 
 
</div>

+0

@ P.Nickあなたのビューポートはおそらく小さく、background-imageで:: beforeを使っているので、最初のdivの背景に表示されます。背景画像をdiv1の幅に対して相対的に表示させたい場合は、[後ろに行う](https://jsfiddle.net/lucaslazaro/eq9qd46s/2/)を使うことができます。これは:: afterの幅を設定しますあなたが望む親または配給金の50%(最大幅(この場合はhttps://jsfiddle.net/lucaslazaro/eq9qd46s/3/)を設定して、イメージを300pxのまま大きくしたい場合)幅)。 –

1

のdivの右側に画像を配置するには、いくつかの方法があります。あなたは次のようにイメージタグで画像を表示考慮する必要があります。

また、あなたのhtmlにあなたは、idを定義し、その後、CSSにあなたが.# isnteadを使用する必要があります。 Difference between id and class in CSS and when to use it

にこれを行う方法を確認してください:

HTML:

<div id="div1">content</div> 
<img id="image" src="url"/> 

CSS:デフォルトでは

#div1 { 
    display:inline-block; 
    float:left; 
} 

#img { 
    float:left; 
} 

、のdivコンテナはまでずっとその幅を伸ばします親コンテナの幅の100%に一致します。 'display:inline-block'を設定すると、内容をラップし、さまざまなコンテナ(画像を含む)を横に積み重ねることができます。

0

これは:beforeと:afterのテストで、各HTML要素の前後にテキストやイメージを配置できます。

p.test:before { 
    padding-right: 5px; 
    content: url(/pix/logo_ppk.gif); 
} 
p.test:after { 
    font-style: italic; 
    content: " and some text after."; 
} 
関連する問題