Плавная анимация появления языков
Подскажите как мне сделать плавную анимацию для появления языков?
.langdrop {
position: relative;
display: inline-block;
text-transform: uppercase;
font-size: 14px;
margin-left: 20px;
}
.langbtn {
padding: 10px;
cursor: pointer;
}
.langdrop-content {
display: none;
position: absolute;
background-color: #f9f9f9;
padding: 0 10px 10px 10px;
z-index: 120;
}
.langdrop-link {
color: black;
text-decoration: none;
display: block;
}
.langdrop-content a {
margin-top: 10px;
}
.langdrop-content a:hover {
background-color: #669999;
}
.langdrop:hover .langdrop-content {
display: block;
}
<div class="langdrop">
<div class="langbtn" id='lang'>RU</div>
<div class="langdrop-content">
<a class="langdrop-link"> RU </a>
<a class="langdrop-link"> EN </a>
<a class="langdrop-link"> UK </a>
</div>
</div>
Ответы (3 шт):
Автор решения: ThisMan
→ Ссылка
Ну, вот мой вариант "плавной анимации", раз вы не указали, какую конкретно вам надо.
.langdrop {
position: relative;
display: inline-block;
text-transform: uppercase;
font-size: 25px;
margin-left: 20px;
}
.langbtn {
padding: 10px 5px;
cursor: pointer;
}
.langdrop-content {
opacity: 0;
position: absolute;
background-color: #f9f9f9;
padding: 0 0 10px;
z-index: 120;
transition: opacity .4s ease; /* ==== МОЖНО ПОМЕНЯТЬ ДЛЯ АНИМАЦИИ ПОЯВЛЕНИЯ ==== */
}
.langdrop-link {
color: black;
text-decoration: none;
display: block;
padding: 5px;
cursor: pointer;
}
.langdrop-content a {
margin-top: 10px;
transition: background-color .3s ease;
}
.langdrop-content a:hover {
background-color: #669999;
}
.langdrop:hover .langdrop-content {
opacity: 1;
}
<div class="langdrop">
<div class="langbtn" id='lang'>RU</div>
<div class="langdrop-content">
<a class="langdrop-link"> RU </a>
<a class="langdrop-link"> EN </a>
<a class="langdrop-link"> UK </a>
</div>
</div>
Что за магия?
У вас блок с языками скрывается через display:block, я же заменил на opacity, так как это св-во можно анимировать через transition.
Автор решения: humster_spb
→ Ссылка
Если требуется плавное изменение высоты, то это можно сделать через max-height:
.langdrop {
position: relative;
display: inline-block;
text-transform: uppercase;
font-size: 14px;
margin-left: 20px;
}
.langbtn {
padding: 10px;
cursor: pointer;
}
.langdrop-content {
max-height: 0;
overflow: hidden;
transition: .5s;
position: absolute;
background-color: #f9f9f9;
padding: 0 10px 10px 10px;
z-index: 120;
}
.langdrop-link {
color: black;
text-decoration: none;
display: block;
}
.langdrop-content a {
margin-top: 10px;
}
.langdrop-content a:hover {
background-color: #669999;
}
.langdrop:hover .langdrop-content {
max-height: 100px;
}
<div class="langdrop">
<div class="langbtn" id='lang'>RU</div>
<div class="langdrop-content">
<a class="langdrop-link"> RU </a>
<a class="langdrop-link"> EN </a>
<a class="langdrop-link"> UK </a>
</div>
</div>
Автор решения: Angry Progy
→ Ссылка
.langdrop {
position: relative;
display: inline-block;
text-transform: uppercase;
font-size: 14px;
margin-left: 20px;
}
.langbtn {
padding: 10px;
cursor: pointer;
}
.langdrop-content {
max-height: 0;
overflow: hidden;
transition: .5s;
position: absolute;
background-color: #f9f9f9;
z-index: 120;
padding: 0 10px 0 10px;
}
.langdrop-link {
color: black;
text-decoration: none;
display: block;
}
.langdrop-content a {
margin-top: 10px;
}
.langdrop-content a:hover {
background-color: #669999;
}
.langdrop:hover .langdrop-content {
max-height: 100px;
padding: 0 10px 10px 10px;
}
<div class="langdrop">
<div class="langbtn" id='lang'>RU</div>
<div class="langdrop-content">
<a class="langdrop-link"> RU </a>
<a class="langdrop-link"> EN </a>
<a class="langdrop-link"> UK </a>
</div>
</div>