当前位置: 首页 > 知识库问答 >
问题:

如何使用AngularJS调整SVG视图框的大小?

林修真
2023-03-14

但是,我不能使用,因为SVG包含角度指令,例如

  <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的容器来调整它的大小,因为(重要的)整个想法是,我希望能够以任何分辨率显示web页面,并且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…".
<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的宽度,但只显示上半部分,浏览器选项卡会生成一个垂直滚动条。

共有2个答案

蒋俊人
2023-03-14
相关问题
暨曾笑
2023-03-14

viewbox描述要显示SVG画布的哪一部分。如果在SVG根坐标中,左/上边框在(0,0)处,右/下边框在(300,200)处,则设置viewbox=“0 0 300 200”

若要设置SVG的显示大小,请使用宽度高度。将两者都设置为100%就足以使其适合

。更好的是,它们是默认值,所以您可以不使用它们。请注意,HTML块没有固有的高度,因此您仍然需要将其限制为屏幕大小。

如果一开始使用外部SVG,该SVG不设置ViewBox,但设置(部分)XY宽度高度

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" width="300" height="200">

将它们移动到内联元素的ViewBox中,删除widthes属性并设置计算出的与屏幕相关的高度:

<div style="position:relative;height:{{GetSvgDivHeight()}}">
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 200">

or(角度1.x语法)

<div>
    <svg xmlns="http://www.w3.org/2000/svg"
         ng-attr-height="{{GetSvgDivHeight()}}" viewBox="0 0 300 200">

这里解释了ng-attr-height=解决办法的需要,这也是最初错误消息的原因。对于Angular 2+,使用属性绑定:[attr.height]=

 类似资料:
  • 问题内容: 我需要调整PNG,JPEG和GIF文件的大小。如何使用Java做到这一点? 问题答案: 加载图像后,你可以尝试:

  • 我想在tkinter中创建由笔记本框架和每个选项卡内的几个框架组成的简单图形用户界面。假设我想在笔记本的每个选项卡内创建两个标记的框架,跨越100%的窗口宽度和50%的窗口高度。 屏幕布局 我将有更多的帧/元素,我想采取窗口宽度/高度的x%。 我读到tkintergui应该自动调整窗口大小时,但我不能让它工作。 如何设置帧以获取100%的窗口宽度和(例如)50%的窗口高度? 如何使框架居中,使其不

  • 我正在尝试实现这个功能: 在表视图的每个单元格中显示标题、说明和图像。但是,图像可能为零。要求是: 当image为nil时,自动展开标签以适应整个单元格 Tableview单元格高度应根据描述标签自动调整。 需要使用stackView 我以编程方式做到了这一点: > 设置此为tableview: 创建2个堆栈视图:一个用于标签,一个用于标签图像: 然而,这段代码不会自动调整tableview单元格

  • 我正在开发一个应用程序,它具有通过拖动右下角按钮来调整和旋转imageview的功能。 我看到一个应用程序,它有一个功能,如果我们拖动右下角的按钮对角,imageview大小已经调整,或者如果我们拖动按钮向左或向右的方向,imageview已经按照方向旋转。我希望在我的应用程序中实现此功能 我正在努力实现单指旋转以及调整imageview的大小。 我可以通过拖动它的右下角按钮成功地实现调整图像视图

  • 我有3个子视图(、、

  • 我无法将svg的大小调整为20px到20px。下面是svg的原始代码大小,它是巨大的0 0 35.41 35.61: 但是,然后我将viewbox值更改为“0 0 20 20”,而不指定svg本身的宽度和高度,并且大小仍然非常大: 然后我在主svg文件中添加了一个宽度20和高度20,结果的大小变小了,但是它现在被裁剪了。 我阅读了SVG文档,并且理解了如果您不指定宽度/高度,它将使用ViewBox