Firefox Nightly 中的 CSS 3D 变换

当 CSS 中的第一个 3D 变换在 Webkit 浏览器中得到支持时,人们对此感到非常兴奋。现在,随着其成熟,我们也在 Firefox 中支持 3D CSS。要亲眼看看,请查看最新的 nightly 构建版本之一

您可以在这个旋转 HTML5 logo 的演示和下面的屏幕截图中看到它们的作用。

这意味着现在我们需要您的支持,在 Firefox 中尝试 CSS 3D 示例,并为您的 CSS 3D 产品和演示添加除 -webkit- 之外的其他扩展。为了证明这是可能的,我们采用了著名的 仅适用于 webkit 的“海报圆圈”演示,并通过添加 -moz-(当然还有其他前缀和一组没有浏览器前缀的指令)使其在 Firefox nightly 上运行。以下是一个简短的摘录

-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
transform-style: preserve-3d;

您可以在下面的屏幕截图中与 Chrome 并排看到这一点,您也可以亲自试用演示。轻微的卡顿实际上是我的 MacBook Air 每当我使用 ScreenFlow 时都在模仿起飞的喷气式飞机,而不是浏览器。

为了庆祝发布并展示如何将 CSS 3D 作为一种微妙的效果应用,请玩玩使用您最喜欢的浏览器(和一只猫)进行的配对游戏

browser pairs

Oleg Romashin 也花了一些时间将一些 CSS 3D 演示转换为适用于 Mozilla 的版本,您可以查看 3D 城市以获得更多“哇”的效果。

如果您不熟悉 CSS 3D 变换,这里有一个很好的初学者课程一个用于创建它们的工具

旋转的 HTML5 logo 演示还展示了如何检查当前使用的浏览器是否支持 3D 变换。我们不是为所有前缀重复动画帧,而是使用 JavaScript 进行测试,并动态创建 CSS。

function checksupport() {
  var props = ['perspectiveProperty', 'WebkitPerspective',
               'MozPerspective', 'OPerspective', 'msPerspective'],
      i = 0,
      support = false;
  while (props[i]) {
    if (props[i] in form.style) {
      support = true;
      pfx = props[i].replace('Perspective','');
      pfx = pfx.toLowerCase();
      break;
    }
    i++;
  }
  return support;
}
if (checksupport()) {
  var s = '';
  styles = document.createElement('style');
  s += '#stage{-'+ pfx +'-perspective: 300px;}'+
       '#logo{-'+ pfx +'-transform-style: preserve-3d;position:relative;}'+
       '#logo.spin{-'+ pfx +'-animation: spin 3s infinite linear;}'+
       '@-'+ pfx +'-keyframes spin {'+
       '0% {'+
       '-'+ pfx +'-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);'+
       '}'+
       '100% {'+
       '-'+ pfx +'-transform: rotateX(0deg) rotateY(360deg)'+
       ' rotateZ(360deg);'+
       '}}';
  styles.innerHTML = s;
  document.querySelector('head').appendChild(styles);
}

有关创建使用 3D 变换的自定义页面的更多信息,请查看草案规范

与往常一样,如果您发现任何错误,请在bugzilla.mozilla.org 上报告!

因此,请通过支持和测试来奖励我们为 Firefox 的 CSS 引擎带来第三维度的辛勤工作。干杯!

关于 Chris Heilmann

HTML5 和开放网络的传播者。让我们一起解决这个问题!

更多 Chris Heilmann 的文章…


