HTML5 21 – Kéo thả trong HTML5

0
11321

Xin chào các bạn, bài 21 trong series học HTML5, chúng ta sẽ tìm hiểu về kỹ thuật kéo thả trong HTML5.

Kéo và thả trong HTML5

Việc kéo thả nghĩa là thực hiện drag và drop các phần tử trong HTML5, học cách sử dụng các hàm API xử lý drag và drop.

Kích hoạt phần tử có thể kéo – thả

Tính năng kéo thả có thể áp dụng cho mọi phần tử HTML, mục đích để dịch chuyển phần tử tử vị trí này sang vị trí khác hay để thu thập dữ liệu.

Phần tử nào muốn có khả năng kéo (drag) đơn giản thêm vào phần tử đó thuộc tính: draggable="true"

Ví dụ:

Các hàm API về kéo và thả trong HTML5 dựa trên các hàm về sự kiện.

Kéo cái gì – Drag

Khi một phần tử được kéo, nó sẽ gọi hàm được chỉ ra trong thuộc tính ondragstart="function_name(event)", dữ liệu sự kiện event trong tham số hàm có chứa dữ liệu phần tử được kéo và gọi phương thức event.dataTransfer.setData() để lưu lại.

Ví dụ xây dựng hàm có tên drag(ev) làm nhiệm vụ này:

Hàm trên cho biết dữ liệu kéo thiết lập là kiểu "text" và trong nó lưu trữ ID của phần tử (divdrag). Có hàm đó rồi có thể áp dụng vào phần tử muốn kéo, ví dụ kích hoạt phần tử div có id là divdrag có khả năng kéo:

Thả vào đâu (drop)

Khi dữ liệu được thả vào một phần tử nào đó, thì sự kiện drop sẽ phát sinh. Mặc định thì dữ liệu hay phần tử này không có phép thả lên phần tử khác. Nên muốn cho phép thả vào một phần tử thì cần gọi phương thức event.preventDefault() thiết lập tại thuộc tính ondragover.

Xây dựng hàm có tên allowDrop dùng để thiết lập cho phép phần tử chấp nhận phần tử khác thả vào:

Sau khi có hàm allowDrop như trên thì phần tử nào muốn thiết lập cho phép thả vào thì thêm thuộc tính là ondragover="allowDrop(event)". Ví dụ, box sau cho phép thả vào:

Xử lý thả phần tử (drop)

Khi dữ liệu thả vào một phần tử, sự kiện thả sẽ diễn ra và nó sẽ gọi hàm thiết lập trong thuộc tính ondrop. Ví dụ xây dựng hàm để xử lý sự kiện này và lấy dữ liệu thả vào:

Giả sử đặt tên hàm là drop, có thể xây dựng hàm như sau:

Sau khi có hàm drop thiết lập phần tử với thuộc tính ondrop dạng như sau:

Kết hợp toàn bộ mã kéo thả

Toàn bộ các đoạn code về kéo thả trên bạn có thể kế hợp lại để chúng hoạt động chính xác thành một nội dung như sau:

Giờ chạy code trên, bạn đã có thể kéo thẻ div có chứa logo ảnh vào id box rồi.

Kết luận

Xong rồi, đây là một kỹ năng tương đối khó trong HTML5, đòi hỏi các bạn phải có cả kiến thức về Javascript nữa. Nhưng cũng là 1 chủ đề nên học đúng không nào.

Chúc các bạn học tập tốt!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây