гибкий запас для первого элемента - PullRequest
0 голосов
/ 06 мая 2018

Допустим, у меня есть навигация, которая использует два контейнера flexbox. Благодаря свойству flex-grow навигация растягивается, чтобы соответствовать основной оболочке (в нашем случае это ширина 100%).

HTML:

<!DOCTYPE html>
<html lang="en">
    <body>
        <div id="main_navigator">
            <a id="main_navigator_logo" src="/"></a>
            <ul id="main_navigator_r1">
                <li>
                    <a class="main_nav_btn">BTN 1</a>
                </li>
                <li>
                    <a class="main_nav_btn">BTN 2</a>
                </li>
                <li>
                    <a class="main_nav_btn">BTN 3</a>
                </li>
                <li>
                    <a class="main_nav_btn">BTN 4</a>
                </li>
                <li>
                    <div id="main_navigator_s1"></div>
                </li>
                <li>
                    <div id="main_navigator_regbox"></div>
                </li>
            </ul>
        </div>
    </body>
</html>

CSS:

body {
    margin: 0;
}
#main_navigator {
    position: fixed;
    display: flex;
    flex-direction: row;
    background-color: black;
    width: 100%;
}
#main_navigator_logo {
    width: 416px;
    height: 120px;
    display: block;
    background-color: white;
}
#main_navigator_r1 {
    display: flex;
    flex-direction: row;
    align-items: center;
    flex-grow: 1;
    flex-shrink: 1;
    margin-top: 0px;
    height: 96px;
    list-style-type: none;
}
#main_navigator_r1 li {
    flex-grow: 1;
    flex-shrink: 1;
}
#main_navigator_r1 li .main_nav_btn {
    color: white;
    display: block;
    height: 100%;
    font-family: "nexa_bold";
    font-size: 0.8em;
    text-decoration: none;
}
#main_navigator_s1 {
    width: 2px;
    height: 30px;
    background-color: #B28039;
}
#main_navigator_regbox {
    background-color: red;
    width: 50px;
    height: 5px;
}

Как видно из кода, есть основной контейнер со свойством flexbox, который содержит логотип (элемент <a>) и навигацию (элемент <ul>, который содержит свойство flexbox).

Видно, что левое поле первого элемента остается постоянно фиксированным, поэтому поле (или отступ) между логотипом и элементом остается неизменным независимо от масштабирования, тогда как другие поля между элементами навигации увеличиваются вместе с окном просмотра при положительном масштабировании.

Вы можете просмотреть визуализацию здесь .


Можно ли сделать так, чтобы все элементы навигации имели одинаковое автоматическое поле?

Я пытался поместить логотип в контейнер <ul> - но из-за некоторого автоматического изменения размера он исчез (размер логотипа должен оставаться неизменным, а правое поле не должно). Можно ли таким образом заворачивать логотип в контейнер?

Спасибо!

1 Ответ

0 голосов
/ 08 мая 2018

Чтобы добавить автоматическое поле для первого элемента, навигатор не должен иметь предварительно установленный отступ и центрировать его встроенные элементы. В этом случае:

#main_navigator_r1 {
    padding:0;
    text-align:center
}

Чтобы сохранить одинаковую разницу между этими элементами списка, все они должны иметь одинаковые свойства отображения, в данном случае display: inline-block:

#main_navigator_r1 li {
    display: inline-block;
}
Свойство

flex-basis также можно учитывать для элементов с родителями свойств отображения flexbox - если для свойства flex-basis установлено значение 0, все элементы внутри контейнера flexbox будут иметь одинаковую ширину - таким образом, между ними будет одинаковое расстояние.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...