4

我有一个需要交互的元素网格。单击其中一个 div 时,它会增长到更大的大小。对于大多数从右下角“增长”的元素来说,div 是可以接受的:

$(.my-div).animate({ width: "379px", height: "204px" });

但是,在某些情况下,右下角的“增长”不适用于应用程序的其余部分。

例如,我可能需要从右上角开始增长。有任何想法吗?我喜欢动画到新宽度/高度的简单性,但我不确定它是否可以实现除了从右下角拖动之外的效果。

提前致谢 :)

4

2 回答 2

2

有几种方法可以做到这一点,或者像你提到的那样使用 jQuery animate,或者使用 CSS 过渡。他们看起来像

.child.clicked {
  height: 100px;
  width: 300px;
  transition: width 2s, height 2s;
-moz-transition: width 2s, height 2s;
-webkit-transition: width 2s, height 2s; 
-o-transition: width 2s, height 2s; 
}

或者

  $('.child2').click(function() {
  $(this).animate({
    width: ['300px', 'swing'],
    height: ['100px', 'swing']
      }, { duration: "slow", easing: "easein" });
  });

这是一个玩弄 http://jsbin.com/uxicil/1/edit的例子

有许多缓动属性和东西需要调整,直到你得到你想要的。

于 2013-02-01T20:39:28.007 回答
0

我为客户端实现了一个详细的功能,可以轻松放入您想要的任何内容..

http://jsfiddle.net/gschutz/393Cb/1/

function increase(event){
    $this = $(event.target);
    if( $(".bigger").length > 0 )
        decrease($(".bigger"));
    $fixed_corner = $this.attr("rel").split(":");
    if( !$this.hasClass("bigger") ){
        $new = $this.clone();
        $new.insertAfter($this);
        $new.css("position", "absolute").addClass("bigger");
        var offset = $this.position(), w = $this.outerWidth(true), h = $this.outerHeight(true);
        if( $fixed_corner[0] == "top" )
            $new.css("top", offset.top);
        else
            $new.css("bottom", offset.top-h);
        if( $fixed_corner[1] == "left" )
            $new.css("left", offset.left);
        else
            $new.css("right", offset.left-w);
        $new.animate({width: "+=50", height: "+=30", backgroundColor: "#eee"});
        console.log($fixed_corner);
    } else {
        decrease($this);
    }
}
function decrease($this){
    $this.animate({width: "-=50", height: "-=30", backgroundColor: "#aaa"}, 300, function(){$(this).remove();});    
}

您可以添加其他方法来调整对象的大小。
请注意 div 的大小。

于 2013-02-01T22:17:11.243 回答