31/31 Испытание: сложные палитры. Оцените код.

Ребят, подскажите все ли оптимально по коду. Не все моменты по свойствам понял достаточно четко. Буду рад фидбеку. Спасибо.

И не понял какая логика у свойства “order”. По нему не хватило информации в теории курса.

.palette-small {
  display: flex;
  }

/* -1- */  
  
.palette-box:nth-child(1) .palette-small {
  flex-direction: column;
  justify-content: center;
  }  

.palette-box:nth-child(1) .color-2 {
  order: 3;
  }
  
.palette-box:nth-child(1) .color-3 {
  align-self: center;
  }      

.palette-box:nth-child(1) .color-4 {
  align-self: center;
  order: 3;
  } 

/* -2- */

.palette-box:nth-child(2) .palette-small {
  flex-direction: column;
  justify-content: space-between;
  }

.palette-box:nth-child(2) .color-1 {
  align-self: flex-start;
  order: -1;
  }

.palette-box:nth-child(2) .color-4 {
  align-self: flex-start;
  }


.palette-box:nth-child(2) .color-2 {
  align-self: flex-end;
  order: 3;
  }
  
.palette-box:nth-child(2) .color-6 {
  align-self: flex-end;
  order: 2;
  }

/* -3- */

.palette-box:nth-child(3) .palette-small {
  justify-content: space-between; 
  }

.palette-box:nth-child(3) .part:nth-child(1) {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  }

.palette-box:nth-child(3) .part:nth-child(2) {
  display: flex;
  flex-direction: column;
  justify-content: space-between; 
  }

/* -4- */
.palette-box:nth-child(4) .palette-small{
  justify-content: space-between;
  }

.palette-box:nth-child(4) .part:nth-child(1) {
  display: flex;
  }
  
.palette-box:nth-child(4) .part:nth-child(2) {
  display:flex;
  flex-direction: column-reverse;
  justify-content: space-between;
  }  

Насколько я понимию, по свойству “Order” суть заключается в том, что все элементы во флекс-контейнере по умолчанию имеют нулевой порядковый номер. И визуальное расположение элементов зависит лишь от положения в HTML-коде и/или свойств выравнивания в самом контейнере. Присваивая “личный” порядковый номер, ты перемещаешь элемент в начало/влево или в конец/вправо контейнера, относительно остальных элементов, равных нулю. Порядок расположения и соответсвующее визуальное отображение будет таким: -3 -2 -1 0 0 0 1 2 3.
Надеюсь, стало чуть яснее.

Что касается кода, то вышло как-то так:

.palette-small {
display: flex;
}

/* 1 */

.palette-box:nth-child(1) .palette-small {
justify-content: center;
flex-direction: column-reverse;
}

.palette-box:nth-child(1) .color-4 {
order: -1;
align-self: center;
}

.palette-box:nth-child(1) .color-3 {
order: 1;
align-self: center;
}

/* 2 */

.palette-box:nth-child(2) .palette-small {
justify-content: space-between;
flex-direction: column-reverse;
}

.palette-box:nth-child(2) .color-4,
.palette-box:nth-child(2) .color-1{
align-self: flex-start;
}

.palette-box:nth-child(2) .color-2,
.palette-box:nth-child(2) .color-6{
align-self: flex-end;
}

/* 3 */

.palette-box:nth-child(3) .palette-small {
justify-content: space-between;
}

.palette-box:nth-child(3) .part:first-child,
.palette-box:nth-child(3) .part:last-child{
display: flex;
justify-content: space-between;
flex-direction: column;
}

/* 4 */

.palette-box:nth-child(4) .palette-small {
justify-content: space-between;
}

.palette-box:nth-child(4) .part:first-child {
display: flex;
flex-direction: row;
}

.palette-box:nth-child(4) .part:last-child {
display: flex;
flex-direction: column-reverse;
justify-content: space-between;
}

Мне кажется дабы не плодить лишние display: flex; проще сразу задать всем:

.palette-box .palette-small,
.palette-box .part { display: flex; }

По поводу второго (/* 2 */) странная ситуация, по идеи такой вариант без назначения порядка не может работать и давать 100%. Вы там ничего не пропустили?

Мой выстраданный вариант:

.palette-box .palette-small,
.palette-box .part { display: flex; }

                      /* ПЕРВОЕ */
                      
.palette-box:nth-child(1) .palette-small {
  justify-content: center;
  flex-direction: column-reverse;
}
.palette-small:nth-child(1) .color-3,
.palette-small:nth-child(1) .color-4 {
  align-self: center;
  }
.color-2 { order: 1; }
.color-5 { order: 2; }
.color-3 { order: 3; }

                      /* ВТОРОЕ */

.palette-box:nth-child(2) .palette-small {
  flex-direction:  column-reverse;
  justify-content: space-between;
  }
.palette-box:nth-child(2) .palette-small .color-4,
.palette-box:nth-child(2) .palette-small .color-1 {
  align-self: flex-start;
  order:      1;
  }
  
.palette-box:nth-child(2) .palette-small .color-2,
.palette-box:nth-child(2) .palette-small .color-6 {
  align-self: flex-end;
  order: 1;
  }
  
                      /* ТРЕТЬЕ */

.palette-box:nth-child(3) .palette-small {
  justify-content: space-between;
}
.palette-box:nth-child(3) .part {
  flex-direction: column;
  justify-content: space-between;
}

                      /* ЧЕТВЕРТОЕ */

.palette-box:nth-child(4) .palette-small {
  justify-content: space-between;
}
.palette-box:nth-child(4) .color-4 {
  align-self: stretch;
}

.palette-box:nth-child(4) .part:nth-child(2) {
  flex-direction: column-reverse;
  justify-content: space-between;
}

Рекомендую Flexbox Froggy тренажер. Помогает визуально потренироваться, после него быстрее запоминаются все назначения.