Можно ли обернуть средний div только в следующий ряд, используя css - PullRequest
0 голосов
/ 17 мая 2019

Рассмотрим следующий код

    <div class="container">
        <div class="left">LEFT</div>
        <div class="center">CENTER</div>
        <div class="right">RIGHT</div>
    </div>

Можно ли обернуть центральный элемент div в следующую строку, когда область просмотра станет меньше?После чего у нас будет левый и правый делители в верхнем ряду и центральный делитель в нижнем ряду?

Возможно ли это только с помощью css?Или требуется javascript / typcript?

Пример кода был бы хорош.Спасибо.

Ответы [ 4 ]

1 голос
/ 17 мая 2019

Это можно сделать без Flex и Grid (что обеспечивает превосходную обратную совместимость).

.col {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	padding: .5em;
}

.container .left {
	float: left;
	background: #fc3;
	min-height: 20em;
	width: 50%;
}
.container .right {
	display: inline-block;
	background: #3cf;
	min-height: 20em;
	width: 50%;
}
.container .center {
	float: left;
	clear: left;
	width: 100%;
	background: #3fc;
	min-height: 20em;
	min-width: 20em;
	
}
@media all and (min-width:60em) {
	.container .left,
	.container .right {
		width: 25%;
	}
	.container .center {
		clear: none;
		width: 50%;
	}
}
    <div class="container">
        <div class="left col">LEFT</div>
        <div class="center col">CENTER</div>
        <div class="right col">RIGHT</div>
    </div>
1 голос
/ 17 мая 2019

Да, просто используйте flex и на контейнере и измените order в center div.

См. Код ниже и оберните его в @media only screen(max-width: 768px) или в ту точку останова, которая вам нужна.

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

.container div {
  width: 50%;
  border: 1px solid red;
  height: 20px;
  box-sizing: border-box;
}

.center {
  order: 3;
  margin: 0 auto;
}
 <div class="container">
        <div class="left">LEFT</div>
        <div class="center">CENTER</div>
        <div class="right">RIGHT</div>
    </div>
1 голос
/ 17 мая 2019

Если вы используете контейнер flex или grid, то есть свойство order, которое вы можете использовать.https://developer.mozilla.org/en-US/docs/Web/CSS/order

.container{
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: center;
  align-items: flex-start;
  align-content: flex-start;
  width: 600px;
  border: 1px solid black;
}
.left{
  width: 200px;
  height: 200px;
  background: blue;

}
.right{

  width: 200px;
  height: 200px;
  background: yellow;
}
.center{

  width: 200px;
  height: 200px;
  background: red;
}
@media only screen 
and (max-width : 599px){

  .container{
    width: 480px;
  }
  .center{
    order: 3;
  }

}
<div class="container">
 <div class="left">LEFT</div>
 <div class="center">CENTER</div>
 <div class="right">RIGHT</div>
</div>

jsfiddle для игры с: https://jsfiddle.net/jv0n8mg9/1/

0 голосов
/ 17 мая 2019

С сеткой CSS это будет выглядеть следующим образом:

.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}

.container > div {
  border: 1px solid red;
}

.left {
  grid-column-start: 1;
}

.center {
  grid-column-start: 2;
  grid-row-start: 2;
}

.right {
  grid-column-start: 3;
}
<div class="container">
        <div class="left">LEFT</div>
        <div class="center">CENTER</div>
        <div class="right">RIGHT</div>
    </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...