我在firefox(最新版本+测试过的其他版本)下的CSS“ transform”属性上遇到问题
这是应用的转换:
-moz-transform: perspective(2rem) rotateX(15deg) scaleY(1);
-o-transform: perspective(2rem) rotateX(15deg) scaleY(1);
-ms-transform: perspective(2rem) rotateX(15deg) scaleY(1);
-webkit-transform: perspective(2rem) rotateX(15deg) scaleY(1);
transform: perspective(2rem) rotateX(15deg) scaleY(1);
并且活动元素应具有
-moz-transform: perspective(0rem) rotateX(15deg) scaleY(1);
-o-transform: perspective(0rem) rotateX(15deg) scaleY(1);
-ms-transform: perspective(0rem) rotateX(15deg) scaleY(1);
-webkit-transform: perspective(0rem) rotateX(15deg) scaleY(1);
transform: perspective(0rem) rotateX(15deg) scaleY(1);
这是一个可以在chrome和Firefox下测试的JSfiddle。
在chrome和其他元素下,“活动”元素的确发生了透视变化,而在Firefox上,该元素没有被替换。
JSFiddle
我搜索了一个类似的案例,但是其他人似乎没有发生过。
最佳答案
似乎Firefox在为transform: perspective(n)
规则设置零值时效果不佳。对我有用的只是从.active
规则中删除透视变换:
#owl-demo .owl-item.active > div{
background: #6699ff;
-moz-transform: rotateX(15deg) scaleY(1);
-o-transform: rotateX(15deg) scaleY(1);
-ms-transform: rotateX(15deg) scaleY(1);
-webkit-transform: rotateX(15deg) scaleY(1);
transform: rotateX(15deg) scaleY(1);
}
跳到“编辑”部分,以下情况不正确,但以后仍将其用作参考
另外,我发现独立的
perspective
属性确实可以在零值的情况下正常工作。如果确保将值设置为零对您很重要,那么也许就足够了:#owl-demo .owl-item.active > div{
background: #6699ff;
-moz-transform: rotateX(15deg) scaleY(1);
-moz-perspective: 0em;
-o-transform: rotateX(15deg) scaleY(1);
-ms-transform: rotateX(15deg) scaleY(1);
-webkit-transform: rotateX(15deg) scaleY(1);
transform: rotateX(15deg) scaleY(1);
perspective: 0em;
}
编辑
事实证明,第二种情况只是“有效”,因为未正确使用它。作为参考,
perspective
是旨在提供3D空间以将透视图应用于所有3D转换后的子元素的属性。例如:.owl-item {
perspective: 2em;
}
#owl-demo .owl-item > div {
margin: 0px 2px;
height:100px;
background: #6699ff;
-moz-transform: rotateX(15deg) scaleY(1);
-o-transform: rotateX(15deg) scaleY(1);
-ms-transform: rotateX(15deg) scaleY(1);
-webkit-transform: rotateX(15deg) scaleY(1);
transform: rotateX(15deg) scaleY(1);
}
由于
divs
容器的子级owl-item
均已应用3D转换,因此将对每个容器应用透视图。但是,这使得从单个子对象(活动div)中删除透视图成为不可能,至少对于纯CSS而言是这样。另一方面,
transform: perspective(n)
会分别影响每个子元素,因此可以通过应用活动类来删除透视图:#owl-demo .owl-item > div {
margin: 0px 2px;
height:100px;
background: #cccccc;
-moz-transform: perspective(2em) rotateX(15deg) scaleY(1);
-o-transform: perspective(2em) rotateX(15deg) scaleY(1);
-ms-transform: perspective(2em) rotateX(15deg) scaleY(1);
-webkit-transform: perspective(2em) rotateX(15deg) scaleY(1);
transform: perspective(2em) rotateX(15deg) scaleY(1);
transition: transform .5s;
}
#owl-demo .owl-item.active > div{
background: #6699ff;
-moz-transform: rotateX(15deg) scaleY(1);
-o-transform: rotateX(15deg) scaleY(1);
-ms-transform: rotateX(15deg) scaleY(1);
-webkit-transform: rotateX(15deg) scaleY(1);
transform: rotateX(15deg) scaleY(1);
}
希望这有助于理解这两种透视方法。我知道它对我有帮助:)
关于css - Firefox下的CSS透视错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37909335/