2016-09-10 3 views
2

Я использую свойство CSS order для изменения порядка элементов в контейнере flexbox.Имеются ли элементы с идентичным значением «порядок»?

Есть некоторые элементы, которые я хотел бы поставить в конце этого списка, поэтому я использую order: 1000, что выше, чем порядок чего-либо еще.

Я не забочусь о порядке этих «концевых» элементов относительно друг друга, но я не уверен, что имеет целую кучу элементов с order: 1000.

Я не могу найти что-либо об этом в спецификации. Является ли это действительным/законным?

+2

Поскольку свойство 'order' принимает целые числа, не было бы справедливым сказать, что любое целое было бы приемлемым? По умолчанию свойство 'order' имеет значение' 0', поэтому, если вы спрашиваете, приемлемо ли несколько элементов с одним и тем же «порядковым» целым, не будет ли ответ «да»? – justinw

+0

«Действительный/юридический» в каком смысле? –

+0

@torazaburo: Я думаю что-то в том же духе, что и таблица таблиц CSS - можно сказать, что окно display: table-row никогда не может «юридически» иметь какое-либо другое родительское поле, чем поле таблицы или поле группы строк - и при необходимости будет создан анонимный (поскольку CSS не может указывать на вашу таблицу стилей и сказать «это неверно», у вас есть отображение: объявление строки таблицы, но не отображение: объявление таблицы »). – BoltClock

ответ

6

В CSS никогда не было ситуации, когда несколько элементов, разделяющих одно и то же значение для свойства, считаются «недопустимыми». Таким образом, CSS не определяет достоверность. Поскольку justinw упоминает в комментариях, поскольку каждый элемент имеет хотя бы начальное значение для каждого свойства CSS, если иное не указано по умолчанию для браузера или вам, CSS должен учитывать этот сценарий для каждого отдельного свойства.

В случае имущества order два предмета гибкой одежды с одинаковым значением выложены в соответствии с порядком источника, как указано in section 5.4 of the spec. Другими словами, между двумя элементами flex с order: 1000 (или двумя элементами гибкости с order: 1 или даже начальным значением 0), тот, который приходит первым в разметке источника (при условии, что дерево DOM не было обработано после факт) будет выложен до того, который наступит последним, в соответствии с направлением, указанным flex-direction.

Вот точная цитата:

Элементы с одинаковой порядковой группы изложены в порядке их появления в исходном документе. Это также влияет на painting order [CSS21], точно так же, как если бы элементы flex были переупорядочены в исходном документе.

Это аналогично тому, как два элемента с одинаковым вычисленным значением для z-index окрашены встречно-фронта в исходном порядке (см section 9.9 of CSS2.1).

+0

Наверное, я не очень хорошо читал спецификацию. Спасибо! – Markasoftware

2

Имеются ли элементы с идентичным значением order?

Да. Фактически, все элементы flex имеют значение order по умолчанию. Начальная настройка гибкого контейнера - order: 0. Это означает, что все элементы гибкости, будь то один или 1000, будут иметь одинаковое значение order до переопределения.

Я не забочусь о порядке этих элементов «конец» по отношению друг к другу, но я не уверен, если они имеют целую кучу элементов с order: 1000 является действительным.

Если вы говорите о попадании верхнего предела возможных значений order, можете смело предположить, что их нет. Что делать, если в контейнере имеется 5000 элементов гибкости?

Не существует законного ограничения количества элементов, которые могут существовать в контейнере. Таким образом, не может быть предела для значения order. С 5 000 предметов должно быть доступно order: 5000.

Смежные вопросы