J'essaye de transformer ma div comme la boîte verte.
Je veux obtenir une transformation 3D, pas un masque: p>
Je trouve un moyen avec ce générateur mais le code css ne fonctionne pas sur mon violon:
<div id="mask"> <div id="screen"></div> </div>
body { height:100%; padding:0; margin:0; } #mask { background:url(https://i.stack.imgur.com/cBK0O.png) no-repeat; background-size:350px; height:200px; position:relative; } #screen:hover { background:url(https://www.actugaming.net/wp-content/uploads/2018/06/Assassins-Creed-Odyssey_Leak_06-10-18_015-1.jpg); background-size:100%; } #screen { position:absolute; bottom:38px; background:red; opacity:0.6; } #screen { left:70px; width:240px; height:calc(240px * 9 / 16); /*keep 16/9 !*/ } /*transform css3*/ #screen { transform: scale(1.0) scaleZ(1.0) rotateX(-16deg); transform-origin: 0% 0%; perspective: 450; perspective-origin: 100% 50%; }
/*transform css3*/ #screen { transform: scale(1.0) scaleZ(1.0) rotateX(-16deg); transform-origin: 0% 0%; perspective: 450; perspective-origin: 100% 50%; }
4 Réponses :
Si vous voulez cette forme, vous pouvez utiliser clip-path
au lieu d'utiliser transform
. Cela vous donne un grand contrôle sur la forme que vous obtenez. Voici un bon outil pour vous aider: https://bennettfeely.com/clippy/
En utilisant transform
, vous pouvez incliner l'image pour obtenir un effet 3D sur le contenu d'arrière-plan / div.
<div id="screen"></div>
#screen:hover { background: url(https://www.actugaming.net/wp-content/uploads/2018/06/Assassins-Creed-Odyssey_Leak_06-10-18_015-1.jpg); background-size: 100%; } #screen { position: absolute; background: red; opacity: 0.6; left: 70px; width: 240px; height: calc(240px * 9 / 16); /*keep 16/9 !*/ transform-origin: bottom right; -ms-transform: skew(20deg, 0deg); -webkit-transform: skew(20deg, 0deg); transform: skew(20deg, 0deg); }
C'est bien, je peux également utiliser la propriété mask
pour ce faire, mais j'ai besoin d'une transformation 3D pour obtenir un effet 3D sur mon contenu d'arrière-plan / div.
@ A-312 Je vois ce que vous voulez dire maintenant, j'ai mis à jour ma réponse pour vous :-) J'espère que cela vous aidera.
Mais le coin supérieur gauche et le coin supérieur droit se déplacent ensemble. : /
Sur westciv.com/tools/3Dtransforms/index.html je trouve quelque chose mais je peux J'ai pas la même chose sur mon code. : /
Vous avez besoin d'une rotation et aussi d'une perspective pour avoir le bas à droite comme origine. Notez que la perspective doit être appliquée à un élément parent:
<div class="box"> <img src="https://www.actugaming.net/wp-content/uploads/2018/06/Assassins-Creed-Odyssey_Leak_06-10-18_015-1.jpg"> </div>
img { margin: 30px 50px; transform: perspective(100px) rotateX(-8deg); width: 250px; transform-origin: bottom right }
Ou utilisez la perspective à l'intérieur de la transformation et ajustez l'origine de la transformation et non l'origine de la perspective:
<div class="box"> <img src="https://www.actugaming.net/wp-content/uploads/2018/06/Assassins-Creed-Odyssey_Leak_06-10-18_015-1.jpg" > </div>
.box { display:inline-block; perspective-origin:bottom right; perspective:100px; } img { margin:30px 50px; transform:rotateX(-8deg); width:250px; }
OH! les propriétés de perspective doivent figurer dans les règles parentes!
Comme je l'ai dit dans mon commentaire . Je ne mets pas la propriété perspective dans la bonne direction! Avec quelques modifications, j'ai obtenu le bon rendu:
<div id="mask"> <div id="screen"></div> </div> <div id="perpectiveorigin"></div>
body { border: 1px solid black; display:inline-block; padding: 0; margin: 0; } #mask { background: url(https://i.stack.imgur.com/cBK0O.png) no-repeat; background-size: 350px; height: 200px; width: 400px; position: relative; perspective: 16px; /*perspective-origin:45% 1%;*/ perspective-origin: 355px 2px; } #perpectiveorigin { height: 6px; width: 6px; position: absolute; background: red; left:352px; top:-1px; } #screen:hover { background: url(https://www.actugaming.net/wp-content/uploads/2018/06/Assassins-Creed-Odyssey_Leak_06-10-18_015-1.jpg); background-size: 100%; } #screen { position: absolute; bottom: 26px; background: red; opacity: 0.6; } #screen { left: 47px; width: 252px; height: calc(252px * 9 / 16); /*keep 16/9 !*/ } /*transform css3*/ #screen { transform: rotateX(-1.05deg); }
fonctionne dans Firefox, si ce que vous voulez est exactement ce que vous montrez ci-dessus. si vous le voulez sur l'autre div, vous devez y mettre le style.
Je veux avoir ma photo comme la div verte