我正在使用Jquery Transit和Masonry JS。我的div中有一个按钮,当点击时,应该将容器位置更改为固定并将其移动到屏幕的中心(使用Jquery Transit)。但是,单击时,框移动到屏幕的右下角。
您可以查看jsfiddle以查看我的问题。
javascript:
WebFont.load({
google: { families: [ 'Signika:400,700:latin', 'Open+Sans::latin', 'Hammersmith+One::latin' ]},
active: triggerMasonry,
inactive: triggerMasonry
});
var $container;
function triggerMasonry() {
// don't proceed if $container has not been selected
if ( !$container ) {
return;
}
//Joocy
// init Masonry
$container.imagesLoaded( function() {
$container.masonry({
itemSelector: '.p-small',
"columnWidth": '.grid-size',
gutter:10
});
});
}
// trigger masonry on document ready
$container = $('#omni-content');
triggerMasonry();
var $cards = $('.p-small');
var cardInFocus = null;
$cards.each(function(index, elem){
var $elem = $(elem);
var pos = $elem.position();
$(elem).data('orig-x', pos.left);
$(elem).data('orig-y', pos.top);
});
var reset = function(){
if(cardInFocus){
$(cardInFocus).transition({x:0,y:0});}
};
$(".o-help").click(function(e) {
cardInFocus = $(this).closest(".p-small");
var $doc = $(document);
var centerX = $doc.width() / 2;
var centerY = $doc.height() / 2;
var $card = $(this).closest(".p-small");
var widthcard = $card.width();
$(".explain").css('position','fixed');
$(".explain").css('width', widthcard);
$card.addClass('explain');
var origX = $card.data('orig-x');
var origY = $card.data('orig-y');
$(".modal-bg").fadeIn("slow");
$(this).closest(".p-small").transition({x:centerX - origX,y:centerY-origY, duration:750});
});
$cards.blur(function(e){
reset();
});
答案 0 :(得分:1)
问题是您正在将容器的左上角移动到中心而不是容器的中心。这就是为什么你可能会认为它没有居中。要移动容器的中心,您需要补偿容器的一半宽度和一半高度。
$(".o-help").click(function(e) {
cardInFocus = $(this).closest(".p-small");
var $doc = $(document);
var centerX = $doc.width() / 2;
var centerY = $doc.height() / 2;
var destX = centerX - cardInFocus.width()/2;
var destY = centerY - cardInFocus.height()/2;
var $card = $(this).closest(".p-small");
var widthcard = $card.width();
$(".explain").css('position','fixed');
$(".explain").css('width', widthcard);
$card.addClass('explain');
var origX = $card.data('orig-x');
var origY = $card.data('orig-y');
$(".modal-bg").fadeIn("slow");
$(this).closest(".p-small").transition({x:destX - origX,y:destY-origY, duration:750});
});
您可以查看this fiddle以查看结果。