Проблема с позиционированием 100vh в мобильном браузере Chrome
Есть блок с раскрытым меню. Наблюдаю проблему в мобильном браузере Chrome: нижний блок с языком скрыт за экраном. В других браузерах такого бага не наблюдаю, нижняя панель прилеплена четко внизу.
Код:
* {
margin: 0;
padding: 0;
text-decoration: none;
text-transform: none;
box-sizing: border-box;
list-style: none;
border-radius: 0;
font-family: 'Futura PT', sans-serif;
color: #515151;
font-weight: 400;
line-height: 1;
}
p,
div,
li {
font-size: 14px;
line-height: 1.2;
}
.header {
box-shadow: 0px 2px 4px rgba(103, 87, 156, 0.25);
position: relative;
z-index: 20;
background-color: #FFFFFF;
height: 60px;
}
.header.unlogged {
height: unset;
}
@media screen and (max-width: 740px) {
.header {
background-color: #F4F5F9;
height: 84px;
box-shadow: none;
}
.header.noMiddle {
height: unset;
margin-bottom: 4px;
}
}
@media screen and (max-width: 1024px) {
.header {
height: unset;
}
}
.header.logged .mob-menu-container.open {
opacity: 1;
pointer-events: auto;
}
.header.logged .mob-menu-container .box p {
font-weight: 600;
font-size: 16px;
margin-bottom: 10px;
}
.header.logged .mob-menu-container .box ul a {
font-size: 16px;
color: #67579C;
transition: 0.4s;
}
.header.logged .mob-menu-container .box ul a:hover {
color: #59C2A4;
}
.header.logged .mob-menu-container .box .logout {
font-weight: 600;
font-size: 16px;
color: #67579C;
transition: 0.4s;
display: flex;
align-items: center;
margin-bottom: 10px;
}
.header.logged .mob-menu-container .box .logout:hover {
color: #59C2A4;
}
.header.logged .mob-menu-container .box.contacts>a {
font-size: 14px;
font-weight: 500;
color: #67579C;
transition: 0.4s;
}
.header.logged .mob-menu-container .box.contacts>a:hover {
color: #59C2A4;
}
.header.logged .mob-menu-container .box.contacts .albel {
font-size: 10px;
color: #C4C4C4;
}
.header.logged .mob-menu-container .box.contacts .lang {
display: flex;
align-items: center;
}
.header.logged .mob-menu-container .box.contacts .lang p {
font-size: 16px;
margin-right: 5px;
margin-bottom: 0;
}
.header.logged .mob-menu-container .box.contacts .lang ul {
display: flex;
align-items: center;
}
.header.logged .mob-menu-container .box.contacts .lang ul li {
border-bottom: none;
padding: 0;
}
.header.logged .mob-menu-container .box.contacts .lang ul li.current-language a {
text-decoration: none;
}
.header.logged .mob-menu-container .box.contacts .lang ul li.current-language a span {
font-weight: 600;
color: #515151;
text-decoration: none;
}
.header.logged .mob-menu-container .box.contacts .lang ul li a span {
padding: 5px;
font-size: 14px;
color: #67579C;
text-decoration: underline;
display: block;
}
.header.unlogged {
height: unset;
}
.header.unlogged .languages {
margin-left: auto;
margin-right: 30px;
}
.header .mob-menu-container {
position: absolute;
z-index: 10;
left: 0;
top: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
height: 100vh;
background-color: rgba(0, 0, 0, 0.5);
opacity: 0;
pointer-events: none;
transition: 0.4s;
}
.header .mob-menu-container .menu-container-header {
position: absolute;
right: 0;
top: 0;
width: 100%;
max-width: 500px;
color: #515151;
font-style: normal;
font-weight: 600;
font-size: 16px;
line-height: 21px;
}
.header.unlogged .mob-menu-container .menu-container-header {
background: #fff;
height: 40px;
padding: 9px 8px 8px 20px;
}
.header .mob-menu-container.open {
opacity: 1;
pointer-events: auto;
}
.header .mob-menu-container .content-container {
position: absolute;
right: 0;
bottom: 0;
width: 100%;
max-width: 500px;
background-color: white;
padding-bottom: 40px;
max-height: 100%;
max-height: 100vh;
overflow: auto;
z-index: 11;
}
.header.unlogged .mob-menu-container .content-container {
top: 40px;
}
.header .mob-menu-container .box {
padding: 10px 0 10px 20px;
}
.header .mob-menu-container .mmenu-heading {
background: #F4F5F9;
padding: 8px 20px;
color: #515151;
font-style: normal;
font-weight: 600;
font-size: 16px;
line-height: 21px;
}
.header .mob-menu-container .box p {
font-weight: 600;
font-size: 16px;
margin-bottom: 10px;
}
.header .mob-menu-container .box ul li {
padding: 6px 0;
position: relative;
}
.header .mob-menu-container .box ul li:last-child {
border-bottom: none;
}
.header .mob-menu-container .box ul a {
font-size: 16px;
color: #67579C;
transition: 0.4s;
}
.header .mob-menu-container .box ul a:hover {
color: #59C2A4;
}
.header .mob-menu-container .box .logout {
font-weight: 600;
font-size: 16px;
color: #67579C;
transition: 0.4s;
display: flex;
align-items: center;
}
.header .mob-menu-container .box .logout:hover {
color: #59C2A4;
}
.header .mob-menu-container .box.contacts>a {
font-size: 14px;
font-weight: 500;
color: #67579C;
transition: 0.4s;
text-decoration: underline;
}
.header .mob-menu-container .box.contacts>a:hover {
color: #59C2A4;
}
.header .mob-menu-container .box.contacts .albel {
font-size: 10px;
color: #C4C4C4;
}
.mob-menu-container .content-container .lang {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 40px;
background: #F4F5F9;
padding: 8px 20px;
z-index: 12;
}
.header .mob-menu-container .content-container .lang {
display: flex;
align-items: center;
justify-content: space-between;
}
.header .mob-menu-container .content-container .lang p {
font-size: 16px;
margin-right: 5px;
margin-bottom: 0;
color: #515151;
font-weight: 600;
}
.header .mob-menu-container .content-container .lang ul {
display: flex;
align-items: center;
}
.header .mob-menu-container .content-container .lang ul li {
border-bottom: none;
padding: 0;
}
.header .mob-menu-container .content-container .lang ul li.current-language a {
text-decoration: none;
}
.header .mob-menu-container .content-container .lang ul li.current-language a span {
font-weight: 600;
color: #515151;
text-decoration: none;
}
.header .mob-menu-container .content-container .lang ul li a span {
padding: 5px;
font-size: 14px;
color: #67579C;
display: block;
}
<header class="header noMiddle unlogged">
<div class="mob-menu-container open">
<div class="menu-container-header">
<a title="Войти" href="https://example.com" class="login-btn-mobile">Войти</a>
</div>
<div class="content-container">
<p class="mmenu-heading">Справочная информация</p>
<div class="box">
<div>
<ul class="menu">
<li><a href="https://example.com">Текст</a></li>
<li><a href="https://example.com">Текст</a></li>
<li><a href="https://example.com">Текст</a></li>
<li><a href="https://example.com">Текст</a></li>
<li><a href="https://example.com">Текст</a></li>
</ul>
</div>
</div>
<div class="box">
<a class="logout" title="Выйти" href="https://example.com">Выйти</a> </div>
<p class="mmenu-heading">Поддержка</p>
<div class="box contacts">
<a href="tel:0000000">0000000</a>
<p class="albel">текст</p>
<p class="albel">текст <span class="forHide">|</span><br> текст</p>
<p class="albel">текст</p>
</div>
<div class="lang">
<p>Язык: </p>
<ul>
<li class="current-language"><a href="https://example.com"><span>UA</span></a></li>
<li><a href="https://example.com"><span>RU</span></a></li>
</ul>
</div>
</div>
</div>
</header>
Если прописываю css
.header .mob-menu-container { height: calc(var(--vh, 1vh) * 100); }
и javascript
let vh = window.innerHeight * 0.01;
document.documentElement.style.setProperty('--vh', `${vh}px`);
То, языковая панель отображается, правда уже с маленьким лагом. Посмотреть можно по ссылке Как эту проблему можно (кроссбраузерно) решить и желательно без скриптов?