Гибкая сетка выдает множество комбинаций направлений гибкости
У меня есть код ниже:
-
container
имеет дваdiv
дети. Я хочу, чтобы дети div были один под другим; - Для первого
div
, Я хочуLinkT1
раздел,red button
иinput
, чтобы появиться один за другим слева направо, а пространство между ними нужно разделить. - Для второго
div
, Я хочуLinkR1
раздел,LinkR2
секунд, чтобы быть в том же ряду, один слева и один справа и расстояние между ними должно быть разделено.
.container {
display: flex;
margin: 0.75rem auto 0 auto;
max-width: 40rem;
border: 1px solid red;
flex-direction: column;
}
.container > div {
align-items: flex-start;
flex-direction: row;
justify-content: space-between;
margin-top: 5rem;
flex-basis: 100%;
}
.nav {
color: blue;
display: flex;
flex-direction: column;
align-items: flex-start;
}
.items > * {
margin-right: 0.75rem; // to be defined as variable
text-decoration: none;
}
.items:last-child {
margin-right: 0;
}
.button {
background: red;
border-radius: .1875rem;
color: #fff;
cursor: pointer;
display: inline-block;
font-size: 1rem;
letter-spacing: .0625rem;
padding: .375rem .75rem;
}
<div class="container">
<div>
<div class="nav">
<div class="items">
<a href="">Link T1</a>
<a href="">Link T1</a>
<a href="">Link T1</a>
</div>
<div class="items">
<a href="">Link T2</a>
<a href="">Link T2</a>
<a href="">Link T2</a>
</div>
</div>
<div class="action">
<a class="button" href="/accounts/register/">Lorem </a>
</div>
<div class="form">
<form action="" method="post">
<input type="text" class="input" />
</form>
</div>
</div>
<div>
<div class="nav">
<div class="items">
<a href="">Link R1</a>
<a href="">Link R1</a>
<a href="">Link R1</a>
</div>
<div class="items">
<a href="">Link R2</a>
<a href="">Link R2</a>
<a href="">Link R2</a>
</div>
</div>
</div>
</div>
1 ответ
Решение
Вы пропустили несколько вещей:
- Ваш
container > div
класс также должен иметьdisplay: flex;
имущество. - Это ваш
item
раздел, который должен иметьflex-direction: column;
, Не твоеnav
разделы. - Ваш второй
nav
нужны (согласно вашему сообщению) другие правила, чем ваши первыеnav
, Я разделил их на разные классы. Я также добавил правило о том, что ваш второйnav
раздел имеетwidth: 100%
так, чтобы секции внутри него были правильно сдвинуты по бокам.
.container {
display: flex;
margin: 0.75rem auto 0 auto;
max-width: 40rem;
border: 1px solid red;
flex-direction: column;
}
.container > div {
display: flex;
flex-direction: row;
align-items: flex-start;
justify-content: space-between;
margin-top: 5rem;
flex-basis: 100%;
}
.nav {
color: blue;
display: flex;
flex-direction: row;
justify-content: space-between;
}
.nav-row {
color: blue;
display: flex;
flex-direction: row;
justify-content: space-between;
width: 100%;
}
.items {
display: flex;
flex-direction: column;
align-items: center;
}
.items > * {
margin-right: 0.75rem; // to be defined as variable
text-decoration: none;
}
.items:last-child {
margin-right: 0;
}
.button {
background: red;
border-radius: .1875rem;
color: #fff;
cursor: pointer;
display: inline-block;
font-size: 1rem;
letter-spacing: .0625rem;
padding: .375rem .75rem;
}
<div class="container">
<div>
<div class="nav">
<div class="items">
<a href="">Link T1</a>
<a href="">Link T1</a>
<a href="">Link T1</a>
</div>
<div class="items">
<a href="">Link T2</a>
<a href="">Link T2</a>
<a href="">Link T2</a>
</div>
</div>
<div class="action">
<a class="button" href="/accounts/register/">Lorem </a>
</div>
<div class="form">
<form action="" method="post">
<input type="text" class="input" />
</form>
</div>
</div>
<div>
<div class="nav-row">
<div class="items">
<a href="">Link R1</a>
<a href="">Link R1</a>
<a href="">Link R1</a>
</div>
<div class="items">
<a href="">Link R2</a>
<a href="">Link R2</a>
<a href="">Link R2</a>
</div>
</div>
</div>
</div>