Điều này có vẻ khá đơn giản, nhưng vì một lý do nào đó tôi không thể quấn bộ não của mình xung quanh nó. Tôi có một hình ảnh bên trong div "khung nhìn", trong đó thuộc tính tràn được đặt thành ẩn.Javascript (jQuery) Chia tỷ lệ hình ảnh thành điểm trung tâm của vùng chứa
Tôi đã triển khai phóng to và thu phóng đơn giản với giao diện người dùng jQuery, tuy nhiên tôi gặp sự cố khi thu phóng xuất hiện từ trung tâm của chế độ xem. Tôi đã làm một chút screencast từ Photoshop hiệu ứng tôi đang cố gắng để tái sản xuất: http://dl.dropbox.com/u/107346/share/reference-point-zoom.mov
Trong PS bạn có thể điều chỉnh điểm tham chiếu mở rộng một đối tượng sẽ quy mô từ điểm đó. Rõ ràng điều này là không thể với HTML/CSS/JS, vì vậy tôi đang cố gắng tìm các giá trị CSS bên trái và trên cùng thích hợp để bắt chước hiệu ứng.
Đây là mã trong câu hỏi, với một vài bit không cần thiết loại bỏ:
html
<div id="viewport">
<img id="map" src="http://dl.dropbox.com/u/107346/share/fake-map.png" alt="" />
</div>
<div id="zoom-control"></div>
javascript
$('#zoom-control').slider({
min: 300,
max: 1020,
value: 300,
step: 24,
slide: function(event, ui) {
var old_width = $('#map').width();
var new_width = ui.value;
var width_change = new_width - old_width;
$('#map').css({
width: new_width,
// this is where I'm stuck...
// dividing by 2 makes the map zoom
// from the center, but if I've panned
// the map to a different location I'd
// like that reference point to change.
// So instead of zooming relative to
// the map image center point, it would
// appear to zoom relative to the center
// of the viewport.
left: "-=" + (width_change/2),
top: "-=" + (width_change/2)
});
}
});
Đây là dự án trên JSFiddle: http://jsfiddle.net/christiannaths/W4seR/
Brilliant! Cảm ơn bạn :) – Christian