#html #css
Вопрос:
Я довольно новичок в CSS. Я следую руководству на YouTube, и код, похоже, работает в видео, но, как я ни стараюсь, я не могу отобразить:функция flex в моем контейнере, чтобы выровнять мои элементы по горизонтали. Как бы я ни старался, они расположены горизонтально, любая помощь приветствуется.
Вот мой HTML и CSS код:
Here is my CSS:
@import url('https://fonts.googleapis.com/css2?family=Lato:wght@300amp;display=swap');
/*Global configuration. Setting box sizing border-box to included padding and margin in the element size.*/
* {
box-sizing: border-box;
padding: 0;
margin: 0;
}
body {
font-family: 'Lato', sans-serif;
color: #333;
line-height: 1.6;
}
ul {
list-style-type: none;
}
a {
text-decoration: none;
color: #333;
}
h1, h2 {
font-weight: 300;
line-height: 1.2;
margin: 10px 0;
}
p {
margin: 10px 0;
}
img {
width: 100%; /*Restrain image size to be equal to container size*/
}
.navbar {
background-color: #047aed;
color: #fff;
height: 70px;
}
.container {
max-width: 1100px;
margin: 0 auto; /* 0 top and bottom and auto on left and right*/
overflow: auto; /* sets the desired behavior for an element's overflow — i.e. when an element's content is too big to fit in its block formatting context — in both directions.*/
padding: 0 40px;
}
.flex {
flex-direction: row;
}
<body>
<!-- Navbar-->
<div class="navbar">
<div class="container flex">
<h1 class="logo">Charles
<nav>
<ul>
<li> <a href="index.html">Home</a></li>
<li> <a href="projects.html">Projects</a></li>
<li> <a href="hobbies.html">Hobbies</a></li>
</ul>
</nav>
</h1>
</div>
</div>
</body>
Комментарии:
1. Чего вы хотите достичь? вы хотите выровнять их по горизонтали или нет?
Ответ №1:
Есть пара вещей, которые нужно исправить:
- Вы используете класс
.flex
, но он не определен как flexbox в CSS. Измените определение на
.flex {
display:flex;
flex-direction: row;
}
- У вашего гибкого контейнера div есть только один дочерний элемент, который является
<h1>
. С этим одним ребенком ваш div отображается, как и ожидалось. Предполагая, что вы хотите, чтобы логотип и навигация находились в одной строке, вам нужно изменить свой HTML. Вам также нужно сделать список в<nav>
виде гибкого поля, чтобы его дочерние элементы отображались в строке.
<body>
<!-- Navbar-->
<div class="navbar">
<div class="container flex">
<h1 class="logo">Charles</h1>
<nav>
<ul class="flex">
<li> <a href="index.html">Home</a></li>
<li> <a href="projects.html">Projects</a></li>
<li> <a href="hobbies.html">Hobbies</a></li>
</ul>
</nav>
</div>
</div>
</body>
Ответ №2:
flex-direction
не влияет на этот элемент, поскольку он не является контейнером Flex.
Попробуйте добавить display: flex
или display: inline-flex
.
Комментарии:
1. Не могли бы вы поподробнее, пожалуйста. Я добавил класс атрибутов flex в контейнер и настроил класс в отображении css: inline-flex.
Ответ №3:
* {
box-sizing: border-box;
padding: 0;
margin: 0;
}
body {
font-family: 'Lato', sans-serif;
color: #333;
line-height: 1.6;
}
ul {
list-style-type: none;
}
a {
text-decoration: none;
color: #333;
}
h1, h2 {
font-weight: 300;
line-height: 1.2;
margin: 10px 0;
}
p {
margin: 10px 0;
}
img {
width: 100%; /*Restrain image size to be equal to container size*/
}
.navbar {
background-color: #047aed;
color: #fff;
height: 70px;
}
.container {
max-width: 1100px;
margin: 0 auto; /* 0 top and bottom and auto on left and right*/
overflow: auto; /* sets the desired behavior for an element's overflow — i.e. when an element's content is too big to fit in its block formatting context — in both directions.*/
padding: 0 40px;
}
nav ul{
margin-top:20px;
display:flex;
justify-content:space-between;
}
<body>
<!-- Navbar-->
<div class="navbar">
<div class="container flex">
<h1 class="logo">Charles
<nav>
<ul>
<li> <a href="index.html">Home</a></li>
<li> <a href="projects.html">Projects</a></li>
<li> <a href="hobbies.html">Hobbies</a></li>
</ul>
</nav>
</h1>
</div>
</div>
</body>
Просто добавьте свойство display:flex в свой элемент «ul» внутри навигационного элемента. Нет необходимости добавлять дополнительный класс. Затем вы можете поиграть со свойством обоснования содержимого для того, как вы хотите, чтобы они отображались горизонтально.
Примечание: Мы всегда применяем display flex к оболочке/контейнеру/ или родительскому элементу, дочерние элементы которого мы хотим рассматривать как «гибкие элементы».