类似问题的解决方案涉及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 viewBox的大小,因为(重要)整个想法是我希望能够以任何分辨率显示网页并使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指令的内联 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的宽度,但只显示顶部一半,并且浏览器标签会出现垂直滚动条。
height + "px"
。Angular 对其认为是有效 HTML 的内容非常特别。 - ccprog[attr.height] ="fn()"
(瞎猜)。 - ccprog