如何编写Flex方向的响应式CSS

7kqas0il  于 2024-01-09  发布在  其他
关注(0)|答案(1)|浏览(96)

我试图写响应CSS的Flex.我已经使用灵活的方向行和列响应.但它是不工作.所以,如何显示这个div框灵活的移动的和标签设备.
对于移动的:分区框应该像一个下一个(垂直)。
对于Tab:Div框应该像(水平)框一样,它应该像下一行。
演示:https://stackblitz.com/edit/flex-box-example-e2fqif?file=src%2Fapp%2Fapp.component.css

.flex-container {
  display: flex;
}

.flex-child {
  flex: 1;
  border: 2px solid yellow;
  background-color: blueviolet;
  width: 150px;
  height: 150px; 
}  

/* For Tablet View */
@media screen and (min-device-width: 768px) and (max-device-width: 1024px) {
  .flex-container {
    flex-direction: row;
  }
}

/* For Mobile Portrait View */
@media screen and (max-device-width: 480px) and (orientation: portrait) {
  .flex-container {
    flex-direction: column;
  }
}

/* For Mobile Landscape View */
@media screen and (max-device-width: 640px) and (orientation: landscape) {
  .flex-container {
    flex-direction: row;
  }
}

/* For Mobile Phones Portrait or Landscape View */
@media screen and (max-device-width: 640px) {
  .flex-container {
    flex-direction: row;
  }
}

个字符

mv1qrgav

mv1qrgav1#

在我看来,与其使用媒体查询将flex-directionrow切换到column,更优雅的方法是在.flex-container类上应用flex-wrap: wrap,然后为每个.flex-child应用flex: 0 0 1以促进自然 Package 。
之后,要控制一行中有多少项,可以使用.flex-child类中的width属性。这种方法允许精确调整布局,以适应不同的屏幕尺寸。
最后,你的代码看起来像这样:

.flex-container {
  display: flex;
  flex-wrap: wrap;
}

.flex-child {
  flex: 0 0 1;
  border: 2px solid yellow;
  box-sizing: border-box;
  background-color: blueviolet;
  width: 100%;
  height: 150px;
}

@media screen and (min-width: 768px) {
  .flex-child {
    width: calc(100% / 6);
  }
}

个字符

相关问题