当前位置: 首页 > 面试题库 >

CSS-如何让不同父母的孩子有相同的身高?

阳凌
2023-03-14
问题内容

我有一排2列。在这些列中,我有一个标题,内容和列表。它们具有不同的内容长度。

我要实现的是,该列表在同一行上彼此相邻,而不会破坏引导程序移动优化。

我首先尝试了3个不同的行,但是当列断开时,内容不再属于彼此。没有JavaScript,有没有我需要的解决方案?也许以某种方式使用flexbox?

这是我当前的代码:

<div class="light-grey-section ruler">
   <div class="container">
      <div class="row">
         <div class="light-section col-xs-12 col-md-6">
            <div class="panel panel-default panel-blank">
               <div class="panel-body">
                  <div class="content"> // contentlength is different in each column
                     <h2>
                        Lorem ipsum Lorem ipsum
                     </h2>
                     <p>
                        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren
                     </p>
                     <p>
                        Lorem ipsum dolor
                     </p>
                     <ul class="check"> // I want this list to stay in the same line with the other ul.check in the other column
                        <li>Lorem ipsum dolor sit amet,</li>
                        <li>Lorem ipsum dolor sit amet,</li>
                        <li>Lorem ipsum dolor sit amet,</li>
                        <li>Lorem ipsum dolor sit amet,</li>
                        <li>Lorem ipsum dolor sit amet,</li>
                     </ul>
                  </div>
               </div>
            </div>
         </div>
         <div class="dark-section col-xs-12 col-md-6">
            <div class="panel panel-default panel-blank">
               <div class="panel-body">
                  <h2>
                     Lorem ipsum
                  </h2>
                  <p>
                     Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
                  </p>
                  <ul class="check">
                     <li>Lorem ipsum dolor sit amet,</li>
                     <li>
                        Lorem ipsum dolor sit amet,
                     </li>
                     <li>Lorem ipsum dolor sit amet,</li>
                     <li>Lorem ipsum dolor sit amet,</li>
                  </ul>
               </div>
            </div>
         </div>
      </div>
   </div>
</div>

问题答案:

为了能够实现这一目标,而无需使用脚本,所有项目(h2ppul)需要 对方,这在技术上意味着他们需要的兄弟姐妹。

然后,对于宽屏并排放置的屏幕,需要对其进行重新排序,以h2第一个(order: 0)开头,依此类推。

我使用了一个媒体查询,但是您可能想添加更多内容,以匹配Boostrap的更多断点。

添加外边界,您需要 在元素上使用border-top/ border-left/ border-right/ 的组合(border- bottom还需要随查询的改变),以覆盖水平和垂直堆叠的项目。

@media (min-width: 768px) {



  .content {

    display: flex;

    flex-wrap: wrap;

    justify-content: space-around;

  }



  .content > * {

    flex-basis: calc(50% - 30px);

  }



  .content h2 {                     /*  1st row  */

    order: 0;

  }

  .content p {                      /*  2nd row  */

    order: 1;

  }

  .content p + p {                  /*  3rd row  */

    order: 2;

    flex-basis: calc(100% - 30px);  /* as only 1 `p` in markup, it need 100% width,

                                       or add an extra empty in the markup  */

  }

  .content ul {                     /*  4th row  */

    order: 3;

  }



}


<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>



<div class="light-grey-section ruler">

  <div class="container">

    <div class="row">

      <div class="light-section col-xs-12">



        <div class="content">

          <h2>Lorem ipsum Lorem ipsum</h2>

          <p>

            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren

          </p>

          <p>

            Lorem ipsum dolor

          </p>

          <ul class="check">

            <li>Lorem ipsum dolor sit amet,</li>

            <li>Lorem ipsum dolor sit amet,</li>

            <li>Lorem ipsum dolor sit amet,</li>

            <li>Lorem ipsum dolor sit amet,</li>

            <li>Lorem ipsum dolor sit amet,</li>

          </ul>

          <h2>Lorem ipsum</h2>

          <p>

            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata

            sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor

          </p>

          <ul class="check">

            <li>Lorem ipsum dolor sit amet,</li>

            <li>Lorem ipsum dolor sit amet,</li>

            <li>Lorem ipsum dolor sit amet,</li>

            <li>Lorem ipsum dolor sit amet,</li>

          </ul>

        </div>



      </div>

    </div>

  </div>

</div>

如果一个项目有很多,则可以将它们分组,即每组4个,以使CSS小得多。

Codepen样本

.container {

  display: flex;

  flex-direction: column;

  justify-content: space-around;

}



.container .row {

  display: flex;

  flex-wrap: wrap;

  justify-content: space-around;

}



.container .row>* {

  flex-basis: calc(100% - 30px);

  min-width: 0;

}



.container .row>div {

  border: 2px solid gray;

}



.container .row>div:nth-child(8n+1),

.container .row>div:nth-child(8n+2),

.container .row>div:nth-child(8n+3),

.container .row>div:nth-child(8n+4) {

  background: lightgray;

}



.container .row>div:nth-child(4n+1) {

  border-width: 2px 2px 0 2px;

  margin-top: 10px;

}



.container .row>div:nth-child(4n+2) {

  border-width: 0 2px;

}



.container .row>div:nth-child(4n+2)+div {

  border-width: 0 2px;

}



