14 votes

Comment obtenir la position d'écran des éléments transformés en CSS3-3d ?

J'ai un site très compliqué construit sur CSS3 qui a des éléments html transformés en 3D, tournés, retournés, inversés et généralement déformés.

J'essaie de déterminer l'emplacement à l'écran de l'un de ces éléments et je ne vois aucun moyen de le faire. Je me demandais si quelqu'un avait une idée ingénieuse.

Par ailleurs, si quelqu'un peut expliquer les mathématiques qui se cachent derrière -webkit-perspective Je peux trouver la position, car c'est la seule chose que je ne sais pas comment modéliser.

13voto

alex Points 186293

Avez-vous essayé d'utiliser getBoundingClientRect() ?

Je l'ai utilisé avec succès dans le passé pour calculer les dimensions des éléments qui ont été transformés à l'aide de la fonction transform propriété.

1voto

RoToRa Points 20081

Le problème est que les transformations CSS3 ne modifient en rien la position des éléments. Bien sûr, les navigateurs "savent" qu'ils sont repositionnés, parce qu'ils les rendent, mais cette information n'est pas renvoyée au DOM/API.

La seule chose à laquelle je peux penser, c'est de calculer vous-même les positions sur la base des transformations, puisque celles-ci sont "simples" transformations matricielles .

Malheureusement, le cours d'algèbre date de trop longtemps pour que je puisse vous dire comment faire, mais seulement que c'est possible.

1voto

user2755763 Points 11

Utilisation getBoundingClientRect est une bonne idée, mais elle ne vous donnera que les coordonnées du rectangle qui contient votre forme, et non les coordonnées exactes des 4 coins topleft, bottomright, bottomleft, topright.

Vous ne pouvez le faire qu'en prenant chacune de ces coordonnées non transformées et en appliquant la transformation via javascript.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X