【问题标题】:css 3d rotate safari / chrome bugcss 3d 旋转 safari / chrome bug
【发布时间】:2021-03-11 19:41:05
【问题描述】:

我正在尝试创建一个带有开门 svg 动画的房子。我尝试了几个小时以在 firefox、safari、chrome 上获得相同的结果。但似乎我无法让它在 safari 上运行,请参阅下面的 sn-p。我希望门像图片中那样打开,底部有一个尖角。

* {
  margin: 0;
  padding: 0;
}

html, body {
  height: 100%;
}

.wrap {
  height: 100%;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items:center;
}

svg {
  -webkit-perspective: 1000px;
  perspective: 1000px;
  position: relative;
  background: #f2f;
  stroke: #000;
  width: 200px;
  height: 200px;
  -webkit-perspective-origin: 100% 0;
  perspective-origin: 100% 0;
}

#door {
  position: relative;
  transition: transform 1s;
  -webkit-transform-origin: 180px center;
  transform-origin: 180px center;
  fill: #fff;
}

svg:hover #door{
  -webkit-transform: rotateY(-45deg);
  transform: rotateY(-45deg);;
}
<div class="wrap">
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 200 200">
            <g id="door">
              <rect id="door-rect" x="120" y="100" width="60" height="100" />
              <circle id="door-handle" cx="130" cy="150" r="5" />
            </g>
  </svg>
    </div>

【问题讨论】:

  • 据我所知,目前只有 Firefox 支持通过 CSS 实现 SVG 元素的 3d 动画
  • 对我来说,它在窗口的 chrome 中运行良好,而不是在 Firefox 中保持平坦
  • 那么我在哪里可以找到关于 svg 元素的 3d 动画的信息?如果这是问题,我希望能找到另一种方法

标签: css svg safari css-transforms


【解决方案1】:

添加一个 skewY 以向上移动。

* {
  margin: 0;
  padding: 0;
}

html, body {
  height: 100%;
}

.wrap {
  height: 100%;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items:center;
}

svg {
  -webkit-perspective: 1000px;
  perspective: 1000px;
  position: relative;
  background: #f2f;
  stroke: #000;
  width: 200px;
  height: 200px;
  -webkit-perspective-origin: 100% 0;
  perspective-origin: 100% 0;
}

#door {
  position: relative;
  transition: transform 1s;
  -webkit-transform-origin: 180px center;
  transform-origin: 180px center;
  fill: #fff;
}

svg:hover #door{
  transform: rotateY(-45deg) skewY(10deg);
}
<div class="wrap">
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 200 200">
            <g id="door">
              <rect id="door-rect" x="120" y="100" width="60" height="100" />
              <circle id="door-handle" cx="130" cy="150" r="5" />
            </g>
  </svg>
    </div>

【讨论】:

  • 为 firefox 修复它,但对于 chrome 它增加了 skew/3d 效果 ...
  • 有趣。在我的 Mac 上,它在 Chrome 和 Firefox 上看起来是一样的。
  • 好的,我会检查我的更新,总有一天我会相信浏览器黑客幽灵在我的电脑里乱搞。
  • 也许是我的系统出了问题。谁知道?我仍然不知道为什么我们不能在所有浏览器中保持一致性。如果不出意外,可以用前缀“修复”差异。
  • 我也有同样的感觉,但我 10 年的旧电脑可能不是你能找到和信任的清洁器 .. (W7) 即将被扔掉
猜你喜欢
  • 2017-08-21
  • 1970-01-01
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
相关资源
最近更新 更多