Я создал контейнер (красная граница с линией, обозначающей центр), которая прокручивается по горизонтали при переполнении.
Первый дочерний элемент (фиолетовый блок) этого контейнера всегда является кнопкой.

При нажатии этой кнопки в контейнер добавляются дополнительные дочерние элементы.

Я пытаюсь найти способ с чистым CSS, чтобы первый дочерний элемент всегда центрировался при загрузке приложения, а последний дочерний элемент в контейнере, если имеется более одного дочернего элемента, можно также прокрутить до самого центра контейнера.
У меня возникают трудности с выяснением этого, потому что я применил min-width
(т.е. 100px
) в дополнение к отзывчивому width
(т.е. 25vw
) к дочерним элементам.
Первоначально я планировал добиться этого путем применения padding-left
к родительскому контейнеру, а затем псевдоэлемента ::after
к :not(.first-child).children:last-child
, но затем Я понял, что подход не достаточно Если я хочу, чтобы он был полностью отзывчивым. Тем не менее, я знаю, что могу вручную вычислить, при какой ширине будет запускаться min-width
, а затем использовать запрос @media
, но я надеюсь, что есть лучший способ.
#container {
width: 100%;
height: 100%;
padding-left: ; /* Half the window width minus half the width of the child. */
overflow-x: scroll;
display: flex;
align-items: center;
background: skyblue;
box-sizing: border-box;
border: solid red 2px;
}
#container::-webkit-scrollbar {
display: none;
}
.children {
width: 25vw;
min-width: 100px;
height: 50%;
min-height: 200px;
position: relative;
margin-right: 5%;
display: flex;
justify-content: center;
align-items: center;
background: purple;
}
:not(.first-child).children:last-child::after {
content: '';
width: ; /* Half the window width minus half the width of the child. */
height: 100%;
position: relative; /* relative or absolute */
left: ; /* and offset appropriately. */
transform: ; /* */
}
Есть ли у кого-нибудь идеи? как это сделать?