CSS Flexbox 不向右浮动
CSS Flexbox Not Floating to Right
我正在为 flexbox
苦苦挣扎,正在寻求一些帮助来启动我的导航栏和 运行。
我有以下代码,导航栏左侧应该有我的徽标 + 标题,右侧有一个选项菜单。知道为什么我的 flexbox 全部左对齐而 item--4
没有浮动到右边吗?
.flex-container {
background: #eee;
display: flex;
}
.flex-item {
background: orangered;
color: white;
}
.flex-item--4 {
flex-grow: 1;
margin-left: auto;
background: purple;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
<div class="flex-container">
<div class="flex-item">
<a class="navbar-brand" style="padding-left: 20px;" href="{% if user.is_staff or user.is_superuser %}{% url 'admin:index' %}{% else %}{% url 'app:home' %}{% endif %}">
<img src="{% static 'img/bootstrap-solid.svg' %}" width="21" height="21" alt="Logo" class="mr-2 mt-n1"> Title
</a>
</div>
<div class="flex-item--4">
<div class="collapse navbar-collapse" id="navbarNavDarkDropdown">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDarkDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Hello {{ request.user.get_full_name|default:request.user }}!
</a>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="navbarDarkDropdownMenuLink">
<li><a class="dropdown-item" href="#">About</a></li>
<li><a class="dropdown-item" href="#">Account</a></li>
<li><a class="dropdown-item" href="#">Settings</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="{% url 'account:logout' %}"> Sign Out</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</nav>
将 flex-grow: 1
添加到您的 flex-item--4
元素意味着它会扩展以填充可用的 space。没有 space 剩余的保证金可以占用。
删除flex-grow: 1
,元素将被推到右侧。
出于某种原因,我还必须将 width:100%
添加到 flex-container
- 我假设 Bootstrap 样式限制了宽度。
.flex-container {
background: #eee;
display: flex;
width: 100%;
}
.flex-item {
background: orangered;
color: white;
}
.flex-item--4 {
margin-left: auto;
background: purple;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
<div class="flex-container">
<div class="flex-item">
<a class="navbar-brand" style="padding-left: 20px;" href="{% if user.is_staff or user.is_superuser %}{% url 'admin:index' %}{% else %}{% url 'app:home' %}{% endif %}">
<img src="{% static 'img/bootstrap-solid.svg' %}" width="21" height="21" alt="Logo" class="mr-2 mt-n1"> Title
</a>
</div>
<div class="flex-item--4">
<div class="collapse navbar-collapse show" id="navbarNavDarkDropdown">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDarkDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Hello {{ request.user.get_full_name|default:request.user }}!
</a>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="navbarDarkDropdownMenuLink">
<li><a class="dropdown-item" href="#">About</a></li>
<li><a class="dropdown-item" href="#">Account</a></li>
<li><a class="dropdown-item" href="#">Settings</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="{% url 'account:logout' %}"> Sign Out</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</nav>
添加 width: 100%;
使其全宽,并将 flex-grow: 0
添加到菜单 而不是 让它填满剩余的 space,但是右对齐。 margin-auto: left
已经正确对齐了。
.flex-container {
background: #eee;
display: flex;
width: 100%;
}
.flex-item {
background: orangered;
color: white;
}
.flex-item--4 {
flex-grow: 0;
margin-left: auto;
background: purple;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
<div class="flex-container">
<div class="flex-item">
<a class="navbar-brand" style="padding-left: 20px;" href="{% if user.is_staff or user.is_superuser %}{% url 'admin:index' %}{% else %}{% url 'app:home' %}{% endif %}">
<img src="{% static 'img/bootstrap-solid.svg' %}" width="21" height="21" alt="Logo" class="mr-2 mt-n1"> Title
</a>
</div>
<div class="flex-item--4">
<div class="collapse navbar-collapse" id="navbarNavDarkDropdown">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDarkDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Hello {{ request.user.get_full_name|default:request.user }}!
</a>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="navbarDarkDropdownMenuLink">
<li><a class="dropdown-item" href="#">About</a></li>
<li><a class="dropdown-item" href="#">Account</a></li>
<li><a class="dropdown-item" href="#">Settings</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="{% url 'account:logout' %}"> Sign Out</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</nav>
我正在为 flexbox
苦苦挣扎,正在寻求一些帮助来启动我的导航栏和 运行。
我有以下代码,导航栏左侧应该有我的徽标 + 标题,右侧有一个选项菜单。知道为什么我的 flexbox 全部左对齐而 item--4
没有浮动到右边吗?
.flex-container {
background: #eee;
display: flex;
}
.flex-item {
background: orangered;
color: white;
}
.flex-item--4 {
flex-grow: 1;
margin-left: auto;
background: purple;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
<div class="flex-container">
<div class="flex-item">
<a class="navbar-brand" style="padding-left: 20px;" href="{% if user.is_staff or user.is_superuser %}{% url 'admin:index' %}{% else %}{% url 'app:home' %}{% endif %}">
<img src="{% static 'img/bootstrap-solid.svg' %}" width="21" height="21" alt="Logo" class="mr-2 mt-n1"> Title
</a>
</div>
<div class="flex-item--4">
<div class="collapse navbar-collapse" id="navbarNavDarkDropdown">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDarkDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Hello {{ request.user.get_full_name|default:request.user }}!
</a>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="navbarDarkDropdownMenuLink">
<li><a class="dropdown-item" href="#">About</a></li>
<li><a class="dropdown-item" href="#">Account</a></li>
<li><a class="dropdown-item" href="#">Settings</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="{% url 'account:logout' %}"> Sign Out</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</nav>
将 flex-grow: 1
添加到您的 flex-item--4
元素意味着它会扩展以填充可用的 space。没有 space 剩余的保证金可以占用。
删除flex-grow: 1
,元素将被推到右侧。
出于某种原因,我还必须将 width:100%
添加到 flex-container
- 我假设 Bootstrap 样式限制了宽度。
.flex-container {
background: #eee;
display: flex;
width: 100%;
}
.flex-item {
background: orangered;
color: white;
}
.flex-item--4 {
margin-left: auto;
background: purple;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
<div class="flex-container">
<div class="flex-item">
<a class="navbar-brand" style="padding-left: 20px;" href="{% if user.is_staff or user.is_superuser %}{% url 'admin:index' %}{% else %}{% url 'app:home' %}{% endif %}">
<img src="{% static 'img/bootstrap-solid.svg' %}" width="21" height="21" alt="Logo" class="mr-2 mt-n1"> Title
</a>
</div>
<div class="flex-item--4">
<div class="collapse navbar-collapse show" id="navbarNavDarkDropdown">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDarkDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Hello {{ request.user.get_full_name|default:request.user }}!
</a>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="navbarDarkDropdownMenuLink">
<li><a class="dropdown-item" href="#">About</a></li>
<li><a class="dropdown-item" href="#">Account</a></li>
<li><a class="dropdown-item" href="#">Settings</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="{% url 'account:logout' %}"> Sign Out</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</nav>
添加 width: 100%;
使其全宽,并将 flex-grow: 0
添加到菜单 而不是 让它填满剩余的 space,但是右对齐。 margin-auto: left
已经正确对齐了。
.flex-container {
background: #eee;
display: flex;
width: 100%;
}
.flex-item {
background: orangered;
color: white;
}
.flex-item--4 {
flex-grow: 0;
margin-left: auto;
background: purple;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
<div class="flex-container">
<div class="flex-item">
<a class="navbar-brand" style="padding-left: 20px;" href="{% if user.is_staff or user.is_superuser %}{% url 'admin:index' %}{% else %}{% url 'app:home' %}{% endif %}">
<img src="{% static 'img/bootstrap-solid.svg' %}" width="21" height="21" alt="Logo" class="mr-2 mt-n1"> Title
</a>
</div>
<div class="flex-item--4">
<div class="collapse navbar-collapse" id="navbarNavDarkDropdown">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDarkDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Hello {{ request.user.get_full_name|default:request.user }}!
</a>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="navbarDarkDropdownMenuLink">
<li><a class="dropdown-item" href="#">About</a></li>
<li><a class="dropdown-item" href="#">Account</a></li>
<li><a class="dropdown-item" href="#">Settings</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="{% url 'account:logout' %}"> Sign Out</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</nav>