1
votes

Div déplaçable et redimensionnable avec angulaire

J'essaie de créer des conteneurs div redimensionnables et ils sont également déplaçables.

J'ai utilisé le matériau angulaire Drag and Drop et élément redimensionnable angulaire

Voici une solution de contournement https://stackblitz.com/edit/angular-syurbs? embed = 1 & file = src / polyfills.ts

Mais lorsque j'applique les deux, je peux faire glisser mais je ne peux pas redimensionner.

https://stackblitz.com/edit /angular-41rqyo?file=src%2Fapp%2Fapp.component.html

Comment puis-je réaliser les deux en un?


0 commentaires

3 Réponses :


-1
votes

Utilisez la directive cdkDragHandle sur une icône ou un bouton

Voir l'intégralité de l'API ici https://material.angular.io/cdk/ glisser-déposer / api

Exemple: https://stackblitz.com/angular/jamgbjgmynoq


2 commentaires

Je demande comment réaliser un "glisser-déposer" et un "redimensionnable"


Oui, lorsque vous utilisez un gestionnaire pour faire glisser l'élément, vous pourrez le redimensionner. Il n'y a pas d'autre moyen de faire cela dans Angular Material



0
votes

Un moyen simple de créer un composant angulaire déplaçable et redimensionnable

Vous pouvez réaliser vous-même le composant déplaçable et redimensionnable sans matériau angulaire. Vous devez le faire en trois étapes.

  1. Rendre un div redimensionnable
  2. Liez le mouvement de la souris à la position du div pour le rendre déplaçable / déplaçable
  3. Ajoutez des restrictions de limite aux mouvements de votre souris

L'étape (2) nécessite de calculer le mouvement de votre souris et d'ajouter le même nombre de mouvements à la position supérieure et gauche de votre div.

À l'étape (3), vous devrez calculer la position des limites supérieure, droite, inférieure et gauche du conteneur extérieur.

Pour obtenir la position de l'élément div, vous devez utiliser l'API Web - Element.getBoundingClientRect ()

Pour obtenir les positions de la souris, vous devez ajouter un écouteur de déplacement de la souris à la fenêtre et un écouteur de souris à l'élément div lui-même.

J'ai écrit un article sur la façon de réaliser ces trois étapes avec des explications et des graphiques supplémentaires. Vous pouvez jeter un œil si vous ne savez toujours pas comment y parvenir.

Créer un composant angulaire redimensionnable et déplaçable


2 commentaires

avez-vous le référentiel? Il y a des parties que je ne comprends pas


Bonjour @RicardoSanchezSantos, oui, veuillez trouver le code ici: github.com/theideasaler/angular-resizable- déplaçable



0
votes

Vous pouvez ajouter un élément hitbox à l'intérieur de votre draggable, il doit être légèrement plus petit et parfaitement centré à l'intérieur de votre élément cible.

 entrez la description de l'image ici

La zone bleue est l'élément hitbox. Maintenant, appliquez un événement mouseenter et mouseleave sur l'élément hitbox respectivement, et désactivez le glissement chaque fois que votre souris n'est pas au-dessus de l'élément hitbox.


0 commentaires