具有非等距子级的css等距视图 [英] css isometric view with non iso-metric children

查看:105
本文介绍了具有非等距子级的css等距视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用transform: rotateX(60deg) rotateY(0deg) rotateZ(-45deg);使元素看起来像在等轴测透视图中.我想知道如何才能恢复某些孩子的效果,以使他们共享协调系统但正常对齐.我试图以相同的方式旋转这些孩子,但工作方式似乎有所不同.有什么想法吗?

I'm using transform: rotateX(60deg) rotateY(0deg) rotateZ(-45deg); to make an element look like it's in an isometric perspective. I'm wondering how I could revert the effect for certain children so that they share the coordination system but are normal aligned. I tried to rotate the children the same way back but it seems to work differently. Any ideas?

.iso {
  transform: rotateX(60deg) rotateY(0deg) rotateZ(-45deg);
  transform-style: preserve-3d;


  position: relative;
  height: 20rem;
  width: 20rem;
  text-align: center;
  margin: 0 auto;
  background-color: tomato;
  box-sizing: border-box;
  padding: 2rem;
}

.marker {
  position: absolute;
  left: 10rem;
  top: 15rem;
  transform: rotateX(-60deg) rotateY(0deg) rotateZ(45deg);
}

<div class="iso">
  <h3>I'm also iso aligned</h3>

  <div class="marker">
    <svg xmlns='http://www.w3.org/2000/svg' height='30' width='27' viewBox='0 0 25 30'><path stroke="#FFFFFF" stroke-width="2" fill='29434e' d='M13.6363636,0.272727273 C16.6363636,0.272727273 19.6363636,1.63636364 21.8181818,3.81818182 C24,6.27272727 25.3636364,9 25.3636364,12.2727273 C25.3636364,15.5454545 24,19.0909091 21.8181818,21.2727273 L13.6363636,29.7272727 L5.45454545,21.2727273 C3.27272727,19.0909091 1.90909091,15.8181818 1.90909091,12.2727273 C1.90909091,9 3,6.27272727 5.45454545,3.81818182 C7.63636364,1.63636364 10.6363636,0.272727273 13.6363636,0.272727273 Z'/></svg></div>
</div>

推荐答案

您应该更改transform-origin使其底部,然后使用相反的转换,如下所示.您不仅应该反转值,还应该反转顺序.

You should change the transform-origin to make it bottom then use the opposite transformation like below. You should not only invert the values but also the order.

添加了一个额外的未经转化的制作工具以与之比较

.iso {
  transform: rotateX(60deg) rotateY(0deg) rotateZ(-45deg);
  transform-style: preserve-3d;


  position: relative;
  height: 20rem;
  width: 20rem;
  text-align: center;
  margin: 0 auto;
  background-color: tomato;
  box-sizing: border-box;
  padding: 2rem;
}

.marker {
  position: absolute;
  left: 10rem;
  top: 15rem;
  transform: rotateZ(45deg) rotateY(0deg) rotateX(-60deg);
  transform-origin:bottom center;
}
.compare {
  position:absolute;
  left: 15rem;
  top: 10rem;
}

<div class="iso">
  <h3>I'm also iso aligned</h3>

  <div class="marker">
    <svg xmlns='http://www.w3.org/2000/svg' height='30' width='27' viewBox='0 0 25 30'><path stroke="#FFFFFF" stroke-width="2" fill='29434e' d='M13.6363636,0.272727273 C16.6363636,0.272727273 19.6363636,1.63636364 21.8181818,3.81818182 C24,6.27272727 25.3636364,9 25.3636364,12.2727273 C25.3636364,15.5454545 24,19.0909091 21.8181818,21.2727273 L13.6363636,29.7272727 L5.45454545,21.2727273 C3.27272727,19.0909091 1.90909091,15.8181818 1.90909091,12.2727273 C1.90909091,9 3,6.27272727 5.45454545,3.81818182 C7.63636364,1.63636364 10.6363636,0.272727273 13.6363636,0.272727273 Z'/></svg></div>
</div>
<!-- to compare with -->
<svg class="compare" xmlns='http://www.w3.org/2000/svg' height='30' width='27' viewBox='0 0 25 30'><path stroke="#FFFFFF" stroke-width="2" fill='29434e' d='M13.6363636,0.272727273 C16.6363636,0.272727273 19.6363636,1.63636364 21.8181818,3.81818182 C24,6.27272727 25.3636364,9 25.3636364,12.2727273 C25.3636364,15.5454545 24,19.0909091 21.8181818,21.2727273 L13.6363636,29.7272727 L5.45454545,21.2727273 C3.27272727,19.0909091 1.90909091,15.8181818 1.90909091,12.2727273 C1.90909091,9 3,6.27272727 5.45454545,3.81818182 C7.63636364,1.63636364 10.6363636,0.272727273 13.6363636,0.272727273 Z'/></svg>

为了更好地了解订单重要性的相关问题:

Related questions to better understand the importance of order:

使用翻译模拟转换源

为什么转换顺序很重要? SVG旋转/缩放效果与缩放/旋转效果不同

这篇关于具有非等距子级的css等距视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