javascript - CSS 过渡在 Safari 中有效,但在 Chrome 中无效

标签 javascript html css css-transitions

出于某种原因,此代码在 Safari 中有效,但在 Chrome 中无效。在 Safari 中,汉堡包按钮动画化为 X。在 Chrome 中,它只是在两种状态之间切换。我是否遗漏了一些明显的东西,或者我是否使用了 Chrome 不支持的属性?

var el = document.querySelector('.menu-button');

el.onclick = function() {
  el.classList.toggle('toggled');
}
.menu-button {
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  -webkit-tap-highlight-color: rgba(0,0,0,0);
}

.menu-button:hover {
  cursor: pointer;
}

.menu-button .line {
  background-color: #333;
  width: 20px;
  height: 2px;
  border-radius: 1px;
  transition: margin 0.2s ease-in-out 0.2s, transform 0.2s ease-in-out 0;
}

.menu-button .line:last-child {
  margin-top: 4px;
}

.menu-button.toggled .line {
  transition-delay: 0, 0.2s;
  transition-property: margin, transform;
}

.menu-button.toggled .line:first-child {
  margin-top: 2px;
  transform: rotate(45deg);
}

.menu-button.toggled .line:last-child {
  margin-top: -2px;
  transform: rotate(-45deg);
}
<div class="menu-button">
  <div>
    <div class="line"></div>
    <div class="line"></div>
  </div>
</div>

最佳答案

这一行是错误的:

transition: margin 0.2s ease-in-out 0.2s, transform 0.2s ease-in-out 0;

应该是:

transition: margin 0.2s ease-in-out, transform 0.2s ease-in-out;

编辑:

如果您将 s 添加到最后的 0 ,它在 chrome 中工作:

transition: margin 0.2s ease-in-out 0.2s, transform 0.2s ease-in-out 0s;

关于javascript - CSS 过渡在 Safari 中有效,但在 Chrome 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59415465/

相关文章:

javascript - AngularJS 客户端验证 : Changing validation requirements depending on other fields?

javascript - 获取给定数字的除数的所有子集并检查它们是否不违反条件

javascript - 在 Dart 中使用 geoJson Leaflet

javascript - 单击任何菜单项时悬停属性丢失

html - 使用 CSS 更改悬停时的文本

html - 使用 CSS 翻转卡片时文本向下移动

jquery - 悬停时显示重叠/堆叠背景

javascript - Three.js 天空盒在小的时候可以工作,但是在大的时候是黑色的

html - 在响应式 iframe 上 Div 高度为 0px

javascript - 来自苹果网站的手机导航菜单