CSS 变换原点不适用于 safari 中的 svg

2024-02-04

我正在尝试围绕其中心旋转图像。但在Safari中,SVG的左上角,总是以它的原点为中心进行旋转。

       var rotate_val= 30;
       function rotate(val){
           rotate_val =  rotate_val + val;
           var transform = "translate(0, 0) scale(1, 1) rotate("+rotate_val+ ")";

           var svg = d3.select("g").transition()
            .style('-webkit-transform-origin', '50% 50%')
            .style('transform-origin', 'center')
            .duration(1200)
            .attrTween("transform",function(interpolate) {
                return d3.interpolate(transform, transform);
            });

       }



  <body>
      <button onclick="rotate(30)">Rotate + 30</button>
      <button onclick="rotate(-30)">Rotate - 30</button>
      <div id = "svgcontainer" style="border: 1px solid">
         <svg width = "100%" height = "100%" viewBox="0 0 750 400">
             <g>
                 <image x="325" y="150" xlink:href="image.png" height="100" width="100"/>
            </g>
         </svg>
      </div>
   </body>

https://jsfiddle.net/ztw2omgb/ https://jsfiddle.net/ztw2omgb/


根据变换源的 MDN 文档 https://developer.mozilla.org/en-US/docs/Web/CSS/transform-origin,状态transform-origin for SVG is 兼容性未知。所以它可能还没有在 Safari 中实现。

However,如果您删除transform-origin属性完全,您可以使用第二个和第三个参数rotate()函数来定义所选元素的旋转中心。例如

你的形象x, and y值是325 and 150宽度和高度分别为100。所以旋转中心应该是x and y值加上宽度和高度的一半 (50) 给出375 and 200.

