Причина, по которой все ваши столбцы имеют одинаковую ширину, в том, что вы дали flex: 1
классу col.В этом случае это означает, что у каждого столбца (который является всеми из них) есть одна треть экрана, доступного для них.Что вы можете сделать, это удалить свойство flex
из класса col и вместо этого использовать его в области действия селекторов id столбцов.Поэтому в приведенном ниже коде я поместил свойство 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's 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;
}
}
Что касается второго вопроса