【问题标题】:CSS3 transform flickers vertically aligned elementCSS3变换闪烁垂直对齐的元素
【发布时间】:2016-11-01 21:28:50
【问题描述】:

出于结构原因,我必须使用绝对定位 + translateY(-50%) 来垂直对齐元素。

但是,为这些垂直对齐的元素设置动画会在每个浏览器上显示出故障。元素在动画结束时模糊和闪烁。

我已经尝试过使用透视、translateZ、rotateZ 但没有成功..

编辑 -> 问题未解决 - 请查看最新回复以了解更多信息

您可以在附加的 sn-p 中看到问题

#wrapper {
  background: orange;
  position: relative;
  width: 350px;
  height: 150px;
  font-family: sans-serif;
}

#elem {
  transition: all 500ms ease 0ms;
  transform: translate3d(-50%, -50%, 0); 
  position: absolute;
  top: 50%;
  left: 50%;
  text-align: center;
  width: 80%;
  height: auto;
  line-height: 30px;
  background: teal;
  color: white;
  
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  -webkit-transform-style: preserve-3d;
  transform-style: preserve-3d;
  
  -webkit-font-smoothing: antialiased;
  -webkit-perspective: 1000px;
  perspective: 1000px;
}
#wrapper:hover #elem {
  transform: translate3d(-50%, -50%, 0) scale(1.3);  
}
<div id="wrapper">
  <div id="elem">Lorem Ipsum dolor</div>
</div>

【问题讨论】:

    标签: css css-transitions vertical-alignment css-transforms flicker


    【解决方案1】:

    尝试使用 em 定位技术而不是变换。似乎 transform: translate() wa 会导致渲染问题。

    #wrapper {
      font-size:15px;
      background: orange;
      position: relative;
      width: 300px;
      height: 150px;
      font-family: sans-serif;
      box-sizing:border-box;
      
    }
    
    #elem {
      transition: all 500ms ease 0ms;
      position: absolute;
      top: 50%;
      left: 0;
      display:block;
      text-align: center;
      width: 80%;
      margin: -1em 10% 0;
      height: auto;
      line-height: 2em;
      background: teal;
      color: white;
    }
    #wrapper:hover #elem {
     font-size:1.3em
    }
    <div id="wrapper">
      <div id="elem">Lorem Ipsum dolor</div>
    </div>

    【讨论】:

    • 在我的示例中,您的解决方案似乎解决了浏览器故障。然而,现实世界的情况要复杂得多。我为所有元素使用 EM 和 % 大小创建了一个新小提琴:jsfiddle.net/979d7635/28
    • 另外,使用透视规则,它在比例上变得完全模糊jsfiddle.net/979d7635/29
    猜你喜欢
    • 2018-03-05
    • 2013-07-03
    • 2013-10-08
    • 2014-04-02
    • 2015-07-15
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多