2017-06-20 3 views
0

私はしばらく解決策を見つけようとしてきましたが、うまくいかないようです。ローディング中にロゴがジッターを引き起こさないようにする方法

サイトのすべてのページに移動するときに発生する問題は、非常に面倒です。

サイトイメージに読み込みに時間がかかることが予想されますが、この読み込みはナビゲーションバーとサイトのロゴの読み込みに影響します。各ページが読み込まれるまでに、私のサイトのロゴは完全に欠けています。これにより、ナビゲーションバーがロゴが表示されるまでずっとずらされます。これには通常約1秒かかりますが、ユーザーのインターネット接続に完全に依存しています)。

これを防ぐにはどうすればよいですか?これにより、サイト全体がナビゲーション中に「バウンス」し、ロゴが欠落している間にすべてのコンテンツが短時間だけ上に移動します。

Appearance while the webpage is loading

Loaded webpage

+0

1-プレローダーを使用する/ 2-レイジーロードする/ 3-画像がプログレッシブJPEGであることを確認する(2と3を組み合わせることをお勧めします) –

答えて

1

自分のイメージタグに絶対height属性を与えます。これにより、ブラウザはimgタグの高さを維持し、要素を適切な場所に読み込ませることができます。

0

ローダーを微調整して、ページ内のすべての要素が読み込まれたときにのみページを読み込むようにすることもできます。これほど単純なもの:

<!DOCTYPE html> 
<html> 
<head> 
<style> 
/* Center the loader */ 
#loader { 
    position: absolute; 
    left: 50%; 
    top: 50%; 
    z-index: 1; 
    width: 150px; 
    height: 150px; 
    margin: -75px 0 0 -75px; 
    border: 16px solid #f3f3f3; 
    border-radius: 50%; 
    border-top: 16px solid #3498db; 
    width: 120px; 
    height: 120px; 
    -webkit-animation: spin 2s linear infinite; 
    animation: spin 2s linear infinite; 
} 

@-webkit-keyframes spin { 
    0% { -webkit-transform: rotate(0deg); } 
    100% { -webkit-transform: rotate(360deg); } 
} 

@keyframes spin { 
    0% { transform: rotate(0deg); } 
    100% { transform: rotate(360deg); } 
} 

/* Add animation to "page content" */ 
.animate-bottom { 
    position: relative; 
    -webkit-animation-name: animatebottom; 
    -webkit-animation-duration: 1s; 
    animation-name: animatebottom; 
    animation-duration: 1s 
} 

@-webkit-keyframes animatebottom { 
    from { bottom:-100px; opacity:0 } 
    to { bottom:0px; opacity:1 } 
} 

@keyframes animatebottom { 
    from{ bottom:-100px; opacity:0 } 
    to{ bottom:0; opacity:1 } 
} 

#myDiv { 
    display: none; 
    text-align: center; 
} 
</style> 
</head> 
<body onload="myFunction()" style="margin:0;"> 

<div id="loader"></div> 

<div style="display:none;" id="myDiv" class="animate-bottom"> 
    <h2>Tada!</h2> 
    <p>Some text in my newly loaded page..</p> 
</div> 

<script> 
var myVar; 

function myFunction() { 
    myVar = setTimeout(showPage, 3000); 
} 

function showPage() { 
    document.getElementById("loader").style.display = "none"; 
    document.getElementById("myDiv").style.display = "block"; 
} 
</script> 

</body> 
</html> 

いくつかの変更を加えて、UIの経験を手助けすることができます!

出典:W3 Schools

はそれが役に立てば幸い!

関連する問題