如何使用 AngularJs 调整 SVG viewBox 的大小?

2023-12-29

类似问题的解决方案涉及 CSS 和img tag.

但是,我无法使用<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)我可以通过编程方式设置内联 SVG viewBox 的大小吗?$scope? 2)如果没有,我该如何制作inline包含 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 的宽度,但仅显示上半部分,并且浏览器选项卡会出现垂直滚动条。


viewBox描述哪一部分要显示的 SVG 画布的大小。如果在 SVG 根坐标中,左/上边框位于 (0,0),右/下边框位于 (300,200),则设置viewBox="0 0 300 200".

要设置displaySVG 的大小,使用width and height。将两者设置为 100% 足以使其适合<div>。更好的是,它们是默认值,因此您可以将其保留。请注意,HTML 块没有固有高度,因此您仍然需要将其限制为屏幕尺寸。

如果您一开始使用的外部 SVG 未设置viewBox,但是(一些)x, y, width and height

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

将他们移入viewBox对于内联元素,删除width属性并设置计算的屏幕相关高度:

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

或(Angular 1.x 语法)

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

需要ng-attr-height=解释了解决方法here https://docs.angularjs.org/guide/interpolation#-ngattr-for-binding-to-arbitrary-attributes这就是原始错误消息的原因。对于 Angular 2+,请使用属性绑定 https://angular.io/guide/template-syntax#attribute-binding: [attr.height]=

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 AngularJs 调整 SVG viewBox 的大小? 的相关文章

  • AngularJS,使用没有后退按钮刷新的路由

    我在用着angularJS使用 AJAX 构建一个简单的单页应用程序 但是当用户使用本机后退按钮时我遇到了问题 angular module myApp ionic myApp controllers myApp services conf
  • 添加甜蜜警报 Angular js

    我是 AngularJS 的新手 我正在尝试使用来自https github com oitozero ngSweetAlert https github com oitozero ngSweetAlert 我已经将相应的脚本添加到我的in
  • 如何使用 ng-if 测试变量是否已定义

    有没有办法使用ng if测试变量是否已定义 而不仅仅是它是否为真 在下面的示例中 现场演示 http plnkr co edit jKPN0dOHDWBtPxJHXv2R p preview HTML 仅显示红色商品的运费 因为item s
  • 如何在 Angular 中使用 ng-options 过滤选择?

    我编写了以下 Angular 应用程序的概念验证 该应用程序允许人们投票选举美国总统
  • 将行推入使用 ng-repeat 以角度呈现的表格中

    当客户端单击该行时 我想在表中插入额外的行 不应预取数据 因为我预计最多有 30 行 但每行都有关联的数据 在一次获取中获取这些数据是不合理的 到目前为止 我的方法是使用 ng repeat 迭代我的集合并渲染表格 当客户端按下该行时 客户
  • 为什么在这个函数定义中像这样使用“window.angular”?

    我正在尝试理解一个我需要用来与 Django 集成的 angularjs 文件 它有一个我不熟悉的奇怪语法 请记住我是一名初级开发人员 所以这可能是你的面包和黄油 它是这样的 function angular undefined use s
  • 文本输入框作为 SVG 中的“foreignObject” - 文本溢出问题

    我使用 foreignObject 标签在 svg 中有一个文本输入框 这很有效 但是如果您在输入框中输入的内容比其宽度长 从而导致其溢出 那么文本实际上会出现在页面上的其他位置 可能是没有外来对象标记的默认位置 这是一些屏幕截图来解释正在
  • 单元测试依赖注入

    我对茉莉花和业力是全新的 我相信我的环境设置正确 并且我能够运行非常基本的单元测试 但是一旦我尝试实例化控制器 我就会收到未知提供程序错误 并且我不确定如何调试它 我需要传入 stateProvider 依赖项吗 我在角种子示例中没有看到这
  • 渲染时 Flutter SVG 延迟

    我在行中显示 SVG 文件形式的图像和文本 由于某些原因 svg 图像的渲染速度比屏幕的其余部分慢 从而导致延迟 这不利于用户体验 这种延迟正常吗 我该怎么做才能使整个屏幕同时渲染 Row mainAxisAlignment MainAxi
  • 自 JRE 1.7.0_25 起,Batik 无法进行转换

    自从我更新到 JAVA 1 7 0 25 以来 蜡染在应用转换时会抛出异常 堆栈跟踪是 java awt image ImagingOpException Unable to transform src image at java awt
  • 如何在angularjs中使用addClass方法

    我有一个仅限于类的 angularjs 指令 如何使用 angularjs 中的 addClass 方法添加它 指示 app directive number function return restrict C link function
  • 如何销毁角度工厂实例

    一方面 我有几个工厂 每个工厂都控制一个 websocket 另一方面 其中一个工厂应该在客户端登录时启动 因此 if user isLogged injector get NotificationsWebsocket 这就是我动态初始化工
  • Android 上的 SVG 支持

    Android 支持 SVG 吗 有什么例子吗 最完整的答案是这样的 Android 2 x 默认浏览器本身不支持 SVG Android 3 默认浏览器支持 SVG 要将 SVG 支持添加到 2 x 版本的平台 您有两个基本选择 安装功能
  • $exceptionHandler 中的 $location - 依赖冲突

    我正在尝试实现一个非常标准的任务 当发生异常时 重定向到我的 error page 代码的简化形式如下所示 app factory exceptionHandler location function location return fun
  • 在 Angular 中让多个调用等待同一个 Promise

    我在一个页面上有多个使用相同服务的控制器 为了举例 我们将服务称为 USER 第一次调用 USER getUser 时 它会发出 http 请求来获取有关用户的数据 调用完成后 它将数据存储在 USER data 中 如果再次调用 USER
  • $resource.query 返回分割字符串(字符数组)而不是字符串

    我正在使用像下面这样的 Angular resource angular module app factory data function resource var Con resource api data update method P
  • Protractor e2e 测试表头和 , 标签

    我正在使用下表 我想测试每个标签 th td 标签 该标签中的文本以及该文本的计数 HTML 片段 table class table table striped tbody tr th b a Patient Id a b th th b
  • 节点大小与 D3 中的子节点数量成正比

    我创建了这个点击 展开 折叠网络 http jsfiddle net 5Lv8gkqv http jsfiddle net 5Lv8gkqv var width 960 height 500 root name Chocolate tag
  • AngularJS:Array.prototype.find() 在 Chrome 中不起作用

    我遇到一个问题 我的角度代码可以在 Firefox 中工作 但不能在 Chrome 中工作 浏览器控制台打印如下 TypeError undefined is not a function at setSelectedColor http
  • 如何制作没有 ng-repeat 的模板并使用 Angular-drag-and-drop-lists 将数据传递到 $scope?

    我想用角度拖放列表 https github com marceljuenemann angular drag and drop lists使用我自己的网格模板到所见即所得编辑器 如何构建我自己的 HTML 模板而不需要ng repeat因

