2017-01-24 77 views
2

我用HTML和CSS编写了下拉菜单,当用户的鼠标悬停在菜单中的按钮上时,我可以成功地淡入。但是,当鼠标离开下拉菜单时,下拉菜单不会淡出,它会消失吗?我相信这是一个语法错误,但我不知道在哪里。我如何让下拉菜单淡出,就像我淡入淡出一样?下拉菜单淡入,但不淡出

.top-block-container { 
 
    float: left; 
 
    width: 50%; 
 
    margin: 0.5% 0.25%; 
 
} 
 
.top-block-container:hover .top-block-dropdown { 
 
    visibility: visible; 
 
    opacity: 1; 
 
    transform: translateY(0); 
 
    height: auto; 
 
} 
 
.top-block { 
 
    width: 100%; 
 
    font-family: Lato; 
 
    font-weight: 900; 
 
    text-align: center; 
 
    padding: 10px 0; 
 
    border-radius: 50px; 
 
    font-size: 25px; 
 
    transition: background-color 0.25s linear, box-shadow 0.25s linear; 
 
    float: left; 
 
    background: linear-gradient(to bottom, #CCCCCC, #AAAAAA); 
 
    box-shadow: 0 0 5px black; 
 
    margin: 0; 
 
} 
 
.top-block:hover { 
 
    cursor: pointer; 
 
    box-shadow: 0 0 15px black; 
 
} 
 
.top-block-dropdown { 
 
    width: 100%; 
 
    background: linear-gradient(to bottom, #CCCCCC, #AAAAAA); 
 
    float: left; 
 
    margin-top: 7.5px; 
 
    border-radius: 25px; 
 
    box-shadow: 0 0 15px black; 
 
    visibility: hidden; 
 
    opacity: 0; 
 
    height: 0; 
 
    transform: translateY(-2em); 
 
    transition: visibility 0s, transform 0.25s, opacity 0.25s linear; 
 
} 
 
.dropdown-option-heading { 
 
    font-family: Lato; 
 
    font-weight: 700; 
 
    margin: 5px 0 0 0; 
 
    padding: 5px 10px; 
 
    border-bottom: 2px solid white; 
 
} 
 
.dropdown-option { 
 
    font-family: Lato; 
 
    font-weight: 400; 
 
    text-align: center; 
 
    border-bottom: 1px solid white; 
 
    margin: 0; 
 
    padding: 5px 10px; 
 
    transition: box-shadow 0.25s linear; 
 
} 
 
.dropdown-option:hover { 
 
    background: linear-gradient(to top, dodgerblue, #00B0FF); 
 
    cursor: pointer; 
 
} 
 
.last-option { 
 
    border: 0; 
 
    border-bottom-left-radius: 25px; 
 
    border-bottom-right-radius: 25px; 
 
}
<div class="top-block-container"> 
 
    <h1 class="top-block">ECWMF</h1> 
 
    <div class="top-block-dropdown"> 
 
    <p class="dropdown-option-heading">Global Models</p> 
 
    <p class="dropdown-option">GFS</p> 
 
    <p class="dropdown-option">ECMWF</p> 
 
    <p class="dropdown-option">CMC</p> 
 
    <p class="dropdown-option">NAVGEM</p> 
 
    <p class="dropdown-option">UKMET</p> 
 
    <p class="dropdown-option-heading">Mesoscale Models</p> 
 
    <p class="dropdown-option">HRRR</p> 
 
    <p class="dropdown-option">HWRF</p> 
 
    <p class="dropdown-option">NAM 32km</p> 
 
    <p class="dropdown-option">NAM 12km</p> 
 
    <p class="dropdown-option">RAP</p> 
 
    <p class="dropdown-option">SREF</p> 
 
    <p class="dropdown-option last-option">HIRESW</p> 
 
    </div> 
 
</div>

+0

因为你的转换有'知名度0s'。给出一个非零值和可见性转换。或者从所有这些定义中删除“可见性”。 “不透明”就足够了。 –

回答

0

你的CSS过渡说,对div的可见度在零秒改变:

.top-block-dropdown { transition: visibility 0s ... } 

所以DIV瞬间消失。你只需要更长的过渡时间。

+0

非常感谢,我也从css中删除了'height:0;'并且它完美地工作。 –

0

因为您的转换有visibility 0s。给出一个非零值和可见性转换。或者从所有这些定义中删除visibilityopacity就足够了。

.top-block-container { 
 
    float: left; 
 
    width: 50%; 
 
    margin: 0.5% 0.25%; 
 
} 
 
.top-block-container:hover .top-block-dropdown { 
 
    opacity: 1; 
 
    transform: translateY(0); 
 
    height: auto; 
 
} 
 
.top-block { 
 
    width: 100%; 
 
    font-family: Lato; 
 
    font-weight: 900; 
 
    text-align: center; 
 
    padding: 10px 0; 
 
    border-radius: 50px; 
 
    font-size: 25px; 
 
    transition: background-color 0.25s linear, box-shadow 0.25s linear; 
 
    float: left; 
 
    background: linear-gradient(to bottom, #CCCCCC, #AAAAAA); 
 
    box-shadow: 0 0 5px black; 
 
    margin: 0; 
 
} 
 
.top-block:hover { 
 
    cursor: pointer; 
 
    box-shadow: 0 0 15px black; 
 
} 
 
.top-block-dropdown { 
 
    width: 100%; 
 
    background: linear-gradient(to bottom, #CCCCCC, #AAAAAA); 
 
    margin-top: 7.5px; 
 
    border-radius: 25px; 
 
    box-shadow: 0 0 15px black; 
 
    opacity: 0; 
 
    height: 0; 
 
    transform: translateY(-2em); 
 
    transition: transform 0.25s, opacity 0.25s linear; 
 
} 
 
.dropdown-option-heading { 
 
    font-family: Lato; 
 
    font-weight: 700; 
 
    margin: 5px 0 0 0; 
 
    padding: 5px 10px; 
 
    border-bottom: 2px solid white; 
 
} 
 
.dropdown-option { 
 
    font-family: Lato; 
 
    font-weight: 400; 
 
    text-align: center; 
 
    border-bottom: 1px solid white; 
 
    margin: 0; 
 
    padding: 5px 10px; 
 
    transition: box-shadow 0.25s linear; 
 
} 
 
.dropdown-option:hover { 
 
    background: linear-gradient(to top, dodgerblue, #00B0FF); 
 
    cursor: pointer; 
 
} 
 
.last-option { 
 
    border: 0; 
 
    border-bottom-left-radius: 25px; 
 
    border-bottom-right-radius: 25px; 
 
}
<div class="top-block-container"> 
 
    <h1 class="top-block">ECWMF</h1> 
 
    <div class="top-block-dropdown"> 
 
    <p class="dropdown-option-heading">Global Models</p> 
 
    <p class="dropdown-option">GFS</p> 
 
    <p class="dropdown-option">ECMWF</p> 
 
    <p class="dropdown-option">CMC</p> 
 
    <p class="dropdown-option">NAVGEM</p> 
 
    <p class="dropdown-option">UKMET</p> 
 
    <p class="dropdown-option-heading">Mesoscale Models</p> 
 
    <p class="dropdown-option">HRRR</p> 
 
    <p class="dropdown-option">HWRF</p> 
 
    <p class="dropdown-option">NAM 32km</p> 
 
    <p class="dropdown-option">NAM 12km</p> 
 
    <p class="dropdown-option">RAP</p> 
 
    <p class="dropdown-option">SREF</p> 
 
    <p class="dropdown-option last-option">HIRESW</p> 
 
    </div> 
 
</div>