JavaScript 语言实现图片的懒加载与图像尺寸自适应

JavaScript阿木 发布于 23 天前 6 次阅读


JavaScript 图片懒加载与图像尺寸自适应技术实现

随着互联网的快速发展,网页加载速度成为用户体验的重要因素之一。图片作为网页内容的重要组成部分,其加载速度直接影响着整个页面的性能。为了提高网页加载速度,减少数据流量,本文将围绕JavaScript语言,实现图片的懒加载与图像尺寸自适应功能。

一、图片懒加载

1.1 懒加载的概念

懒加载(Lazy Loading)是一种优化网页性能的技术,其核心思想是在用户滚动到页面底部时,才开始加载图片。这样可以减少初始页面加载的数据量,提高页面加载速度。

1.2 实现方法

以下是一个简单的图片懒加载实现方法:

javascript

// 获取所有需要懒加载的图片


var lazyImages = [].slice.call(document.querySelectorAll("img.lazy"));

// 创建一个图片加载器


var imageLoader = function (img) {


img.setAttribute("src", img.getAttribute("data-src"));


img.onload = function () {


img.removeAttribute("data-src");


};


};

// 检查图片是否进入可视区域


var checkImage = function () {


lazyImages.forEach(function (img) {


if ((img.getBoundingClientRect().top <= window.innerHeight && img.getBoundingClientRect().bottom >= 0) && getComputedStyle(img).display !== "none") {


imageLoader(img);


lazyImages = lazyImages.filter(function (e) {


return e !== img;


});


}


});


};

// 监听滚动事件


window.addEventListener("scroll", checkImage);

// 初始化


checkImage();


1.3 优化

1. 使用Intersection Observer API:Intersection Observer API 是一种异步检测目标元素与其祖先元素或顶级文档视窗(viewport)交叉状态的方法。使用该API可以实现更高效、更简洁的懒加载实现。

javascript

var lazyImages = [].slice.call(document.querySelectorAll("img.lazy"));

var imageLoader = function (img) {


img.setAttribute("src", img.getAttribute("data-src"));


img.onload = function () {


img.removeAttribute("data-src");


};


};

var lazyImageObserver = new IntersectionObserver(function (entries, observer) {


entries.forEach(function (entry) {


if (entry.isIntersecting) {


imageLoader(entry.target);


observer.unobserve(entry.target);


}


});


});

lazyImages.forEach(function (img) {


lazyImageObserver.observe(img);


});


2. 使用图片占位符:在图片加载前,可以使用一个低分辨率的占位符代替,提高用户体验。

二、图像尺寸自适应

2.1 尺寸自适应的概念

图像尺寸自适应是指根据屏幕尺寸、设备分辨率等因素,自动调整图片大小,以适应不同设备的显示需求。

2.2 实现方法

以下是一个简单的图像尺寸自适应实现方法:

javascript

// 获取所有需要自适应的图片


var adaptiveImages = [].slice.call(document.querySelectorAll("img.adaptive"));

// 根据屏幕尺寸调整图片大小


var adjustImageSize = function () {


adaptiveImages.forEach(function (img) {


var screenWidth = window.innerWidth;


var imgWidth = img.naturalWidth;


var imgHeight = img.naturalHeight;


var scale = screenWidth / imgWidth;


img.style.width = screenWidth + "px";


img.style.height = (imgHeight scale) + "px";


});


};

// 监听窗口大小变化事件


window.addEventListener("resize", adjustImageSize);

// 初始化


adjustImageSize();


2.3 优化

1. 使用CSS媒体查询:通过CSS媒体查询,可以根据不同屏幕尺寸设置不同的图片样式,实现更精细的尺寸自适应。

css

@media screen and (max-width: 768px) {


img.adaptive {


width: 100%;


height: auto;


}


}


2. 使用图片库:使用图片库(如Bootstrap、Foundation等)可以方便地实现图像尺寸自适应,同时提供丰富的样式和功能。

三、总结

本文介绍了JavaScript图片懒加载与图像尺寸自适应技术的实现方法。通过实现这两种功能,可以有效提高网页加载速度,提升用户体验。在实际应用中,可以根据具体需求选择合适的实现方法,并进行优化。