🚀 Phát hành Locomotive Scroll v5 Beta
Hãy thử phiên bản beta của Locomotive Scroll v5!
🔗 Click here to try Locomotive Scroll v5 Beta
Phản hồi của bạn rất quý báu trong giai đoạn thử nghiệm beta này. Nếu bạn gặp bất kỳ vấn đề nào hoặc có gợi ý, vui lòng open an issue.
Chúc bạn có những khoảnh khắc cuộn mượt mà! 😄
Locomotive Scroll
Phát hiện các phần tử trong khung nhìn & cuộn mượt với hiệu ứng parallax.
Cài Đặt
⚠️ Scroll-hijacking (chiếm quyền cuộn) là một thực hành gây tranh cãi có thể gây ra vấn đề về khả năng sử dụng, truy cập và hiệu suất. Vui lòng sử dụng một cách có trách nhiệm.
npm install locomotive-scroll
Sử Dụng
Cơ Bản
Với phát hiện đơn giản.
HTML
<h1 data-scroll>Hey</h1>
<p data-scroll>👋</p>
CSS
Thêm các kiểu cơ bản vào tệp CSS của bạn.
JS
Với trình bundler
import LocomotiveScroll from 'locomotive-scroll';
const scroll = new LocomotiveScroll();
Hoặc không cần trình bundler
<script src="locomotive-scroll.min.js"></script>
<script>
(function () {
var scroll = new LocomotiveScroll();
})();
</script>
Tải về JS file .
Mượt Mà
Với cuộn mượt mà và hiệu ứng parallax.
<div data-scroll-container>
<div data-scroll-section>
<h1 data-scroll>Hey</h1>
<p data-scroll>👋</p>
</div>
<div data-scroll-section>
<h2 data-scroll data-scroll-speed="1">What's up?</h2>
<p data-scroll data-scroll-speed="2">😬</p>
</div>
</div>
import LocomotiveScroll from 'locomotive-scroll';
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true
});
Lưu ý: scroll-sections là tùy chọn nhưng được khuyến nghị để cải thiện hiệu suất, đặc biệt là trên các trang dài.
Nâng Cao
Làm cho nó hoạt động theo ý bạn.
Với phương thức
<section id="js-target">Come here please.</section>
import LocomotiveScroll from 'locomotive-scroll';
const scroll = new LocomotiveScroll();
const target = document.querySelector('#js-target');
scroll.scrollTo(target);
Với sự kiện
<!-- Using modularJS -->
<div data-scroll data-scroll-call="function, module">Trigger</div>
<!-- Using jQuery events -->
<div data-scroll data-scroll-call="EVENT_NAME">Trigger</div>
<!-- Or do it your own way 😎 -->
<div data-scroll data-scroll-call="{y,o,l,o}">Trigger</div>
import LocomotiveScroll from 'locomotive-scroll';
const scroll = new LocomotiveScroll();
scroll.on('call', func => {
// Using modularJS
this.call(...func);
// Using jQuery events
$(document).trigger(func);
// Or do it your own way 😎
});
Tùy chọn thể hiện
Tùy chọn | Loại | Mặc định | Mô tả |
---|---|---|---|
el |
object |
document |
Phần tử chứa cuộn. |
name |
string |
'scroll' |
Tiền tố thuộc tính dữ liệu (data-scroll-xxxx ). |
offset |
array(2) |
[0,0] |
Khoảng cách kích hoạt xem toàn cục: [dưới, trên] |
Sử dụng chuỗi với % để sử dụng một phần trăm chiều cao của khung nhìn. |
|||
Sử dụng giá trị số cho đơn vị pixel tuyệt đối. | |||
Ví dụ. [30%,0] , [100,0] , [30%, 100] |
|||
repeat |
boolean |
false |
Lặp lại phát hiện xem. |
smooth |
boolean |
false |
Cuộn mượt. |
initPosition |
object |
{ x: 0, y: 0 } |
![Chỉ mượt][mượt-chỉ] |
Một object xác định tọa độ cuộn ban đầu trên một phiên bản mượt. Ví dụ: { x: 0, y: 1000 } |
|||
direction |
string |
vertical |
![Chỉ mượt][mượt-chỉ] |
Hướng cuộn: vertical hoặc horizontal |
|||
lerp |
number |
0.1 |
![Chỉ mượt][mượt-chỉ] |
Độ mạnh của nội suy tuyến tính (lerp). Số thực giữa 0 và 1 . |
|||
Điều này xác định độ mạnh của “mượt mà”. Càng gần 0 , càng mượt. |
|||
getDirection |
boolean |
false |
Thêm hướng vào sự kiện cuộn. |
getSpeed |
boolean |
false |
Thêm tốc độ vào sự kiện cuộn. |
class |
string |
is-inview |
Lớp phần tử trong khung nhìn. |
initClass |
string |
has-scroll-init |
Lớp khởi tạo. |
scrollingClass |
string |
has-scroll-scrolling |
Lớp đang cuộn. |
draggingClass |
string |
has-scroll-dragging |
Lớp đang kéo. |
smoothClass |
string |
has-scroll-smooth |
Có lớp cuộn mượt. |
scrollbarContainer |
object |
false |
![Chỉ mượt][mượt-chỉ] |
Chỉ định phần tử chứa thanh cuộn để được thêm vào. Nếu là false, thanh cuộn sẽ được thêm vào thân trang. | |||
scrollbarClass |
string |
c-scrollbar |
![Chỉ mượt][mượt-chỉ] |
Lớp phần tử thanh cuộn. | |||
multiplier |
number |
1 |
![Chỉ mượt][mượt-chỉ] |
Hệ số áp dụng cho delta cuộn, cho phép tăng/giảm tốc độ cuộn (bất kể nền tảng). | |||
firefoxMultiplier |
number |
50 |
![Chỉ mượt][mượt-chỉ] |
Tăng tốc độ cuộn của Firefox trên Windows. | |||
touchMultiplier |
number |
2 |
![Chỉ mượt][mượt-chỉ] |
Nhân hành động cảm ứng để cuộn nhanh hơn so với chuyển động của ngón tay. | |||
scrollFromAnywhere |
boolean |
false |
![Chỉ mượt][mượt-chỉ] |
Theo mặc định, locomotive-scroll chỉ lắng nghe sự kiện cuộn trên phần tử cuộn (el option). Với tùy chọn này được đặt thành true, nó lắng nghe trên toàn bộ tài liệu thay vì chỉ phần tử cuộn. |
|||
gestureDirection |
string |
vertical |
![Chỉ mượt][mượt-chỉ]
Xác định hướng cử chỉ cuộn trong phiên bản của bạn. Bạn có thể sử dụng:
vertical
(đứng)horizontal
(ngang)both
(cả hai)
tablet
& smartphone
| object
| |
Đối tượng cho phép ghi đè một số tùy chọn cho một ngữ cảnh cụ thể. Bạn có thể chỉ định:
smooth
direction
horizontalGesture
Đối với ngữ cảnh tablet
, bạn cũng có thể xác định breakpoint
( số nguyên , mặc định là 1024) để đặt điểm ngắt tối đa cho máy tính bảng.
reloadOnContextChange
| boolean
| false
| Cho phép tải lại trang khi chuyển đổi giữa các ngữ cảnh desktop
, tablet
và smartphone
. Điều này có thể hữu ích nếu trang của bạn thay đổi nhiều giữa các ngữ cảnh và bạn muốn đặt lại tất cả mọi thứ.
resetNativeScroll
| boolean
| true
| Đặt history.scrollRestoration = 'manual'
và gọi window.scrollTo(0, 0)
trong quá trình khởi tạo của locomotive-scroll trong Lớp Native. Hữu ích nếu bạn sử dụng chuyển tiếp với cuộn tự nhiên, nếu không, chúng tôi khuyến nghị đặt nó thành false
nếu bạn không muốn làm hỏng tính năng khôi phục cuộn của API Lịch sử.
Thuộc tính phần tử
Thuộc tính | Giá trị | Mô tả |
---|---|---|
data-scroll |
Phát hiện xem trong khung nhìn. | |
data-scroll-id |
string |
(Tùy chọn) Hữu ích nếu bạn muốn giới hạn phần tử của mình và có tiến trình của phần tử của bạn trong khung nhìn ví dụ. |
data-scroll-container |
Xác định phần tử cuộn. Yêu cầu cho basic styling. | |
data-scroll-section |
Xác định một phần có thể cuộn. Chia trang thành các phần có thể cải thiện hiệu suất. | |
data-scroll-class |
string |
Lớp phần tử trong khung nhìn. |
data-scroll-offset |
string |
Khoảng cách kích hoạt xem của phần tử : bottom,top |
Giá trị đầu tiên là khoảng cách kích hoạt bottom , thứ hai (tùy chọn) là khoảng cách kích hoạt top . |
||
Phần trăm là liên quan đến chiều cao của khung nhìn, nếu không thì là đơn vị pixel tuyệt đối. | ||
Ví dụ. "10" , "100,50%" , "25%, 15%" |
||
data-scroll-repeat |
boolean |
Lặp lại phát hiện xem của phần tử. |
data-scroll-call |
string |
Sự kiện gọi kích hoạt xem của phần tử. |
data-scroll-position |
string |
top , bottom , left hoặc right |
Vị trí cửa sổ của kích hoạt xem. | ||
data-scroll-speed |
number |
![Chỉ mượt][mượt-chỉ] |
Tốc độ parallax của phần tử. Giá trị âm sẽ đảo ngược hướng. | ||
data-scroll-delay |
number |
![Chỉ mượt][mượt-chỉ] |
Độ trễ lerp của phần tử parallax. | ||
data-scroll-direction |
string |
![Chỉ mượt][mượt-chỉ] |
Hướng parallax của phần tử. vertical hoặc horizontal |
||
data-scroll-sticky |
![Chỉ mượt][mượt-chỉ] | |
Phần tử dính. Bắt đầu và dừng tại vị trí data-scroll-target . |
||
data-scroll-target |
string |
![Chỉ mượt][mượt-chỉ] |
Vị trí trong khung nhìn của phần tử mục tiêu. |
Phương thức thể hiện
Phương thức | Mô tả | Đối số |
---|---|---|
init() |
Khởi tạo lại cuộn. | |
on(eventName, function) |
Nghe [sự kiện thể hiện] ⬇. | |
update() |
Cập nhật tất cả vị trí phần tử. | |
destroy() |
Hủy bỏ các sự kiện cuộn. | |
start() |
Khởi động lại các sự kiện cuộn. | |
stop() |
Dừng các sự kiện cuộn. | |
scrollTo(target, options) |
Cuộn đến một mục tiêu. |
target
: Xác định nơi bạn muốn cuộn. Các giá trị có sẵn là :
node
: một phần tử domstring
: bạn có thể nhập lựa chọn của riêng bạn, hoặc sử dụng các giá trị"top"
và"bottom"
để đạt tới ranh giới cuộnint
: Một tọa độ cuộn tuyệt đối theo pixel
options
(tùy chọn, object ) : Đối tượng thiết lập. Các giá trị có sẵn là:
offset
( số nguyên ) : Xác định một khoảng cách từ mục tiêu của bạn. Ví dụ.-100
nếu bạn muốn cuộn lên 100 pixel so với mục tiêu của bạncallback
( function ) : Được gọi khi cuộn đến mục tiêu hoàn thành (lưu ý rằng nó sẽ không chờ lerp ổn định)duration
( số nguyên ) : Xác định thời gian của hoạt ảnh cuộn trong mili giây. Mặc định là1000
![Chỉ mượt][mượt-chỉ]easing
( array ) : Mộtarray
gồm 4 số thực nằm giữa 0 và 1 xác định đường cong bezier cho hoạt ảnh điều hòa.
Mặc định là[0.25, 0.00, 0.35, 1.00]
Xem https://greweb.me/2012/02/bezier-curve-based-easing-functions-from-concept-to-implementation
Hãy nhớ rằng điều này cũng sẽ bị ảnh hưởng bởi lerp trừ khi bạn đặt_disableLerp_
thành_true_
.
![Chỉ mượt][mượt-chỉ]disableLerp
( boolean ) : Hiệu ứng lerp sẽ không được áp dụng nếu đặt thànhtrue
![Chỉ mượt][mượt-chỉ]
Sự kiện thể hiện
Sự kiện | Đối số | Mô tả |
---|---|---|
scroll |
obj |
Trả về phiên bản cuộn (vị trí, giới hạn, tốc độ, hướng và phần tử hiện tại trong khung nhìn). |
call |
func |
Kích hoạt nếu trong khung nhìn. Trả về string hoặc array của bạn nếu chứa , . |
Ví dụ về chơi các hoạt ảnh ngày càng phát triển (giống như gsap)
Tất cả các phần tử data-scroll
có một giá trị tiến trình. Trong sự kiện cuộn, bạn có thể lấy tất cả các phần tử hiện tại trong khung nhìn.
HTML
<h1 data-scroll data-scroll-id="hey">Hey</h1>
JS
scroll.on('scroll', (args) => {
// Get all current elements : args.currentElements
if(typeof args.currentElements['hey'] === 'object') {
let progress = args.currentElements['hey'].progress;
console.log(progress);
// ouput log example: 0.34
// gsap example : myGsapAnimation.progress(progress);
}
});
Phụ thuộc
Tên | Mô tả |
---|---|
[Virtual Scroll] | Sự kiện cuộn tùy chỉnh với quán tính/momentum. |
[modularScroll] | Phát hiện phần tử trong khung nhìn. Rẽ nhánh từ nó, không phải là phụ thuộc. |
[bezier-easing] | Cho phép xác định một điều hòa cho chuyển động scrollTo |
Hỗ trợ trình duyệt
Hoạt động trên hầu hết các trình duyệt hiện đại. Chrome, Firefox, Safari, Edge…
Để có hỗ trợ cho IE 11, bạn cần polyfills. Bạn có thể sử dụng riêng của bạn hoặc bao gồm chúng trước tập lệnh của chúng tôi.
<script nomodule src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.6.0/polyfill.min.js" crossorigin="anonymous"></script>
<script nomodule src="https://polyfill.io/v3/polyfill.min.js?features=Object.assign%2CElement.prototype.append%2CNodeList.prototype.forEach%2CCustomEvent%2Csmoothscroll" crossorigin="anonymous"></script>
Ai đang sử dụng Locomotive Scroll?
- thierrychopain.com
- clmt.paris
- miragefestival.com/2020
- mazellier.design
- ccccontemple.com
- abhishekjha.me/muteza
- normal.studio
- mixlegno.com
- nfq.group
- works.studio
- beangels.eu
- izakaya-caen.fr
- white-elephant.fr
- henge07.com
- loirevalleylodges.com
Liên quan
Chi tiết Tải xuống:
Tác giả: locomotivemtl
Mã nguồn: https://github.com/locomotivemtl/locomotive-scroll
Giấy phép: MIT license