Css grid order не работает

Тема: Почему не работает CSS свойство order в гридах?

Опции темы

Добрый день уважаемые профессионалы и гости форума!

Я изучаю HTML и CSS и у меня возникла проблема со свойством order в гриде.

Суть проблемы такова:
я создаю grid в блоке навигации на моей странице в которой находятся: изображение, и три навигационных ссылки (завернуты в список),
я через свойство order с индексом 1 хочу переместить в самый низ картинку (ибо остальные элементы должны иметь по умолчанию индекс 0 согласно спецификации) ,
чтобы она была самой последней в сетке, но у меня это не получается.

Для примера здесь я приведу упрощенный вариант кода нежели в учебном проекте, но поведение, что в учебном проекте, что в упрощенном, который предоставлю здесь одинаковое (у автора учебного ролика все получается, а у меня с точно таким же кодом ничего не получается) .

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

Запускал в разных браузерах, результат одинаковый.
Ниже прикрепил скриншот со стрелкой которая указывает на то куда я хочу переместить изображение.

Заранее благодарю за помощь! Прошу сильно не ругаться если я пишу какие либо глупости, просто я совсем новичек

Код css и html блок один в один как в учебном проекте просто с абстрактным контентом для упрощения.

Источник

Почему не работает CSS свойство order в гридах?

Добрый день уважаемые профессионалы и гости форума!

Я изучаю HTML и CSS и у меня возникла проблема со свойством order в гриде.

Суть проблемы такова:
я создаю grid в блоке навигации на моей странице в которой находятся: изображение, и три навигационных ссылки (завернуты в список),
я через свойство order с индексом 1 хочу переместить в самый низ картинку (ибо остальные элементы должны иметь по умолчанию индекс 0 согласно спецификации) ,
чтобы она была самой последней в сетке, но у меня это не получается.

Для примера здесь я приведу упрощенный вариант кода нежели в учебном проекте, но поведение, что в учебном проекте, что в упрощенном, который предоставлю здесь одинаковое (у автора учебного ролика все получается, а у меня с точно таким же кодом ничего не получается) .

Читайте также:  Как настроить свой браузер опера

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

Запускал в разных браузерах, результат одинаковый.
Ниже прикрепил скриншот со стрелкой которая указывает на то куда я хочу переместить изображение.

Заранее благодарю за помощь! Прошу сильно не ругаться если я пишу какие либо глупости, просто я совсем новичек

Код css и html блок один в один как в учебном проекте просто с абстрактным контентом для упрощения.

Источник

Css grid order не работает

Добрый день уважаемые профессионалы и гости форума!

Я изучаю HTML и CSS и у меня возникла проблема со свойством order в гриде.

Суть проблемы такова:
я создаю grid в блоке навигации на моей странице в которой находятся: изображение, и три навигационных ссылки (завернуты в список),
я через свойство order с индексом 1 хочу переместить в самый низ картинку (ибо остальные элементы должны иметь по умолчанию индекс 0 согласно спецификации) ,
чтобы она была самой последней в сетке, но у меня это не получается.

Для примера здесь я приведу упрощенный вариант кода нежели в учебном проекте, но поведение, что в учебном проекте, что в упрощенном, который предоставлю здесь одинаковое (у автора учебного ролика все получается, а у меня с точно таким же кодом ничего не получается) .

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

Запускал в разных браузерах, результат одинаковый.
Ниже прикрепил скриншот со стрелкой которая указывает на то куда я хочу переместить изображение.

Заранее благодарю за помощь! Прошу сильно не ругаться если я пишу какие либо глупости, просто я совсем новичек

Код css и html блок один в один как в учебном проекте просто с абстрактным контентом для упрощения.

Источник

grid-template-columns не работает

У меня есть один блок, display: grid .

Согласно идее, первый элемент должен быть растянут на 2 столбца и 2 строки, остальные занимают одну ячейку каждый.

Но свойство grid-template-columns не работает для меня, какое бы значение я ни указывал, содержимое не перемещается.

Теперь первый элемент попал только в первую ячейку, вышел за границы, но не растянулся на два столбца и два ряда.

Где моя проблема?

3 ответа

Вы использовали свойства grid-template-columns и grid-template-rows для дочернего элемента сетки. Эти свойства используются с display: grid в контейнере.

Для прямых дочерних элементов сетки используйте grid-column и строка сетки.

Проблема в том, что вы применяете <> свойство элементов сетки. Это свойство контейнера сетки. Он будет игнорироваться для элементов сетки (если они не являются также контейнерами сетки).

Читайте также:  Как отремонтировать патрон шуруповерта своими руками

Вместо этого используйте grid-column и grid-row свойства, которые применяются к элементам сетки.

Контейнер, в котором вы определяете строки и столбцы, пишутся так grid-template- : 30% 70% (variety of different ways you can define) затем в фактической ячейке вы определяете, в какой строке и столбце она находится в grid-row: 1/3 и grid-column: 2/3

Посмотрите мой JSBIN пример. (Если бы ваше первое изображение было шире, оно уместилось бы на весь ряд . )

Источник

Что может поломать макет на гридах (CSS Grid Layout)

Два способа поломать CSS-гриды, и как их починить

