[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как заставить grid вести себя как нужно
McLotos
Всем привет. Есть шаблон, который никак не могу заставить вести себя как нужно - в одной из секций шаблона есть 3 блока, которые всегда должны быть по центру страницы, но в какой-то момент они начинают прижиматься к левому краю экрана и остается много пустоты, подскажите как починить (при этом есть навязчивое желание не использовать @media
думаю код объяснит вопрос лучше, чем я

https://codepen.io/McLotos/pen/ExYWoQq?editors=1100

Если начать растягивать страницу по ширине, то в какой-то момент блоки просто приклеиваются к левому краю, а нужно чтобы все три блока, стоя рядом были точно по середине страницы

в качестве простого решения, можно добавить @media screen and (min-width: 50rem) и там указать что-то типа
main
grid-template-columns: repeat(5, 1fr)
section
grid-column-start: 2
grid-column-end: 4

но не хочется использовать @media-запросы, чтобы не возиться с подгонкой под разные экраны, смысл grid пропадает



_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
walerus
Не знаю на сколько я правильно понял и верно ли делаю, т.к. не в пользовался этим...
Но попробовал так:
grid-template-columns: repeat(auto-fit, minmax(calc( 100% / 4), 1fr))
вроде все по центру (кроме текста в <p> тегах), правда и ширина блоков тянется.

В инспекторе, при наведении на блок main->section, видно как разбиваются блоки, в твоем варианте, при большом разрешении, их у меня было 5ть, при уменьшении соответственно 4-3-2-1 и становятся в столбик, в моем варианте их максимум 3 и при уменьшении экрана, они так и остаются - 3, увеличивая блок по высоте.

Скорее всего я не так понял что нужно, но может на какие нибудь мысли натолкнет )
McLotos
Цитата (walerus @ 27.08.2019 - 01:23)
grid-template-columns: repeat(auto-fit, minmax(calc( 100% / 4), 1fr))

пробовал такое решение, но при этом подходе они перестают сдвигаться друг под друга и слишком растягиваются, приходится добавлять max-width и float что уже само по себе не хорошо, потому что зачем тогда grid если один фиг используются float и width

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
Нет решения?

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
walerus
Похоже без медиа никак (.

Почитал тут за Грип... веселая штука, но... что можно было бы флексами раскидать, тут приходится колдовать ((

Писать два "шаблона(grid-template-areas)" один для мобилки другой для десктопа, на сколько я понял, иначе никак (.

Может кто из "гуру CSS" подскажет, было бы интересно wink.gif
McLotos
Цитата (walerus @ 28.08.2019 - 03:31)
Почитал тут за Грип... веселая штука, но... что можно было бы флексами раскидать, тут приходится колдовать ((

А я вот пришел к полностью противоположенному выводу, там где во flex приходится разруливать media, в grid решается одной строкой

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
I have solution

было
main
section
display: grid
grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr))
grid-gap: 2rem

стало
main
section
display: grid
grid-template-columns: repeat(auto-fit, minmax(20rem, max-content))
justify-content: center
grid-gap: 2rem

Рабочий пример

https://codepen.io/McLotos/pen/ExYWoQq?editors=1100

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
walerus
McLotos
Круто ), пару новых знания получил я )

Рад что удалось в итоге biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.