Thứ Hai, tháng 4 04, 2011
[28]
Thủ thuật: Lazyload Jquery làm mượt ảnh và ảnh sẽ load nhanh hơn
Nguồn: appelsiini.net
Giới thiệu: Kéo 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.
Lưu ý: Lazyload sẽ được load sau cùng, sau khi đã load hết các mã Java, js, HTML của website hay blog.
CÁCH THỰC HIỆN
1. Đăng nhập Blogger
2. Chọn: Mẫu > Chỉnh sữa HTML
3. Chèn script.
Bước 1: Yêu cầu phải có jQuery. (Có rồi thì bỏ qua)
* jQuery phải để nằm trên code của bước 2, lazyload mới hoạt động nhé!
Bước 2: Tìm thẻ đóng </head>
- Thêm vào trước nó đoạn code sau:
* Các tính năng thêm. Thêm vào sau dòng: effect: "fadeIn"
Bước 3: Save template. (Lưu mẫu)
Một số mẫu hình thay thế
THE END.
Thủ thuật: Lazyload Jquery làm mượt ảnh và ảnh sẽ load nhanh hơn
Nguồn: appelsiini.net
Giới thiệu: Kéo 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.
Lưu ý: Lazyload sẽ được load sau cùng, sau khi đã load hết các mã Java, js, HTML của website hay blog.
CÁCH THỰC HIỆN
1. Đăng nhập Blogger
2. Chọn: Mẫu > Chỉnh sữa HTML
3. Chèn script.
Bước 1: Yêu cầu phải có jQuery. (Có rồi thì bỏ qua)
* jQuery phải để nằm trên code của bước 2, lazyload mới hoạt động nhé!
Bước 2: Tìm thẻ đóng </head>
- Thêm vào trước nó đ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,…*/
Bước 3: Save template. (Lưu mẫu)
Một số mẫu hình thay thế
THE END.
6 nhận xét:
blog cua~ ban rat' hay~ cam' on ban. rat nhieu~ tiep tuc phat huy phan thu~ thuat blog hen ~ lua chon nhunG~ ban that hay va bo~ ich ~ xin loi~ vi` ko go~ chu~ tieng viet ~ vi ban` phim cua~ minh bi hu*
Hi, cảm ơn bạn, rất vui khi júp được bạn :cuoi
Mình làm theo mà không được :(
Sao lại không được, cái này đơn giản mà.
+ Nếu dùng thêm 2 tính năng bên dưới thì có thể không thấy được hiệu ứng fadeIn.
+ jQuery phải để trên code của lazyload nó mới hoạt động nhé :)
+ Bài chứa nhiều ảnh thì dễ thấy được hiệu ứng hơn.
Mình làm được rồi
Cảm ơn bạn nhiều lắm :mahong
mnhf cũng đã làm đc, quan trọng là jQuery phải để trên code của lazyload nó mới hoạt động chứ ko phải đặt sau luôn thẻ head
xem thử blog của mình nhé http://khongphaixoan.blogspot.com