2017-01-24 13 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'. Дайте этому ненулевое значение и переходы видимости. Или просто удалите «видимость» из всех этих определений. 'opacity' будет достаточно. –

ответ

0

Ваш CSS переход говорит на видимость DIV, чтобы изменить в ноль секунд:

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

Так ДИВ исчезает мгновенно. Вам просто нужно больше времени перехода.

+0

Большое вам спасибо, я также удалил 'height: 0;' из css, и он работает безупречно. –

0

Потому что ваш переход имеет visibility 0s. Дайте этому ненулевое значение и переходы видимости. Или просто удалите visibility из всех этих определений. opacity хватит.

.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>