Как фронтенд-разработчика, меня ничто так не раздражает, как неожиданное появление горизонтального скроллбара на сайте. Однако, выстраивая раскладку страницы заказа с помощью CSS-гридов, я на удивление обнаружил что-то мистическое, что поломало мой контейнер. Я полагал, что с размерами у гридов всё решается автоматически.

В итоге я нашёл два способа поломать CSS-гриды. Как это бывает, я умудрился в одной раскладке сделать и то, и другое. ‍

№1: Элементы с overflow-x поломают грид

Для нашего магазина использовался паттерн подменю, которое могло бы прокручиваться с помощью overflow-x , чтобы показать больше вариантов оплаты. Даже с примененным overflow-x грид-элемент растягивался до scrollWidth подменю. Оказывается, любой элемент с overflow-x , будь то блок или адаптивная таблица, поломали бы грид. Вот наглядный пример.

Обычно с решением проблемы горизонтального переполнения справляется overflow-x: auto . Но не в этот раз. Ещё идея — обернуть элемент, попробовав всякие трюки с overflow: hidden , чтобы заставить раскладку подчиняться. Тоже нет.

Дело в том, что по умолчанию у грид-элементов стоит min-width: auto и их размер автоматически устанавливается по контенту в них. Оно устанавливает их min-width по ширине переполняющего блока. Поэтому для исправления глубоко вложенного переполняющего дочернего элемента вы, вопреки интуиции, не обращаете внимания на родительский элемент, а идете вверх по DOM-дереву до самого грид-элемента и обнуляете ему min-width .

Благодаря этому размеры грид-элемента с переполнением контента установятся правильно. Но не всегда.

№2: Контролы формы поломают грид

В нашей раскладке тоже использовался грид для размещения полей формы бок о бок. Я создал тестовый пример на CodePen с различными типами полей, чтобы изолировать эту проблему. При уменьшении окна браузера до момента появления горизонтального скролла (

380px) можно видеть, как поля выходят за границы грид-полосы.

В итоге, чтобы пофиксить подобные поля, придётся применить max-width: 100% , и хотя это в основном исправляет такое поведение в Chrome и Safari, некоторые элементы в этих браузерах и все подобные элементы в Firefox и Edge по-прежнему вываливаются за грид-полосу.

Потому что элементы и им подобные ( ,

, , ) обладают потенциальной способностью быть чем-то, называемым «Замещаемыми элементами»

Читайте также:  Робот пылесос ilife не работает причины

Что ещё, чёрт возьми, за «Замещаемые элементы»?

Согласно MDN, замещаемый элемент — элемент, представление которого выходит за рамки CSS. Это ситуация, когда браузер получает разметку и внедряет элемент с чем-то вроде Shadow DOM. — подходящий пример, но большинство контролов формы также попадают под это описание.

Замещаемые элементы существуют на какой-то спецификационной ничейной территории. Правила их оформления и отображения четко не определены, только лишь то, что у них «часто есть внутренние размеры». Поэтому каждый браузер по своему трактует внешний вид по умолчанию определённых элементов и использование замещаемых элементов в целом. На скриншоте ниже видно, как в зависимости от браузера выглядят замещаемые элементы и их размеры.

В нашей ситуации у некоторых элементов input есть фантомные «внутренние размеры», применяемые браузером. Они не отображаются в качестве браузерного стиля, ни во вкладке «Стили», ни в «Вычисленные стили», но их min-width около

180px для стандартного .

Чтобы кроссбраузерно пофиксить «вываливание» элементов за границы грид-полосы, придётся переопределить этот внутренний размер замещаемых элементов.

Здесь есть побочный эффект, когда прогрессбар, и поля range и number теперь всегда занимают 100% грид-полосы. Это можно переопределить и настроить.

Можно ли назвать это багами гридов? Не совсем.

Такое поведение, как указал некто на StackOverflow, соответствует спецификации. Гриды перенимают поведение флексбоксов относительно min-width: auto , а у замещаемых элементов их min-width зависит от внутренних размеров. Так что само по себе это не баг.

Тем не менее, почти для каждой из моих раскладок мне приходилось применять вспомогательный класс к капризным грид-элементам. Чтобы у него было запоминающееся фирменное название, я назвал его «Fit Grid» (по-русски можно передать как «Влит-в-грид» — прим. перев.).

Гриды для тяжелых раскладок не должны задумываться, что в них за контент, и должны выдерживать самые разные сценарии. Было бы неплохо внедрить это в каждый проект, чтобы сделать грид-элементы максимально устойчивыми. Пусть это и не баг, но я отношу это к территории «Clearfix 2.0».

Как по мне, так замещаемые элементы всегда должны подчиняться и вмещаться в грид-полосы. Я был бы рад, если бы браузеры сошлись на этом. Единственный вопрос, который крутится в моей голове, это должны ли контролы формы, такие как прогрессбар, ползунок и числовые занимать всю грид-полосу. Решение — input , select < width: 100% >, но нутром чую, что не все этого захотят.

Если у вас есть улучшения, дайте мне знать, и я опубликую их на GitHub, но, пожалуйста, перед требованием исправить что-то, всё же проверяйте это в каждом браузере. Спасибо, d00dz.

Спасибо Грегу Уитворту из Microsoft Edge за помощь в отладке и лучшем понимании замещаемых элементов.

P.S. Это тоже может быть интересно:

Если вам понравилась статья, поделитесь ей!

Источник

Оцените статью