J'ai écrit la plupart du code ... et lorsque l'élément est "complètement" sur l'autre élément, cela fonctionne. Le problème est que je ne veux pas simplement que cela soit vrai lorsque l'élément est "complètement" sur l'élément, je veux aussi qu'il soit vrai lorsque l'élément est en partie sur l'autre élément.
Voici mon code: P>
element = this.element.getStyles('left', 'top', 'width', 'height');
elementLeftX = element.left.toInt();
elementLeftY = element.top.toInt();
elementRightX = (element.width.toInt() + element.left.toInt());
elementRightY = (element.top.toInt() + element.height.toInt());
el = this.positions ? this.positions[i] : this.getDroppableCoordinates(el); // Element drop area
elLeftX = el.left.toInt();
elLeftY = el.top.toInt();
elRightX = (el.width.toInt() + el.left.toInt());
elRightY = (el.height.toInt() + el.top.toInt());
if (((elLeftY <= elementLeftY) && (elementLeftY <= elRightY)) && ((elLeftY <= elementRightY) && (elementRightY <= elRightY))) {
if (((elLeftX <= elementLeftX) && (elementLeftX <= elRightX)) && ((elLeftX <= elementRightX) && (elementRightX <= elRightX))) {
return true;
} else {
return false;
}
} else {
return false;
}
3 Réponses :
Si vous êtes intéressé à utiliser jQuery (ou si vous êtes déjà), il existe de superbes plug -rs de détection de collision disponibles. Voici une réponse précédente détaillant un https://stackoverflow.com/a/6052254/374866 p>
Lorsque vous essayez est appelé "Détection de collision". Vous devez obtenir les compensations et les dimensions calculées de l'élément, pas seulement les déclarations de style de l'élément. P>
Cette publication peut aider à expliquer: p>
Méthode de jeu vidéo standard: Voir la démo h2 > p>
J'ai remarqué que cela reviendrait également vrai non seulement sur le chevauchement, mais aussi s'ils touchent mais ne se chevauchent pas. Si vous souhaitez se chevaucher uniquement, modifiez le << / code> s et > code> s sur <= code> et > = code>. jsfiddle.net/emy49/1
S'il vous plaît rappelez-vous que les deux éléments doivent être visibles dans le DOM! Ainsi, par exemple, si vous êtes appendicchild code> de nouveaux éléments sur le DOM actuel, assurez-vous de le faire avant d'appeler la fonction ci-dessus. Ces informations sont particulièrement utiles pour les développeurs de vulgarisation Google si vous ajoutez de nouveaux éléments à DOM déjà existant. En outre, dans mon cas, je n'ai pas pu obtenir offset code> les valeurs donc je les ai donc obtenues en appelant let El1val = el1.getboundingClientRect () code> puis il suffit de remplacer des variables à, par exemple. el1val.bottom <= el2.offsettop code>.
Obtenir le style d'un article ne vous donnera pas sa position absolue. Si l'article est enveloppé dans un autre élément qui a son propre positionnement, qu'est-ce que alors? Plus à considérer ici.
Oui, eh bien ce n'est pas vraiment un problème. Je ne pense pas que ce serait si difficile de s'adapter.