随机推荐

  • 如何在单击多个按钮时更改按钮颜色

    当页面加载其他两个不活动的按钮时 我有一个按钮需要处于活动状态 单击非活动按钮时 我需要从另一个按钮中删除活动类并将其添加到单击的按钮中 button click function clicked true if clicked this
  • python re.sub 模块中以 key 作为匹配组的字典查找

    python re sub 模块中以 key 作为匹配组的字典查找 解决方案1 不起作用 dict1 dict1 indu sharma dict1 abhi dutta text agan abhi indu Saikat text re
  • CallLog 内容提供商最多返回 500 个结果

    由于某种原因 如果我查询 CallLog 内容提供程序 我最多会得到 500 个结果 另外 我似乎只得到 1 个月前的结果 当我的设备电话应用程序目前显示大约 8 个月时 我用谷歌搜索了它 但我发现的只是 将 CallLog Calls 存
  • 我可以告诉或提示 RubyMine 本地变量或实例变量是什么类型吗?

    我正在尝试利用 RubyMine 快速文档和代码完成 我很高兴地发现它如何很好地集成了 YARD 风格的注释 param Numeric width param Array
  • 使用 AFNetworking 加载离线缓存的 JSON

    我一直在尝试使用 AFNetworking 实现缓存 以便我的缓存 JSON 将离线加载 我以不同的方式尽了最大努力 但根本无法使缓存工作 我不知道我在这里错过了什么 这是我的代码AppDelegate func application a
  • 使用空合并运算符进行隐式转换

    我发现我的程序有一个奇怪的行为 经过进一步分析 我发现我的 C 知识或其他地方可能有问题 我相信这是我的错误 但我无法在任何地方找到答案 public class B public static implicit operator B A
  • Javascript对象根据属性有效求和值

    我在 JS 数组中确实有三个对象 如下所示 2013 03 02T00 00 300 2013 03 01T00 00 200 2013 03 02T00 00 50 我想要类似下面的内容作为上面数组的输出 2013 03 02T00 00
  • Swift:使用 NSOperation 保留循环

    在我的应用程序中 我使用图像加载器类从网络加载图像以用于集合视图 该类跟踪下载操作 并在图像单元格在集合视图中不再可见时取消下载操作 此实现基于 NSOperation 的 raywenderlich 教程 http www raywend
  • 有没有办法在查询中使表名动态化?

    我正在尝试为产品创建类继承设计 有一个包含所有公共字段的基表 然后 对于每种产品类型 都有一个单独的表 其中包含仅适用于该产品类型的字段 因此 为了获取产品的所有数据 我需要JOIN基表以及与相关的任何表product type列在基表中
  • Promise.resolve().then 与 setImmediate 与 nextTick

    NodeJS 0 11 以及 io js 和 Node 0 12 分支都带有原生 Promise 原生承诺have a then method https developer mozilla org en US docs Web JavaS
  • MVC3 提交 Ajax 表单

    我已经阅读了很多关于这个主题的不同帖子 我将继续这样做并尝试各种事情 尽管信息差异很大 但由于我对 MVC 等相对缺乏经验 我觉得我有点绕圈子 情况是这样的 我正在 MVC3 应用程序中显示 Razor 视图 其中包含 jqGrid 中的记
  • 仅在 CopyObject 中拒绝 Amazon S3 访问

    我从 nodejs 脚本上传文件 当我尝试复制对象时 我收到 访问被拒绝 错误 如果我尝试删除该对象或获取它 没有问题并且成功 CopyObject 中有什么特殊的吗 params Bucket buacket name CopySourc
  • 使用 Ajax 更新 Rails 中的元素

    该应用程序允许用户对嵌入视频进行投票 当用户点击上下箭头时 整个页面刷新更新points 几个月来我一直在尝试实现 AJAX 投票 我想要您能提供的最直接的解决方案 即使它不是最有效的 有任何想法吗 My up and down行动来自ap
  • 我可以在我的桌面应用程序中使用谷歌语音识别 API

    我想知道我是否可以在我的桌面应用程序中使用 google 的语音识别 api 我见过一些示例 其中我必须将语音转换为文件并发送到网址 但这将是一个不太麻烦的任务 因为在我的应用程序中 用户必须不断提交他的声音 那么还有其他替代方法可以使用
  • iOS SWRevealViewController - 在控制器之间传递数据

    我正在使用 SWRevealViewController 在我的应用程序中实现滑动菜单 从左侧 一切工作正常 但现在我面临一个小问题 我想从我的 主 视图控制器传递数据 完全可见的控制器 我不称其为 frontViewController
  • 分离的实体传递到持久化

    使用 hibernate 3 6 10 maven 2 postgres 9 我有必须工作的代码 但事实并非如此 在我使用 hibernate 3 6 2 并遇到非常沮丧的错误之前 java lang ClassCastException
  • Composer 未安装本地包依赖项

    在我的 Laravel 5 4composer json 文件中 我有以下内容可以自动加载我的自定义包 请注意 该包尚未发布 而是在本地加载 autoload classmap database seeds database factori
  • 如何确定导致分段错误的原因

    我的代码的目标是接受 2 个命令行参数 包括程序名称 并根据给定的第二个命令行参数打印出所示的响应 如果命令行参数是一个整数 则用户的输入被接受或 成功 如果它是其他任何内容 例如字符串或多个命令行参数 则它将为 Null 并显示错误消息
  • 当光标位于页面之外时可以触发鼠标事件吗?

    我正在创建一个游戏 在该游戏中 人们可以按住鼠标按钮并拖动它来旋转对象 但是 当鼠标位置超出页面边界时 将不再触发所有鼠标事件 这意味着当光标位于页面之外时 对象不再旋转 此外 当用户在页面边界之外释放鼠标时 我无法跟踪这意味着当光标返回页
  • 如何使用 AngularJs 调整 SVG viewBox 的大小?

    类似问题的解决方案涉及 CSS 和img tag 但是 我无法使用 img src myFile svg 因为 SVG 包含 Angular 指令 例如