You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何控制SVG垂直线skewX变换的倾斜方向,实现反向倾斜?

解决SVG垂直线skewX倾斜原点的问题

你遇到的问题是因为SVG元素的变换原点默认不是你要的下端点,而是元素的中心位置。要让倾斜从下端坐标开始,只需要调整变换原点就行,下面是具体方法:

方案1:把变换原点设为直线下端点

直接指定transform-origin为直线的下端点坐标(200,200),这样skewX就会围绕这个点倾斜:

svg {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
}

line {
    stroke: green;
    stroke-width: 3;
    transform-origin: 200px 200px; /* 对应直线下端点x1,y1的位置 */
    transform: skewX(7deg);
}

对应的SVG代码:

<svg>
  <line x1="200" y1="200" x2="200" y2="100"></line>
</svg>

方案2:反向倾斜(如果需要往另一侧歪)

要是你想让直线从下端点往相反方向倾斜,把skewX的角度改成负值就行:

line {
    stroke: green;
    stroke-width: 3;
    transform-origin: 200px 200px;
    transform: skewX(-7deg);
}

原因说明

SVG里元素的transform-origin默认是元素自身的中心。你这条垂直线的范围是从y=100到y=200,中心在y=150的位置,所以默认skewX是围着这个中心转,看起来就像是从上头开始歪。把原点改到下端点后,倾斜就会以这个点为基准,自然就符合你的需求了。

内容的提问来源于stack exchange,提问作者Andrei Roba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:32:35