【问题标题】:CSS Flexbox Not Floating to RightCSS Flexbox 不向右浮动
【发布时间】:2022-01-12 23:28:17
【问题描述】:

我正在为 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>

【问题讨论】:

    标签: html css bootstrap-4 flexbox


    【解决方案1】:

    flex-grow: 1 添加到您的flex-item--4 元素意味着它会扩展以填充可用空间。没有剩余空间可供边距占用。

    删除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>

    【讨论】:

      【解决方案2】:

      添加width: 100%; 使其全宽,并将flex-grow: 0 添加到菜单中让它填充剩余空间,但右对齐。 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>

      【讨论】:

        猜你喜欢
        • 2016-08-04
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        • 2022-08-13
        • 1970-01-01
        • 1970-01-01
        • 2014-05-10
        • 1970-01-01
        相关资源
        最近更新 更多