#html #css
Вопрос:
Вот мой код:
.row {
width: 800px;
}
.menu {
display: inline-block;
display: flex;
list-style: none;
padding: 0;
}
li {
width: 100%;
}
.test {
width: 800px;
background-color: red;
}
<div class="row">
<ul class="menu">
<li>Test</li>
<li>Test2</li>
<li>Test3</li>
<li>Test4</li>
<li>Test5</li>
<li>Test6</li>
<li>Test7</li>
</ul>
</div>
<div class="test">
<p>amp;nbsp;</p>
</div>
Я хочу, чтобы меню заполняло всю ширину div. Расстояния одинаковы, и элементы должны совпадать с краями теста div.
Вот как это будет выглядеть:
С Наилучшими Пожеланиями и Спасибо Вам
Комментарии:
1. Используете ли вы этот div в качестве итоговой строки? Если ваш ответ «да», есть лучший способ сделать это
Ответ №1:
justify-content
это то, что вы, вероятно, ищете : смотрите https://css-tricks.com/snippets/css/a-guide-to-flexbox/#justify-content
Это определяет выравнивание вдоль главной оси. Это помогает распределить дополнительное свободное пространство, оставшееся, когда либо все гибкие элементы в строке являются негибкими, либо являются гибкими, но достигли своего максимального размера. Он также обеспечивает некоторый контроль над выравниванием элементов, когда они переполняют строку.
ДЕМОНСТРАЦИЯ
.row {
width: 800px;
}
.menu {
display: flex;
list-style: none;
padding: 0;
justify-content:space-between;
}
.test {
width: 800px;
background-color: red;
}
<div class="row">
<ul class="menu">
<li>Test</li>
<li>Test2</li>
<li>Test3</li>
<li>Test4</li>
<li>Test5</li>
<li>Test6</li>
<li>Test7</li>
</ul>
</div>
<div class="test">
<p>amp;nbsp;</p>
</div>
Ответ №2:
.row {
width: 800px;
overflow-x: hidden;
}
.menu {
display: inline-block;
display: flex;
list-style: none;
width: 100%;
padding: 0;
}
li {
width: 100%;
text-align: center;
}
.test {
width: 100%;
background-color: red;
}
<div class="row">
<ul class="menu">
<li>Test</li>
<li>Test2</li>
<li>Test3</li>
<li>Test4</li>
<li>Test5</li>
<li>Test6</li>
<li>Test7</li>
</ul>
<div class="test">
<p>amp;nbsp;</p>
</div>
</div>
Попробуйте это😊
Ответ №3:
.menu {
display: inline-block;
display: flex;
list-style: none;
padding: 0;
width: 100%;
}
Это должно решить вашу проблему
Ответ №4:
display: flex;
и justify-content: space-between;
доставлю тебя туда.
Я также добавил:
* {
margin: 0;
padding: 0;
}
Я также удалил (прокомментировал):
li {
width: 100%;
}
чтобы избавиться от полей и отступов по умолчанию на body
элементе.
* {
margin: 0;
padding: 0;
}
.row {
width: 800px;
}
.menu {
display: flex;
justify-content: space-between;
list-style: none;
padding: 0;
}
/*
li {
width: 100%;
}
*/
.test {
width: 800px;
background-color: red;
}
<div class="row">
<ul class="menu">
<li>Test</li>
<li>Test2</li>
<li>Test3</li>
<li>Test4</li>
<li>Test5</li>
<li>Test6</li>
<li>Test7</li>
</ul>
</div>
<div class="test">
<p>amp;nbsp;</p>
</div>
Ответ №5:
Вам нужно лучше настроить свой flex. Вот решение
* {
margin: 0;
padding: 0;
}
.row {
width: 800px;
}
.menu {
display: flex;
list-style: none;
padding: 0;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
align-items: stretch;
justify-content: space-between;
}
.test {
width: 800px;
background-color: red;
}
<div class="row">
<ul class="menu">
<li>Test</li>
<li>Test2</li>
<li>Test3</li>
<li>Test4</li>
<li>Test5</li>
<li>Test6</li>
<li>Test7</li>
</ul>
</div>
<div class="test">
<p>amp;nbsp;</p>
</div>