为什么会考虑使用图片预加载呢?你是否曾有个网站,在那个网站你要滚动你的导航然后有个延迟直到图片被加载完……预加载将在这方面帮助你。
它将在页面加载的时候加载那些图片并将其存储在浏览器的缓存里面。这样当用户滚动导航的时候,很漂亮而且流畅,没有延迟。
下面整理常用的图片预加载:
1.使用纯的css进行图片预加载body:after {
content: "";
display: block;
position: absolute;
background:
url("../image/manage/help/01.webp") no-repeat -10000px -1000px,
url("../image/manage/help/02.webp") no-repeat -10000px -1000px,
url("../image/manage/help/03.webp") no-repeat -10000px -1000px,
url("../image/manage/help/04.webp") no-repeat -10000px -1000px,
url("../image/manage/help/05.webp") no-repeat -10000px -1000px,
width: 0;
height: 0
}
2.使用纯javascript进行图片预加载
(function(){
var imgSrcArr = [
'image/1.webp',
'image/2.webp',
'image/3.webp',
'image/4.webp',
'image/5.webp',
'image/6.webp',
'image/7.webp'
];
var imgWrap = [];
function preloadImg(arr) {
for(var i =0; i< arr.length ;i++) {
imgWrap[i] = new Image();
imgWrap[i].src = arr[i];
}
}
setTimeout(function(){preloadImg(imgSrcArr)},5000)
}());
3.使用css+js方式进行图片预加载
css
.preload-img:after{
content: "";
display: block;
position: absolute;
background:
url("../image/manage/help/01.webp") no-repeat -10000px -1000px,
url("../image/manage/help/02.webp") no-repeat -10000px -1000px,
url("../image/manage/help/03.webp") no-repeat -10000px -1000px,
url("../image/manage/help/04.webp") no-repeat -10000px -1000px,
url("../image/manage/help/05.webp") no-repeat -10000px -1000px,
width: 0;
height: 0
}
js
/*
比如我们写了上面的这样一个类,但是页面中没有用到,我们在文档加载完毕之后,给某个元素添加该类
*/
$("#target").addClass("preload-img")
背景图上中下切图方案
工作中经常会遇到将背景图切为三个部分: 上部、中部、下部。
上部和下部:上部和下部使用容器的多背景图实现。
中部:使用绝对定位容器的方式解决。
html部分:
<section class="content-wrap">
<div class="line-wrap">
</div>
<p>我是内容</p>
</section>
css部分:
.content-wrap{
position: relative;
background:url('/images/top-bg.webp') left top no-repeat,
url('/images/bottom-bg.webp') left bottom no-repeat;
background-size:100% auto;
.line-wrap{
position: absolute;left:0;top:4.8rem;bottom:2.73rem;z-index:-1;
width:100%;
background:url('/images/middle-bg.webp') left top repeat-y;
background-size:100% auto;
}
}