Единицы на переходе «0с» в Firefox

Почему следующий переход не работает в Firefox без модулей? Как только вы добавляете единицы, это работает. Похоже, что другие крупные браузеры равнодушны к устройствам.

Насколько я знаю, это единственный пример времени перехода «0», без единиц измерения, не работающих в Firefox.

Вы можете видеть это работает, и с единицами,здесь, в JSFiddle.

А вот такой же точный код без блоков и сломанный,на 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;
}

Я прошу прощения за большое количество «стиля», который не зависит от рассматриваемой проблемы. Но может быть связь между стилем, который я использую, и неудачным переходом, поэтому я включаю код полностью. Это также намного красивее меню со стилем :)

Ответы на вопрос(1)

Решение Вопроса

Значения и единицы измерения CSS прямо не говорится, что нулевые времена без единиц измерения недопустимы, он говорит, что нулевые единицы без единиц измерениянаходятся допускается по длине и углам. Я считаю, что это подразумевает, что нулевые единицы не допускаются ни для какого другого измерения или количества, потому что нулевые единицы не учитываются нигде в спецификации. Следовательно, наличие нулевого единицы для свойства времени не допускается.1

Таким образом, если для свойства времени указан ноль без единицы, объявление является недействительным и должно быть полностью проигнорировано, что делает Firefox. В этом случае Firefox правильно следует стандарту, в то время как все остальные браузеры содержат ошибки.

1 Кажется, что CSS изначально намеревался разрешить нулевые значения времени без единиц измерения - наряду с несколькими другими различными единицами -в слуховых таблицах стилей, Это может объяснить, почему другие браузеры выбирают нулевое время без единиц измерения. Однако, поскольку таблицы стилей слуха теперь устарели, этот раздел больше не является нормативным, и поэтому правила там больше не применяются. Чтобы добавить к иронии, ни один из основных браузеров так или иначе не реализовал звуковые таблицы стилей (ну, кроме Opera, может быть ...).

 jamesplease30 окт. 2012 г., 19:38
Это очень информативный ответ, @BoltClock! Я действительно ценю тщательность этого.
 jamesplease30 окт. 2012 г., 19:29
Ах хорошо! Это имеет смысл. Документынад Мозиллой пойти дальше, чем подразумевать это, явно заявив об этом. Я приму ответ, как только время ожидания закончится. Благодарю.
 Nathan Arthur23 февр. 2017 г., 18:16
Я действительно желаю, чтобы спецификация была разрешена без единиц измерения 0 раз.
 BoltClock♦30 окт. 2012 г., 19:36
@jmeas: Спасибо за ссылку - я только что обновил свой ответ, добавив немного дополнительной информации,мог бы объясните, почему другие браузеры допускают нулевые единицы без единицы ...
 BoltClock♦23 февр. 2017 г., 18:22
@Nathan Arthur: IIRC причина, по которой они не допустили 0 без единиц для чего-либо еще, заключалась в том, чтобы избежать двусмысленности Нет известных сокращенных свойств, которые бы принимали как <length>, так и <time>, но если бы они были, вы бы не смогли определить, был ли определенный 0 как <length> или <time>, если только вы применяет определенный порядок значений (например, сокращение от flex для различения flex-grow, flex-shrink и flex-based) или требует перечисления определенных свойств.

Ваш ответ на вопрос