平滑javascript动画的问题

平滑javascript动画的问题,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我目前正在制作一个javascript动画,用于转换事件操作的细节——但是,我在删除某个rogue div时遇到了一个问题 我的init函数如下所示: var demo = (function(window, undefined) { function init() { _mapPolygons(pattern); _bindCards(); $(document.getElementsByClassName("card__overlay")).addClas

我目前正在制作一个javascript动画,用于转换事件操作的细节——但是,我在删除某个rogue div时遇到了一个问题

我的init函数如下所示:

var demo = (function(window, undefined) {

  function init() {

    _mapPolygons(pattern);

    _bindCards();

    $(document.getElementsByClassName("card__overlay")).addClass(CLASSES.overlayHidden);

  };

   return {
     init: init
   };

})(window);

window.onload = demo.init;
完整片段如下:

“严格使用”;
/**
*演示。
*/
var demo=(函数(窗口,未定义){
/**
*CSS选择器的枚举。
*/
变量选择器={
模式:'.pattern',
卡片:“.card”,
cardImage:“.card\u image”,
卡片关闭:'.card_ubtn-close',
};
/**
*CSS类的枚举。
*/
变量类={
patternHidden:'模式--隐藏',
多边形:“多边形”,
polygonHidden:'多边形--隐藏',
overlayHidden:'覆盖--隐藏',
};
/**
*svg路径和点的地图。
*/
变量polygonMap={
路径:null,
点数:空
};
/**
*卡片实例的容器。
*/
var布局={};
/**
*初始化演示。
*/
函数init(){
//有关选项,请参见:https://github.com/qrohlf/Trianglify
变量模式=三角形({
宽度:window.innerWidth,
高度:window.innerHeight,
单元格大小:90,
差异:1,
笔划宽度:0.6,
颜色函数:函数(x,y){
返回“#f0f3f5”;
}
}).svg();//呈现为svg。
_地图多边形(图案);
_bindCards();
$(document.getElementsByClassName(“card\uu overlay”).addClass(CLASSES.overlayHidden);
};
/**
*存储路径元素、地图坐标和大小。
*@param{Element}模式使用Triangalify生成的SVG元素。
*@私人
*/
函数_映射多边形(图案){
//将SVG附加到模式容器中。
$(SELECTORS.pattern).append(pattern);
//将节点列表转换为数组,
//使用了“.childNodes”,因为IE不支持SVG上的“.childrends”。
polygonMap.path=[].slice.call(pattern.childNodes);
polygonMap.points=[];
polygonMap.path.forEach(函数(多边形){
//通过向每个svg路径添加CSS类来隐藏多边形(由于IE而使用ATTR)。
$(polygon.attr('class',CLASSES.polygon+''+CLASSES.polygonHidden);
var rect=polygon.getBoundingClientRect();
变量点={
x:rect.left+rect.width/2,
y:rect.top+rect.height/2
};
polygonMap.points.push(点);
});
//现在所有多边形都已隐藏,请显示图案容器。
$(SELECTORS.pattern).removeClass(CLASSES.patternHidden);
};
/**
*绑定卡片元素。
*@私人
*/
函数_bindCards(){
变量元素=$(选择器.card);
$。每个(元素、功能(卡片、i){
var实例=新卡(i,卡);
布局[i]={
卡片:例如
};
var cardImage=$(card.find)(选择器.cardImage);
var cardClose=$(card.find)(选择器.cardClose);
$(cardImage).on('click',_playSequence.bind(this,true,i));
$(cardClose).on('click',_playSequence.bind(this,false,i));
});
};
/**
*为打开或关闭动画创建一个序列并播放。
*@param{boolean}isoponclick标志,用于检测单击打开的时间。
*@param{number}id单击的卡的id。
*@param{Event}是事件对象。
*@私人
*
*/
函数_播放序列(等重叠,id,e){
var card=布局[id]。卡片;
//当卡已打开且用户单击图像时,阻止。
if(card.isOpen&&isOpenClick)返回;
//为整个序列创建时间线。
var序列=新的时间线({暂停:真});
变量tweenOtherCards=\u显示其他卡(id);
如果(!card.isOpen){
//开放序列。
顺序。添加(其他两张卡);
sequence.add(card.openCard(_onCardMove),0);
}否则{
//闭合序列。
var closeCard=card.closeCard();
var position=closeCard.duration()*0.8;//80%的closeCard-tween。
顺序。添加(closeCard);
顺序。添加(其他两张卡,位置);
}
sequence.play();
};
/**
*显示/隐藏所有其他卡。
*@param{number}id要避免的加密卡的id。
*@私人
*/
功能\u显示隐藏其他卡(id){
var TL=新的时间线岩;
var selectedCard=布局[id]。卡片;
用于(布局中的变量i){
var card=布局[i]。卡片;
//使用“openCard”调用时。
如果(card.id!==id&&!selectedCard.isOpen){
TL.add(card.hideCard(),0);
}
//使用“closeCard”调用时。
if(card.id!==id&&selectedCard.isOpen){
TL.add(card.showCard(),0);
}
}
返回TL;
};
/**
*在Tween更新时执行的回调,无论多边形是什么
*落入由路径的卡片宽度定义的圆形区域
*CSS类将相应地更改。
*@param{Object}在浮动期间跟踪卡的大小和位置。
*@私人
*/
功能_onCardMove(轨道){
var半径=轨道宽度/2;
变量中心={
x:track.x,
y:轨道,y
};
polygonMap.points.forEach(函数(点,i){
if(_检测点内圆(点、半径、中心)){
$(polygonMap.path[i]).attr('class',CLASSES.polygon);
}否则{
$(polygonMap.path[i]).attr('class',CLASSES.polygon+''+CLASSES.polygonHidden);
}
});
}
/**
*检测点是否位于圆区域内。
*@私人
*/
功能_检测点内圆(点、半径、中心){
var xp=点x;
var yp=点y;
var xc=中心x;
var yc=中心y;
var d=半径*半径;

var isInside=Math.pow(xp-xc,2)+Math.pow(yp-yc,2)你的标题说你在动画方面有问题,但问题中的文字说你在删除某个流氓div时有问题是哪一个?你也没有解释这两个问题,你只是说你有一个问题。@PatrickEvans嗨Patrick-这是真的。我经常在选择单词时出错。基本上,我在unit函数中所做的不是删除我正在选择的div(这是整个动画中的一个小部分)。你看了吗