firefox - Firefox 中 "0s"转换的单位

标签 firefox css css-transitions transitions

为什么没有单位的以下转换在 Firefox 中不起作用?添加单位后,它就可以工作了。似乎其他主要浏览器对单位无动于衷。

据我所知,这是过渡时间为“0”的唯一示例,没有单位,在 Firefox 中不起作用。

您可以看到它正在运行,并且使用单位 here at JSFiddle .

这里是没有单位的完全相同的代码,并且损坏了,on JSFiddle .

如您所见,Firefox 是唯一一个似乎无法运行的浏览器。另外,这是代码:

HTML:

<nav>
  <ul id="nav">
    <li>
      <a href="#" id="nav1">Home</a>
    </li>
    <li>
      <a href="pasta.html" id="nav2">Charters</a>
      <ul>
        <li><a href="#">New Groups</a></li>
        <li><a href="#">Current Groups</a></li>
      </ul>
      </li>
    <li>
      <a href="same.php" id="nav3">Funding</a>
      <ul>
        <li><a href="#">Funding Guide</a></li>
        <li><a href="#">Get Funding</a></li>
        <li><a href="#">Treasurers</a></li>
        <li><a href="#">Calendar</a></li>
      </ul>
    </li>
    <li>
      <a href="#" id="nav4">Accounts</a>
    </li>
    <li>
      <a href="magis2.swf" id="nav5">Services</a>
      <ul>
        <li><a href="#">Shuttle Service</a></li>
        <li><a href="#">Van Reservations</a></li>
        <li><a href="#">Rattech</a></li>
        <li><a href="#">Sound System</a></li>
      </ul>
    </li>
  </ul>
</nav>​

CSS:

/****************************
Functionality
*****************************/

/* Menu header */
#nav > li {
  float: left;
  margin: 0 19px;
  padding: 0 1px 19px 0;
  position: relative;
}
/* Dropdown elements */
#nav > li:hover ul {
  opacity: 1;
  visibility: visible;
  -webkit-transition-delay: 0, 0;
  /*Remove the units here and in the next selector to break it*/
  -moz-transition-delay: 0s, 0s;
  -o-transition-delay: 0, 0;
  transition-delay: 0, 0;
}
#nav ul {
  visibility: hidden;
  z-index: 1000;
  width: 140px;
  padding: 8px 0;
  position: absolute;
  top: 35px;
  left: -35px;
  opacity: 0;
  background-color: #fff;
  border: 1px solid #aaa;
  border-radius: 2px;
  box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.3);
  -webkit-transition-property: opacity, visibility;
  -moz-transition-property: opacity, visibility;
  -o-transition-property: opacity, visibility;
  transition-property: opacity, visibility;

  -webkit-transition-duration: .2s, 0;
  /*Remove the units here and below to break it*/
  -moz-transition-duration: .2s, 0s;
  -o-transition-duration: .2s, 0;
  transition-duration: .2s, 0;

  -webkit-transition-delay: 0, .2s;
  /*Remove the units here and below to break it*/
  -moz-transition-delay: 0s, .2s;
  -o-transition-delay: 0, .2s;
  transition-delay: 0, .2s;
}

/*********
Style (this should be irrelevant)
*********/

a {
  color: #000;
  display: block;
  font-size: 13px;
  text-decoration: none;
  font-family: 'Georgia', serif;
}
#nav ul a {
  font-size: 12px;
  padding: 10px 18px;
}
#nav ul li:hover {
  background: #e9e9e9;
}
nav {
  width: 470px;
  height: 45px;
  margin-top: 40px;
  margin-left: 10px;
}

对于与当前问题无关的大量“样式”,我深表歉意。但是我正在使用的样式和失败的转换之间可能存在耦合,因此我包含了完整的代码。这也是一个更漂亮的菜单,带有样式:)

最佳答案

同时 CSS Values and Units没有明确说不允许无单位零次,它确实说长度和 Angular 允许无单位零。我相信这意味着任何其他维度或数量都不允许使用无单位零,因为规范中的其他任何地方都没有提到无单位零。因此,不允许时间属性为无单位零。1

因此,如果为时间属性指定了一个没有单位的零,则声明无效,应该完全忽略,这就是 Firefox 正在做的事情。在这种情况下,Firefox 正确地遵循了标准,而所有其他浏览器都存在错误。


1 似乎 CSS 最初打算允许无单位的零时间值 - 以及其他几个不同的单位 - in aural style sheets .这可以解释为什么其他浏览器选择允许无单位零时间。然而,由于听觉样式表现在已经过时,该部分不再规范,因此那里的规则不再适用。更讽刺的是,无论如何,主流浏览器都没有实现听觉样式表(好吧,除了 Opera 可能......)。

关于firefox - Firefox 中 "0s"转换的单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145352/

相关文章:

html - CSS 网格和边距问题

html - 为什么 CSS 转换在移动版 Chrome 中滞后?

javascript - 背景颜色改变它的高度onload

javascript - 尝试使用标准 css3 实现 ease-in-out-expo 计时功能

html - 为什么百分比填充/边距不适用于 Firefox 和 Edge 中的 flex 元素?

javascript - 样式表 Javascript 不会加载 Firefox

javascript - 为什么在 float 上使用 toString() 在 Firefox、Chrome 和 IE 中会产生不同的结果?

firefox - 防止用户禁用或卸载 Firefox 插件

javascript - 通过单击另一个 div 更改 div 中的数据

css - 使用 row-eq-height Bootstrap 相等的列高