当页面从桌面加载到移动响应布局时,更改列的顺序

在以下给定的布局中, 当页面宽度小于600px时,我要在 Column1 上方放置 Column2 我尝试使用display: flex; flex-direction: column-reverse;,但它没有颠倒列的顺序,而是颠倒了列的内容顺序。

这是摘要。

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
* {
  box-sizing: border-box;
}

/* Create two equal columns that floats next to each other */
.column {
  float: left;
  width: 50%;
  padding: 10px;
  height: 300px; /* Should be removed. Only for demonstration */
}

/* Clear floats after the columns */
.row:after {
  content: "";
  display: table;
  clear: both;
}

/* Responsive layout - makes the two columns stack on top of each other instead of next to each other */
@media screen and (max-width: 600px) {
  .column {
    width: 100%;
    /**Uncommenting below will lead to content of column reversed and not the order of column reversed**/
    /*display: flex;
    flex-direction: column-reverse;*/
  }
}
</style>
</head>
<body>

<h2>Responsive Two Column Layout</h2>
<p>Resize the browser window to see the responsive effect (the columns will stack on top of each other instead of floating next to each other,when the screen is less than 600px wide).</p>
<div class="row" style="height: 20px; background-color: red;">
</div>
<div class="row" style="height: 20px; background-color: blue;">
</div>
<div class="row">
  <div class="column" style="background-color:#aaa;">
  	<div class="cls1">
    	<h2>Column 1</h2>
    	<p>Some text..</p>
    </div>
    <div class="cls2">
    	<h2>Column 1.2</h2>
    	<p>Some text..</p>
    </div>
    <div class="cls3">
    	<h2>Column 1.3</h2>
    	<p>Some text..</p>
    </div>
  </div>
  <div class="column" style="background-color:#bbb;">
    <h2>Column 2</h2>
    <p>Some text..</p>
  </div>
</div>

</body>
</html>

任何帮助将是有益的。

lixuebo7456 回答:当页面从桌面加载到移动响应布局时,更改列的顺序

您尝试将display:flex添加到该列中-这使该列成为flex container,其中的元素成为他的flex items。这就是为什么要反转列中的内容而不是列本身的原因。您想改为控制行内的列。为此,您需要将该行设置为flex container(将display:flex应用于行而不是列)。这是适合您情况的CSS:

.row {
  display: flex;  // makes the row a flex container
}

@media screen and (max-width: 600px) {
  .row {
    flex-direction: column-reverse;
  }
}

.column {
  flex-grow: 1;  // makes all columns fill the width of the row equally
  padding: 0 10px;
}
,

这是基于@ajobi的已接受答案的带有工作示例的正确实现:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
* {
  box-sizing: border-box;
}

/* Create two equal columns that floats next to each other */
.column {
  float: left;
  width: 50%;
  padding: 10px;
  height: 300px; /* Should be removed. Only for demonstration */
}

.row {
  display: flex;  // makes the row a flex container
}

/* Clear floats after the columns */
.row:after {
  content: "";
  display: table;
  clear: both;
}

/* Responsive layout - makes the two columns stack on top of each other instead of next to each other */
@media screen and (max-width: 600px) {
  .row {
    flex-direction: column-reverse;
  }
  .column {
    width: 100%;
    /**Uncommenting below will lead to content of column reversed and not the order of column reversed**/
    /*display: flex;
    flex-direction: column-reverse;*/
  }
}
</style>
</head>
<body>

<h2>Responsive Two Column Layout</h2>
<p>Resize the browser window to see the responsive effect (the columns will stack on top of each other instead of floating next to each other,when the screen is less than 600px wide).</p>
<div class="row" style="height: 20px; background-color: red;">
</div>
<div class="row" style="height: 20px; background-color: blue;">
</div>
<div class="row">
  <div class="column" style="background-color:#aaa;">
  	<div class="cls1">
    	<h2>Column 1</h2>
    	<p>Some text..</p>
    </div>
    <div class="cls2">
    	<h2>Column 1.2</h2>
    	<p>Some text..</p>
    </div>
    <div class="cls3">
    	<h2>Column 1.3</h2>
    	<p>Some text..</p>
    </div>
  </div>
  <div class="column" style="background-color:#bbb;">
    <h2>Column 2</h2>
    <p>Some text..</p>
  </div>
</div>

</body>
</html>

本文链接:https://www.f2er.com/3129625.html

大家都在问