[英]How can I make sure a background image displays before the page loads?
有沒有辦法確保在頁面上顯示任何其他內容之前始終先顯示(大300K)背景圖片?
在服務器上,我們可以訪問PHP。
所有html內容都將在開始獲取圖像之前被提供並解析,因此在開始之前會遇到問題。
您可以通過以編程方式隱藏內容,然后在加載圖像時觸發內容的“顯示”來規避此問題。
即:
<html>
<body>
<image here/>
<div id="content" style="display:none;" >
</div>
<script type="psudocode">
when(image.loaded){
$("#content").show();
}
</script>
</body>
</html>
如果您將所有內容都放在一個容器中,則使用此技術可能會非常接近。 如果javascript被禁用/不可用,它也會正常失敗。
因此,如果您由於經理或其他原因而必須這樣做,這就是我要使用的方法。
<html><head><!-- head section --></head>
<body>
<div id="container">
<script type="text/javascript">
<!--
document.getElementById('container').style.display = 'none';
-->
</script>
Content goes here
</div>
<script type="text/javascript">
<!--
document.getElementById('container').style.display = 'block';
-->
</script>
</body></html>
但是,如果您的內容很少,則可能效果不佳。 您當然可以在第二個javascript塊上添加一個計時器,以將其延遲一秒鍾左右:P
<html><head>
<script type="text/javascript">
//Hide on load
onload=function(){
document.body.style.display="none";
var imag = new Image();
imag.onload=function(){
var main = document.body;
main.style.backgroundImage="url("+this.src+")";
main.style.display="";
};
imag.src="http://dayton.hq.nasa.gov/IMAGES/MEDIUM/GPN-2000-001935.jpg";
}
</script>
</head>
<body>
YOU CAN' T SEE MEE!!
</body>
</html>
如果您不想依靠JavaScript,則可能的方法是制作僅包含背景圖像的虛擬頁面。 幾秒鍾后,它將重定向到實際頁面,並且后台將很快加載,因為它已經在緩存中。
我認為這不是一個超級有吸引力的解決方案,如果時機固定的話。
請注意,對於背景圖片,300KB很大。 我看到的情況更糟,有人使用的是1MB的圖像:即使連接速度相對較快,我也可以在頁面元素之后看到背景加載方式。
我認為您唯一能夠做到這一點的方法就是使用javascript-向用戶HTML發送僅包含背景圖片和一些javascript的javascript,這些javascript需要等待一段時間才能顯示其余內容,或者使用AJAX來檢索其余內容(基本上是同一件事)。
您可以將頁面內的圖像作為base64圖像加載,然后該圖像將隨頁面一起加載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.