Firefox 中“0”转换的单位
Posted
技术标签:
【中文标题】Firefox 中“0”转换的单位【英文标题】:Units on "0s" Transition in Firefox 【发布时间】:2012-10-20 04:01:43 【问题描述】:为什么在没有单位的情况下,以下转换在 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;
对于与手头问题无关的大量“造型”,我深表歉意。但是我正在使用的样式和失败的转换之间可能存在耦合,所以我将完整的代码包括在内。这也是一个更漂亮的菜单与样式:)
【问题讨论】:
【参考方案1】:虽然CSS Values and Units 没有明确表示不允许无单位零次,但它确实表示长度和角度允许无单位零。我相信这意味着任何其他维度或数量都不允许使用无单位零,因为规范中的其他任何地方都没有解决无单位零。因此,时间属性不允许使用无单位零。1
因此,如果为时间属性指定了没有单位的零,则声明无效并且应该完全忽略,这就是 Firefox 正在做的事情。在这种情况下,Firefox 正确地遵循标准,而所有其他浏览器都存在错误。
1似乎 CSS 最初打算允许无单位零时间值 - 以及其他几个不同的单位 - in aural style sheets。这可以解释为什么其他浏览器选择允许无单位零次。然而,由于听觉样式表现在已经过时,该部分不再是规范性的,因此,那里的规则不再适用。更讽刺的是,主流浏览器都没有实现过听觉样式表(好吧,除了 Opera 可能......)。
【讨论】:
啊,好吧!这就说得通了。文档over on Mozilla 比通过明确说明来暗示它更进一步。等待时间结束后,我会接受答案。谢谢。 @jmeas:感谢您的链接 - 我刚刚用更多背景信息更新了我的答案,可能解释了为什么其他浏览器允许无单位零次......跨度> 这是一个非常有用的答案,@BoltClock!我真的很欣赏它的彻底性。 我真的希望规范允许无单位 0 次。 @Nathan Arthur:IIRC 他们最终不允许无单位 0 用于其他任何事情的原因是为了避免歧义。没有已知的同时采用以上是关于Firefox 中“0”转换的单位的主要内容,如果未能解决你的问题,请参考以下文章
CSS 滑动 div(转换/转换在 Firefox 25.0.1 中不起作用)
Firefox svg stroke-dasharray,单位为px
为啥 Intl.NumberFormat 不适用于 Safari 和 Firefox 中的单位?