【问题标题】:Dropdown menu not floating in a flex row下拉菜单不浮动在弹性行中
【发布时间】:2022-11-18 00:40:12
【问题描述】:

我有一个手风琴,它有一个 flex-row 文本框,右边有图标。 我需要添加如下图所示的菜单

我的代码在这里

<html>

<head>
  <style>
    .accordion {
      margin: 30px;
    }
    
    .accordion-button.collapsed {
      border-bottom: #ccc 1px solid
    }
    
    .accordion-body {
      border-left: #673ab744 1px solid;
      border-bottom: #673ab744 1px solid;
      border-right: #673ab744 1px solid
    }
    
    .accordion-button {
      display: inline!important
    }
    
    .flx-row {
      display: flex;
      justify-content: space-between;
    }
  </style>
  <script src="/scripts/snippet-javascript-console.min.js?v=1"></script>
</head>

<body>
  <script src="/scripts/snippet-javascript-console.min.js?v=1"></script>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3" crossorigin="anonymous"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0">

  <div class="accordion accordion-flush" id="accordionFlushExample">
    <div class="accordion-item">
      <h2 class="accordion-header" id="flush-headingOne">
        <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne" aria-expanded="false" aria-controls="flush-collapseOne">
      
        <div class="flx-row">          
          <div>
            <input type="textbox" value="Accordion Item #1">
          </div>
          <div>
          

        <div class="btn-group">
            <button type="button" class="btn btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> More </button>
        <ul class="dropdown-menu dropdown-menu-lg-end" style="">
          <li><a class="dropdown-item" href="#">Export</a></li>
          <li><a class="dropdown-item" href="#">Duplicate</a></li>
          <li><a class="dropdown-item tdelete" href="#">Delete</a></li>
        </ul>
    </div>

    <span class="wcopy material-symbols-outlined text-primary">content_copy</span>
    <span class="wdelete material-symbols-outlined text-primary">delete</span>





  </div>
  </div>

  <br><span>Desc goes here</span><br><span>Desc goes here</span>

  </button>
  </h2>
  <div id="flush-collapseOne" class="accordion-collapse collapse" aria-labelledby="flush-headingOne" data-bs-parent="#accordionFlushExample">
    <div class="accordion-body">Placeholder content for this accordion, which is intended to demonstrate the <code>.accordion-flush</code> class. This is the first item's accordion body.</div>
  </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header" id="flush-headingTwo">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseTwo" aria-expanded="false" aria-controls="flush-collapseTwo">
          Accordion Item #2
      </button>
    </h2>
    <div id="flush-collapseTwo" class="accordion-collapse collapse" aria-labelledby="flush-headingTwo" data-bs-parent="#accordionFlushExample">
      <div class="accordion-body">Placeholder content for this accordion, which is intended to demonstrate the <code>.accordion-flush</code> class. This is the second item's accordion body. Let's imagine this being filled with some actual content.</div>
    </div>
  </div>
  </div>

  <div class="as-console-wrapper">
    <div class="as-console"></div>
  </div>
  <script type="text/javascript">
    $(".wdelete").off().on('click', function(event) {
      if (confirm(`Are you sure to delete the workflow ${$(this).prev().parent().prev().val()}?`) == true) {
        $(this).closest('.accordion-item').remove();
      }
      event.preventDefault();
      event.stopPropagation();
    });
  </script>

  <div class="as-console-wrapper">
    <div class="as-console"></div>
  </div>
  <div class="as-console-wrapper">
    <div class="as-console"></div>
  </div>
</body>

</html>

【问题讨论】:

    标签: html css


    【解决方案1】:

    我之前为您提供的代码(如下)工作得很好。您可以列出您希望在行中灵活对齐的任何元素。

    您遇到的问题是您使用的代码在语义上不正确。例如:您有嵌套在按钮中的按钮。按钮应该是层次结构中的最后一个可交互元素。我建议您将手风琴交互更改为简单的 div

    重构代码后,您应该能够使用align-items轻松对齐二维弹性数组中的项目。

    在继续之前,您可能希望尝试更好地了解 flex。 https://developer.mozilla.org/en-US/docs/Web/CSS/flex

    .pad {
      padding: 10px;
    }
    
    .flx-row {
      display: flex;
      justify-content: space-between;
    }
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3" crossorigin="anonymous"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0">
    
    
    <div class="flx-row pad">
    
      <div>
        <input type="textbox" value="Accordion Item #1" />
      </div>
    
      <div class="btn-group">
        <button type="button" class="btn btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> More </button>
        <ul class="dropdown-menu dropdown-menu-lg-end" style="">
          <li><a class="dropdown-item" href="#">Export</a></li>
          <li><a class="dropdown-item" href="#">Duplicate</a></li>
          <li><a class="dropdown-item tdelete" href="#">Delete</a></li>
        </ul>
      </div>
    
      <div>
        <span class="wcopy material-symbols-outlined text-primary">content_copy</span>
        <span class="wdelete material-symbols-outlined text-primary">delete</span>
      </div>
    
    </div>

    【讨论】:

    • 我认为绝对不是他想要的最终结果。
    【解决方案2】:

    听着你可能没有提到你的问题的答案 请注意,如果您的问题还有其他问题,请告诉我

    只要有一个容器 div 然后告诉你的 div 有两个孩子 还剩一个(您的项目和选项) 右手输入下拉列表和删除图标 所以忘掉 flex-row 类吧。 将问题中显示的整个代码放在样式为 = 的 div 中

    display:flex;
    

    然后 有两个(div 第一的 div (your items #item ...) with style of =

    flex:80%;
    

    以及样式为 = 的 div(下拉列表和删除图标...)

    flex:20%;
    

    所以:

    <div class='father-of-two-children'>
     <div class='left-hand-div'>
      My options ...#items..
     </div>
     <div class='right-hand-div'>
      delete icon ...dropdown list...
      It is based on your periority of 
      your items and inputs.they will 
      appear in order. 
     </div>
    </div>
    <style>
     .father-of-two-children{
       display:flex;
      }
     .left-hand-div{
       flex:80%;
     }
     .right-hand-div{
       flex:20%;
     }
    </style>
    

    【讨论】:

      【解决方案3】:

      将你的'Span Tags'用于'btn-group'类的Icon Inside div,然后图标将自动出现在下拉列表旁边

          <div class="btn-group">
      
              <button type="button" class="btn btn-sm dropdown-toggle" data-bs- 
                  toggle="dropdown" aria-expanded="false"> More </button>
      
              <ul class="dropdown-menu dropdown-menu-lg-end">
                  <li><a class="dropdown-item" href="#">Export</a></li>
                  <li><a class="dropdown-item" href="#">Duplicate</a></li>
                  <li><a class="dropdown-item tdelete" href="#">Delete</a></li>
              </ul>
      
                 <span class="wcopy material-symbols-outlined text- 
                       primary">content_copy</span>
                <span class="wdelete material-symbols-outlined text- 
                  primary">delete</span>
      
          </div>
      

      【讨论】:

      • 谢谢,请问能发一下全图吗?此解决方案对我不起作用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 2019-03-11
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多