我在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;
}
位置发生了变化,但我根本看不到任何过渡效应。我做错了什么?
答案 0 :(得分:1)
请修改下面显示的过渡,写错了。
.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;
}
转换不适用于display
,而是使用以下效果。
height
从0px
切换为auto
(全高)和opacity
从0
(不可见)切换到1
(可见) 。您可以看到我们只在opacity
上看到动画,这将产生最佳效果。
答案 1 :(得分:1)
使用visibility:hidden
然后visible
display: none
在活动DOM中禁用它,并且无法为动画等内容选择使用此CSS的元素。
.menu-sub {
position: absolute;
left: 0;
background: #444;
width: 100%;
visibility: hidden;
color: #fff;
padding: 2em;
transition: transform 1.5s ease;
}
nav li:hover .menu-sub {
visibility: visible;
transform: translateY(-100%);
}