Я создал простую систему меню, которая показывает разные результаты при использовании в разных браузерах.
При использовании Chrome элемент div актуальное меню правильно растягивается, чтобы заполнить оставшееся пространство родительского элемента div меню-контейнер.
Судя по моим исследованиям, проблема заключается в flex-grow в div актуальное меню.
Я попытался создать простой фрагмент кода, чтобы проиллюстрировать мою проблему.
Фрагмент должен быть запущен в полноэкранном режиме (меню отображается в виде одной строки).
Заранее спасибо.
body {
margin: 0;
background-color: black;
}
.menu-container {
position: relative;
margin-top: 50px;
margin-right: auto;
margin-left: auto;
width: 59%;
height: 75px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.menu-container .menu-logo {
width: 220px;
height: 100%;
background-image: url("https://via.placeholder.com/220x75.png");
-webkit-box-flex: 0;
-ms-flex: none;
flex: none;
}
.menu-container .menu-social {
position: absolute;
flex: none;
top: 0;
right: 0;
}
.menu-container .menu-social img {
padding-right: 5px;
}
.menu-container .actual-menu {
position: relative;
background-color: white;
border-radius: 24px 0 0 24px;
bottom: 0;
height: 45px;
width: auto;
display: table;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
top: 35%;
margin-left: 5px;
}
.menu-container ul.menu-links {
display: table-cell;
vertical-align: middle;
width: 100%;
margin: auto;
}
.menu-container ul.menu-links li {
display: inline;
text-transform: uppercase;
padding-right: 30px;
font-size: 16pt;
font-size: 2vh;
}<div class = "menu-container">
<div class = "menu-social">
<img src = "https://via.placeholder.com/27x15.png" alt = "youtube">
<img src = "https://via.placeholder.com/27x15.png" alt = "twitter">
<img src = "https://via.placeholder.com/27x15.png" alt = "facebook">
<img src = "https://via.placeholder.com/27x15.png" alt = "discord">
</div>
<div class = "menu-logo"></div>
<div class = "actual-menu">
<ul class = "menu-links">
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
</div>
</div>





Проблема не в свойстве flex-grow, а в том, что у .actual-menu есть display: table. Если вы прочитаете ответы и комментарии этот вопрос о стеке, вы увидите, что, короче говоря, прямое использование таблицы в качестве гибкого дочернего элемента — плохая идея.
Что я вижу, так это то, что вы используете макет таблицы только для центрирования текста в пунктах меню. Но поскольку вы уже используете flexbox для других частей макета, почему бы не использовать его здесь, например:
body {
margin: 0;
background-color: black;
}
.menu-container {
position: relative;
margin-top: 50px;
margin-right: auto;
margin-left: auto;
width: 59%;
height: 75px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.menu-container .menu-logo {
width: 220px;
height: 100%;
background-image: url("https://via.placeholder.com/220x75.png");
-webkit-box-flex: 0;
-ms-flex: none;
flex: none;
}
.menu-container .menu-social {
position: absolute;
flex: none;
top: 0;
right: 0;
}
.menu-container .menu-social img {
padding-right: 5px;
}
.menu-container .actual-menu {
position: relative;
background-color: white;
border-radius: 24px 0 0 24px;
bottom: 0;
height: 45px;
width: auto;
display: flex;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
top: 35%;
margin-left: 5px;
}
.menu-container ul.menu-links {
width: 100%;
margin: auto;
}
.menu-container ul.menu-links li {
display: inline;
text-transform: uppercase;
padding-right: 30px;
font-size: 16pt;
font-size: 2vh;
}<div class = "menu-container">
<div class = "menu-social">
<img src = "https://via.placeholder.com/27x15.png" alt = "youtube">
<img src = "https://via.placeholder.com/27x15.png" alt = "twitter">
<img src = "https://via.placeholder.com/27x15.png" alt = "facebook">
<img src = "https://via.placeholder.com/27x15.png" alt = "discord">
</div>
<div class = "menu-logo"></div>
<div class = "actual-menu">
<ul class = "menu-links">
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
</div>
</div>И если вы настаиваете на использовании таблицы, просто оберните ее в другой div, чтобы обертка была гибким элементом и обертывала фактическую таблицу, например так:
body {
margin: 0;
background-color: black;
}
.menu-container {
position: relative;
margin-top: 50px;
margin-right: auto;
margin-left: auto;
width: 59%;
height: 75px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.menu-container .menu-logo {
width: 220px;
height: 100%;
background-image: url("https://via.placeholder.com/220x75.png");
-webkit-box-flex: 0;
-ms-flex: none;
flex: none;
}
.menu-container .menu-social {
position: absolute;
flex: none;
top: 0;
right: 0;
}
.menu-container .menu-social img {
padding-right: 5px;
}
.actual-menu-wrapper {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
}
.menu-container .actual-menu {
position: relative;
background-color: white;
border-radius: 24px 0 0 24px;
bottom: 0;
height: 45px;
width: 100%;
display: table;
top: 35%;
margin-left: 5px;
}
.menu-container ul.menu-links {
display: table-cell;
vertical-align: middle;
width: 100%;
margin: auto;
}
.menu-container ul.menu-links li {
display: inline;
text-transform: uppercase;
padding-right: 30px;
font-size: 16pt;
font-size: 2vh;
}<div class = "menu-container">
<div class = "menu-social">
<img src = "https://via.placeholder.com/27x15.png" alt = "youtube">
<img src = "https://via.placeholder.com/27x15.png" alt = "twitter">
<img src = "https://via.placeholder.com/27x15.png" alt = "facebook">
<img src = "https://via.placeholder.com/27x15.png" alt = "discord">
</div>
<div class = "menu-logo"></div>
<div class = "actual-menu-wrapper">
<div class = "actual-menu">
<ul class = "menu-links">
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
</div>
</div>
</div>
Спасибо. Я понял, что проблема связана и с таблицей, и решил ее так же, как вы. Спасибо еще раз.