Plusin này có tác dụng kéo thanh cuộn tới đâu ảnh mới bắt đầu load tới đó, giảm thời gian tải ảnh. Mặc định blog khi load, sẽ load tất cả các ảnh và thành phần có trong blog. Điều này sẽ làm chậm blog nếu web hay blog có nhiều ảnh. Nhưng với lazyload thì chỉ load những ảnh lọt trong tầm mắt người nhìn. Ngoài ra, còn có thêm hiệu ứng tải ảnh kiểu “Fade in”, khi hiện ảnh trông rất đẹp và chuyên nghiệp.Kiểu này namkna giới thiệu gần tương tự như lazyload by jeqyery lần trước.
1- Đăng nhập vào Blog
2- Vào Mẫu
3- Chọn Chỉnh sửa HTML
4- Thêm vào sau thẻ <head> đoạn code bên dưới.
<script src='http://dl.dropbox.com/u/70549761/jQuery/namkna-blogspot-com/jquery.min1.3.1.js' type='text/javascript'/>
5- Thêm vào trước thẻ </head> đoạn code sau:
<!-- Lazy load --> <script type='text/javascript'> //<![CDATA[ (function($) { $.fn.lazyload = function(options) { var settings = { threshold : 0, failurelimit : 0, event : "scroll", effect : "show", container : window }; if(options) { $.extend(settings, options); } /* Fire one scroll event per scroll. Not one scroll event per image. */ var elements = this; if ("scroll" == settings.event) { $(settings.container).bind("scroll", function(event) { var counter = 0; elements.each(function() { if ($.abovethetop(this, settings) || $.leftofbegin(this, settings)) { /* Nothing. */ } else if (!$.belowthefold(this, settings) && !$.rightoffold(this, settings)) { $(this).trigger("appear"); } else { if (counter++ > settings.failurelimit) { return false; } } }); /* Remove image from array so it is not looped next time. */ var temp = $.grep(elements, function(element) { return !element.loaded; }); elements = $(temp); }); } this.each(function() { var self = this; /* Save original only if it is not defined in HTML. */ if (undefined == $(self).attr("original")) { $(self).attr("original", $(self).attr("src")); } if ("scroll" != settings.event || undefined == $(self).attr("src") || settings.placeholder == $(self).attr("src") || ($.abovethetop(self, settings) || $.leftofbegin(self, settings) || $.belowthefold(self, settings) || $.rightoffold(self, settings) )) { if (settings.placeholder) { $(self).attr("src", settings.placeholder); } else { $(self).removeAttr("src"); } self.loaded = false; } else { self.loaded = true; } /* When appear is triggered load original image. */ $(self).one("appear", function() { if (!this.loaded) { $("<img />") .bind("load", function() { $(self) .hide() .attr("src", $(self).attr("original")) [settings.effect](settings.effectspeed); self.loaded = true; }) .attr("src", $(self).attr("original")); }; }); /* When wanted event is triggered load original image */ /* by triggering appear. */ if ("scroll" != settings.event) { $(self).bind(settings.event, function(event) { if (!self.loaded) { $(self).trigger("appear"); } }); } }); /* Force initial check if images should appear. */ $(settings.container).trigger(settings.event); return this; }; /* Convenience methods in jQuery namespace. */ /* Use as $.belowthefold(element, {threshold : 100, container : window}) */ $.belowthefold = function(element, settings) { if (settings.container === undefined || settings.container === window) { var fold = $(window).height() + $(window).scrollTop(); } else { var fold = $(settings.container).offset().top + $(settings.container).height(); } return fold <= $(element).offset().top - settings.threshold; }; $.rightoffold = function(element, settings) { if (settings.container === undefined || settings.container === window) { var fold = $(window).width() + $(window).scrollLeft(); } else { var fold = $(settings.container).offset().left + $(settings.container).width(); } return fold <= $(element).offset().left - settings.threshold; }; $.abovethetop = function(element, settings) { if (settings.container === undefined || settings.container === window) { var fold = $(window).scrollTop(); } else { var fold = $(settings.container).offset().top; } return fold >= $(element).offset().top + settings.threshold + $(element).height(); }; $.leftofbegin = function(element, settings) { if (settings.container === undefined || settings.container === window) { var fold = $(window).scrollLeft(); } else { var fold = $(settings.container).offset().left; } return fold >= $(element).offset().left + settings.threshold + $(element).width(); }; /* Custom selectors for your convenience. */ /* Use as $("img:below-the-fold").something() */ $.extend($.expr[':'], { "below-the-fold" : "$.belowthefold(a, {threshold : 0, container: window})", "above-the-fold" : "!$.belowthefold(a, {threshold : 0, container: window})", "right-of-fold" : "$.rightoffold(a, {threshold : 0, container: window})", "left-of-fold" : "!$.rightoffold(a, {threshold : 0, container: window})" }); })(jQuery); //]]> </script> <script type="text/javascript" charset="utf-8"> $(function() { $("img") // img là áp dụng với cả blog. Nếu chỉ muốn áp dụng cho một class nào đó thì thêm class đó vào trước img. Ví dụ: .post img, #content img, .comments img,… .lazyload({ placeholder : "LINK_HÌNH", /*Hình thay thế khi ảnh chưa load xong*/ effect: "fadeIn" /* Hiệu ứng mờ khi ảnh xuất hiện. Có thể sử dụng các hiệu ứng khác như: slideUp, slideDown,…*/ }); }); </script>* Các tính năng thêm. Thêm vào sau dòng: effect: "fadeIn"
threshhold:100 /*Số pixel của ảnh được tải trước*/ container: $("class") /*Dùng cho class scroll được. Thay thành class bạn muốn áp dụng. Ví dụ: #container, #scroll, .imagescroll,…*/6. Lưu mẫu lại và xem thành quả.
Chúc thành công!.
Nhận xét
:7) :7) :7) :7) làm hoài cũng không được
Trả lờiXóa@Gamer Blog bạn xung khắc 2 file jquery.min.js kaì bạn ơi. File jquery.min.js cuối cùng của Template làm cho hiệu ứng này không chạy được. :3) :3) :3)
Trả lờiXóa@Fairstarjquery.min.js of cái bảng thông báo hả bạn vậy có cách nào xử lí được không bạn? hay xóa bỏ cái thông báo đó đi ah?
Trả lờiXóa@Gamer Uk bạn thử bỏ cái đó đi coi thế nào :3) :3) :3)
Trả lờiXóaanh NamkNA oi ! a giup em vs, em lam dung nhu a noi nhung blog cua em ko thay chay j ca ! van y nhu cu blog cua em la blog anh www.anhdepcs.blogspot.com
Trả lờiXóanãn quá... em thức cả đêm để làm, bây giờ là 2h sáng...
Trả lờiXóatìm mọi nguồn,... thử copy luôn code của demo chèn vào...
mà vẫn ko dc :((
demo: http://www.biquyet.info/2012/08/so-sanh-sao-han-trang-iem-va-mat-moc.html
ở demo của anh chỉ cần kéo thấy là hiện liền, còn của em thì phải kéo qua khỏi tấm hình mới hiện... :((
help me, cái tính của em là ko làm dc là trằn trọc ko ngủ được huhu :((
blog của em cũng ko có nhiều hình ảnh... mà tự nhiên thấy thủ thuật này hay quá.. mò thử...
Trả lờiXóamò hoài ko ra thức tới giờ luôn :((
nãn quá... em đi ngủ đây,... anh rãnh thì giúp em với nhé...
em có tìm trên mạng thấy cái này có version mới rồi... mà hình như lúc chèn hình phải thêm cái gì á,... nên ko tiện...
thấy cái demo của anh cài bản cũ vẫn ngon lành :( mò hoài ko ra :((
uppppppp cái anh ơi
Trả lờiXóabạn có biết site này k ? http://www.myjqueryplugins.com
Trả lờiXóavs 1 thư viện jquery khủng m rất thích vs nhiều thủ thuật hay bạn xem rồi
úng dụng cho blogsopt har .
thêm liên kết nhé: http://rapbyrap.blogspot.com
mình thêm của bạn r đó >"<
@Thái Bình Anh đã fix lại toàn bộ code em có thể thỏa mái áp dụng nha.
Trả lờiXóa@chjpsea Ok mình sẽ nghiên cứu . Giờ mình đang online bằng điện thoại đợi khi nào vào máy tính mình sẽ Add link của bạn.
Trả lờiXóaThanks, mình đã làm được rồi... Vui quá... :) . Thời gian tải trang cũng tăng lên đáng kể...
Trả lờiXóahttp://vnblue.blogspot.com/
Oke chúc mừng bạn đã làm thành công.!!!
Xóasử dụng bản lazy load mới, có nhiều setup mới, tham khảo thêm => Cách dùng lazy load phiên bản mới nhất cho blog và website
Trả lờiXóa