Css和Jquery动画

前端之家收集整理的这篇文章主要介绍了Css和Jquery动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想要实现的是这个动画

链接到动画是Material Design

我缺少什么?如果不使用position:absolute,我怎样才能达到上述结果

到目前为止我做了什么

HTML:

CSS

#product_list {
    right: 0;
    left: 0;
    text-align: center;
}
.product-list .item {
    display: inline-block;
    position: relative;
    border-radius: 3px;
    margin: 4px;
    overflow: hidden;
    text-align: start;
    background-color: #fff;
    box-shadow: 0 2px 10px 0 rgba(0,0.16);
    -webkit-transition: border-radius 500ms cubic-bezier(0.4,0.2,1),width 500ms cubic-bezier(0.4,height 500ms cubic-bezier(0.4,-webkit-transform 500ms cubic-bezier(0.4,1);
}
.item-top {
    width: 200px;
    height: 200px;
}
.item-bottom {
    padding: 8px;
    line-height: 1.5;
}

使用Javascript

$('.item').on('click','a',function(e){
    e.preventDefault();
    var target=$(e.currentTarget);
    var par=target.parent();
    par.css({width:par.width()+'px',height:par.height()+'px'});
    //par.css({height:'300px',width:'500px'});
    par.animate({height:'300px'},{"queue": false,"duration":500}).animate({width:'500px'},500,'linear'); par.css({transform:'translate('+0+'px,'+50+'px)scale(1.1,1.1)'});
    par.css({'transform-origin':'0,0',zIndex:'9999'});
});

Fiddle

最佳答案
这可能对您有所帮助:http://jsfiddle.net/holp/vkgLdv38/1

CSS

@import url(http://fonts.googleapis.com/css?family=Source+Sans+Pro:300);
.product-list { list-style: none; padding: 0 }
.product-list  * { font-family: 'Source Sans Pro',sans-serif; }
.product-list li {
    width: 200px;
    float: left;
    margin: 20px;
    Box-shadow: 0 0 10px rgba(0,0.2);
    background-color: #fff;
    overflow: hidden;
    cursor: pointer;
}
.product-list li div {
    width: 200px;
    height: 200px;
    z-index: 10;
}
.product-list li h3 {
    margin: 10px;
    z-index: 1;
}
.product-list li p {
    text-overflow: ellipsis;
    overflow: hidden;
    white-space: nowrap;
    margin: 10px;
    height: 20px;
    z-index: 1;
}
.place {
    visibility: hidden;
}

HTML

    JS

    chosen = null;
    
    $('li').click(function() {
    
        var object = $(this);
        var margin = object.css('margin').replace(/[^-\d\.]/g,'');
        var scroll = $(window).scrollTop();
    
        if (chosen == null) {
    
        var ft = ($(window).height() / 2) - (300 / 2) - margin; var fl = ($(window).width() / 2) - (600 / 2) - margin;
    
        $('.product-list li').not(this).css('cursor','default');
        object.clone().insertAfter(object).addClass('place');
        object.css({'position':'fixed','top': object.offset().top - margin - scroll,'left': object.offset().left - margin}).animate({'top':ft,'left':fl,'width':'600px','height':'300px'});
        object.children('div').animate({'width':'300px','height':'300px'});
        setTimeout( function(){
            object.children('div').css({'position':'absolute','top':'0','left':'0'});
            object.children('h3').css({'position':'absolute','left':'0'}).animate({'left':'300px'});
            object.children('p').css({'position':'absolute','top':'40px','left':'0','white-space':'normal','width':'280px','height':'240px'}).animate({'left':'300px'});
        },300);
        chosen = this;
    
    
        } else if (chosen == this) {
    
        var ph = $('.place'); var pht = ph.offset().top - margin - scroll; var phl = ph.offset().left - margin; var phw = ph.width(); var phh = ph.height();
    
        object.children('p').animate({'left':'0'});
        object.children('h3').animate({'left':'0'});
        setTimeout( function(){
            object.children('p').removeAttr('style');
            object.children('h3').removeAttr('style');
            object.children('div').css({'position':'','top':'','left':''}).animate({'width':'200px','height':'200px'});
            object.animate({'top':pht,'left':phl,'width':phw,'height':phh});
            setTimeout( function(){
                object.children('p').removeAttr('style');
                object.children('h3').removeAttr('style');
                object.children('div').css({'width':'','height':'','left':''});
                ph.remove();
                object.removeAttr('style');
                $('.product-list li').not(this).css('cursor','');
                chosen = null;
            },500);
        },300);
    
        }
    });
    

    猜你在找的CSS相关文章