jQuery 动态调整元素及其内容 onClick

标签 jquery css html

您好,我想在我的页面上创建一个类似缩放的动画,它可以正常工作,但您无需调整窗口大小,因为在调整大小后一切都会变得困惑 :)。

概念是:当您单击分配给 .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);

});

最佳答案

看起来问题是您每次调整浏览器大小时都会添加一个新的点击事件。如果您取消绑定(bind) resizeE 顶部的旧点击事件,它会起作用。这是一个 updated fiddle link .

resizeE 的顶部添加了两行

$('.downsize').off('click');
$('.zoom').off('click');

请记住,当您通过 jQuery 绑定(bind)事件时,例如 .click,它不会覆盖任何以前的事件。

关于jQuery 动态调整元素及其内容 onClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13350472/

相关文章:

jquery - Moment.js "Invalid date"

php - 在 CSS 中格式化表格

html - Internet Explorer 站点兼容性

javascript - 使用 Javascript InsertAfter 长 HTML block

JQuery 在单击和/或悬停在 <area> 上时更改 <map> 图像源 - 我做错了什么?

jquery - 第二次更改下拉框时出错

javascript - 将粗体类添加到包含新消息的父类

html - 如何将我的元素放入容器 div 中

html - 如何使下拉菜单正确运行?

javascript - 如何在页面加载时生成随机数?