背景を検証する方法(CSS)イメージがロードされたのですか?
-
20-09-2019 - |
質問
私は、次のCSSクラスを持っている。
.bg {
background-image: url('bg.jpg');
display: none;
}
私はTDタグに適用してること。
私の質問はどのように私にはJavaScript / jQueryを使って伝えることができた背景画像は、読み込みが完了していることを?
ありがとうございます。
UPDATE:追加の表示プロパティ。 私の主な目的ので、それがビューにそれを切り替えます。
解決
これを行うには、私の知っている唯一の方法は、Javascriptを使用してイメージをロードした後、その背景として、そのイメージを設定することです。
例
var bgImg = new Image();
bgImg.onload = function(){
myDiv.style.backgroundImage = 'url(' + bgImg.src + ')';
};
bgImg.src = imageLocation;
他のヒント
最初のページロードでvisibility:hidden
とのdivにクラスを与えます。あなたは、テーブルのセルにクラスを割り当てるとその方法、それはすでに、ブラウザのキャッシュになります。
@Jamieディクソンは - 彼は、それがロードされていたときに知っている背景画像を使って何をやってみたかったと言っていなかった...
$(function( )
{
var a = new Image;
a.onload = function( ){ /* do whatever */ };
a.src = $( 'body' ).css( 'background-image' );
});
資料では、を助けるかもしれません。関連セクション:
// Once the document is loaded, check to see if the
// image has loaded.
$(
function(){
var jImg = $( "img:first" );
// Alert the image "complete" flag using the
// attr() method as well as the DOM property.
alert(
"attr(): " +
jImg.attr( "complete" ) + "\n\n" +
".complete: " +
jImg[ 0 ].complete + "\n\n" +
"getAttribute(): " +
jImg[ 0 ].getAttribute( "complete" )
);
}
);
基本的に背景画像を選択して、それがロードされています見にチェックを行います。
また、あなたはonload属性とdiv要素の柔軟性の両方の恩恵を受けるように、単にDIV /バックグラウンドでimgタグを置き換える機能を提供することができます。
もちろん、あなたがコードが最良のあなたのニーズに合ったために微調整することができますが、私の場合には、私も幅または高さのどちらかが、私は期待のよりよい制御のために保存されていることを確認します。
私のコードは次のよう:
<img src="imageToLoad.jpg" onload="imageLoadedTurnItAsDivBackground($(this), true, '')">
<style>
.img-to-div {
background-size: contain;
}
</style>
<script>
// Background Image Loaded
function imageLoadedTurnItAsDivBackground(tag, preserveHeight, appendHtml) {
// Make sure parameters are all ok
if (!tag || !tag.length) return;
const w = tag.width();
const h = tag.height();
if (!w || !h) return;
// Preserve height or width in addition to the image ratio
if (preserveHeight) {
const r = h/w;
tag.css('width', w * r);
}
else {
const r = w/h;
tag.css('height', h * r);
}
const src = tag.attr('src');
// Make the img disappear (one could animate stuff)
tag.css('display', 'none');
// Add the div, potentially adding extra HTML inside the div
tag.after(`
<div class="img-to-div" style="background-image: url(${src}); width: ${w}px; height:${h}px">${appendHtml}</div>
`);
// Finally remove the original img, turned useless now
tag.remove();
}
</script>
所属していません StackOverflow