2011-11-10 39 views
8

Có bất kỳ hướng dẫn hoặc bổ sung nào để làm mờ trang web vào chế độ xem sau khi được tải đúng cách hay không, để giới hạn bất kỳ dấu hiệu nào, vì vậy nội dung xuất hiện trơn tru về cơ bản?jQuery làm mờ trong trang web/nội dung khi nó được tải?

Tôi cho rằng nó sẽ dễ dàng hơn khi nó chỉ là một khu vực cụ thể, như header hoặc footer đã sẽ được lưu trữ, từ trang trước ...

Ví dụ một trang danh mục đầu tư với hình thu nhỏ khác nhau, họ chỉ xuất hiện suôn sẻ khi sẵn sàng.

Việc này có thể thực hiện được không?

Cảm ơn bạn cho bất kỳ sự giúp đỡ :)

Trả lời

16

Vâng, quấn nội dung của bạn với một div (ví dụ <div id="main-content">) và trong css của bạn đặt này:

div#main-content { display: none; } 

Sau đó sử dụng kịch bản này.

$(document).ready(function() { 
    $('#main-content').fadeIn(); 
}); 
+1

Có dự phòng nào trong trường hợp ai đó không bật Javascript không? – optimus203

1

jQuery(document).ready(function(){ 
jQuery("#container").fadeIn(); 
}); 
 

nơi container là id của div chứa toàn bộ nội dung của bạn.

26

Đầu tiên, một điểm phụ: Nói chung, các nhà thiết kế web dành nhiều thời gian để cải thiện thời gian tải trang được cảm nhận, hiển thị mọi thứ nhanh nhất có thể. Điều này tích cực đi theo cách khác, trình bày một trang trống cho đến khi mọi thứ đã sẵn sàng, có thể không lý tưởng.

Nhưng nếu nó phù hợp với tình hình của bạn:.

Kể từ khi tất cả mọi thứ có thể nhìn thấy sẽ là một hậu duệ của body, bạn có thể tải body ẩn và sau đó mờ dần nó trong Nó sẽ là quan trọng để bao gồm một dự phòng cho người dùng mà không cần JavaScript (thường ít hơn 2% ít nhất according to Yahoo, nhưng vẫn còn). Vì vậy, dọc theo dòng:

(Live Copy)

<!DOCTYPE html> 
<html> 
<head> 
<title>Example</title> 
<!-- This next would probably be in your main CSS file, but shown 
    inline here just for purposes of the example 
--> 
<style type="text/css"> 
body { 
    /* Hide it for nifty fade-in effect */ 
    display: none; 
} 
</style> 
<!-- Fallback for non-JavaScript people --> 
<noscript> 
<style type="text/css"> 
body { 
    /* Re-displays it by overriding the above */ 
    display: block; 
} 
</style> 
</noscript> 
</head> 
<body> 
...content... 
<script src="jquery.js"></script> 
<script> 
// This version runs the function *immediately* 
(function($) { 

    $(document.body).fadeIn(1000); 

})(jQuery); 
</script> 
</body> 
</html> 

Một vài biến thể trên một phần kịch bản đó, tùy thuộc vào khi bạn muốn fade-in để xảy ra:

Chờ "sẵn sàng" sự kiện:

Live Copy

// This version waits until jQuery's "ready" event 
jQuery(function($) { 

    $(document.body).fadeIn(1000); 

}); 

Wa điều đó cho sự kiện window#load:

Live Copy

// This version waits until the window#load event 
(function($) { 

    $(window).load(function() { 
    $(document.body).fadeIn(1000); 
    }); 

})(jQuery); 

window#load cháy rất trễ trong quá trình tải trang, sau khi tất cả các nguồn lực bên ngoài (bao gồm tất cả hình ảnh) đã nạp. Nhưng bạn nói rằng bạn muốn đợi cho đến khi mọi thứ đã được tải, vì vậy đó có thể là những gì bạn muốn làm. Nó chắc chắn sẽ làm cho trang của bạn dường như chậm hơn ...

+0

Tốt .. có rất ít người nghĩ về dự phòng. 1 cho đề xuất Nice –

+0

Đúng. Nhưng tôi vẫn đặt cơ thể {display: none; } vào tệp CSS khi tôi cố gắng tránh các kiểu nhúng như thế càng nhiều càng tốt. –

+0

@sushilbharwani: Vâng. Thông thường, <= 2% khách truy cập (ít nhất, [đó là số của Yahoo] (http://developer.yahoo.com/blogs/ydn/posts/2010/10/how-many-users-have-javascript-disabled/)), nhưng vẫn ... –

4

Một cách khác để thực hiện điều này là thông qua dự án Animate.css.CSS tinh khiết của nó do đó không cần phải dựa vào JS:.

https://daneden.me/animate/

Chỉ cần thêm và lớp 'hoạt hình' 'fadeIn' đến yếu tố phụ huynh của bạn và tất cả trẻ em sẽ mờ dần trong

1
$(document).ready(function() { 
    $('body').hide().fadeIn('fast'); 
}); 
Các vấn đề liên quan