【问题标题】:CSS Transform on Chrome shows element edgesChrome 上的 CSS 变换显示元素边缘
【发布时间】:2018-02-15 16:02:15
【问题描述】:

我正在尝试对包含跨度的 div 应用 scaleX 变换。转换工作得很好,但是当它不统一时,跨度的边缘似乎没有接触,导致它们之间出现一条可见的线。

这是一个例子

这是fiddle

  <div class="container">
    <div class="page">
      <div class="line">
        <span class="cell">A</span><span class="cell">B</span><span class="cell">C</span><span class="cell">D</span>
      </div>
    </div>
  </div>

.container {
    background-color: black;
    width: 350px;
}
.page {
    padding: 10px;
    transform: scaleX(1.2);
}
.line {
    padding-left:25px;
}
.cell {
    background-color: white;
    color: black;
    font-size: 100px;
}

将 scaleX 变换的值更改为 1.0,边缘就会消失。更改为 1.1,然后更改为 1.2,您可以看到转换,否则似乎工作得很好。似乎是 Chrome 浏览器 - firefox 和 edge 没有出现问题。我对 CSS 很陌生,所以欢迎任何建议。

【问题讨论】:

    标签: css google-chrome css-transforms


    【解决方案1】:

    将以下内容添加到您的单元格中

    -webkit-backface-visibility: hidden;
    

    【讨论】:

    • 我在 Windows 上使用最新的 Chrome 测试了这个想法,现在浏览器似乎可以识别背面可见性样式(不再是 -webkit)。然而,它似乎并没有解决这个问题。我是否需要同时应用其他样式?
    • @jimwe 将您的变换更改为 scaleX(1.2) perspective(0.01px) 可以在测试中使用,但会有文本稍微模糊的副作用。
    【解决方案2】:

    所以这是内联元素的一个长期怪癖。一个非常实用的解决方案是删除 &lt;span&gt; 标签的结束标签(所有浏览器都支持这个)

    也请查看此链接How to remove the space between inline-block elements?

    最后你可以使用 Flexbox 来解决这个问题

    .container {
      background-color: black;
      width: 350px;
    }
    .page {
     padding: 10px;
     transform: scaleX(1.3);
    }
    .line {
      padding-left:25px;
    }
    .cell {
      background-color: white;
      color: black;
      font-size: 100px;
    }
      <div class="container">
        <div class="page">
          <div class="line">
            <span class="cell">A<span class="cell">B<span class="cell">C<span class="cell">D
          </div>
        </div>
      </div>  

    【讨论】:

    • 感谢这个删除跨度结束标签的想法。效果很好!但是我没有看到 在这里列为可选标签:w3.org/TR/html5/syntax.html#optional-tags 所以我很犹豫是否使用此选项。我正在玩 Flexbox,但还没有找到正确的组合。当我找到一个有效的弹性模型时,我会在这里发布。
    • 当然......这有点hacky......我的理解是浏览器可以处理没有关闭的标签,因为如果不关闭前一个元素就不能存在下一个元素的推断。在 XHTML 中,XML 强制您实际关闭标记。但是,如果你找到一个 flexbox,请告诉我。我认为那是你更清洁的解决方案。祝你好运
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 2019-07-30
    • 2013-02-01
    • 2014-03-07
    相关资源
    最近更新 更多