gpt4 book ai didi

css - 转换 SVG 元素(rotateX)的正确方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 06:09:38 24 4
gpt4 key购买 nike

我尝试用透视图转换 SVG 元素,发现它不起作用,但对 HTML 标记的相同转换可以正常工作。

jsfiddle 实验:https://jsfiddle.net/5ms7ubck/ (html 转换(红色元素)VS svg(灰色))。

.outer {
perspective: 1000px;
}

.inner {
transform: rotateX(60deg) perspective(1000px);
transform-style: preserve-3d;
transform-origin: 50% 50%;
}
<svg width="151px" height="151px" viewBox="0 0 151 151" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs></defs>
<g class="outer" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect class="inner" width="150" height="150" fill="#D8D8D8"></rect>
</g>
</svg>

我想找到转换 SVG 元素的正确方法。我还测试了 SVG Rotation in 3D 中的示例而且它也不起作用。

最佳答案

某些浏览器,如 Firefox,支持对 SVG 形状进行 3D 转换。例如,如果 Firefox 是 add overflow: visible,那么你需要做的就是让你的第一个 fiddle 工作。到 <svg>元素。

https://jsfiddle.net/gqsy14be/ (仅限火狐)

然而,这是一项实验性功能,目前您不能依赖跨浏览器支持。

但好消息是外层 <svg>元素被视为任何其他 HTML 元素,并且可以进行 3D 转换。

.test {
display: block;
width: 100px;
margin: 20px;
}

.outer {
perspective: 1000px;
}


.inner {
transform: rotateX(60deg);
transform-style: preserve-3d;
transform-origin: 50% 50%;
}
<div class="test">
<div class="outer">
<svg width="151px" height="151px" viewBox="0 0 151 151" class="inner">
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect width="150" height="150" fill="#D8D8D8"></rect>
</g>
</svg>
</div>
</div>

<div class="test">
<div class="outer">
<div class="inner" style="background-color: red; width: 150px; height: 150px;">

</div>
</div>
</div>

但显然这对您尝试在 SVG 中制作 3D 实体没有帮助。您只能变换 SVG 的平面。

关于css - 转换 SVG 元素(rotateX)的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56532720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com