2017-08-04 10 views
1

CSS3:画像アイコンは、サーバには画像(Google Chromeの)

.image_main_div{ 
 
    position:relative; 
 
    
 
} 
 

 
.image_main_div .image_overlay_div{ 
 
    top: 0; 
 
    right: 0; 
 
    bottom: 0; 
 
    left: 0; 
 
    display: block; 
 
    background: rgba(0, 0, 0, 0.4); 
 
    z-index:1000; 
 
    position:absolute; 
 
    border:thin black solid; 
 
} 
 

 
.image_main_div .image_overlay_div .image_div{ 
 
} 
 

 
img{ 
 
    position: relative; 
 
    height: 175px; 
 
} 
 

 

 
img:before{ 
 
    content: ' '; 
 
    display: block; 
 
    height: 175px; 
 
    width: auto; 
 
    background: url(https://d28hsb6vkzynsw.cloudfront.net/assets/images/No_Image.png); 
 
    background-repeat: no-repeat !important; 
 
    background-size: 100% 100%; 
 
    background-position: center center; 
 
}
<div class="image_main_div"> 
 
    <div class="image_overlay_div"> 
 
    <p>Some text</p> 
 
    </div> 
 
    <a class="image_div"> 
 
    <img alt="" class="img-full img-responsive" height="175px" width="437px"src="https://d28hsb6vkzynsw.cloudfront.net/assets/images/no_image_upload1235.png"> 
 
    </a> 
 
    
 
</div>

こんにちは、

が存在しない場合でも、私はGoogleのChromeで奇妙な問題を持って表示されます。

私がしているのは、サーバーにイメージがない場合、divはサーバーからデフォルトイメージを取得します。私はの前に使ってimgにします。

ここでは、divに画像がありません。まだ私は画像のアイコンとデフォルトの画像を取得します。 divの周りに境界線があります。

IE、Mozillaでは正常に動作します。 Google Chromeではこのように見えます。 Google Chrome Issue

どうすれば解決できますか?それは、直接サーバから来て

+0

私は3〜4回行っている –

+0

をリフレッシュし、チェックするためにキャッシュの問題、プレスCtrl + F5キーであるかもしれません。しかしそれはまだそこにある。 –

答えて

1

。代わりに、onerrorハンドラで代替画像を割り当てます。

<img src="https://d28hsb6vkzynsw.cloudfront.net/assets/images/no_image_upload1235.png" 
 
onerror="this.src='https://d28hsb6vkzynsw.cloudfront.net/assets/images/No_Image.png'">

+0

を確認してください。たったひとつ。私はCSSを使用してそれを行うことはできませんか?あたかもデフォルトイメージですが、サーバーからhtmlにロードするには時間がかかります。すべてのブラウザでうまく動作するcssだけを使用することは可能ですか? –

+0

@Rishi onerrorハンドラでimgを非表示にすることができます。しかし、そのためには、img:beforeではなく、別のものに背景イメージを置く必要があります。たぶんあなたはそれをimgそのものに置き、srcをただ空の文字列にすることができます。 –

+0

aah..got ..あなたの答えをありがとう。 –

0

は削除見ることChromeのデフォルトの動作です

https://d28hsb6vkzynsw.cloudfront.net/assets/images/no_image_upload1235.png 

.image_main_div{ 
 
    position:relative; 
 
    
 
} 
 

 
.image_main_div .image_overlay_div{ 
 
    top: 0; 
 
    right: 0; 
 
    bottom: 0; 
 
    left: 0; 
 
    display: block; 
 
    background: rgba(0, 0, 0, 0.4); 
 
    z-index:1000; 
 
    position:absolute; 
 
    border:0px; 
 
} 
 

 
.image_main_div .image_overlay_div .image_div{ 
 
} 
 

 
img{ 
 
    position: relative; 
 
    height: 175px; 
 
} 
 

 

 
img:before{ 
 
    content: ' '; 
 
    display: block; 
 
    height: 175px; 
 
    width: auto; 
 
    background: url(); 
 
    background-repeat: no-repeat !important; 
 
    background-size: 100% 100%; 
 
    background-position: center center; 
 
background: url(https://d28hsb6vkzynsw.cloudfront.net/assets/images/No_Image.png); 
 
}
<div class="image_main_div"> 
 
    <div class="image_overlay_div"> 
 
    <p>Some text</p> 
 
    </div> 
 
    <a class="image_div"> 
 
    <img alt="" class="img-full img-responsive" height="175px" width="437px"src=""> 
 
    </a> 
 
    
 
</div>

+0

それから、** img:before **を使用していて、黒の透明な背景の背後に境界線があるので、デフォルト画像が表示されるはずです。どのように来ることができますか? –

+0

実際にあなたは 'css'と' html'のように両方のセクションで画像を与えていましたので、 'html'から削除しましたが、' img:before'で画像が利用可能です。私は私の答えを –

+0

更新する層の後ろにボーダーがあります。どうすれば削除できますか? –