css - 如何在 div 上应用变换和过渡效果

标签 css

我正在 an example i found 上练习 css 。我尝试用过渡效果显示导航上方的子菜单。我可以更改悬停时子菜单的位置:

nav li:hover .menu-sub {
  display: block;
  transform: translateY(-100%);
}

我还修改了代码,添加了过渡效果:

.menu-sub {
  position: absolute;
  left: 0;
  background: #444;
  width: 100%;
  display: none;
  color: #fff;
  padding: 2em;
  -webkit-transition: -webkit-transform 1.5s ease;
    -moz-transition: -moz-transform 1.5s ease;
    -o-transition: -o-transform 1.5s ease;
    transition: transform 1.5s ease;
}

位置改变了,但我根本看不到任何过渡效果。我做错了什么?

最佳答案

请将转场修改为如下所示,写错了。

.menu-sub {
  position: absolute;
  left: 0;
  background: #444;
  width: 100%;
  opacity:0;
  overflow:hidden;
  box-sizing:border-box;
  height:0px;
  color: #fff;
  -webkit-transition: opacity 1.5s ease-out;
    -moz-transition: opacity 1.5s ease-out;
    -o-transition: opacity 1.5s ease-out;
    transition: opacity 1.5s ease-out;
}

过渡不适用于显示,而是使用以下效果。

Codepen Demo

我们可以将 height0px 切换到 auto(全高),并将 opacity0(不可见)到 1(可见)。您可以看到,我们只能在不透明度上看到动画,这样会产生最佳效果。

关于css - 如何在 div 上应用变换和过渡效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46756525/

相关文章:

javascript - Google 图表 - 如何更改整个表格的 css 属性

html - iPhone 6/6 Plus 裁掉 100% 宽度的内容

css - SASS 不会编译 @import Google 字体 CDN

html - 在没有 JavaScript 和绝对定位的情况下让 DIV 填充页面的其余部分?

css - 如何在与第 n 个 child 的混合中只选择 parent 的前两个 child ?,而不是每个第一个和第二个

ios - iOS 11.x的Cordova是否损坏了CSS图像蒙版?

html - 为什么我的下拉菜单会在悬停时移动?

css - Angular:primeng 的样式无法工作,即使它们列在 styles.scss 中

css - ng-table 可排序标题的选择器

javascript - 显示/隐藏 div Javascript 错误