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

SVG元素上的3D转换

吕向阳
2023-03-14
问题内容

是否可以通过 对SVG元素 进行 3D转换 来实现透视?

我说的是与《星球大战》首部作品的3d透视图相似的事物。这是一个使用 CSS3
3d转换达到预期效果的jsfiddle: __

<section style="transform: perspective(200px) rotateX(-30deg); transform-origin: 50% 100%; text-align: justify; width: 100px;">

  <p style="backface-visibility: hidden;">TEXTTEXTTEXT</p>

</section>

问题答案:

2018年11月更新:

在最新的chrome和Firefox中可以测试该问题的片段。尽管对svg元素的3d转换的支持不是很广泛,但是浏览器正在越来越多地实现它。

来源答案:

SVG元素不支持3D变换 。不过,有一些解决方法

如果svg不包含不应转换的元素,则可以 在SVG元素本身上 使用 CSS 3d转换

svg {

  width: 70%;

  margin: 0 auto;

  display: block;

  -webkit-transform: perspective(300px) rotateX(30deg);

  transform: perspective(300px) rotateX(30deg);

}


<svg viewbox="0 0 100 20">

  <text x="0" y="20">TEXTEXTEX</text>

</svg>

如果是多边形,则使2D多边形看起来像3D多边形。在下面的示例中,红色矩形是3D旋转(rotateX(40deg)),黑色矩形是2D
SVG多边形,看起来像是3D旋转的矩形:

div{

  display:inline-block;

  width:200px; height:100px;

  background:red;

  transform:perspective(500px) rotateX(40deg);

}

svg{

  display:inline-block;

  width:220px; height:auto;

}

div, svg{

  display:inline-block;

  margin:0 10px;

}


<div></div>

<svg viewbox="0 0.5 10 4">

  <polygon points="9.9 4.1 0.1 4.1 0.7 0.6 9.3 0.6" fill=""/>

</svg>


 类似资料:
  • 我在这里遇到了一个大麻烦。svg元素的textPath标记中有一些文本需要翻转180度。我已经使用了所有可以与css一起工作的方法,但绝对没有一种方法起作用。有人能帮我翻转元素中的文本吗。 null null

  • 我有一个很好的SVG元素,我通过从0px-70px增长它来动画。这个元素也是一个按钮,在悬停时有一个很好的笔划动画。我的问题是,用于笔划动画的CSS过渡属性会影响元素出现时的增长速度。我不想我的悬停动画去太快,但出现动画是太慢了。 JS: http://codepen.io/anon/pen/qbelqy 除了用jQuery手动更改transition属性之外,还有什么方法可以解决这个问题吗?这是

  • 尝试在父SVG中定位电池指示器。SVG元素有一个电池的路径和一个显示百分比的文本元素。它的位置有两个css转换和文本属性。文本在Chrome/Firefox中打开时定位正确,但在Safari中会产生分支。 代码本https://Codepen.io/niwsa/pen/rnnbkeg?editors=1000

  • 问题内容: 我有一个外部SVG文件,其中包含一些嵌入的图案图像标签。每当我使用将该SVG转换为PNG时,生成的PNG图像都不包含我已作为图案应用到某些SVG路径的图像。有什么办法解决这个问题? 问题答案: 是的,有:将svg附加到文档中,并将所有包含的图像编码为dataURIs。 我正在编写一个脚本来执行此操作,还编写了一些其他内容,例如包括外部样式表以及toDataURL失败的其他修复方法(例如

  • 我试图在TypeScript中创建一个格式正确的SVG元素: 但是,在中出现以下错误

  • 问题内容: 我想使用这项技术并更改svg颜色,但到目前为止我还没有做到这一点。我把它放在css中,但是无论如何我的图像总是黑色的。我的代码: 问题答案: 您不能以这种方式更改图像的颜色。如果将SVG加载为图像,则无法在浏览器中使用CSS或Javascript更改其显示方式。 如果你想改变你的SVG图像,你必须用它来装载,或使用在线。 如果要使用页面中的技术,则需要Modernizr库,您可以在其中