39 条评论

  1. loffini

    在 ff 7.0.1 OSx 上不起作用

    2011 年 10 月 26 日 下午 1:27

    1. Chris Heilmann

      是的,那是因为 7 不是 nightly 版本…

      2011 年 10 月 26 日 下午 1:29

    2. paulo333

      你可能应该读一下前四行…

      2011 年 10 月 26 日 下午 2:50

  2. Zéfling

    嗯,这个演示还不工作
    http://ikilote.net/Programmation/CSS/Test/transform-style.htm

    2011 年 10 月 26 日 下午 1:57

  3. Jesse Ruderman

    我在哪里可以下载 NyanBrowser?

    2011 年 10 月 26 日 下午 2:03

  4. Karl Böhlmark

    这是个好消息!
    我看到 backface-visibility 也能工作 => 让我们开始翻转吧!

    2011 年 10 月 26 日 下午 2:45

  5. Beben Koben

    旋转在哪里!!!
    出了什么问题

    2011 年 10 月 26 日 下午 3:10

  6. Richard

    当宣布 WebKit 支持时,我做了这个

    http://dev.rgraph.net/tests/video.html

    它使用 WebM 视频,因此只有在 Chrome 中才能工作,据我所知。

    2011 年 10 月 26 日 下午 3:38

    1. Omega X

      Firefox 从 4.0 版本开始就支持 WebM。

      2011 年 11 月 1 日 下午 4:50

  7. AdamT

    你们这些蠢货真不错。读读这篇文章吧,你们这些文盲。

    2011 年 10 月 27 日 上午 1:00

    1. woodsy

      不可避免地,穆菲定律会让你在屁股上咬一口!

      2011 年 10 月 27 日 上午 3:44

  8. Jonathan

    很棒。虽然海报圆圈演示在我的系统上远不如其他演示流畅(它也不是 MacBook Air),但实际上它相当卡顿。

    2011 年 10 月 27 日 上午 2:04

  9. Matt

    海报圆圈演示在我的系统上也很卡顿,而在 Chromium 上运行非常流畅。有人可以将我们指向 bugzilla 上的相应错误吗?

    除此之外,干得好!:)

    2011 年 10 月 27 日 上午 3:38

  10. mekal

    我做了一个幻灯片和一本书,书中有一个非常小的错误 ZIndex 背面,并在瞬间返回到其位置

    http://kiwik.goldzoneweb.info/scriptsite/livre.html

    http://kiwik.goldzoneweb.info/scriptsite/diap_3d.html

    deux exemples que j’ai fait un diaporama et un livre pour le livre il y a un tres petit bug le zindex remonte et revient a sa position en une fraction de seconde

    2011 年 10 月 27 日 上午 3:46

  11. Gerben

    我认为 ‘perspectiveProperty’ 应该只是 ‘perspective’。
    此外,替换应该是 ‘.replace(/Perspective/i,”);’ 以考虑没有前缀的版本没有大写 ‘p’。

    这样,即使浏览器删除前缀,代码仍然可以工作。

    2011 年 10 月 27 日 上午 9:12

  12. Ken Saunders

    哇,再哇一次。你们真是太棒了!
    很喜欢浏览器记忆游戏。

    我的系统非常普通,但所有演示都能正常运行,包括海报圆圈。一点也不卡顿。
    将海报圆圈演示与浏览器记忆游戏混合起来会很酷,而且很迷幻。
    :)

    2011 年 10 月 27 日 下午 12:51

  13. Paul Irish

    在 Webkit 的许多情况下,上述功能检测会给出假阳性。从大约两三年以前开始,所有 Webkit 端口都解析并理解 `perspective` 作为一个属性,但 3D 变换的实际实现取决于端口。

    Modernizr 使用在 Webkit 中公开的自定义媒体查询(也曾被考虑用于 Gecko)

        @media (transform-3d), (-o-transform-3d), (-moz-transform-3d), (-ms-transform-3d), (-webkit-transform-3d){
             /* ... */
        }
    

    为了避免误识别浏览器,我建议增强上述脚本… 或者只使用 Modernizr 的自定义构建版本。:)

    2011 年 10 月 29 日 下午 9:40

  14. shirokoff

    它似乎在 Aurora 9.0a2 中不起作用 =(

    2011 年 11 月 1 日 上午 1:12

    1. Matt Woodrow

      您需要 nightly 版本(10!)才能使其正常工作,直到它合并到 Aurora(下周)。

      2011 年 11 月 1 日 下午 10:44

    2. Mark

      Aurora != nightly
      (Aurora 不等于 nightly)

      2011 年 11 月 2 日 上午 8:54

  15. Michael

    您好 Chris,

    我尝试使用此功能(仅为 -webkit-* 启用,否则会使 rorateY’ed 图像变得有点奇怪),但显然 preserve-3d 变换样式只是让图像“消失”了… 这里有一个例子,只需与 Chrome 进行比较

    http://www.pcx360.com/games/169-Deus_Ex__Human_Revolution.htm

    CSS 在 http://www.pcx360.com/css/generic/games.css(第 24/25 行)
    在另一个 .css 中,body 上还有一个 -moz-perspective : 1000px(与 -webkit 相同)。

    您知道可能是什么问题吗?

    2011 年 11 月 11 日 下午 8:06

    1. nemo

      https://bugzilla.mozilla.org/show_bug.cgi?id=702375

      对于对他的报告感兴趣的人来说 - 似乎规范还没有完全成熟 ;)

      2011 年 11 月 16 日 下午 12:36

  16. Konrad Perko

    哇,我在 6 步内赢得了“浏览器备忘录”(借助 Firebug 的帮助 ;))

    2011 年 11 月 16 日 上午 09:41

    1. nemo

      我可以借助 Firebug 在 0 步内获胜 ;)

      2011 年 11 月 16 日 下午 12:36

  17. Vinci

    我有一个 3D 演示在 WebKit 浏览器中运行良好……我为 Aurora 添加了 moz 前缀

    http://jsdo.it/vincicat/4bRd

    当我在 Aurora 10a2 上尝试它时,大部分演示都工作正常,除了核心部分——透视既不工作于动态(过渡)也不工作于静态方式 :(

    2011 年 11 月 17 日 上午 10:56

  18. Michael

    @Vinci: 似乎是你的 overflow: hidden 出了问题(不是说问题出在你这边,但没有它,透视看起来没问题)

    2011 年 11 月 19 日 上午 04:07

    1. Vinci

      嗨,迈克尔,

      谢谢。我删除了透视,但效果仍然不正确 :X
      http://jsdo.it/vincicat/5V9l/

      (使用 WebKit 查看演示,你会看到区别)

      2011 年 11 月 20 日 上午 00:39

  19. nemo

    嘿,Vinci。我对这个不太了解,但根据 moz 人员的说法,3D CSS 规范在某些方面有点模糊(绘制顺序?),这对我在一个演示中看到的透视有影响。据他们说,即使在不同的 WebKit(操作系统/卡或类似的东西)上,它也可能会有所不同。不知道。也许他们中的一员可以参与进来,也许如果你提交了一个错误报告。

    2011 年 11 月 20 日 下午 15:27

  20. SToto98

    您好 Chris,
    我已经调整了这个 CSS/JS 脚本 http://tympanus.net/Development/Slicebox/index5.html 以支持 -moz- 前缀。

    我已经用最新的夜间版(11.0a1)试过了……它可以工作,但结果与 WebKit 渲染的结果相去甚远……
    它只是很难看。到处都是瑕疵。在哪里发布结果最好?bugzilla.mozilla.org?

    2011 年 11 月 21 日 下午 12:34

  21. is-real

    不错!
    我刚更新了一个我之前做的 CSS 3D 实验,现在它也可以在 Firefox 夜间版上使用了。

    http://www.is-real.net/experiments/css3/wonder-webkit/

    2011 年 12 月 14 日 下午 19:09

  22. Samuel

    我还稍微调整了一下 3D,在这里创建了一个多边形,尽管它在 Mozilla 中很迟钝。它在 Chrome 中运行得很好。
    看看这个

    http://www.techsoftsolutions.net/demo/3dcss/css3D.html

    2011 年 12 月 30 日 下午 14:09

  23. Joel

    在 Chrome/Safari 中看看这个

    http://workshop.chromeexperiments.com/bookcase/

    这就是未来。但这应该发生在现在。

    Firefox 需要加把劲,让这一切尽快发生,因为当主要市场份额的浏览器停滞不前,落后两年时,许多企业和社交/学习网站都会落后。

    作为一名开发者,我真的很失望,我支持了多年的浏览器。看到 Firefox 团队在提供类似 WebKit 的 3D 渲染方面缺乏创新、远见,坦白地说,还缺乏傲慢,我感到沮丧。

    听着,这些浏览器是免费的,为我们所有人提供了不可估量的服务,因此,我感到很脏,不得不发表任何对 Firefox 的批评。但如果你要承担责任,那就把它做好。

    别再拖我们后腿了。别再拖自己后腿了。在 2012 年启动并运行它——想办法。

    2012 年 1 月 11 日 下午 21:38

    1. Forkoff

      @Joel……你在说什么,那在 Firefox 中看起来很完美。

      实际上非常令人印象深刻。我的脑袋爆炸了。

      如果你想谈论浏览器阻碍我们,为什么不提一下(5 个流行浏览器中)那个不支持 CSS3 的浏览器,更不用说 3D CSS 了……你知道,同一个浏览器已经阻碍了 web 发展近 10 年了。同一个浏览器仍然预装在超过 70% 的电脑上……

      微软……该醒醒了,放弃 IE,预装 Firefox、Chrome、Opera 或 Safari,让那些知道自己在做什么的人处理互联网。微软需要专注于他们的操作系统和办公文档,让互联网专业人士处理 web 浏览器。

      2012 年 2 月 3 日 上午 05:50

  24. Michael

    @Joel: 那在 Firefox 中看起来很好……

    2012 年 1 月 12 日 下午 23:57

  25. Andi

    我正在处理我的布局,几周前我找到了 3D CSS 测试工具,我认为它太棒了,太棒了!这让我想起了 hotmetalpro。但好一点。非常感谢,我会链接你的 3D CSS 测试工具。
    andi

    2012 年 2 月 10 日 下午 16:05

  26. Orlando Leite

    与你分享,在 http://g2brasil.com.br 中添加了对 -moz 3D 的支持
    它运行正常,但有点慢,可能是我的电脑问题。

    2012 年 2 月 21 日 下午 12:33

  27. Oswald

    Chris,

    你可能会喜欢这些示例
    https://code.google.com/p/css3-graphics/

    Oswald

    2012 年 2 月 22 日 下午 18:37

    1. nemo

      没有尝试过跨浏览器吗?
      嘘。
      反射确实在 Firefox 中使用了另一种(更强大的)语法,但其中大部分本来可以很容易地实现跨浏览器。

      有点难过。

      2012 年 6 月 6 日 上午 08:00

  28. pendragon

    http://www.instantlyemail.com/ 有一个很酷的 3D 翻转计时器。目前在 WebKit 中比在 Firefox 中效果略好。也可以用于临时电子邮件地址!

    2012 年 7 月 10 日 上午 10:12

本文的评论已关闭。