我正在try 为Flex编写响应式CSS.我已经使用了灵活的方向行和列响应.但它不起作用.所以,如何显示这个div框灵活的移动和标签设备.

For mobile: Div boxes should be like one below one(vertical).
For Tab: Div boxes should be like(horizontal) over boxes it should be like next line.

演示: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;
  }
}
<div class="flex-container">
  <div class="flex-child magenta">Flex Column 1</div>
  <div class="flex-child green">Flex Column 2</div>
  <div class="flex-child green">Flex Column 3</div>
  <div class="flex-child green">Flex Column 4</div>
  <div class="flex-child green">Flex Column 5</div>
  <div class="flex-child green">Flex Column 6</div>
</div>

推荐答案

在我看来,与其使用媒体查询将flex-directionrow切换到column,更优雅的方法是对.flex-container类应用flex-wrap: wrap,然后对每个.flex-child应用flex: 0 0 1以便于自然包装.

之后,若要控制要在一行中包含多少项,可以在.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);
  }
}
<div class="flex-container">
  <div class="flex-child magenta">Flex Column 1</div>
  <div class="flex-child green">Flex Column 2</div>
  <div class="flex-child green">Flex Column 3</div>
  <div class="flex-child green">Flex Column 4</div>
  <div class="flex-child green">Flex Column 5</div>
  <div class="flex-child green">Flex Column 6</div>
</div>

Css相关问答推荐

在ReactJS中使用动画在栅格上添加柱

如何为多个背景和棋盘设置不同的大小

输入中的框始终显示在MUI文本字段中

如果父元素是弹性元素,则不会显示带有纵横比的空div

显示 P 元素中加载数据的空行

在R shiny中 Select DT表格值的背景 colored颜色 (无条件的自由 Select )

创建一个CSS动画的对角线线条.

CSS 不要 Select 包含混合内容的 div 中的第一个元素

根据选项 colored颜色 更改 Select 文本 colored颜色

如何禁用 Angular Material Pagination 按钮的波纹效果?

父母是内联块,子元素有%填充=奇怪的行为

更改组件中 css 的值

是否可以对 CSS 网格中重复和可包装的列使用固定的最小和最大宽度?

reactjs - 容器中水平行的png图像

将 CSS 注入 Shadow 根.然而风格正在受到影响

如何使单选按钮看起来像切换按钮

如何通过单击
  • 激活 HTML 链接?
  • CSS 悬停与 JavaScript 鼠标悬停

    为什么 CSS 中的光标:指针效果不起作用

    html元素(div)的全高,包括边框,填充和边距?