【发布时间】:2018-01-16 03:30:53
【问题描述】:
类似问题的解决方案涉及 CSS 和 img 标签。
但是,我不能使用<img src="myFile.svg">,因为 SVG 包含 Angular 指令,例如
<path id="Top row 1" ng-click='RoomClicked($event, "A-1")'
fill={{GetFillColour('A-1')}} stroke="black" stroke-width="1"
d="M 226.00,69.00
C 226.00,69.00 226.00,136.00 226.00,136.00 ...
所以,我想将 SVG 内嵌在视图中,并根据其容器调整 SVG 视图框的大小,因为(重要)整个想法是我希望能够以任何分辨率显示网页,并让 SVG 比例适合它的父级DIV。
所以,我试过了
<div>
<svg xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 {{GetSvgDivHeight()}} {{GetSvgDivWidth()}}">
在我看来,和
$scope.GetSvgDivHeight = function()
{
height = Math.round(screen.height * 0.8);
return height;
}
$scope.GetSvgDivWidth = function()
{
width = document.getElementById('SVG_goes_here').offsetWidth;
return width;
}
在我的控制器中。
但是,SVG 不显示,开发者控制台显示
jquery-3.1.1.min.js:3 Error: <svg> attribute viewBox: Expected number, "0 0 {{GetSvgDivHeigh…".
那么,1) 我可以从$scope 以编程方式设置我的内联SVG 视图框的大小吗? 2) 如果没有,我如何制作包含 Angular 指令的 inline SVG,填充其父 DIV,并在该 DIV 调整大小时调整大小?
[更新] InkScape 生成
<svg xmlns="http://www.w3.org/2000/svg"
width="7.22222in" height="10.0444in"
viewBox="0 0 650 904">
当我将其更改为
<svg xmlns="http://www.w3.org/2000/svg"
height="100%"
viewBox="0 0 650 904">
图像填充了包含 DIV 的宽度,但仅显示上半部分,并且浏览器选项卡会增长一个垂直滚动条。
【问题讨论】: