【发布时间】:2021-08-17 02:51:10
【问题描述】:
目标
使用svg-标签将一些 SVG 图标合并到 HTML 中。使用transform-属性添加简单的CSS :hover-效果,主要用于旋转和/或平移svg-元素内的单个元素。
问题
一旦transform-Property 应用于svg 内的元素,该元素就会被挤压或拉伸。 line-elements 和 path-elements 都会发生这种情况。
我尝试了什么
我尝试使用 HTML 属性,例如 viewbox、preserveAspectRatio 或 vector-effect,但似乎没有任何作用。
我当前的 HTML 代码:
<svg class="icon" width="13.2px" height="13.2px" viewBox="0 0 13.2 13.2" preserveAspectRatio="xMidYMid">
<path class="line line-1 st0" d="M12.3,6.5c0,0.6-0.5,1.3-1.2,1.3h-9c-0.7,0-1.2-0.6-1.2-1.3s0.5-1.2,1.2-1.2h9C11.8,5.3,12.3,5.9,12.3,6.5z" vector-effect="non-scaling-stroke"/>
<path class="line line-2 st1" d="M6.6,12.3c-0.7,0-1.2-0.6-1.2-1.2v-9c0-0.7,0.6-1.2,1.2-1.2c0.6,0,1.2,0.6,1.2,1.2v9C7.9,11.7,7.3,12.3,6.6,12.3z" vector-effect="non-scaling-stroke"/>
</svg>
截图
- 左:默认,代码如上。
- 右:相同的 HTML 代码,
.line-2应用了以下 CSS:transform: translateX(0)。您可以清楚地看到两条路径都被压扁了,即使在此示例中实际上没有任何元素被转换。
【问题讨论】:
-
transform: translateX(0) 不会这样做。我想还有别的东西。尝试删除
vector-effect="non-scaling-stroke"如果这不是您需要的,请编辑您的问题并添加转换后的路径以进行比较
标签: svg css-transforms stroke