您好我想在我的页面上创建一个像动画一样的缩放,这是有效的,你没有调整窗口的大小,因为在调整大小后一切都变得凌乱:)。
概念是:当您点击分配给.click()函数的链接而不是动画时,页面的左侧和右侧滑出,中间部分变为“全屏”,如果您单击退出,则向左然后右转回来。
我当前代码的问题是在您调整浏览器大小并单击其中一个按钮之后,而不是创建额外效果,或者只是在conatiner的动画完成后图像大小动画正在运行。
我被卡住了,我不知道如何在窗口调整大小之前让它变得如此平滑。
代码中的布局如下所示:
<!doctype html>
<html>
<head>
<style>
html, body {height:100%; padding:0; margin:0; overflow:hidden;}
#left{width:400px; height:100%; position:absolute; left:0; top:0; overflow:hidden;}
#right{width:200px; height:100%; position:absolute; right:0; top:0; overflow:hidden;}
#center{height:100%; position:absolute; left:400px; right:200px; top:0; overflow:hidden;}
</style>
</head>
<body>
<div id="left"></div>
<div id="center">
<a href="#" onClick="return false;" class="zoom">Fullscreen</a>
<a href="#" onClick="return false;" class="downsize">Exit</a>
<img src="img.jpg" />
</div>
<div id="right"></div>
</body>
</html>
现在jQuery代码如下所示:
function resizeE(){
var wWidth = $(window).width();
var wHeight = $(window).height();
var cWidth = $('#center').width();
var cHeight = $('#center').height();
var iWidth = $('#center img').width();
var iHeight = $('#center img').height();
var calcWidth = wHeight*1.7777;
var iMargin = (cWidth-calcWidth)/2;
var c2Width = wWidth-600;
var i2Margin = (c2Width-calcWidth)/2;
var posLeft = $('#center').position().left;
if(posLeft == '400'){
$('#center img').css({'height': wHeight+'px', 'width': calcWidth+'px', 'margin-left': iMargin+'px'});
}else{
$('#center img').css({'width': wWidth+'px', 'height': (wWidth/1.7777)+'px', 'margin-left': '0'});
}
$('.zoom').click(function(){
$('.downsize').fadeIn('fast');
$('#center img').animate({width: wWidth+'px', height: (wWidth/1.7777)+'px', marginLeft:'0'}, 1200);
$('#center').animate({left: '0', right: '0'}, 1200);
$('#left').animate({marginLeft:'-400px'}, 1200);
$('#right').animate({marginRight:'-200px'}, 1200);
});
$('.downsize').click(function(){
$('.downsize').fadeOut('fast');
$('#center img').animate({width: calcWidth+'px', height: wHeight+'px', marginLeft: i2Margin+'px'}, 1200);
$('#center').animate({left: '400px', right: '200px'}, 1200);
$('#left').animate({marginLeft:'0'}, 1200);
$('#right').animate({marginRight:'0'}, 1200);
});
}
jQuery(document).ready(function($) {
$('.downsize').hide();
resizeE();
$(window).resize(resizeE);
});
答案 0 :(得分:0)
看起来问题是每次调整浏览器大小时都会添加一个新的点击事件。如果解除绑定resizeE
顶部的旧点击事件,则可以正常运行。这是一个updated fiddle link。
在resizeE
$('.downsize').off('click');
$('.zoom').off('click');
请记住,当您通过jQuery绑定事件时,例如.click
,它不会覆盖任何先前的事件。