Проблемы с Flex/Flex-Flow на ПК и на мобильных устройствах

Столкнулся с каким-то странным поведением после тестирования моего адаптивного веб-сайта на мобильных устройствах и надеюсь, что смогу получить некоторое представление о том, что происходит. По сути, у меня есть одна строка начальной загрузки, содержащая 23 изображения. На моем iPhone с разрешением (375 x 667) я вижу разные результаты с отображением строки по сравнению с настольным браузером, настроенным на это разрешение.

Моя цель состоит в том, чтобы изображения отображались бок о бок попарно до последней строки, которая будет иметь центрированное изображение. В дополнение к стандартному классу строк начальной загрузки я также добавил класс flex, который использует следующий css:

.flex { 
    display: flex;
    justify-content: center;
    flex-flow: row wrap;
    position: relative;
}

HTML похож на это:

<div class="row flex">
    <div class="customColumn">
        <img src="some-image" class="img-responsive some-image-class" alt="some alt"/>
    </div>
    <div class="customColumn">
        <img src="some-image" class="img-responsive some-image-class" alt="some alt"/>
    </div>
    <div class="customColumn">
        <img src="some-image" class="img-responsive some-image-class" alt="some alt"/>
    </div>
    <div class="customColumn">
        <img src="some-image" class="img-responsive some-image-class" alt="some alt"/>
    </div>
</div>

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

Почему такое поведение дисплея должно быть противоположным для настольных компьютеров и мобильных устройств?

CodePen показывает ожидаемое поведение: codepen.io/anon/pen/jZWGNj. Проблема в том, что на мобильных устройствах (iPhone, Android, iPad) это ведет себя совершенно иначе.

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


person Cameron Gray    schedule 30.01.2018    source источник
comment
Кто угодно? Это похоже на то, как эффект обратного переноса используется для мобильного дисплея, даже если CSS является переносом.   -  person Cameron Gray    schedule 01.02.2018
comment
stackoverflow.com/help/mcve   -  person Michael Benjamin    schedule 01.02.2018
comment
@Michael_B Я не уверен, что понимаю, кажется, я выполнил 9/10 требований/предложений по этой ссылке. Несмотря на это, у меня есть кодовое перо, демонстрирующее правильное поведение: codepen.io/anon/pen/jZWGNj . На рабочем столе последняя строка одинарная и располагается по центру. На мобильных устройствах первая строка одинарная и располагается по центру.   -  person Cameron Gray    schedule 02.02.2018


Ответы (1)


Если кто-нибудь снова столкнется с этой проблемой, ответ можно найти в этой теме: ошибка Flexbox Safari ( гибкая обертка)

Оказывается, эта проблема была не в мобильном дисплее, а в iOS и в том, как обрабатываются :before и :after. Исправление в приведенной выше теме сработало для меня.

person Cameron Gray    schedule 08.02.2018