Как в CSS писать стили исходя из ширины себя как @container?
Нужно изменять стили блока в зависимости от своей ширины.
Использовать ширину родителя не очень удобно, так как родитель является display: GRID с сложной сеткой.
Надо было родителю назначить стиль container-type: inline-size;
Но так как родитель является сеткой, то отталкиватся от ширины родителя совсем не удобно, надо отталкиватся от ширины ячейки сетки, а так возможно? Как быть?
Да, очевидное это обертка.
Неочевидное можно подумать, если знать полностью задачу.
Опять же, у некоторых свойств заданных в процентах, расчет идет от ширины родителя. А в данном случае от ширины ячейки.
Ankhena,
DIV содержит в себе список DIV`ов,
этот DIV в зависимости от ширины должен иметь либо flex-direction: rows либо flex-direction: colls
чтобы дочерние дивы выстраивались либо по колонкам, либо по строкам.
Решил это таким образом, что я дочерним DIV`ам назначил ширину 100% при flex-direction: colls; flex-wrap: wrap;
и дочерние дивы переносились по строкам, как будто бы я flex-direction: менял.
Но вообще странно, единственный раз решил попробывать контейнеры, и сразу попал в засаду. Странно что в спецификации об этом не подумали.
для меня вообще странно то что в синтаксис не придумали
Но вообще странно, единственный раз решил попробывать контейнеры, и сразу попал в засаду. Странно что в спецификации об этом не подумали.
Они-то подумали.
Теперь попробуйте подумать, что делать браузеру, если ему сказать что-то вроде: если ширина блока 500, то сделай ширину этого же блока 300. Это совсем утрировано, но на ширину влияет не только width.
Только это:
Во-первых, не решение исходного вопроса.
Во-вторых, в описании задачи нет информации о сетке грида и, возможно, других обстоятельствах влияющих на неё (тех же media). В идеале с песочницей.
DIV содержит в себе список DIV`ов,
этот DIV в зависимости от ширины должен иметь либо flex-direction: rows либо flex-direction: colls
чтобы дочерние DIV`ы выстраивались либо по колонкам, либо по строкам.
Решил это таким образом, что я дочерним DIV`ам назначил ширину 100% при flex-direction: colls; flex-wrap: wrap;
и дочерние DIV`ы переносились по строкам, как будто бы я flex-direction: менял.