【问题标题】:Sliding Divs with Percentage Widths具有百分比宽度的滑动 div
【发布时间】:2012-04-12 20:48:46
【问题描述】:

在包含 div 的 100% 宽度内,我有 2 个 div,70% 和 30% 宽度。单击时,我希望 70% 的 div 更改为 100% 的宽度并“滑过” 30% 的 div,然后在第二次单击时缩回 70% 并恢复 30% 的 div。我在下面达到了一半的预期效果;它“滑过”较小的 div,但保留其 70% 的宽度。我无法在没有断断续续的动画的情况下将宽度扩展到 100%,因为我在切换后调用了宽度更改,或者它扩展到 100%,但其他 30% 的 div 仍然可见并将 div 敲到 2 行.

http://jsfiddle.net/establish/scKf2/

我确实看到了另一个类似的问题,但它们是静态宽度,如果没有再次出现上述问题,我无法成功地将它们转换为百分比。

http://jsfiddle.net/establish/kjDYh/

HTML

<div id='ember'>

<div id='sidebar'>
</div>

<div id='activity'>
    <a href='#' id='trigger'>Nav</a>
</div>

</div>

CSS

#sidebar { 
background-color: green; 
float: left;
height: 200px;
position: relative;
z-index: 5;
width: 30%;
}

#activity { 
background-color: purple; 
float: left;
height: 200px;
position: relative;
z-index: 10;
width: 70%;
}

a { 
color: white;
display: block; 
padding: 12px; 
text-decoration: none;
}

JS - 第一次尝试

$('#trigger').click(function() {

$('#sidebar').animate({width: 'toggle'});

});​

JS - 第二次尝试

$('#trigger').toggle(function() {
    $('#sidebar').animate({width: '+=22em'});
    $('#activity').animate({width: '-=22em'});
},function() {
    $('#sidebar').animate({width: '-=22em'});
    $('#activity').animate({width: '+=22em'});
});​

【问题讨论】:

    标签: jquery


    【解决方案1】:

    你可以这样做吗?

    http://jsfiddle.net/kjDYh/2/

    基本上将nav设置为0px,main设置为100%?

    $('#trigger').toggle(function() {
        $('#sidebar').animate({width: '100%'});
        $('#activity').animate({width: '0px'});
    },function() {
        $('#sidebar').animate({width: '70%'});
        $('#activity').animate({width: '30%'});
    });​
    

    【讨论】:

    • 糟糕,您可能需要将#sidebar 和#activity 宽度轮换
    • 呸,到底简单。谢谢!
    • 为什么从没想过使用0px 而不是0%。 +1
    【解决方案2】:

    为什么不在 jquery 调用中设置宽度 %?

    $('#trigger').click(function() {
    
        $('#sidebar').animate({width: '100%'});
        $('#activity').animate({width: '0px'});
    
    });​
    

    切换,用新按钮点击返回。

    http://jsfiddle.net/zWxUj/10/

    【讨论】:

    • 对不起,我已经编辑它来解释它需要来回切换
    【解决方案3】:
    $('#trigger').toggle(
        function() {
            $('#activity').animate({width: '100%'});
            $('#sidebar').animate({width: '0%'});
        },
        function() {
            $('#activity').animate({width: '70%'});
            $('#sidebar').animate({width: '30%'});
        });
    

    这行得通吗?

    jsfiddle

    【讨论】:

    • 你不是刚刚发布了我的 jsfiddle 示例吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 2014-08-28
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多