SVG/SVGPan:加载时将图形居中
SVG / SVGPan: center graphic upon loading
我一直在使用嵌套的<svg/>
和<g/>
元素在浏览器框架中居中显示SVG图形。外部svg元素的宽度和高度为100%,内部的x和y设置为50%。内部g元素具有一半图像大小的负偏移。这很好,但我现在想添加平移和缩放功能。
嵌套的SVG方法似乎与混淆的SVGPan不兼容。
SVGPan只有从左上角的图形开始才能工作。我想我必须编写一个在SCG加载/加载时运行的脚本,以添加一个转换,以与SVGPan兼容的方式将顶层g居中。
如何用矩阵变换来初始化<g />
?
((viewport.width - g.width)/2, (viewport.width - g.width)/2)
创建SVG时,视口的大小是未知的,但我可以在其中放入一些脚本来创建转换或平移。剧本应该放在哪里?它应该做什么?它需要与SVGPan兼容。
Talos为我解决了这个问题,请参阅https://github.com/talos/jquery-svgpan/issues/3
代替
<svg><svg><g></g></svg></svg>
我现在正在使用
<svg><g><svg></svg></g></svg>
并且这允许一个居中的图形与[jquery-]svgpan一起工作。
要在任何HTML元素中填充SVG元素:
- 将
position:relative
(或者position:absolute
或position:fixed
,如果合适的话)放在包装HTML元素上 - 将
position:absolute
放在SVG元素上(必要时放top:0; left:0; width:100%; height:100%
)
这样一来,SVG元素将始终填充HTML元素。根据需要定位/调整该元素的大小/居中。
使SVG内容位于SVG视口的中心
- 将SVG上的
viewBox
设置为以内容的中心为中心
例如,如果内容是以175,300
为中心的半径为30的圆,则设置viewBox="145 270 60 60"
- 省略SVG元素上的
preserveAspectRatio
属性,或者确保它使用xMidYMid
,以便视图框的中心始终位于SVG视口的中心
平移和拖动SVG内容
相应地调整viewBox
,或者变换元素。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 使用springy.js加载多个图形时闪烁画布
- 细胞景观:加载页面时不显示图形
- 如何制作从对象动态加载的图形
- 重新加载 c3.js 图形上的所有数据点
- 加载回调时的 C3 图形
- 点击bokeh按钮,从文件中加载图形数据
- SVG/SVGPan:加载时将图形居中
- Flot:当试图在页面加载时绘制图形时,会弹出一个奇怪的错误
- jQuery-只有在所有表单字段都有效的情况下才运行加载图形函数
- 图形获胜'无法正确重新加载到D3部队布局中
- 当应用程序从图形api加载时,如何获得应用程序的用户
- Phoenix:如何为d3图形加载静态tsv文件
- Ajax重新加载数据聊天.js显示错误的鼠标悬停在图形上
- webViewDidFinishLoad在从URL加载实际图形之前触发
- 我如何使用jQuery动画图形加载
- 当am使用jquery加载事件加载图形页面时,外部页面Morris图表未加载
- 任何可以加载超过200,000条记录的jquery/javascript图形