【问题标题】:Flex problems with horizontal and vertical alignments水平和垂直对齐的 Flex 问题
【发布时间】:2020-10-27 15:46:13
【问题描述】:

我在尝试对齐 Bootstrap 卡片中的项目(垂直和水平)时遇到了一些问题。

A = 每张卡片中高度可以变化的容器 B+C+D = 100% 的列

垂直对齐需要: B+C = 对齐顶部 D = 对齐底部

水平对齐需求: C+D = 有另一个 flex 左右对齐

<div class="card">
    <div class="card-body">
        <div class="row">
            <div class="col-5" style="border:1px solid green;">
                A
            </div>
            
            <div class="col-7 d-flex align-items-end flex-column">

                <div class="p-2" style="width:100%; border:1px solid green;">
                    B
                </div>
                
                <div class="p-2">
                    <div class="d-flex justify-content-between bd-highlight mb-3">
                        <div class="p-2" style="border:1px solid green;">
                            left
                        </div>
                        <div class="p-2" style="border:1px solid green;">
                            right
                        </div>
                    </div>                        
                </div>

                <div class="mt-auto p-2" style="border:1px solid green;">
                    <div class="d-flex justify-content-between bd-highlight mb-3">
                        <div class="p-2" style="border:1px solid green;">
                            left
                        </div>
                        <div class="p-2" style="border:1px solid green;">
                            right
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

我现在收到了:https://jsfiddle.net/sgn3atme/1/

【问题讨论】:

  • 你为什么使用align-items-end

标签: bootstrap-4


【解决方案1】:

在您的示例中将width: 100% 分配给c-containerd-container

.c-container .c-wrapper:not(:last-child), .d-container .d-wrapper:not(:last-child) {
    margin-bottom: 15px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>

<div class="card">
   <div class="card-body">
     <div class="row">
       <div class="col-5" style="border:1px solid green;">
         A
       </div>
       <div class="col-7 d-flex align-items-end flex-column">
          <div class="p-2 mb-3" style="width:100%; border:1px solid green;">
             B
          </div>
          <div class="p-2 w-100 mb-3 c-container" style="border:1px solid green;">
            <div class="d-flex justify-content-between bd-highlight c-wrapper">
               <div class="p-2" style="border:1px solid green;">
                  left
               </div>
               <div class="p-2" style="border:1px solid green;">
                  right
               </div>
            </div>                        
          </div>
          <div class="mt-auto p-2 w-100 d-container" style="border:1px solid green;">
             <div class="d-flex justify-content-between bd-highlight d-wrapper">
               <div class="p-2" style="border:1px solid green;">
                 left
               </div>
             <div class="p-2" style="border:1px solid green;">
                 right
              </div>
             </div>
            </div>
          </div>
         </div>
       </div>
</div>

【讨论】:

    【解决方案2】:

    CD 中使用 w-100col-12 类(leftright 的第二个父级>) 查看下面 sn-p 中的 cmets-

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
    
        <div class="card">
            <div class="card-body">
                <div class="row">
                    <div class="col-5" style="border:1px solid green;">
                        A
                    </div>
                    
                    <div class="col-7 d-flex align-items-end flex-column">
    
                        <div class="p-2" style="width:100%; border:1px solid green;">
                            B
                        </div>
                              <!-- used w-100 here -->
                        <div class="p-2 w-100 my-2" style="border:1px solid green;">
                            <div class="d-flex justify-content-between bd-highlight my-2">
                                <div class="p-2" style="border:1px solid green;">
                                    left
                                </div>
                                <div class="p-2" style="border:1px solid green;">
                                    right
                                </div>
                            </div>
                        </div>
                                      <!-- used col-12 here -->
                        <div class="mt-auto p-2 col-12" style="border:1px solid green;">
                            <div class="d-flex justify-content-between bd-highlight my-2">
                                <div class="p-2" style="border:1px solid green;">
                                    left
                                </div>
                                <div class="p-2" style="border:1px solid green;">
                                    right
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 2012-10-10
      • 2014-10-08
      • 2020-04-02
      • 2013-11-25
      • 2014-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多