【问题标题】:Why does html child element disappears when rotating element in Webkit?为什么在Webkit中旋转元素时html子元素会消失?
【发布时间】:2016-12-02 01:52:15
【问题描述】:

我正在尝试在 html 中旋转一个容器 div,以便它的所有子元素都随之旋转。

document.addEventListener('DOMContentLoaded', function() {
  var img = document.createElement('img');
  var ctx = document.getElementById('canvas').getContext('2d');
  var n = 73; // -58
  var elContainer = document.getElementById('container');
  var elDegrees = document.getElementById('degrees');

  var setAngle = function(n) {
    elContainer.style.transform = ''.concat('rotate(', n, 'deg)');
    elDegrees.innerHTML = n;
  }; // /setAngle()

  document.getElementById('btnUp').addEventListener('mousedown', function() {
    n++;
    setAngle(n);
  });

  document.getElementById('btnDown').addEventListener('mousedown', function() {
    n--;
    setAngle(n);
  });

  img.onload = function() {
    ctx.drawImage(img, 0, 0, 640, 360);
  };
  img.src = 'https://blog.codepen.io/wp-content/uploads/2012/06/Made-For-Codepen.png';
  setAngle(n);
});
* {
  box-sizing: border-box;
  overflow: hidden;
}
#root {
  position: relative;
  width: 250px;
  height: 150px;
}
#container {
  position: absolute;
  top: 0;
  left: 0;
  overflow: hidden;
  width: 250px;
  height: 150px;
  transform-origin: center center 0px;
  transform: rotate(90deg);
  transform-style: preserve-3d;
  background-color: #000000;
}
#child {
  background-color: #00ff00;
  position: absolute;
  box-sizing: border-box;
  overflow: hidden;
  top: 60px;
  left: 60px;
  padding: 10px;
  z-index: 2;
}
#canvas {
  display: block;
  width: 250px;
  height: 150px;
  position: absolute;
  box-sizing: border-box;
  overflow: hidden;
  top: 0;
  left: 0;
  z-index: 1;
}
<div id="root">

  <div id="container">
    <div id="child">
      TEXT ELEMENT
    </div>
    <canvas id="canvas" style="" width="640" height="360"></canvas>
  </div>

</div>

<button id="btnDown">-1 degree</button>
<button id="btnUp">+1 degree</button>
<span id="degrees"></span> degrees

<p>
  In Chrome or Safari, if the container is rotated greater than 73 degrees or less than -58 degrees, to absolute positioned child div with text disappears. Why?
</p>

由于某种原因,当容器 div 在 Chrome 或 Safari 中旋转超过 73 度或 -58 度时,子 div 元素会消失在 canvas 元素后面。画布元素和视频元素都会发生这种情况。这个问题在 Firefox 中不会发生。

【问题讨论】:

标签: css html rotation webkit


【解决方案1】:

您是否也尝试过对孩子进行相同的 webkit 轮换?并且可能漂浮孩子可能会有所帮助。不是100%确定。或者,您可能需要指定您在 webkit 中使用的浏览器。

【讨论】:

  • 如果你浮动它,孩子仍然会消失。如果您对孩子应用相同的旋转,它只会在稍后消失。不确定“指定您在 webkit 中使用的浏览器”是什么意思。我所说的 webkit 是指基于 webkit 的浏览器,例如 Chrome 和 Safari。
猜你喜欢
  • 2020-10-07
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 2013-06-10
  • 1970-01-01
  • 2021-04-29
  • 2021-04-19
相关资源
最近更新 更多