【问题标题】:How to align div's with different heights?如何将div与不同的高度对齐?
【发布时间】:2020-05-17 03:45:23
【问题描述】:

我正在尝试像这里一样对齐 div:https://i.imgur.com/dcUnEkO.png

但结果错误:https://codepen.io/online123/pen/VwvGoQP

HTML:

  <div class="under d-flex flex-wrap justify-content-center">
  <div class="box">Flex item 1</div>
  <div class="box">Flex item 2<br/><br/><br/>end</div>
  <div class="box">Flex item 3</div>
  <div class="box">Flex item 4</div>
  <div class="box">Flex item 5<br/><br/>end</div>
  <div class="box">Flex item 6</div>
  <div class="box">Flex item 7</div>
  <div class="box">Flex item 8</div>
  <div class="box">Flex item 9<br/><br/><br/><br/>end</div>
  <div class="box">Flex item 10</div>
  <div class="box">Flex item 11</div>
  <div class="box">Flex item 12</div>
  </div>

CSS:

.under {
    width:70%;
    margin:auto;
    padding-top:40px;
    padding-bottom:40px;
    text-align:center;
    border: 1px solid green;
    overflow:auto; 
  justify-content:center;
    position:relative;
}

.box {
    text-align:center;
    width:314px;
    padding:10px;
    margin:10px;
    display:inline-block;
    border: 1px solid black;
    align-self:flex-start;
}




body {
    height:100%;
    padding:0px;
    margin:0px;
    flex-direction:column;
    justify-content:center;
    background-color:#262626!important;
    color:#ddd!important;
    font-family: 'Jost', sans-serif;
}

怎么做?有人能帮我吗?谢谢

【问题讨论】:

  • 我能问一下你为什么使用&lt;br&gt; 吗?
  • 仅用于显示不同的高度。
  • 注意:&lt;br&gt; 标签不使用也不需要结束斜线,并且在 HTML 中从来没有。
  • 已经尝试过,但它不起作用。它拉伸 .box 的宽度。或者在屏幕小的时候保持 3 列。

标签: html css bootstrap-4 flexbox


【解决方案1】:

如果您希望它以静态方式而不是在它们上创建任何 map 循环,那么您可以通过这种方式实现它。

.under {
	width:70%;
	margin:auto;
	padding-top:40px;
	padding-bottom:40px;
	text-align:center;
	border: 1px solid green;
	overflow:auto; 
  display:flex;
  flex-direction:row;
  align-items:flex-start;
  justify-content: center;
	position:relative;
	column-count: 5;
}

.box {
	text-align:center;
	width:314px;
  min-width:314px;
	padding:10px;
	margin:10px;
	display:inline-block;
	box-shadow: 0px 4px #1c1c1c;
	border-bottom-right-radius: 10px;
	border-bottom-left-radius: 10px;
	background-color: #363636;
	border: 1px solid red;
}

@media screen and (max-width: 2450px) {
		.under {
			column-count: 4;
		}
}

@media screen and (max-width: 1900px) {
		.under {
			column-count: 3;
		}
}

@media screen and (max-width: 1350px) {
		.under {
			column-count: 2;
      flex-direction:column;
      align-items:center;
		}
}

@media screen and (max-width: 900px) {
		.under {
			column-count: 1;
      flex-direction:column;
      align-items:center;
		}
}


asd{
  display:flex;
  flex-direction:column
}


body {
	height:100%;
	padding:0px;
	margin:0px;
	flex-direction:row;
	justify-content:center;
	background-color:#262626!important;
	color:#ddd!important;
	font-family: 'Jost', sans-serif;
}
<div class="under">
  <div class='asd'>
    <div class="box">Flex item 1</div>
    <div class="box">Flex item 4</div>
  </div>
  <div class="box">Flex item 2<br><br><br>end</div>
  <div class='asd'>
    <div class="box">Flex item 3</div>  
    <div class="box">Flex item 6</div>
  </div>
  <div class="box">Flex item 5<br><br/>end</div>
  <div class='asd'>
    <div class="box">Flex item 7</div>
    <div class="box">Flex item 8</div>
  </div>
  <div class="box">Flex item 9<br><br><br><br>end</div>
  <div class='asd'>
    <div class="box">Flex item 10</div>
    <div class="box">Flex item 11</div>
    <div class="box">Flex item 12</div>
  </div>
</div>

更新答案请查看并运行

【讨论】:

  • @inside_tank 是的,它会起作用,但您只需添加媒体查询以调整 .box 的宽度以使其适合移动/较小的屏幕。
  • .box 的宽度应始终为 314px。通过较小的屏幕,它应该是更少的列。
  • 然后在媒体查询中将 flex-direction 从 column 更改为 row
  • 它不像我想要的那样工作。当你的浏览器越来越小时,.box'es 应该改变它们的位置。 .under 应始终为 70%。
  • 正如我在回答中所说,如果您希望它是静态的,否则您可以创建另一种这种设计并将其隐藏在桌面上并使用媒体查询在移动设备上显示。
猜你喜欢
  • 2016-08-27
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多