CSS3 过渡可能存在 webkit 错误



所以,我正在试验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现在经常依赖-webkit-前缀,所以我假设无论问题出在一个,它都在另一个上。

而且,如果你真的觉得自己是一个解决问题的天才,你能告诉我为什么它在 Safari 上也会变得不稳定吗?那是一颗金星和一块饼干,如果你能得到的话。

非常感谢大家!

我想通了。

我将 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 { -webkit-transform: translateY(0) rotate(-45deg); transform: translateY(0) rotate(-45deg); }
  #menu.active span:after { -webkit-transform: translateY(0) rotate(45deg); transform: translateY(0) rotate(45deg); }
  #menu span:before, #menu span:after { position: absolute; display: block; content: "";  }
  #menu span:before { -webkit-transform: translateY(-250%); transform: translateY(-250%); }
  #menu span:after { -webkit-transform: translateY(250%); transform: translateY(250%); }

它有效。你可以在这把小提琴上看到它。

相关内容

  • 没有找到相关文章

最新更新