.container .row>div:nth-child(4n+4) {

  border-width: 0 2px 2px 2px;

}



@media (min-width: 600px) {

  .container .row>* {

    flex-basis: calc(50% - 30px);

  }

  .container .row>div:nth-child(4n+1) {

    order: 0;

  }

  .container .row>div:nth-child(4n+2) {

    order: 1;

  }

  .container .row>div:nth-child(4n+2)+div {

    order: 2;

  }

  .container .row>div:nth-child(4n+4) {

    order: 3;

  }

  .container .row>div:nth-child(4n+9) {

    order: 4;

  }

  .container .row>div:nth-child(4n+10) {

    order: 5;

  }

  .container .row>div:nth-child(4n+10)+div {

    order: 6;

  }

  .container .row>div:nth-child(4n+12) {

    order: 7;

  }

}


<div class="container">

  <div class="row">

      <div><h2>Title 1</h2></div>

      <div><p>Test text 1</p></div>

      <div><p>Test text 2</p></div>

      <div><button>Button</button></div>



      <div><h2>Title 2</h2></div>

      <div><p>Test text 1 is a bit longer to force it to wrap</p></div>

      <div><p>Test text 2</p></div>

      <div><button>Button</button></div>



      <div><h2>Title 3 is a bit longer to make it wrap</h2></div>

      <div><p>Test text 1 is a bit longer to force it to wrap</p></div>

      <div><p>Test text 2</p></div>

      <div><button>Button</button></div>



      <div><h2>Title 4</h2></div>

      <div><p>Test text 1</p></div>

      <div><p>Test text 2 is a bit longer to force it to wrap</p></div>

      <div><button>Button</button></div>

  </div>



  <div class="row">

      <div><h2>Title 5</h2></div>

      <div><p>Test text 1</p></div>

      <div><p>Test text 2</p></div>

      <div><button>Button</button></div>



      <div><h2>Title 6</h2></div>

      <div><p>Test text 1 is a bit longer to force it to wrap</p></div>

      <div><p>Test text 2</p></div>

      <div><button>Button</button></div>



      <div><h2>Title 7 is a bit longer to make it wrap</h2></div>

      <div><p>Test text 1 is a bit longer to force it to wrap</p></div>

      <div><p>Test text 2</p></div>

      <div><button>Button</button></div>



      <div><h2>Title 8</h2></div>

      <div><p>Test text 1</p></div>

      <div><p>Test text 2 is a bit longer to force it to wrap</p></div>

      <div><button>Button</button></div>

  </div>

</div>


 类似资料:
  • 我一直在将代码从JIT转换到D3,并使用树布局。我已从中复制了代码http://mbostock.github.com/d3/talk/20111018/tree.html使用我的树数据,但我想做更多。 在我的例子中,我想创建子节点,这些子节点合并回一个较低级别的父节点,我意识到这更像是一个有向图结构,但是希望树能够适应这一点(即注意子节点之间的公共id应该合并)。 因此,基本上,一棵树在从父母到

  • 问题内容: 最初,我一直在尝试获取父母的名单以及每个父母的一个最近的孩子。我已经知道如何使用以下查询 但是问题是,结果不包括没有孩子的父母。添加也无济于事。所以我想我可以对所有没有孩子的父母进行查询,然后将这两个查询合并为一个查询。但是我在建立这样的查询时遇到了麻烦。将不胜感激任何建议。 问题答案: 这是您的查询:

  • 所以我正在使用 http://bl.ocks.org/mbostock/4339083 来创建一个可折叠的树,它工作得很好。 现在的问题是,我有一些节点具有相同的子节点,所以我想知道是否有任何方法可以将图形可视化,使两个父节点都扩展到同一个子节点? 所以基本上,当您扩展父节点时,它应该会自动扩展另一个父节点,导致相同的公共子节点,这在任何图中都可能吗?

  • 问题内容: 我试图了解什么对我来说似乎是意外的行为: 我在容器内有一个最大高度为100%的元素,该元素也使用最大高度,但是,出乎意料的是,子代溢出了父代: 但是,如果给定父级的显式高度,则此问题已解决: 有谁知道为什么孩子在第一个例子中不尊重父母的最大身高?为什么需要一个明确的高度? 问题答案: 当您指定的百分比上一个孩子,这是父母的实际高度的百分比,而不是父母的,奇怪的。同样适用于。 因此,如果

  • 问题内容: 我通过设置找到了一种使div容器至少占据整个页面高度的方法。但是,当我添加一个嵌套div和set时,它不会扩展到容器的高度。有办法解决吗? 问题答案: 这是一个已报告的Webkit(chrome /safari)错误,具有最小身高的父母的孩子不能继承height属性: : 显然Firefox也受到了影响(目前无法在IE中进行测试) 可能的解决方法: 添加位置:相对于#containme

  • 在像这样的简单示例中,子边距不会影响父级高度: JSFiddle:http://jsfiddle.net/k1eegxt3/ 默认情况下,子页边距不会分别影响父级高度和父级尺寸。通常,可以通过在父元素中添加边距可以“推”到的内容来轻松修复,例如,向父元素添加填充或边框 JSFIDLE(JSIDLE):http://jsfiddle.net/fej3qh0z/ 我想知道为什么会这样,而不仅仅是它是如