当前位置: 首页 > 面试题库 >

如果在属性的末尾设置了透视图,则CSS 3d转换将不起作用

乌骏
2023-03-14
问题内容

我发现transform财产取决于perspective()位置

为什么会这样呢?任何其他规则/限制transform

尽管对我来说很奇怪,但这似乎不是一个错误,因为我能够在Chrome / FF中重现此错误

box:nth-child(1):hover {

  transform: perspective(1000px) translate3d(0, 0, -100px);

}



box:nth-child(2):hover {

  transform: translate3d(0, 0, 100px) perspective(1000px);

}



box {

  padding: 20px;

  display: inline-flex;

  align-items: center;

  justify-content: center;

  font-family: monospace;

  transition: transform .4s;

  background: rgba(255, 0, 0, 0.3);

  margin: 20px;

  font-size: 12px;

  perspective: 1000px;

  cursor: pointer;

}



box:nth-child(2) {

  background: rgba(0, 0, 255, 0.3);

}


<box>

  transform: perspective(1000px) translate3d(0,0,100px);

</box>

<box>

  transform: translate3d(0,0,100px) perspective(1000px);

</box>

问题答案:

perspective在这两种情况下,您都应该做第一个。如果在最后添加它,则将首先进行翻译而无需考虑视角。

如果我们参考规范,我们可以看到如何计算转换矩阵:

转换矩阵是根据transform和transform-origin属性计算的,如下所示:

  1. 从身份矩阵开始。

  2. 通过计算的变换原点的X和Y进行翻译

  3. 从左到右分别乘以变换属性中的每个变换函数

  4. 通过求反的转换原点的X和Y值进行转换

正如您在步骤(3)中看到的那样,它是 从左到右的(这是另一个问题,您可以在其中获取更多信息,并了解为什么顺序很重要:使用translate模拟转换原点

在要转换的元素内使用Perspective属性也没有用。

box:nth-child(1):hover {

  transform: perspective(1000px) translate3d(0, 0, -100px);

}



box:nth-child(2):hover {

  transform: perspective(1000px) translate3d(0, 0, 100px);

}



box {

  padding: 20px;

  display: inline-flex;

  align-items: center;

  justify-content: center;

  font-family: monospace;

  transition: transform .4s;

  background: rgba(255, 0, 0, 0.3);

  margin: 20px;

  /*perspective: 1000px;*/

  font-size: 12px;

  cursor: pointer;

}



box:nth-child(2) {

  background: rgba(0, 0, 255, 0.3);

}


<box>

  transform: perspective(1000px) translate3d(0,0,100px);

</box>

<box>

  transform:  perspective(1000px) translate3d(0,0,100px);

</box>

为了避免与顺序混淆,您可以在父元素BUT中声明可透视对象,因此您需要注意原点,因为它不会相同:

box:nth-child(1):hover {

  transform:translate3d(0, 0, -100px);

}



box:nth-child(2):hover {

  transform:translate3d(0, 0, 100px);

}

body {

  perspective:1000px;

}

box {

  padding: 20px;

  display: inline-flex;

  align-items: center;

  justify-content: center;

  font-family: monospace;

  transition: transform .4s;

  background: rgba(255, 0, 0, 0.3);

  margin: 20px;

  font-size: 12px;

  cursor: pointer;

}



box:nth-child(2) {

  background: rgba(0, 0, 255, 0.3);

}


<box>

  transform: perspective(1000px) translate3d(0,0,100px);

</box>

<box>

  transform:  perspective(1000px) translate3d(0,0,100px);

</box>


 类似资料:
  • 我尝试将ini文件解析为可以在ant脚本中使用的属性。我有以下几点: 我试图做的是解析所有的name=value对,并将它们放入属性中,如:section。名称=值; 不知何故,“echoMsg”目标中没有记住该部分。我想记住部门名称。 所以 应该成为: 这是我的ant脚本的输出: 如您所见,未设置最后一个“${prevSection}”。我希望它是“全球性的”。 我试着用它来代替财产,但没有区别

  • 问题内容: 我的实体中有一个布尔型属性。这是我的注释: 但是效果并不理想。这是我作为生成表的结果得到的SQL代码: 我究竟做错了什么? 因此,当我尝试将此类的实例保存到数据库时,出现异常: 如果我删除财产: 因此在这种情况下,我可以保存创建的对象。但是仍然 没有设置默认值, 并且我在数据库中此字段的值中得到NULL。 有什么想法吗?如果重要,我会使用MySQL Server 5.1。我将非常感谢您

  • stack指示视图将与文件夹中的相对视图堆叠在一起 问题是,当我重置透视图时,我将视图放在一个单独的地方(更确切地说,是右边),占据了工作台的50%。 是否应该在我的plugin.xml中再次声明ProjectExplorer视图,以便字段的值能够工作? 弗拉德

  • 获取以下异常: 原因:org.hibernate.queryException:无法解析属性:primaryAddress:com.hcentive.user.ContactInfo在org.hibernate.persister.entity.abstractPropertyMapping.PropertyException(abstractPropertyMapping.java:62)~[h

  • 问题内容: 我有一个将Android数据保存在其中的函数,但必须将数据转换为。 只要是我想保存为 以下是我的代码,只要值是 将上述转化为。 这是我决定要执行的操作,但是仍然无法将字符串值转换为每当它的。 然后功能 我应该如何对其进行更改以使其起作用? 问题答案: 不用编写自己的函数,而是使用try-catch的内部构造。您的问题是,or 或值本身是a,并且您在null引用上调用方法。请尝试以下操作