2011-12-27 34 views
13

Tôi đang cố gắng tìm ra cách làm cho hình nền cuộn chậm hơn nội dung trang. Tôi đã không có một đầu mối như thế nào nó được thực hiện. Ví dụ hoàn hảo về những gì tôi đang cố gắng làm is hereNền cuộn chậm trong Javascript hoặc CSS?

Điều này có được thực hiện trong CSS hoặc jQuery/Javascript không?

+2

Điều này thường được gọi là di chuyển sai lệch khi tôi còn bé và muốn tạo trò chơi. Dường như có một số tài nguyên sử dụng cùng cụm từ đó (ví dụ: khi Googling 'jquery parallax scrolling') –

+5

Javascript. Dễ dàng hơn với jQuery, nhưng nó cũng yêu cầu các dấu HTML/CSS đặc biệt. Ví dụ đơn giản, thú vị tại http://inner.geek.nz/javascript/parallax/. Bạn cũng có thể chỉ cần google 'parallax scrolling'. – Edwin

+0

@Edwin: Cảm ơn bạn đã chỉ ra tên thích hợp. –

Trả lời

15

này được thực hiện bằng javascript (jQuery):

(function() { 
    var a = document.body, 
     e = document.documentElement; 
    $(window).unbind("scroll").scroll(function() { 
     a.style.backgroundPosition = "0px " + -(Math.max(e.scrollTop, a.scrollTop)/8) + "px"; 
    }); 
})(); 
+0

Ồ, tôi hiểu cách thực hiện. –

+0

Điều này thật tuyệt vời! Chỉ cần nhớ tu đặt nó ở cuối trang hoặc khi sử dụng jQuery bọc nó với hàm 'ready'. Nền phải có 'vị trí: cố định' –

0

Tác động vào liên kết bạn được đăng được thực hiện trong Javascript sử dụng jQuery.

Nếu bạn kiểm tra mã của một kịch bản của trang web here, bạn có thể tìm thấy:

.style.backgroundPosition="0px "+-(Math.max(e.scrollTop,a.scrollTop)/8)+"px" 

Thực tế, tài sản background-position CSS được sửa đổi trên trang di chuyển tính trục Y tùy thuộc vào vị trí trang cuộn . Nếu bạn có một số kiến ​​thức về Javascript, jQuery hoặc Mootools, bạn có thể tái tạo hiệu ứng rất dễ dàng.

Tôi nghĩ rằng không thể làm điều đó bằng cách chỉ sử dụng CSS.

0

Cái này hoạt động cho hình ảnh bg cao.

(function() { 
     var body = document.body, 
       e = document.documentElement, 
       scrollPercent; 
     $(window).unbind("scroll").scroll(function() { 
      scrollPercent = 100 * $(window).scrollTop()/($(document).height() - $(window).height()); 
      body.style.backgroundPosition = "0px " + scrollPercent + "%"; 
     }); 
})();