【问题标题】:CSS3 transitions only works on the first element in SafariCSS3 过渡仅适用于 Safari 中的第一个元素
【发布时间】:2013-07-02 13:37:25
【问题描述】:

我在 Safari 中的代码遇到了一个奇怪的问题。
我创建了一个 jsbin,问题也在那里:http://jsbin.com/aseced/8/edit

Safari 版本:5.1.7

你能看一下吗?谢谢

TJL

编辑:

鼠标悬停时,标题应该下降(css3 rotateX 和透视)。但只有第一个动画它纠正所有其他只是显示(如显示:块 - 无)

这是我在 JSBin 上演示的代码: (我只是将鼠标悬停时打开的类添加到文章中) HTML:

<article class="tile2x1">
  <img src="http://www.placehold.it/460x220" />
  <section class="caption" style="background-color: #">         
    <header>
      <h5>www.opten.ch</h5>
    </header>
    <a href="http://opten.ch" title="www.opten.ch">
      www.opten.ch
    </a>
  </section>
</article>
<article class="tile2x1">
  <img src="http://www.placehold.it/460x220" />
  <section class="caption" style="background-color: #">         
    <header>
      <h5>www.opten.ch</h5>
    </header>
    <a href="http://opten.ch" title="www.opten.ch">
      www.opten.ch
    </a>
  </section>
</article>
<article class="tile2x1">
  <img src="http://www.placehold.it/460x220" />
  <section class="caption" style="background-color: #">         
    <header>
      <h5>www.opten.ch</h5>
    </header>
    <a href="http://opten.ch" title="www.opten.ch">
      www.opten.ch
    </a>
  </section>
</article>

CSS:

[class*="tile"] {
  margin: 10px;
  position: relative;
  float: left;
  background-color: #e53b24;
}

.tile2x1 {
  height: 220px;
  width: 460px;
}

[class*="tile"] > section.caption {
  padding-top: 20px;
  width: 100%;
  position: absolute;
  top: 0px;
  left: 0px;
  background-color: #7ab73e;
  display: inline-block;

  transform-origin: top;
  -o-transform-origin: top;
  -moz-transform-origin: top;
  -webkit-transform-origin: top;

  transform: perspective( 600px ) rotateX( -91deg );
  -o-transform: perspective( 600px ) rotateX( -91deg );
  -moz-transform: perspective( 600px ) rotateX( -91deg );
  -webkit-transform: perspective( 600px ) rotateX( -91deg );

  transition: all .15s linear;
  -o-transition: all .15s linear;
  -moz-transition: all .15s linear;
  -webkit-transition: all .15s linear;


  backface-visibility: hidden;
  -webkit-backface-visibility: hidden; /* Chrome and Safari */
  -moz-backface-visibility: hidden; /* Firefox */
  -ms-backface-visibility: hidden; /* Internet Explorer */
}

[class*="tile"].open > section.caption {
  transform: perspective( 600px ) rotateX( 0deg );
  -o-transform: perspective( 600px ) rotateX( 0deg );
  -moz-transform: perspective( 600px ) rotateX( 0deg );
  -webkit-transform: perspective( 600px ) rotateX( 0deg );
}


[class*="tile"] > section.caption header {
  padding-bottom: 5px;
  font-size: 18px;
  text-transform: uppercase;
  color: #fff;
  font-weight: 100;
  line-height: 22px;
  margin: 0 20px;
  border-bottom: 1px solid #fffffd;
}

[class*="tile"] > section.caption > a {
  margin: 0 20px;
  line-height: 34px;
  color: #fff;
  font-weight: bold;
  display: block;
}

【问题讨论】:

  • 请在问题中说明您预期会发生什么,出了什么问题,以及任何错误消息:)
  • 你的第一个问题... Safari
  • 通过我在所有浏览器上的网页设计经验来扩展这一点。 Safari 是最特定于名称空间的。我没有看过你的代码,但如果你要兼容 Safari,首先要看的是 CSS 和 JS Var 命名空间。它们必须是完全唯一的,甚至 CSS 名称也不能与任何可能的 JS 名称空间相似。如果即使一个命名空间类似于.body 类名,Safari 也会很快消亡。所以它可能是第一次运行,而不再运行,因为它可能到达了一个它不喜欢的类名。
  • Saf Compat 的第一步是检查您的命名空间是否唯一。我通常通过使用站点名称空间来克服这个问题。例如,一个类 .body 将变为 .site-body,或者一个站点昵称或首字母,如 .s-body
  • 鼠标悬停时标题应该向下(css3 rotateX 和透视)。但只有第一个动画它纠正了所有其他的只是显示(如显示:块 - 无)

标签: jquery css css-transitions safari


【解决方案1】:

我设法通过将转换规则应用于目前需要这些转换的块来修复这个 Safari 特殊性。

不幸的是,就我而言,这是一堆通过滚动鼠标滚轮向左/向右移动的幻灯片,并且没有初始转换。它使您的情况有点复杂,因为 Safari 显然不喜欢您为多个块指定转换。

这是我编辑的your bin:我将变换规则从[class*="tile"] &gt; section.caption 移动到[class*="tile"].open &gt; section.caption,并更改了旋转度数,以便PoC 可演示。

现在轮到您设计一个解决方案以使其按预期工作了。

【讨论】:

    猜你喜欢
    • 2019-03-26
    • 2017-12-06
    • 2013-03-03
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    • 2012-09-11
    相关资源
    最近更新 更多