Разделение элементов навигации с помощью Flex

#html #css #flexbox

#HTML #css #flexbox

Вопрос:

По сути, я пытаюсь отделить последние два элемента от других элементов в моем li, чтобы они располагались в гибком конце .nav-content контейнера. Я понимаю, что моя проблема связана с тем фактом, что в настоящее время я width: 50%; установил значение my ul class="nav-links" , но это был единственный способ, которым я мог получить интервал между моими элементами, чтобы продемонстрировать, что я пытаюсь сделать. В идеале я просто хочу переместить два последних элемента .login-button first-login и .login button second-login в конец контейнера .nav-content , сохранив расстояние между элементами таким, как они есть сейчас.

Я попытался настроить margin-left: auto для .login-button класса, но поскольку поле установлено на 50%, он пытается обернуть кнопки и обрезает их. Я также попытался установить ширину на 100% (ширина .nav-content контейнера), но тогда расстояние между элементами уменьшается.

Я знаю, что, вероятно, есть простое решение для этого, которого я не вижу, и был бы очень признателен за помощь!

 .nav-content {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    min-height: 8vh;
    font-family: 'Roboto', sans-serif;
    font-weight: 400;
    margin-top: 30px;
}

.nav-links {
    display: flex;
    justify-content: space-between;
    width: 50%;
    margin-left: 50px;
}

.nav-links li {
    list-style: none;
}

.nav-links a {
    text-decoration: none;
    letter-spacing: 2px;
    font-weight: 400;
    font-size: 12px;
    color: black;
    text-transform: uppercase;
    position: relative;   
}

.nav-links a.item {
    text-decoration: none;
    letter-spacing: 2px;
    font-weight: 700;
    font-size: 12px;
    color: black;
    text-transform: uppercase;
    position: relative;
}

.nav-links a.item:hover {
    color: black;
}

.nav-links a.item:before {
    content: "";
    position: absolute;
    width: 100%;
    height: 2px;
    bottom: -5px;
    left: 0;
    background-color: blue;
    visibility: hidden;
    -webkit-transform: scaleX(0);
    transform: scaleX(0);
    -webkit-transition: all 0.3s ease-in-out 0s;
    transition: all 0.3s ease-in-out 0s;
}

.nav-links a.item:hover:before {
    visibility: visible;
    -webkit-transform: scaleX(1);
    transform: scaleX(1);
}

.nav-links li a.login-button {
    background: blue;
    padding: 10px 30px;
    color: white;
    box-shadow: 0 15px 10px -10px rgba($color: #000000, $alpha: 0.2);
    font-weight: 400;
    text-transform: capitalize;
}

.nav-links li a.login-button:hover {
    background: green;
}  
    <header id="header">
        <section class="wrapper">
            <nav class="nav-content">
                <a href="#" class="logo">Logo</a>
                <ul class="nav-links">
                    <li><a href="#" class="item">Item 1</a></li>
                    <li><a href="#" class="item">Item 2</a></li>
                    <li><a href="#" class="item">Item 3</a></li>
                    <li><a href="#" class="item">Item 4</a></li>
                    <li><a href="#" target="_blank" class="login-button first-login">First Login</a></li>
                    <li><a href="#" target="_blank" class="login-button second-login">Second Login</a></li>
                </ul>
            </nav>
        </section>    
    </header>  

Ответ №1:

Что-то вроде этого?

Оберните две кнопки другим ul в конец контейнера… Нравится:

 <ul class="nav-links navbar-nav ml-auto">
  

Проверьте приведенный ниже код

 .nav-content {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    min-height: 8vh;
    font-family: 'Roboto', sans-serif;
    font-weight: 400;
    margin-top: 30px;
}

.nav-links {
    display: flex;
    justify-content: space-between;
    width: 50%;
    margin-left: 50px;
}

.nav-links li {
    list-style: none;
}

.nav-links a {
    text-decoration: none;
    letter-spacing: 2px;
    font-weight: 400;
    font-size: 12px;
    color: black;
    text-transform: uppercase;
    position: relative;   
}

.nav-links a.item {
    text-decoration: none;
    letter-spacing: 2px;
    font-weight: 700;
    font-size: 12px;
    color: black;
    text-transform: uppercase;
    position: relative;
}

.nav-links a.item:hover {
    color: black;
}

.nav-links a.item:before {
    content: "";
    position: absolute;
    width: 100%;
    height: 2px;
    bottom: -5px;
    left: 0;
    background-color: blue;
    visibility: hidden;
    -webkit-transform: scaleX(0);
    transform: scaleX(0);
    -webkit-transition: all 0.3s ease-in-out 0s;
    transition: all 0.3s ease-in-out 0s;
}

.nav-links a.item:hover:before {
    visibility: visible;
    -webkit-transform: scaleX(1);
    transform: scaleX(1);
}

.nav-links li a.login-button {
    background: blue;
    padding: 10px 30px;
    color: white;
    box-shadow: 0 15px 10px -10px rgba($color: #000000, $alpha: 0.2);
    font-weight: 400;
    text-transform: capitalize;
    float: right;
}

.nav-links li a.login-button:hover {
    background: green;
}  
 <header id="header">
        <section class="wrapper">
            <nav class="nav-content">
                <a href="#" class="logo">Logo</a>
                <ul class="nav-links">
                    <li><a href="#" class="item">Item 1</a></li>
                    <li><a href="#" class="item">Item 2</a></li>
                    <li><a href="#" class="item">Item 3</a></li>
                    <li><a href="#" class="item">Item 4</a></li>
                   
                </ul>
        <ul class="nav-links navbar-nav ml-auto">
 <li><a href="#" target="_blank" class="login-button first-login">First Login</a></li>
                    <li><a href="#" target="_blank" class="login-button second-login">Second Login</a></li>
        </ul>
            </nav>
        </section>    
    </header>  

Комментарии:

1. Ах, идеально! Я знал, что это будет что-то простое. Спасибо.