Phóng to ảnh bằng javascript

Nov - 2020

14

Cẩm nang chia sẻ kiến thức

Bước 1 : Xây dựng cấu trúc HTML

Bước 2 : Thêm CSS

Bước 3 : Tạo Javascript để thực hiện thu phóng hình ảnh. Tham khảo code dưới đây: 

Note : offsetHeigth, offsetWidth là thuộc tính chỉ đọc trả về chiều cao, chiều rộng bố trí của một phần tử, là phép đo tính bằng px của chiều cao , chiều rộng CSS phần tử

Kết quả sau khi chạy chương trình :

Nguồn : Devmaster Academy

Đã đăng vào thg 8 26, 2017 3:17 SA 2 phút đọc

Khi xây dựng một website bán hành điện tử, giới thiệu sản phẩm... ta luôn muốn sử dụng thật nhiều ảnh đẹp có độ chi tiết cao để gửi đến khách hàng những góc nhìn chi tiết nhất về sản phẩm.

Tôi tin rằng phần lớn các website bán hàng đều có khả năng zoom vào các ảnh giới thiệu sản phẩm. Tất cả chúng đều sử dụng các plugin của jQuery ví dụ như jQuery Zoom hay EasyZoom

Nhưng thực sự để làm được điều này không nhất thiết cần phải có sự hỗ trợ của jQuery. Dưới đây tôi sẽ trình bày từng bước việc implement một thư viện zoom ảnh đơn giản mà không cần sử dụng đến jQueryL

Bắt đầu với một thẻ HTML:


    

Ở đây ta đặt ảnh nhỏ của sản phẩm làm background cùng với ảnh chính trong thẻ

Và xử lý với tọa độ được cung cấp từ touch event:

function zoom[e]{
  var zoomer = e.currentTarget;
  e.offsetX ? offsetX = e.offsetX : offsetX = e.touches[0].pageX
  e.offsetY ? offsetY = e.offsetY : offsetX = e.touches[0].pageX
  x = offsetX/zoomer.offsetWidth*100
  y = offsetY/zoomer.offsetHeight*100
  zoomer.style.backgroundPosition = x + '% ' + y + '%';
}

Bây giờ ta đã có một thư viện zoom ảnh không sử dụng jQuery hay một plugin nào khác.

Ngoài ra, ta có thể sửa đổi thêm một chút bằng cách sử dụng tính năng đặt biến của CSS:

figure.zoom {
  --bg-x: 50%;
    --bg-y: 50%;
    background-position: var[--bg-x] var[--bg-y];
  position: relative;
  width: 500px;
  overflow: hidden;
  cursor: zoom-in;
}
figure.zoom img {
  transition: opacity .5s;
  display: block;
    width: 100%;
}
figure.zoom img:hover { opacity: 0; }

Trong phần JavaScript, ta sẽ đặt giá trị cho các biến -bg-x-bg-y thay vì trực tiếp đặt vị trí background:

function zoom[e]{
  var zoomer = e.currentTarget;
  e.offsetX ? offsetX = e.offsetX : offsetX = e.touches[0].pageX
  e.offsetY ? offsetY = e.offsetY : offsetX = e.touches[0].pageX
  x = offsetX/zoomer.offsetWidth*100
  y = offsetY/zoomer.offsetHeight*100
  zoomer.style.setProperty['--bg-x', x + '%'];
  zoomer.style.setProperty['--bg-y', y + '%'];
}

Nếu vì một lý do gì đó mà bạn không thể sử dụng jQuery hoặc không muốn sử dụng thêm plugin cho thư viện Javascipt vốn đã đồ sộ của mình thì mấy hàm nhỏ trên đây là đủ để hoàn thành nhiệm vụ. Hy vọng bài viết này sẽ giúp ích cho các bạn.

Dưới đây là một đoạn code tham khảo: //jsfiddle.net/xkgs9w7n/3/

All rights reserved

Chủ Đề