我正在尝试制作一个简单的svg示例 - 创建条形图。 但是,我并没有清楚地了解它的工作原理。我旋转了现有图表 颠倒但似乎有一个小的抵消。相应的jsfiddle在这里 - http://jsfiddle.net/rhvP8/2/
<div style="width:300px;height:300px;">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" style="width:100%;height:100%" viewBox="0 0 300 300">
<g>
<rect width="14.55" height="40%" x="0" y="0" fill="black"></rect>
<rect width="14.55" height="20%" x="50" y="0" fill="green"></rect>
<rect width="14.55" height="80%" x="100" y="0" fill="red"></rect>
<rect width="14.55" height="90%" x="150" y="0" fill="yellow"></rect>
<rect width="14.55" height="10%" x="200" y="0" fill="pink"></rect>
<rect width="14.55" height="60%" x="250" y="0" fill="orange"></rect>
</g>
</svg>
</div>
<div style="width:300px;height:300px;">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" style="width:100%;height:100%" viewBox="0 0 300 300">
<g transform="rotate(180)">
<rect width="14.55" height="40" x="-50" y="-300" fill="black"></rect>
<rect width="14.55" height="20" x="-100" y="-300" fill="green"></rect>
<rect width="14.55" height="35" x="-150" y="-300" fill="red"></rect>
<rect width="14.55" height="90" x="-200" y="-300" fill="yellow"></rect>
<rect width="14.55" height="10" x="-250" y="-300" fill="pink"></rect>
<rect width="14.55" height="60" x="-300" y="-300" fill="orange"></rect>
</g>
</svg>
</div>
答案 0 :(得分:1)
您需要记住的是rotate()
变换将围绕坐标(0,0)旋转对象,在这种情况下,坐标是图的左上角。由于图形宽300p,高300px,旋转180°会使图形旋转超出左上角。可以使用translate
变换重新调整坐标,以便绘图再次出现在视图框中。希望这个例子能够解释:
这是一个更新的JSfiddle,其他一些修复程序:http://jsfiddle.net/rhvP8/4/
答案 1 :(得分:1)
squeamish解决方案的另一种选择就是使用旋转原点的旋转版本:rotate(angle x y)
。
由于您知道图表是300x300,因此使用rotate(180 150 150)
可以正常工作。
答案 2 :(得分:0)
简单方法:scaleY() CSS 函数,定义了一种沿 y 轴(垂直)调整元素大小的变换。
svg {
transform: scaleY(-1);
}
在此处查看浏览器兼容性:https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scaleY()#browser_compatibility