【问题标题】:Keeping child elements horizontally aligned according to its container, and still aligned left according to the other child elements, on window resize在调整窗口大小时,保持子元素根据其容器水平对齐,并根据其他子元素保持左对齐
【发布时间】:2019-02-06 17:47:15
【问题描述】:

我希望元素在窗口调整大小时以容器为中心对齐,如下所示:

-----------child1--child2----------
-----------child3-----------------

看到子元素水平对齐到它们的容器中心,但它们是对齐的 根据自己离开(使用 flexbox justify-content flex-start),(参见 child3 例如左对齐); 当我调整窗口大小时,子元素必须根据其容器保持居中对齐,但自身左对齐。

我怎么能这样做?这可能吗?

这是一个接近我想要的东西的样本:

http://jsfiddle.net/z8nxf5w3/193/

【问题讨论】:

  • 到目前为止你能发布你的 HTML 吗?很难想象它。
  • 对不起
  • @I.R.R.,你明白了吗?
  • 刚看到你的小提琴。我不清楚您的要求与小提琴中的要求有何不同。像这样?:jsfiddle.net/axkm0p3y/2
  • @Venkat,嗨,里面的元素(子元素)必须根据其容器向左对齐,但居中。那个小提琴很接近,但元素必须在调整大小窗口上对齐中心。随着容器大小的增加,您可以看到子元素向左移动了一点

标签: javascript jquery html css


【解决方案1】:

根据我的理解,我创建了您的小提琴副本。将基于此根据您的需要尝试提供帮助。告诉我。

我认为您的容器的 text: center 属性导致了问题。

检查这个:http://jsfiddle.net/z8nxf5w3/98/

【讨论】:

  • 唯一的问题是获得新列的子元素水平居中,它们应该根据子元素左对齐,并根据其容器居中,正如我在我的问题中说明的那样发布,查看“child3”位置
  • 这是我能得到的最接近的:jsfiddle.net/z8nxf5w3/112 虽然你可以看到,元素在容器调整大小时没有对齐中心
  • 我正在尝试这样的事情:上次编辑:jsfiddle.net/z8nxf5w3/130 元素的第二行/列仍然居中对齐。我希望它根据子元素左对齐,并根据其容器居中
  • 这是我最后一次尝试:jsfiddle.net/z8nxf5w3/193尝试调整窗口大小
【解决方案2】:

问题是您在 div 中将它们与margin: auto 居中,并且仍在尝试使它们在 .wrapper 中左对齐。

除了删除margin: auto,我还删除了最小宽度。如果您想在包装器中居中但左对齐,您应该通过媒体查询来处理这个问题。 为什么?您在包装器中居中的方式是让它们完全填满(您定义的填充除外)。我创建了样本选项:每行 3 个和 2 个元素。如果您以百分比计算边距和宽度,则可以使它们填满整个包装。

这是一个可行的选择:

.container{
  padding:30px;
  background-color:green;
  text-align:center;
}
.wrapper{
   padding:30px;
  background-color:yellow;
   display:flex;
   justify-content:flex-start;
   flex-wrap:wrap;
   margin:auto;
   width:40%;
}

.wrapper div{
  
  /*min-width: 100px; --> don't use this, use % and media queries */
  width: 31.3%;
  margin: 5px 1%; /* 31.3 * 3 + 6 * 1 = 99.9% */
  background-color: #eee;
  /* margin-right:auto; --> this centers the elements
  margin-left:auto; */
}
@media (max-width: 600px) {
  .wrapper div{
    width: 48%; /* 2*48 + 4 = 100% */
  }
}
<div class="container">
  <div class="wrapper">
      <div class="child-1">
      text1
      </div>
      <div class="child-2">
      text2
      </div>
      <div class="child-3">
      text3
      </div>
      <div class="child-4">
      text4
      </div>
      <div class="child-5">
      text5
      </div>
    </div>
</div>

【讨论】:

  • 这很酷,但元素应该有最大和最小尺寸。所以他们可以在增加的容器上创建更多的行,在减少的容器上获得更多的列
  • 在这种情况下,您必须选择:它们要么在容器的中心对齐,要么在容器的左侧。你不能让它以两种方式对齐......
  • 明白了,谢谢这里是最大宽度和最小宽度的小提琴:jsfiddle.net/z8nxf5w3/103@Victoria Ruiz,在javascript中使用onresize事件不可能吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-18
  • 1970-01-01
相关资源
最近更新 更多