【问题标题】:How to change the width of an svg rect with css如何使用 css 更改 svg rect 的宽度
【发布时间】:2014-04-01 02:10:42
【问题描述】:

是否可以使用 CSS 更改 SVG 矩形的宽度?

这不起作用:

#red {
    width: 800px;
}
#red:hover {
    width: 1600px;
}

jsfiddle

【问题讨论】:

标签: css svg svg-animate


【解决方案1】:

是的,有可能。用一个矩形制作一个svg文件,然后用img标签将它导入到你的html中。

见:link

【讨论】:

  • 好的,但是如果我有 30 个矩形,我必须创建 30 个 SVG 文件并在我的 html 中作为 img 标签导入?有没有其他解决方案可以用 ID 转换大小?
  • 您将制作一个 svg 并使用 30 次。
【解决方案2】:

我为你制作了一些 SVG 动画。检查下面的链接显示像SVG ScalingSVG element Movement这样的例子。如示例所示,您可以创建许多 rec 并按照您想要的方式对其进行动画处理。

查看更新演示。 http://jsfiddle.net/kheema/CasPj/11/

【讨论】:

【解决方案3】:

由于width css 属性(尚未)适用于<rect> 元素,因此您不能像在您的问题中那样做。

但是,您可以通过使用依赖于其他一些 css 属性的单位来使其工作。

像这样,svg:

<rect id="red" width="1em" fill="red" height="270" />

和 CSS:

#red {
    font-size: 800px;
}
#red:hover {
    font-size: 1600px;
}

jsfiddle

要回答后续问题,“如果你想在相反方向增加高度(或宽度),你该怎么做?”,这是一种方法:

使用transform="scale(1,-1)" 翻转坐标系(调整其他值以配合,例如负y 坐标位置)。

<rect id="red" y="-515.5" width="270" height="2em" transform="scale(1,-1)"/>

和 CSS:

#red:hover {    
    animation: scaleheight 1s ease-in-out infinite alternate;
}

@keyframes scaleheight {
    0% {
         fill:red;
    }
    100% {
         fill:blue;
         font-size: 300px;
    }
}

jsfiddle

【讨论】:

  • 哦,这看起来不错 :) 是否可以更改“高度”——从下到上也是如此?
  • 不确定你的意思。
  • 对不起 ;) 我的意思是,可以从下到上扩展吗?像这样,但在另一个方向? jsfiddle.net/uH6j5/3
  • 很好的解决方案,谢谢!我根据您的解决方案创建了一个使用图像模式和百分比值的示例 - codepen.io/TheRemoteCoder/pen/JjKwWxd
猜你喜欢
  • 2018-12-14
  • 1970-01-01
  • 2018-02-26
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 2020-10-26
  • 2018-04-14
相关资源
最近更新 更多