function rotate(val){
  rotate_val =  rotate_val + val;

  // note the rotate function now contains second and third argument,
  // which specify the center of rotation.
  var transform = "translate(0, 0) scale(1, 1) rotate("+rotate_val+ ", 375, 200)";

  d3.select("g").transition()
    .duration(1200)
    .attrTween("transform",function(interpolate) {
       return d3.interpolate(transform, transform);
    });

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

CSS 变换原点不适用于 safari 中的 svg 的相关文章

  • jQuery 选择 # id 以单词为前缀,计数器为后缀

    有没有办法用 jQuery 选择所有带有前缀 my 和后缀 0 9 的 id 像这样的 my 1 4 还是可以用循环来实现 div div div div div div div div div div 第一个想法 似乎效果很好 div i
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • 如何使用 jest 模拟第三方库

    我正在开发一个node js应用程序使用nestjs我有一堂课叫LoggerService如下 export class LoggerService private logger Rollbar constructor this logge
  • Ember.js 处理 View 事件后转换到路由

    Setup 我有一个 Ember 应用程序 支持使用 Imgur API 上传图像 我已经有一个工作路线和模板来处理任何 Imgur ID 但我想在上传新图像后转换到此路线 使用返回的 Imgur ID 这是该应用程序的相关部分 http
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • 如何将送货地址复制到帐单地址

    我想知道是否可以将送货地址复制到帐单地址 当用户单击与送货地址相同的复选框时 送货地址值将被复制到账单输入字段 我完成了大部分部分 但我不确定如何将选择菜单 状态 值复制到帐单地址 我真的很感谢任何帮助 My code document r
  • 我可以停止 :hover 应用于元素吗?

    假设我有一些 CSS button hover font weight bold 我怎样才能防止 hover随意应用样式 我的目标用例是当元素被禁用时 例如 使用这个 HTML
  • JSTL 在循环中每 5 个字段集创建一个新行

    您好 我目前正在迭代并在表中显示字段集列表 为了让布局变得更得体一些 我想在每次循环到达第五个字段集时创建一个新行 谢谢 JSP div class det table class det tr td td tr table div
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • 当用户单击链接时,如何记录 MixPanel 事件?

    当用户单击某种类型的链接时 我试图在 MixPanel 中记录一个事件 我正在使用 JQuery 不引人注意地完成此操作 据我所知 我需要添加一个回调函数 以便在记录事件后将用户带到 URL 这是我正在使用的代码 不幸的是
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • 三级十进制有序列表 CSS

    我有一个 html 中的三级有序列表 我想为其提供如下样式 1 Item 1 1 1 Item 2 1 1 1 Item 3 下一个 plunker 中有一个 html 示例 http plnkr co edit DqhZ5pJILTUHG
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 如何在 gulp.src 中使用基本正则表达式?

    我正在尝试选择两个文件gulp src highcharts js and highcharts src js 当然 我知道我可以使用数组表达式显式添加这两个表达式 但出于学习目的 我尝试为它们编写一个表达式 我读过可以使用简单的正则表达式
  • 在 GWT 中,在任何主机页标记上添加事件处理程序

    我想为任何标签添加 MouseOver 事件处理程序 举个例子 我想为旧版 HTML 页面中的每个锚点页面添加事件处理程序 继GWT指南 http code google com webtoolkit doc 1 6 DevGuideUse

随机推荐

  • 对 Azure 存储 [REST][Azure Blob] 中的 PUT Blob 的 REST api 调用身份验证失败

    我正在尝试发出 PUT 请求来创建 Azure Blob 但它显示身份验证失败 我认为我在制定资源字符串或标题时犯了一些错误 这是代码 const CryptoJS require crypto js const request requi
  • 使用extjs有什么优点和缺点? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Webpack:如何覆盖 package.json 主字段?

    如何像 Bower 中那样覆盖 package json 的主字段 overrides highcharts main highcharts js 尝试创建一个与 Webpack 配置中的模块同名的别名 module exports res
  • 基于注释的 Spring bean 验证

    我正在研究一种基于注释的方法来验证 Spring bean弹簧模块 https springmodules dev java net In 本教程 http wheelersoftware com articles spring bean
  • SHA256 给出 44 长度输出而不是 64 长度

    我正在使用以下代码来执行 SHA256 public static string GenerateSaltedHash string plainTextString string saltString byte salt Encoding
  • 如果整数以前导零开头,为什么 JSON 无效?

    我正在将一些 JSON 文件导入到 Parse com 项目中 但不断收到错误 无效的键 值对 它指出有一个意想不到的 8 这是我的 JSON 的示例 Manufacturer Manufacturer Model THIS IS A ST
  • 使用某些 Object 属性从 ArrayList 中删除对象

    我正在维护一个ArrayList的物体 我的对象结构是 ID 名称和其他一些详细信息 我需要删除一个具有某个 id 值 10 的对象 并且我不想迭代该列表 有什么解决办法吗 使用 Java 8Collection removeIf http
  • 如何在Linux上创建临时文件,无论发生什么情况都会自动清理?

    我想在Linux上创建一个临时文件 同时确保该文件在我的程序终止后会消失 即使它被杀死或有人在错误的时刻执行了硬重启 做tmpfile 为我处理这一切 您似乎全神贯注于文件可能会因为某些原因而被遗忘的想法竞争条件 我没有看到为什么这是一个问
  • 配置 StructureMap.MVC5 与 Identity 配合使用的问题

    我目前正在尝试在从一开始就从未正确实现的旧版本 2 6 升级后在我们的应用程序中重新配置 StructureMap 我刚开始使用 DI 容器 并且发现很难找到较新的 StructureMap 版本的文档 我卸载了旧的 2 6 版本的 Str
  • 如何使用 JavaScript 和 sha512 算法对字符串进行哈希处理

    我尝试过使用 NPM 中的 sha512 但它一直在散列错误的内容 即我应该获取一个字符串 但它一直返回对象 所以在 PHP 中我知道我可以执行任务 hash hash sha512 my string for hashing 如何在 No
  • 安装自定义 Visual Studio 语言服务

    我按照一篇非常有用的文章的指示 为我的软件工作室的内部脚本语言编写了一个新的 Visual Studio 语言服务编写您的第一个 Visual Studio 语言服务 http www codeproject com KB recipes
  • 通过 dplyr 中的动态列名进行汇总

    所以我试图在 dplyr 中进行一些编程 但我在 enquo 和 评价 基本上我想将列更改为动态列名称 然后能够进一步操作该列 即汇总 例如 my function lt function data column quo column lt
  • 在 Visual Studio 2010 中显示当前行号和列号

    我刚刚安装了 SP1 现在在 Visual Studio 中的每个源文件底部看不到文本编辑器行号和列号 有谁知道如何重新打开此功能 如果使用 16 4 x 或更高版本的人想知道它去了哪里 它已从状态栏移动到编辑器窗口的右下角 请注意Col当
  • 如何对文档进行部分更新

    我需要有关如何更新 CouchDB 中的字段的指导 我通过控制台尝试了curl 它工作正常 但是以编程方式 我不明白如何更新特定字段 例如 名称 这是在 CouchDB 中更新文档的片段 它工作正常并返回更新后的修订 ID HttpPut
  • 如何在 Cocoa 应用程序中包含 OpenCV?

    当我使用 命令行工具 c stdc 模板创建 xCode 项目时 我能够包含并编译 opencv 标头并运行一些代码 但我想在 Cocoa 应用程序 上下文中使用 OpenCV 使用该模板创建时 当我在 main mm 中包含 OpenCV
  • 如何以编程方式设置gridview的高度android

    我想设置我的高度Gridview在我的应用程序中以编程方式 有什么办法可以实现吗 我只想在代码中的两种特殊情况下更改 gridview 高度 EDIT
  • 如何在 MapView 下方添加 TextView?

    我跟着你好视图 谷歌地图视图 http developer android com resources tutorials views hello mapview html现在我想添加一个TextView在下面的MapView 我只更改了布
  • Git 日志不显示子模块更改[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我在 ma
  • 更改react-big-calendar事件的颜色

    I need to make a calendar with events and I decided to use react big calendar http intljusticemission github io react bi
  • CSS 变换原点不适用于 safari 中的 svg

    我正在尝试围绕其中心旋转图像 但在Safari中 SVG的左上角 总是以它的原点为中心进行旋转 var rotate val 30 function rotate val rotate val rotate val val var tran