5

ユニットがないとFirefoxで次の移行が機能しないのはなぜですか?ユニットを追加すると、機能します。他の主要なブラウザはユニットに無関心であるようです。

私の知る限り、これは、Firefoxで機能しない、単位なしの「0」の遷移時間の唯一の例です。

あなたはそれが機能しているのを見ることができます、そしてユニットで、ここ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;
}

当面の問題とは関係のない大量の「スタイリング」についてお詫び申し上げます。ただし、使用しているスタイルと失敗した遷移の間に結合がある可能性があるため、コードを完全に含めています。それはまた、スタイリングを備えた非常にきれいなメニューです:)

4

1 に答える 1

20

CSS の値と単位では、単位のないゼロ時間が許可されていないと明示的には述べていませんが、長さと角度には単位のないゼロが許可されていると述べています。これは、単位のないゼロが仕様の他の場所で扱われることは決してないため、他の次元や数量には単位のないゼロが許可されないことを意味すると思います。したがって、時間プロパティに単位のないゼロを使用することはできません。1

そのため、時間プロパティに単位のないゼロが指定されている場合、宣言は無効であり、完全に無視する必要があります。これは Firefox が行っていることです。この場合、Firefox は標準に正しく従っていますが、他のすべてのブラウザにはバグがあります。


1 CSS は当初、聴覚スタイル シートで、他のいくつかの異なる単位とともに、単位のないゼロ時間値を許可することを意図していたようです。これは、他のブラウザーが単位のないゼロ時間を許可する理由を説明している可能性があります。ただし、聴覚スタイル シートは廃止されたため、そのセクションはもはや規範的ではなく、そこにある規則は適用されなくなりました。皮肉なことに、主要なブラウザーのいずれも聴覚スタイル シートを実装したことはありません (まあ、Opera を除いては...)。

于 2012-10-30T18:26:02.107 に答える