html - 了解跨浏览器转换和起源

标签 html css svg cross-browser transform

我显然在这里遗漏了一些东西,希望有人可以为我填补关于跨浏览器 transformorigin 与 SVG 一起使用的空白。

所以这个问题的快速版本,为什么下面的例子在 Chrome 中看起来/像预期的那样工作,但是 origin 在 Firefox 中被搞乱了,而在 IE 中 transform 似乎根本不起作用? (红色的东西应该像在 Chrome 中一样均匀地围绕绿色椭圆圈,但适用于所有浏览器)。

我只是没有正确指定属性,缺少必要的前缀来转换关于 IE 的内容吗?我从事桌面开发的时间太长了,并且正在摆脱一些网络技能的生锈,所以我很感激你可能提供的任何一 block 不起眼的馅饼。 :)

CodePen

@keyframes rotateIT {
  0% {} 100% {
    transform: rotate(360deg);
    -webkit-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
  }
}
@-webkit-keyframes rotateIT {
  0% {} 100% {
    transform: rotate(360deg);
    -webkit-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
  }
}

#damnit {
  animation: rotateIT 3s ease infinite;
  transform-origin: center;
  -webkit-transform-origin: center;
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Yes, I left the objects off-center of canvas on purpose for this example of origin issues. -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 width="150px" height="150px" viewBox="0 0 150 150" enable-background="new 0 0 150 150" xml:space="preserve">
<circle fill="#00A651" cx="57.5" cy="55.5" r="25"/>
<g id="damnit">
	<path fill="#BE1E2D" d="M63,23.475c13.742,2.354,24.567,13.357,26.639,27.192h10.078C97.516,31.312,82.265,15.87,63,13.368V23.475z
		"/>
	<path fill="#BE1E2D" d="M25.361,50.667c2.105-14.059,13.247-25.2,27.306-27.306V13.283C33.088,15.51,17.51,31.088,15.283,50.667
		H25.361z"/>
	<path fill="#BE1E2D" d="M52.667,87.639C38.832,85.567,27.829,74.742,25.475,61H15.368c2.502,19.265,17.944,34.516,37.299,36.717
		V87.639z"/>
	<path fill="#BE1E2D" d="M89.525,61C87.21,74.52,76.52,85.21,63,87.525v10.106C82.042,95.159,97.159,80.042,99.632,61H89.525z"/>
</g>
</svg>

最佳答案

正如@DaniP 指出的那样,caniuse.com 将成为您解决跨浏览器问题的首选资源。来自更直接的链接 http://caniuse.com/#feat=transforms2d : IE <= 10 不支持 svg 元素的转换。

并且 FF 在 svg 元素上遇到 transform-origin 问题。在 SO 中搜索 "firefox transform-origin svg" - 有一些答案可以让人们得到它的工作(例如使用 transform: rotate(deg, cx, cy))但是当我测试你的例子时那些对我不起作用。 Mozilla 有几个与此相关的错误 - 例如关闭https://bugzilla.mozilla.org/show_bug.cgi?id=923193 ,其中最后一条评论是“这不应该被关闭”

关于html - 了解跨浏览器转换和起源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39454890/

相关文章:

html - 上面DIV动态改变高度时DIV填充剩余高度

javascript - 无法使用jquery获取悬停的svg元素的id

javascript - 计算动态加载的 div 的高度

javascript - Bootstrap3文件输入

html - 如何制作没有图像的渐变背景?

html - 在网页上以非阻塞方式调用URL

html - "10.3px"是 css 中的有效属性值吗

javascript - jQuery 下拉菜单 - 如何隐藏正文点击菜单

javascript - 将工具提示应用于 Raphael 中的一组而不是每一侧

css - 圆形进度条CSS