【问题标题】:Safari: :before-element in column-count on wrong positon (bug?)Safari: :before-element in column-count on wrong position (bug?)
【发布时间】:2018-10-02 03:14:37
【问题描述】:

我在 Safari 中发现了一个奇怪的行为,现在我不确定这是错误还是我遗漏了什么。

当我将容器中的多个段落拆分为两列时(在column-count 的帮助下)并另外给这些元素一个absolute-定位:before-元素时,Safari 中会发生一些奇怪的事情。第二列中的 :before 元素没有相对于它们的段落定位。相反,safari 会根据他们的位置假装没有column-count,并将它们定位在段落通常的位置(在第一列下继续)。

是我遗漏了什么还是这是一个错误?如果这是一个错误,是否已经知道,是否有解决方法?

(其他所有浏览器都会在第二列的段落旁边显示 x')

这是它在 Safari 中的外观:

.container {
  width:800px;  margin:0 auto; padding:2rem;
  column-count:2;
  -webkit-column-count:2;
}

.element:before {
  content: "x";
  position:absolute;
  display:block;
  margin-left:-1rem;
  color:red;
}
<div class="container">
  <p class="element">
    Paragraph I<br>
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
  </p>
    <p class="element">
    Paragraph II<br>
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
  </p>
    <p class="element">
    Paragraph III<br>
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
  </p>
    <p class="element">
    Paragraph IV<br>
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
  </p>
    <p class="element">
    Paragraph V<br>
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
  </p>
    <p class="element">
    Paragraph VI<br>
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
  </p>
    <p class="element">
    Paragraph VII<br>
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
  </p>
    <p class="element">
    Paragraph VIII<br>
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
  </p>
    <p class="element">
    Paragraph IX<br>
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
  </p>
    <p class="element">
    Paragraph X<br>
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
  </p>
</div>

【问题讨论】:

    标签: css safari css-multicolumn-layout


    【解决方案1】:

    不确定这是否是已知错误,但您可以使用 position: relative 而不是 absolute 来修复它。

    .container {
      width:800px;  margin:0 auto; padding:2rem;
      column-count:2;
      -webkit-column-count:2;
    }
    
    .element:before {
      content: "x";
      position: relative;
      display: block;
      margin-left: -1rem;
      margin-bottom: -16px;
      color: red;
      -webkit-transform: translateZ(0); // need this for safari to show position relative text
    }
    <div class="container">
      <p class="element">
        Paragraph I<br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      </p>
        <p class="element">
        Paragraph II<br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      </p>
        <p class="element">
        Paragraph III<br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      </p>
        <p class="element">
        Paragraph IV<br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      </p>
        <p class="element">
        Paragraph V<br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      </p>
        <p class="element">
        Paragraph VI<br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      </p>
        <p class="element">
        Paragraph VII<br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      </p>
        <p class="element">
        Paragraph VIII<br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      </p>
        <p class="element">
        Paragraph IX<br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      </p>
        <p class="element">
        Paragraph X<br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      </p>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-02
      • 2022-12-02
      • 2020-10-13
      • 2011-07-06
      • 2022-12-02
      • 1970-01-01
      • 2022-12-02
      • 2013-03-23
      相关资源
      最近更新 更多