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

如何使用其父容器制作svg秤?

曾喜
2023-03-14
问题内容

当大小为非本机时,我希望有一个内嵌svg元素的内容比例。当然,我可以将其作为单独的文件并像这样进行缩放。

index.html: <img src="foo.svg" style="width: 100%;" />

foo.svg: <svg width="123" height="456"></svg>

但是,我想通过CSS向SVG添加其他样式,因此链接外部样式不是一种选择。如何制作嵌入式SVG秤?


问题答案:

要独立于SVG图像的缩放大小指定SVG图像内的坐标,请使用viewBoxSVG元素上的属性来定义图像的边界系统在图像的坐标系中,并使用widthheight属性来定义SVG图像中的坐标。宽度或高度是相对于包含页面的。

例如,如果您具有以下条件:

<svg>
    <polygon fill=red stroke-width=0 
             points="0,10 20,10 10,0" />
</svg>

它将呈现为10px x 20px的三角形:

!10x20三角形

现在,如果仅设置宽度和高度,则将更改SVG元素的大小,但不会缩放三角形:

<svg width=100 height=50>
    <polygon fill=red stroke-width=0 
             points="0,10 20,10 10,0" />
</svg>

!10x20三角形

如果设置了视图框,则将其转换为图像,以使给定的框(在图像的坐标系中)按比例缩放以适合给定的宽度和高度(在页面的坐标系中)。例如,将三角形放大为100px x
50px:

<svg width=100 height=50 viewBox="0 0 20 10">
    <polygon fill=red stroke-width=0 
             points="0,10 20,10 10,0" />
</svg>

!100x50三角形

如果要将其缩放到HTML视口的宽度,请执行以下操作:

<svg width="100%" viewBox="0 0 20 10">
    <polygon fill=red stroke-width=0 
             points="0,10 20,10 10,0" />
</svg>

!300x150三角形

请注意,默认情况下会保留宽高比。因此,如果您指定该元素的宽度应为100%,但高度应为50px,则实际上它只会放大到50px的高度(除非您的窗口非常狭窄):

<svg width="100%" height="50px" viewBox="0 0 20 10">
    <polygon fill=red stroke-width=0 
             points="0,10 20,10 10,0" />
</svg>

!100x50三角形

如果您确实希望它水平伸展,请使用禁用纵横比保存preserveAspectRatio=none

<svg width="100%" height="50px" viewBox="0 0 20 10" preserveAspectRatio="none">
    <polygon fill=red stroke-width=0 
             points="0,10 20,10 10,0" />
</svg>

!300x50三角形

(请注意,虽然在我的示例中,我使用了适用于HTML嵌入的语法,而是将其嵌入到另一个SVG中,所以我需要使用有效的XML语法)



 类似资料:
  • 我想有一个内联svg元素的内容缩放,当size是非本机的。当然,我可以把它作为一个单独的文件并按比例缩放。 index.html: foo.svg: 但是,我想通过CSS向SVG添加额外的样式,所以链接外部样式不是一个选项。如何制作内联SVG缩放?

  • 我正在使用作为覆盖层。它应该和它的父容器一样宽和一样高。然而,由于某种奇怪的原因,它不是垂直填充其父级的(而是水平填充)。下面是相关的XML: 使用上面的代码,覆盖层也不可见(其高度为)。当我在内部放置时,它会展开以适应。简而言之,它的行为就好像它的高度被设置为。 我如何强制它装满它的容器,同时让它空着?

  • 我需要用三个值的动画制作一个svg饼图,在代码中找不到我的错误。当我移除setTimeout(function(){circle.setAttribute(“Stroke-Dasharray”,p+“100”);},10);在JavaScript中,饼图看起来不错,但没有动画。当我添加这段代码时,它是动画的,但不是加载所有的值,而是逆时针加载,而不是顺时针加载。我不知道任何javascript,但

  • 所以我有一个超级奇怪的案例(至少对我来说是超级奇怪的)。 SVG路径不包含在SVG元素中。我已经尝试了很多事情来让这个工作,但没有一个是有效的,现在怀疑我错过了什么。 我有一把JS小提琴:https://jsfidle.net/67w3hays/ 正如您所看到的,youtube图标比容器大,因此无法伸长到容器中 代码: 答案的预期结果: 我希望这个SVG路径适合于18宽和18高的容器(或者接近18

  • 我在一个页面上有三个SVG图像。一个是“图像编辑器”,你可以输入一些文本,一个图标,拖动和左右缩放,等等。 另外两个SVG通过use元素使用来自顶部SVG的内容,并显示最终结果的预览。 当我在编辑器中编辑一些东西时,这两个预览会自动更新。很完美.但我不想在底部两个预览SVG中显示边界框、转换工具、指南等。 有没有一种方法可以对那些SVG的(阴影)DOM进行样式化(CSS)或操作(JS)以不显示这些

  • 我想写一个超出最大高度显示滚动条,但是下拉框需要展示到外层,现在设置了以后,下拉框会撑开外层元素的高度 有什么方法可以使得下拉框展示到外层呢