Ответ 1
Причина, по которой ваши столбцы имеют одинаковую ширину, заключается в том, что вы дали flex: 1
классу col. В этом случае это означает, что для каждого столбца (который есть все) имеется одна треть экрана, доступного для них. Что вы можете сделать, так это удалить свойство flex
из класса col и вместо этого использовать его в области селекторов идентификаторов столбцов. Поэтому в приведенном ниже коде я помещаю свойство flex
в селектора идентификаторов с небольшой разницей, что второй столбец получает с ним свойство flex-grow
0 (первое значение в свойстве flex
). Первая колонка немного больше, как вы сказали, поэтому занимает немного больше места.
Затем, чтобы сохранить контент в центре: первая часть - дать этому второму столбцу flex-grow
0, поэтому он остается посередине. Остальные два столбца растут, и с автоматическим margin
с одной стороны столбцов содержимого он будет расти с одной стороны, а столбец содержимого будет выровнен как слева, так и справа, чтобы дать представление о центрированном контенте. Это только для большего экрана, для небольших экранов вы можете использовать медиа-запросы для правильного выравнивания содержимого.
Итак, в конце концов, ваш код может выглядеть так. Я не знаю, было ли это именно то, что вы имели в виду, но вы можете поиграть с ним и посмотреть, работает ли это.
:root {
--w1Col: 478px;
--w2Col: 370px;
--w3Col: 350px;
--wSum3: calc(var(--w1Col) + var(--w2Col) + var(--w3Col));
}
body {
margin: 0;
font-size: 9pt;
font-family: 'Roboto', sans-serif;
font-weight: 300;
background-color: whitesmoke;
height: 100%;
display: flex;
flex-direction: column;
}
/***************************************************************
* Layout first row
*/
#main {
background-color: white;
color: black;
height: 100%;
flex: 1 0 auto;
width: 100%;
}
#firstRow {
background-color: white;
margin: 10px;
padding: 10px;
display: flex;
flex-direction: row; /* colums layout */
flex-wrap: wrap; /* wrap in multiple lines if it necessary */
}
#firstRow .col {
padding: 5px;
text-align: center;
}
#col1C {
background-color: green;
order: 1; /* column order */
flex: 1 1 var(--w1Col);
}
#col2C {
background-color: blue;
order: 2; /* column order */
flex: 0 1 var(--w2Col);
}
#col3C {
background-color: red;
order: 3; /* column order */
flex: 1 1 var(--w3Col);
}
#col1Ccon {
max-width: var(--w1Col);
background-color: lightgreen;
height: 200px;
margin: 0 0 0 auto;
}
#col2Ccon {
max-width: var(--w2Col);
background-color: lightblue;
height: 150px;
margin: 0 auto;
}
#col3Ccon {
max-width: var(--w3Col);
background-color: salmon;
height: 200px;
margin: 0 auto 0 0;
}
@media only screen and (max-width: 1268px) {
#col2C {
flex-grow: 1;
}
#col2Ccon {
margin: 0 auto 0 0;
}
#col3Ccon {
margin: 0 auto;
}
}
@media only screen and (max-width: 908px) {
#col1Ccon {
margin: 0 auto;
}
#col2Ccon {
margin: 0 0 0 auto;
}
#col3Ccon {
margin: 0 auto 0 0;
}
}
@media only screen and (max-width: 780px) {
#col2Ccon, #col3Ccon {
margin: 0 auto;
}
}
Что касается второго вопроса