#html #css #flexbox #centering
#HTML #css #flexbox #центрирование
Вопрос:
Основной заголовок в заголовке занимает ВСЕ вертикальное пространство и перемещает h2
из центра вправо, который должен быть под ним и не связан, кроме того, что находится в том же контейнере.
https://codepen.io/ychalfari/pen/JVYoNW
https://codepen.io/ychalfari/pen/mgVdLr
Это пара вещей, которые я пробовал, но даже просто заголовок в <p>
теге занимает все вертикальное пространство.
div class ="header-wrap">
<header>
<div class="span-wrap">
<span id="my">My</span>
<span id="journey">Journey</span>
<span id="of">of </span>
<span id="learning">Learning</span></div>
<h2>Documenting the Learning Process in a Fun Interactive way! </h2>
</header></div>
Вот css
header-wrap, header{
display:flex;
color:white;
background-color:red;
height: 100vh;
width:100vw;}
h2 {
font-size:25px;
letter-spacing:2px;
font-family:'Raleway';
align-self:flex-end;}
.span-wrap{
display:flex;
justify-content:center;}
#my{
font-size:55px;
position:relative;
top:30px;
}
span{
max-height: 65px;
display:block;
}
#journey{
top:80px;
font-size:55px;
position:relative;
}
#of{
top:120px;
font-size:45px;
position:relative;
margin: 0 35px;
border: solid;
padding: 1px 15px;
max-height:60px;}
#learning {
top:185px;
font-size:55px;
position:relative;
}
То, что я ожидаю, <h2>Documenting the Learning Process in a Fun Interactive way! </h2>
должно быть сосредоточено в нижней части div, не затронутого частью «Путешествие обучения».
Комментарии:
1. У вас есть
height: 100vh;
в заголовке (и перенос заголовка). Это говорит браузеру сделать эти элементы такими же высокими, как окно просмотра.2. Дочерние элементы
display: flex
контейнера всегда будут занимать всю высоту, если не указано иное (например, в ваших<span>
элементах, где у вас естьmax-height
). Если вы не хотите, чтобы два дочерних элемента<header>
отображались рядом, то<header>
этого не должно бытьdisplay: flex
.
Ответ №1:
Здесь вы должны использовать гибкий столбец, добавив его flex-direction: column
в свой header
, а затем:
- добавить
flex: 1
вspan-wrap
(занимает доступное свободное пространство после размещенияh2
, тем самым перемещая его на дно) - измените на
align-self: center
дляh2
элемента
Смотрите демонстрацию ниже:
html body {
font-family: 'Raleway';
margin: 0;
padding: 0;
min-height: 100%;
width: 100%;
}
ul li {
display: none;
}
header-wrap,
header {
display: flex;
color: white;
background-color: red;
height: 100vh;
width: 100vw;
flex-direction:column; /* added */
}
h2 {
font-size: 25px;
letter-spacing: 2px;
font-family: 'Raleway';
align-self: center; /* changed */
}
.span-wrap {
display: flex;
justify-content: center;
flex: 1; /* added */
}
#my {
font-size: 55px;
position: relative;
top: 30px;
}
span {
max-height: 65px;
display: block;
}
#journey {
top: 80px;
font-size: 55px;
position: relative;
}
#of {
top: 120px;
font-size: 45px;
position: relative;
margin: 0 35px;
border: solid;
padding: 1px 15px;
max-height: 60px;
}
#learning {
top: 185px;
font-size: 55px;
position: relative;
}
<div class="header-wrap">
<header>
<div class="span-wrap">
<span id="my">My</span> <span id="journey">Journey</span> <span id="of">of </span><span id="learning">Learning</span></div>
<h2>Documenting the Learning Process in a Fun Interactive way! </h2>
</header>
</div>
<nav>
<ul>
<li>Arrays</li>
<li>Objects</li>
<li>Apps</li>
<li>Design</li>
</ul>
</nav>
<section>
</section>
Комментарии:
1. Хотя это может сработать, я должен задаться вопросом, какова цель создания
<header>
flex вообще. Похоже, что вы настраиваетеflex
только для того, чтобы изо всех сил изменить это поведение. Но, пожалуйста, поправьте меня, если я ошибаюсь.2.
flex-directon: column
дает нам контроль над выравниванием элементов flex по вертикали…3. Правильно. Мой вопрос: почему
display: flex
вообще? Вместо добавления трех свойств, чтобыflex
элементы располагались вертикально, не приведет ли простое удалениеflex
из<header>
полностью к тому же результату?4. Имеет смысл. Спасибо kukkuz 🙂
5. Ооо, я тоже не знал о том, что stretch используется по умолчанию. В любом случае, я перестал использовать flex для этого, ха-ха, я вернусь к тому, как сделать типографику такой, какой я хочу, в другой раз, большое спасибо 🙂