Есть список из элементов, первые два занимают по 25% ширины, а каждый третий 50%.
Размещены по три в строке, сколько будет элементов неизвестно, это посты блога которые выводятся циклом вордпресса.
Сложность в том чтобы каждый 6й элемент с его стилями стал на начало строки, поменялся местами с 4м и 5м и так далее
Пробовал применять свойство order:-1
для каждого 6го элемента - не помогло, так как он улетает в начало списка
.parent {
display: flex;
max-width: 400px;
flex-wrap:wrap;
}
.child {
display: block;
height: 20px;
width: 24%;
background-color: #CCCCCC;
margin: 2px;
}
.child:nth-child(3n) {
width: 48%;
}
.child:nth-child(6n) {
background-color: #fa5a5a;
order:-1;
}
<div class="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
Хм.. Думал, что с display: grid
получится красивое решение, а получилось какое-то костыльное. Либо я им пользоваться не умею, либо он для такого не предназначен. В любом случае, костыльный велосипед работает:
section {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-gap: 8px;
}
div {
line-height: 2em;
background-color: silver;
}
div:nth-child(3n) {
grid-column: span 2;
}
div:nth-child(6n) {
background-color: #fa5a5a;
transform: translateX(-100%) translateX(-8px);
}
div:nth-child(6n + 4), div:nth-child(6n + 5) {
transform: translateX(200%) translateX(16px);
}
<section>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
<div>14</div>
<div>15</div>
<div>16</div>
<div>17</div>
<div>18</div>
<div>19</div>
<div>20</div>
<div>21</div>
<div>22</div>
<div>23</div>
<div>24</div>
<div>25</div>
<div>26</div>
<div>27</div>
<div>28</div>
<div>29</div>
<div>30</div>
</section>
Flex тут не поможет, но можно воспользоваться более классическими способами:
section {
margin-bottom: -8px;
}
div {
display: inline-block;
width: calc(25% - 6px);
margin: 0 8px 8px 0;
line-height: 2em;
background-color: silver;
}
div:nth-child(6n + 3) {
width: calc(50% - 4px);
margin-right: 0;
}
div:nth-child(6n) {
width: calc(50% - 4px);
background-color: #fa5a5a;
float: left;
}
div:nth-child(6n + 5) {
margin-right: 0;
}
<section>
<div>1</div><!--
--><div>2</div><!--
--><div>3</div><!--
--><div>4</div><!--
--><div>5</div><!--
--><div>6</div><!--
--><div>7</div><!--
--><div>8</div><!--
--><div>9</div><!--
--><div>10</div><!--
--><div>11</div><!--
--><div>12</div><!--
--><div>13</div><!--
--><div>14</div><!--
--><div>15</div><!--
--><div>16</div><!--
--><div>17</div><!--
--><div>18</div><!--
--><div>19</div><!--
--><div>20</div><!--
--><div>21</div><!--
--><div>22</div><!--
--><div>23</div><!--
--><div>24</div><!--
--><div>25</div><!--
--><div>26</div><!--
--><div>27</div><!--
--><div>28</div><!--
--><div>29</div><!--
--><div>30</div>
</section>
PS: Комментарии нужны чтобы избавиться от пробелов.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В прошлом году подобный конкурс неожиданно привлек большой интерес участников RUso
Суть программы в том, что пользователь вводит строку, которая посимвольно считывается и выводится на экранРеализована обработка ctrl+c, в результате...
Есть задание "Образовать строку из исходной, повторив 1-й и элемент 1 раз, 2-й элемент 2 раз, 3 и элемент – 3 раза и тд" на с++ с ассемблерными вставками
Пишу класс для работы с матрицамиУказатель и кол-во строк и столбцов сокрыто, это понятно