在Firefox

时间:2017-01-29 22:31:43

标签: html css css-transitions

所以我有一个带弹出边栏的简单小页面。

当您单击菜单图标(3个条形图)时,它会使用过渡来移动/更改马铃薯和菜单图标。

当导航栏打开时,转换在所有浏览器中都能正常工作,但是当关闭时,所有转换都可以在所有浏览器中正常工作,除了Firefox,其中3个条形图没有动画,只是跳回来。

我想提供更多信息,但我真的不知道还有什么要说的。

$(".open").click(function() {
  window.location = "#menu";
  history.pushState("", document.title, window.location.pathname);
  $(".bars").toggleClass("change");
});
$(".close").click(function() {
  window.location = "#";
  history.pushState("", document.title, window.location.pathname);
  $(".bars").toggleClass("change");
});
@import url(//fonts.googleapis.com/css?family=Open+Sans);
* {
  margin: 0;
  padding: 0;
}

body {
  background: #f4f4f4;
  font-family: 'open sans', serif;
}

header {
  background: #fff;
  position: fixed;
  top: 0;
  width: 100%;
  height: 100px;
  box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.2);
}

.potato {
  position: fixed;
  z-index: 2;
  width: 75px;
  margin: 19.125px;
}

.potato:hover {
  filter: drop-shadow(0 0 2px rgba(0, 0, 0, 0.5));
  cursor: pointer;
}

.potato:active {
  filter: drop-shadow(0 0 3px rgba(0, 0, 0, 0.75));
  cursor: pointer;
}

#title {
  color: #0d8aed;
  position: fixed;
  top: 0;
  z-index: 1;
  width: 100%;
  text-align: center;
  line-height: 100px;
  font-size: 50px;
}

#content {
  background: #fff;
  color: #0a6ebd;
  font-size: 20px;
  padding: 10px 20px;
  width: 75%;
  min-height: 500px;
  margin-top: 125px;
  margin-left: auto;
  margin-right: auto;
  box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.1);
}

#menu a {
  text-decoration: none;
}

.nav-control {
  float: right;
  width: 100%;
  transition: width 0.4s ease;
}

#menu {
  position: fixed;
  z-index: 4;
  top: 0;
  width: 0;
  height: 100%;
  background: #e9e9e9;
  overflow-y: auto;
  transition: width 0.4s ease;
}

#menu a {
  color: #000;
  display: block;
  text-align: center;
  padding: 15px;
}

#menu a:hover,
#menu a:focus {
  color: #fff;
  background: #0d8aed;
}

.close {
  display: none;
}

#menu:target {
  width: 10%;
}

#menu:target + .nav-control {
  width: 90%;
}

#menu:target + .nav-control .open {
  display: none;
}

#menu:target + .nav-control .close {
  display: block;
}

p {
  padding-bottom: 15px;
}

.bars {
  display: inline-block;
  position: absolute;
  top: 32px;
  left: 42px;
  z-index: 5;
  -webkit-transition: 0.4s ease;
}

.bar1,
.bar2,
.bar3 {
  top: 0;
  left: 0;
  width: 25px;
  height: 3px;
  background-color: #333;
  margin: 6px 0;
  -webkit-transition: 0.4s ease;
}

.bars.change {
  left: calc(10% + 43px);
  top: 34px;
  transition: 0.4s ease;
}

.change .bar1 {
  transform: rotate(-45deg) translate(-5.75px, 4px);
}

.change .bar2 {
  opacity: 0;
}

.change .bar3 {
  transform: rotate(45deg) translate(-7.8px, -7.8px);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<header>
  <nav id="menu">
    <a href="javascript:void(0);">Home</a>
    <a href="javascript:void(0);">Link1</a>
    <a href="javascript:void(0);">Link2</a>
    <a href="javascript:void(0);" class="close">Current</a>
  </nav>
  <div class="nav-control">

    <a href="javascript:void(0);" class="open">
      <div class="bars">
        <div class="bar1"></div>
        <div class="bar2"></div>
        <div class="bar3"></div>
      </div>
      <img class="potato" src="https://www.limitlovespotato.es/potato.png">
    </a>

    <a href="javascript:void(0);" class="close">
      <div class="bars">
        <div class="bar1"></div>
        <div class="bar2"></div>
        <div class="bar3"></div>
      </div>
      <img class="potato" src="https://www.limitlovespotato.es/potato.png">
    </a>

  </div>
  <h1 id="title">HEADER TITLE</h1>
</header>
<div id="content">
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pugnant Stoici cum Peripateticis. Si quae forte-possumus. Aufert enim sensus actionemque tollit omnem. Restinguet citius, si ardentem acceperit. </p>

  <p>Id enim natura desiderat. Num quid tale Democritus? Equidem e Cn. Sed haec in pueris; </p>

  <p>Recte dicis; Videamus animi partes, quarum est conspectus illustrior; At multis se probavit. Conferam tecum, quam cuique verso rem subicias; </p>

  <p>Fortemne possumus dicere eundem illum Torquatum? Equidem e Cn. Itaque hic ipse iam pridem est reiectus; Hic nihil fuit, quod quaereremus. Est, ut dicis, inquit; Quare conare, quaeso. </p>

  <p>Cave putes quicquam esse verius. Quid adiuvas? Duo Reges: constructio interrete. Neutrum vero, inquit ille. Minime vero, inquit ille, consentit. Cur iustitia laudatur? </p>
</div>

2 个答案:

答案 0 :(得分:1)

为了使其适用于所有浏览器,您必须为所有不同的浏览器添加动画。

在您的情况下,您将使用

-moz-transition

例如,这些是CSS3过渡声明:

-webkit-transition: all 500ms ease;
-moz-transition: all 500ms ease;
-ms-transition: all 500ms ease;
-o-transition: all 500ms ease;
transition: all 500ms ease;

以下是我最喜欢的工具之一,可以帮助加快这一过程:http://css3generator.com/

答案 1 :(得分:0)

原来这是jquery的toggleclass的一个问题,它几乎禁用了转换,奇怪的是它只在firefox上进行了一次转换。

无论如何,我通过添加jquery ui解决了这个问题(我不需要整个库,只需要js文件),因为jquery ui为toggleclass添加了一个持续时间选项,我设置为400,因为我的所有转换都是0.4第