Почему элементы inline-block переносятся на новую строку?
У меня есть список, который я хочу превратить в горизонтальное меню. Почему, указывая элементам (в данном случае li) inline-block, они не выстраиваются в одну линию, а продолжают вести себя как блочные, выстраиваясь один под одного?
a {
text-decoration: none;
}
.wrap {
padding-top: 20px;
padding-bottom: 20px;
display: flex;
}
.menu_block {
margin-top: 20px;
margin-bottom: 20px;
}
.menu_block li a{
display: inline-block;
color: black;
font-size: 20px;
text-transform: uppercase;
margin-right: 50px;
}
.menu_block li:last-child {
margin-right: 0;
}
.menu_block ul {
list-style: none;
}
.logo {
margin-left: 270px;
}
.btn a {
padding: 18px 35px;
background: #ff7340;
color: #ffffff;
border-radius: 5px;
text-transform: uppercase;
}
<header>
<div class="wrap">
<div class="logo">
<img src="https://i.postimg.cc/Pf81DpN4/logo.png" alt="">
</div>
<div class="menu_block">
<ul>
<li><a href="#">about</a></li>
<li><a href="#">meet us</a></li>
<li><a href="#">gallery</a></li>
<li><a href="#">blog</a></li>
</ul>
</div>
<div class="btn">
<a href="#">adventures</a>
</div>
</div>
</header>
Ответы (2 шт):
Автор решения: Vasily
→ Ссылка
Вы применяете значение inline-block к тегу anchor, который находиться внутри тега li, Вам нужно либо переписать верстку с учетом этого, либо воспользоваться вариантами типа Flex:
a {
text-decoration: none;
}
.wrap {
display: flex;
align-items: center;
padding-top: 20px;
padding-bottom: 20px;
}
.menu_block {
margin-top: 20px;
margin-bottom: 20px;
margin-right: 80px;
}
.menu_block ul {
display: flex;
justify-content: space-between;
}
.menu_block ul li {
flex-shrink: 0;
margin-right: 20px;
}
.menu_block li a {
color: black;
font-size: 20px;
text-transform: uppercase;
}
.menu_block li:last-child {
margin-right: 0;
}
.menu_block ul {
list-style: none;
}
.btn a {
padding: 18px 35px;
background: #ff7340;
color: #ffffff;
border-radius: 5px;
text-transform: uppercase;
}
<header>
<div class="wrap">
<div class="logo">
<img src="https://i.postimg.cc/Pf81DpN4/logo.png" alt="">
</div>
<div class="menu_block">
<ul>
<li><a href="#">about</a></li>
<li><a href="#">meet us</a></li>
<li><a href="#">gallery</a></li>
<li><a href="#">blog</a></li>
</ul>
</div>
<div class="btn">
<a href="#">adventures</a>
</div>
</div>
</header>
Автор решения: Михаил Камахин
→ Ссылка
Потому что вы display: inline-block задаёте <a>, а не <li>
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
a {
text-decoration: none;
}
.wrap {
padding: 20px 15px;
display: flex;
justify-content: space-between;
align-items: center;
}
.wrap>*:not(:last-child) {
margin-right: 15px;
}
.menu_block {
margin-left: auto;
text-align: right;
}
.menu_block li {
display: inline-block;
}
.menu_block li:not(:last-child) {
margin-right: 10px;
}
.menu_block li a {
color: black;
font-size: 20px;
text-transform: uppercase;
}
ul {
list-style: none;
}
.btn a {
padding: 18px 35px;
background: #ff7340;
color: #ffffff;
border-radius: 5px;
text-transform: uppercase;
}
<header>
<div class="wrap">
<div class="logo">
<img src="https://i.postimg.cc/Pf81DpN4/logo.png" alt="">
</div>
<div class="menu_block">
<ul>
<li><a href="#">about</a></li>
<li><a href="#">meet us</a></li>
<li><a href="#">gallery</a></li>
<li><a href="#">blog</a></li>
</ul>
</div>
<div class="btn">
<a href="#">adventures</a>
</div>
</div>
</header>