我想要实现的是这个动画
我缺少什么?如果不使用position:absolute,我怎样才能达到上述结果
到目前为止我做了什么
HTML:
@H_301_14@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'}); });
最佳答案这可能对您有所帮助:http://jsfiddle.net/holp/vkgLdv38/1CSS
@H_301_14@@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
@H_301_14@
JS
@H_301_14@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); } });