所以,我现在正在试验 CSS3 过渡,因为它有点标准化,而且我们没有大量的前缀要处理。我所拥有的是一个基本的三行导航栏,单击该导航栏时,两个栏会成角度,而中间会消失(在此示例中,它保留在那里,但在我的项目中,它“消失”成一个出现在它后面的元素恰好是相同的颜色)。顶栏和底栏是伪元素,中间的只是普通元素。
很难解释,所以我做了一个小提琴。
我遇到的问题是,在 Chrome 29 中,条形的颜色过渡存在延迟。在 Firefox 和 IE10 中,过渡有效。在 Chrome 中,翻译过渡有效,但背景颜色无效。在 Opera 中,两者都不起作用,在 Safari 中……嗯,Safari 有它自己的问题。
标记很简单:
<nav>
<div id="menu">
<span></span>
</div>
</nav>
我正在使用 jQuery 1.8.3,并且正在使用这个非常复杂的脚本。
$(document).ready(function() {
$('#menu').click(function() {
$(this).toggleClass('active');
$('nav').toggleClass('active');
});
});
我正在使用以下 CSS:
#menu { cursor: pointer; height: 30px; position: fixed; z-index: 200; }
#menu span { position: relative; margin-top: 10px; }
#menu span, #menu span:before, #menu span:after { height: 5px; background-color: #231F20; width: 50px; display: block; transition: all 0.5s; -webkit-transition: all 0.5s; -o-transition: all 0.5s; }
#menu.active span:before, #menu.active span:after { background-color: #F2F2F2; }
#menu.active span:before { top: 0; transform: rotate(45deg); -ms-transform: rotate(45deg); -webkit-transform: rotate(45deg); }
#menu.active span:after { bottom: 0; transform: rotate(-45deg); -ms-transform: rotate(-45deg); -webkit-transform: rotate(-45deg); }
#menu span:before, #menu span:after { position: absolute; display: block; content: ""; }
#menu span:before { top: -10px; }
#menu span:after { bottom: -10px; }
所以,我的问题是:为什么 Chrome 的背景颜色没有过渡?我在 Opera 中做错了什么?我知道 Opera 现在经常依赖 -webkit- 前缀,所以我假设无论问题出在哪一个上,它都出在另一个上。
而且,如果你真的觉得自己是个解决问题的天才,你能告诉我为什么它在 Safari 上也会变得很奇怪吗?如果你能得到它,那是给一颗金星和一块饼干。
非常感谢你们!