html - 为什么 z 轴在 transform-origin 属性中不起作用?
问题描述
我认为,x 轴坐标为 100% 且 y 轴坐标为 0 的点应沿 z 轴移动 60px。为什么没有发生?
所以,这是我的代码。先感谢您。
.block {
margin: 50px;
display: inline-block;
width: 200px;
height: 200px;
background: pink;
outline: 1px solid black;
transform-origin: 100% 0 60px;
display: flex;
justify-content: center;
align-items: center;
}
.block:hover {
transform: rotate(15deg);
}
<div class="block">Hello!</div>
解决方案
没有透视,您将看不到任何效果。
下面是一个带有和不带有透视的示例,以查看差异:
.block {
margin: 20px;
display: inline-flex;
width: 100px;
height: 100px;
background: pink;
outline: 1px solid black;
transform-origin: 100% 0 60px;
justify-content: center;
align-items: center;
}
.block:hover {
transform:perspective(var(--p,0px)) rotate(15deg);
}
<div class="block">Hello!</div>
<div class="block" style="--p:100px">Hello!</div>
如果您删除 z 轴值,则透视图也将无效:
.block {
margin: 20px;
display: inline-flex;
width: 100px;
height: 100px;
background: pink;
outline: 1px solid black;
transform-origin: 100% 0 0;
justify-content: center;
align-items: center;
}
.block:hover {
transform:perspective(var(--p,0px)) rotate(15deg);
}
<div class="block">Hello!</div>
<div class="block" style="--p:100px">Hello!</div>
指定透视投影矩阵。该矩阵根据Z 值缩放X 和 Y中的点,将 Z 值正的点缩放远离原点,将 Z 值负的点缩放到原点。z=0 平面上的点不变。该参数表示 z=0 平面与观察者的距离。较低的值会产生更扁平的金字塔,因此会产生更明显的透视效果。参考
从上面可以考虑使用透视图和z轴transform-origin
来模拟translateZ()
.block {
margin: 20px;
display: inline-flex;
width: 100px;
height: 100px;
background: pink;
outline: 1px solid black;
justify-content: center;
align-items: center;
}
<div style="display:inline-block;perspective:200px;">
<div class="block" style="
transform:translateZ(-50px);
">Hello!</div>
</div>
<div class="block" style="
transform-origin: 50% 50% 50px;
transform:perspective(200px);
">Hello!</div>
推荐阅读
- c++ - 为什么共享指针不删除内存?
- python - PIP 无法下载,PYcharm 可以加载下载的包吗
- sql-server - 如何在 Visual Studio 2019 中打开 DTSX 文件?
- angular - 超时或超时后的角度呼叫服务
- gateway - 谷歌云物联网 GATEWAY_DEVICE_NOT_FOUND 错误
- node.js - stompit 是 nodejs 模块无法连接并出现错误““无法验证第一个证书”
- machine-learning - 文字推荐——建议
- gitlab - 如果 gatsby 站点嵌套在 repo 内的文件夹中,如何在 netlify 上部署它?
- odoo - Odoo 12 报告样本
- api - 如何在 API 26 及更高版本上使用 BroadcastReceiver?