修改后的答案:Revised fiddle
我认为它对你有用。
HTML:
<div class="container">
<div class="item item-1 order1">item-1</div>
<div class="item item-2 order2">item-2</div>
<div class="item item-3 order3">item-3</div>
<div class="item item-4 order4">item-4</div>
<div class="item item-content-1 order1 active">item-content-1</div>
<div class="item item-content-2 order2 ">item-content-2</div>
<div class="item item-content-3 order3">item-content-3</div>
<div class="item item-content-4 order4">item-content-4</div>
</div>
CSS:
html,
body {
height: 100%;
padding: 0;
}
.container {
display: grid;
grid-template-columns: 30% auto;
height: 100%;
}
.item {
min-height: 50px;
border: solid 1px #333;
}
.item[class*="item-content-"] {
display: none;
height: auto;
background-color: gray;
overflow: auto;
}
.item[class*="item-content-"].active {
grid-column-start: 2;
grid-column-end: 3;
grid-row-start: 1;
grid-row-end: 5;
display: block;
}
@media (max-width:767px) {
.order1 {
order: 1;
}
.order2 {
order: 2;
}
.order3 {
order: 3;
}
.order4 {
order: 4;
}
.container {
display: flex;
flex-direction: column;
height: 100%;
justify-content: stretch;
}
.item[class*="item-content-"] {
background-color: goldenrod;
}
.item {
height: 50px;
}
.item[class*="item-content-"].active {
display: flex;
flex-grow: 1;
}
}
------------------------------------------ ------------------------
您可以使用 CSS order 属性。试试吧
fiddle
The order CSS property sets the order to lay out an item in a flex or
grid container.
<div class="container">
<div class="item item-1 order1">item-1</div>
<div class="item item-2 order2">item-2</div>
<div class="item item-3 order3">item-3</div>
<div class="item item-4 order4">item-4</div>
<div class="item item-content-1 order1">item-content-1</div>
<div class="item item-content-2 order2">item-content-2</div>
<div class="item item-content-3 order3">item-content-3</div>
<div class="item item-content-4 order4">item-content-4</div>
</div>
CSS:
.container {
display: grid;
grid-template-columns: 30% 70%;
}
.order1 {
order: 1;
}
.order2 {
order: 2;
}
.order3 {
order: 3;
}
.order4 {
order: 4;
}
.item {
min-height: 50px;
border: solid 1px #333;
}
@media (max-width:767px) {
.container {
grid-template-columns: 1fr;
}
}