Use lazy loading image function & add image viewer. Close #65

This commit is contained in:
凡梦星尘
2022-10-29 22:37:41 +08:00
parent fa414e827a
commit 08156f22b8
10 changed files with 48 additions and 5 deletions

View File

@@ -17,6 +17,7 @@
NexT.boot.registerEvents = function() {
NexT.utils.registerImageLoadEvent();
NexT.utils.registerScrollPercent();
// NexT.utils.registerCanIUseTag();
NexT.utils.registerToolButtons();
@@ -63,6 +64,7 @@ NexT.boot.refresh = function() {
} else {
NexT.utils.hideCommontes();
}
NexT.utils.registerImageViewer();
//TODO
/**

View File

@@ -7,6 +7,37 @@ HTMLElement.prototype.wrap = function (wrapper) {
};
NexT.utils = {
registerImageLoadEvent: function() {
var images = document.querySelectorAll('.sidebar img, .post-block img, .vendors-list img');
var callback = (entries) => {
entries.forEach(item => {
if (item.intersectionRatio > 0) {
var ele = item.target;
var imgSrc = ele.getAttribute('data-src');
if (imgSrc) {
var img = new Image();
img.addEventListener('load', function() {
ele.src = imgSrc;
}, false);
ele.src = imgSrc;
// Prevent load image again
ele.removeAttribute('data-src');
}
}
})
};
var observer = new IntersectionObserver(callback);
images.forEach(img => {
observer.observe(img);
});
},
registerImageViewer: function() {
new Viewer(document.querySelector('.post-body'),{ navbar:2, toolbar:2 });
},
registerToolButtons: function () {
const buttons = document.querySelector('.tool-buttons');