我正试图在鼠标悬停时对图像进行放大缩放。它应该看起来像跟随图像。如果不使用任何插件,我怎么能这样做?
答案 0 :(得分:1)
试试这个,它使用两个不同的图像,一个小图像,然后是相同图像的较大版本进行放大。
$(document).ready(function(){
var native_width = 0;
var native_height = 0;
$(".magnify").mousemove(function(e) {
if(!native_width && !native_height) {
var image_object = new Image();
image_object.src = $(".small").attr("src");
native_width = image_object.width;
native_height = image_object.height;
} else {
var magnify_offset = $(this).offset();
var mx = e.pageX - magnify_offset.left;
var my = e.pageY - magnify_offset.top;
if(mx < $(this).width() && my < $(this).height() && mx > 0 && my > 0) {
$(".large").fadeIn(100);
} else {
$(".large").fadeOut(100);
}
if($(".large").is(":visible")) {
var rx = Math.round(mx/$(".small").width()*native_width - $(".large").width()/2)*-1;
var ry = Math.round(my/$(".small").height()*native_height - $(".large").height()/2)*-1;
var bgp = rx + "px " + ry + "px";
var px = mx - $(".large").width()/2;
var py = my - $(".large").height()/2;
$(".large").css({left: px, top: py, backgroundPosition: bgp});
}
}
});
});
&#13;
* {
margin: 0;
padding: 0;
}
.magnify {
width: 200px;
margin: 50px auto;
position: relative;
}
.large {
width: 175px; height: 175px;
position: absolute;
box-shadow: 0 0 0 7px rgba(255, 255, 255, 0.85),
0 0 7px 7px rgba(0, 0, 0, 0.25),
inset 0 0 40px 2px rgba(0, 0, 0, 0.25);
background: url('http://thecodeplayer.com/uploads/media/iphone.jpg') no-repeat;
display: none;
}
.small { display: block; }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="magnify">
<div class="large"></div>
<img class="small" src="http://thecodeplayer.com/uploads/media/iphone.jpg" width="200"/>
</div>
&#13;
修改自:http://thecodeplayer.com/walkthrough/magnifying-glass-for-images-using-jquery-and-css3