Как в 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). В идеале с песочницей.
Ankhena, Ну да зависить от своей ширины и менять свою ширину как то не правильно.
Но мы то уже знаем что в стилях есть свойства контейнеров которые специально вводят.
Поэтому менять ширину от своей ширины могли бы запретить. Или например использовать ширину контейнера не как тег а как ячейку сетки. Например класс :HAS, когда то говорили что он тоже может вызвать рекурсию.
Вы правы, мой выход из ситуации не является решением поставленного вопроса. ну возможно и решения просто нет такого о чём вопрос.
Вы правильно-справедливо это заметили, видно что Вы профи. Бывало так что я задаю вопрос тут о нестандартном решении, а мне говорят что я не правильно задал вопрос, поправляют меня и отвечают на их же придуманый вопрос, который я и сам знаю, кроме ответа на свой вопрос найти не мог.
Спасибо за поддержку.
DIV содержит в себе список DIV`ов,
этот DIV в зависимости от ширины должен иметь либо flex-direction: rows либо flex-direction: colls
чтобы дочерние DIV`ы выстраивались либо по колонкам, либо по строкам.
Решил это таким образом, что я дочерним DIV`ам назначил ширину 100% при flex-direction: colls; flex-wrap: wrap;
и дочерние DIV`ы переносились по строкам, как будто бы я flex-direction: менял.