Comments 59
Извращение какое-то.
Во-первых только IE11 требует вендорные префиксы, все остальные браузеры поддерживают flexbox без префиксов.
А во-вторых сравнивать flex-direction: row
и display: inline-block
совершенно нельзя, как и многие другие примеры.
Не понимаю зачем это в 2016 году вообще...
Ну так прочитайте же что по ссылке написано.
С префиксами поддерживаются:
- Android 2.1+
- iOS 3.2+
- IE10+ (при том, что IE10- официально не поддерживаются)
Ещё аргументы за костыли и против современных инструментов?
С префиксами поддерживаются
Ну так там везде неполная поддержка даже с префиксами, нет враппинга, например. А против современных инструментов — это на десктопе можно сказать «фи» браузеру пользователя и заставить перейти на другой (или накостылить мегабайты шимов), на мобилках юзверь пользует то к чему привык, а часто вообще лишен права выбора.
Погодите, мы обсуждаем статью ведь? Вы хотите сказать, что примеры из статьи лучше отсутствия враппинга в некоторых древних браузеров? По-моему это граздо меньшая проблема, ибо примеры в статье это очень грубая аппроксимация, которая имеет по факту существенно отличное поведение от родного flexbox.
Теперь по поводу мобилок:
- iOS версия в подавляющем большинстве случаев последняя доступная для устройства, то есть проблема с устаревшим браузером не существует (7.1+ имеет поддержку актуальной спецификации с префиксом, а 7.1 поддерживают достаточно древние iPhone чтобы забить на ещё более древние)
- На Android всё хуже, но на 4.3- стандартный браузер на столько ущербный, что многие пользователи пользуются альтернативными, где flexbox хоть и с префиксами, но точно поддерживаются (Opera, Chrome, UC Browser или как там его, для не очень старых Firefox), то есть не стоит преувеличивать проблему
мы обсуждаем статью ведь
Нет, мы обсуждаем безаппеляционный комментарий «Извращение какое-то. Не понимаю зачем это в 2016 году вообще...».
примеры в статье это очень грубая аппроксимация
Какая никакая, но хоть что-то отдаленно похожее. Да, нужно подпиливать в каждом конкретном случае, но это хоть что-то.
iOS версия в подавляющем большинстве случаев последняя доступная для устройства
Если apple вернет возможность откатить версию, до какой версии откатится большинство пользователей? Подскажу — это будет 6-ка. Поэтому кто-то обновлялся не глядя, кто-то почитал интернеты и решил сидеть до последнего без обновлений, а кто-то просто не имеет возможности апдейта в силу древности девайса. И нет, он не будет покупать новый только из-за хипстерских сайтов с флексбоксом.
На Android всё хуже, но на 4.3- стандартный браузер на столько ущербный, что многие пользователи пользуются альтернативными, где flexbox хоть и с префиксами, но точно поддерживаются
Проблема в том, что вы делаете сайт не для себя, а для потенциальных консьюмеров, которые не хотят знать о том, что ваш сайт гораздо красивее и правильнее работает на альтернативных браузерах или системных браузерах из самых свежих системных прошивок. Я бы даже сказал, что те, кто знает что есть альтернативное ПО и можно накатывать кастомы на давно брошенные вендором девайсы (привет самсунгам и хтц) — они как раз не являются потребителями большинства контента, который нацелен на привлечение пользователей. Не стоит всех мерять с точки зрения прошаренного ит-шника, большинству потребителей это не нужно и чуждо.
Нет, мы обсуждаем безаппеляционный комментарий «Извращение какое-то. Не понимаю зачем это в 2016 году вообще...».
Это был комментарий к содержимому статьи, то есть в итоге мы обсуждаем именно статью, попрошу не перекручивать
Какая никакая, но хоть что-то отдаленно похожее. Да, нужно подпиливать в каждом конкретном случае, но это хоть что-то.
То есть статья имеет нерабочие примеры, нельзя просто взять и заменить flexbox на указанные сниппет, хотя преподается материал именно так.
Если apple вернет возможность откатить версию, до какой версии откатится большинство пользователей? Подскажу — это будет 6-ка. Поэтому кто-то обновлялся не глядя, кто-то почитал интернеты и решил сидеть до последнего без обновлений.
Дестуктивная логика (не обновляться) и вообще вброс — давайте ссылку на авторитетный опрос или не выдавайте догадки за факты.
Проблема в том, что вы делаете сайт не для себя, а для потенциальных консьюмеров, которые не хотят знать о том, что ваш сайт гораздо красивее и правильнее работает на альтернативных браузерах или системных браузерах из самых свежих системных прошивок.
Не хотят знать? Вам сбросить ссылку на количество загрузок UC Browser или Chrome for Android что ли? Пользователь хочет лучше. Да, не все, но многие. Не буду голословным, пройдите, пожалуйста, по ссылке: https://developer.android.com/about/dashboards/index.html 73,8% по определению имеют как минимум 4.4 со стоковым браузером, ещё 23,5% имеют Android 4.0-4.3, где с далеко ненулевой вероятностью используют альтернативный браузер. Вот и вопрос: вас очень волнует несколько процентов пользователей Android с устаревшими версиями ОС и браузера, которые не хотят ставить альтернативный браузер? На самом деле вас это может волновать, но переделывать весь сайт на inline-block ради несколько процентов отставших Android большинство разработчиков не будет. Никогда.
Это был комментарий к содержимому статьи, то есть в итоге мы обсуждаем именно статью
Статья правильная и может кому-нибудь пригодиться. Комментарий — неправильный и ненужный в контексте данной статьи — каждый оценит извращенность и целесообразность ее применения применительно к своей задаче.
нельзя просто взять и заменить flexbox на указанные сниппет, хотя преподается материал именно так.
Где об этом этом написано? Когда слово «альтернатива» превратилось в «100% совместимость в виде сниппета»? «Попрошу не перекручивать» (с)
давайте ссылку на авторитетный опрос или не выдавайте догадки за факты.
Ну так погуглите. Ну или если бы был ios девайс ниже 6-ки и ipad air — это было бы очевидно, что с ios7 все стало работать просто отвратительно медленно, начиная с залипающей клавиатуры (иногда реакция на ее открытие наступала через секунду или больше) и заканчивая подвисаниями гуя, лечившиеся только софт ребутом. Да, это потом лечили патчами, но каждый мажорный релиз только замедлял работу девайса.
Вот актуальная статистика ios на март: http://hwstats.unity3d.com/mobile/os-ios.html — овер 25% юзверей сидит на ios < 9.
Вот статистика андроида на март: http://hwstats.unity3d.com/mobile/os-android.html — овер 24% юзверей сидит на < 4.4.
Это — статистика с реальных живых девайсов, что там пишет гугль в своей вселенной — абсолютно не интересно.
вас очень волнует несколько процентов пользователей Android с устаревшими версиями ОС и браузера, которые не хотят ставить альтернативный браузер?
Четверть на одной платформе и четверть на другой — это не пара процентов. А тех разработчиков, кто пилит сайты именно так исключительно потому, что им так удобнее, а не потому, что есть потребность покрыть как можно большую ЦА — никому не рекомендую нанимать.
Статья правильная и может кому-нибудь пригодиться. Комментарий — неправильный и ненужный в контексте данной статьи — каждый оценит извращенность и целесообразность ее применения применительно к своей задаче.
Статья банально некорректная, она не может быть правильной. Если она будет кому-то нужна — она не поможет, так как примеры не работают как положено. Комментарий же это аргументированное мнение относительно статьи. Если он неправильный и некорректный — то я трамвай, а хабр болото.
Где об этом этом написано? Когда слово «альтернатива» превратилось в «100% совместимость в виде сниппета»? «Попрошу не перекручивать» (с)
По всей статье: пример на flexbox, альтернатива, скриншот. Вот если бы 2 скриншота было бы рядом… впрочем, они были бы разными:)
это было бы очевидно
Уважаемый, давайте ФАКТЫ. К примеру, был опрос на х тысячах пользователей iOS версии 7+, у процентов сказали что они откатились бы на более старую версию. Тогда это было бы аргументом. Иначе это ваше персональное мнение, которое совершенно не репрезентативно, увы.
овер 25% юзверей сидит на ios < 9
И что? Нас интересуют только 2%, у которых iOS 7.1-. Что уже явно не 25% пользователей, которым flexbox недоступен, давайте не манипулировать фактами.
овер 24% юзверей сидит на < 4.4
Давайте конкретно. В играх с движком Unity (мы говорили про браузеры, ну да ладно) пользователей с Android 4.3- 24,1%, что отличается от указанного мною выше числа на целых 0.6%. Что существенно, но кардинально картину не меняет.
Сколько пользователей с каких устройств будет заходить именно на ваш сайт тоже, конечно, вопрос открытый. Но всё не так грустно и неизбежно как вы тут рисуете.
К примеру, был опрос на х тысячах пользователей iOS версии 7+
Если так рассуждать, то приведите точно такие же факты о количестве нежелающих сделать даунгрейд, иначе это нерепрезентативно и принудиловка от вендора ОС. :) Проблема в том, что раньше это было можно сделать, но с 7-ки вроде apple убрала такую возможность в принципе (за исключением вроде одного месяца после официального релиза) Быстрый гуглинг «how can i downgrade ios» показывает 591k результатов — желание возникало явно больше чем у пары десятков «неправильных» консьюмеров.
В играх с движком Unity
Что меньше общего количества пользователей, ведь до сих пор живут системы с SoC без поддержки NEON-а, которые уже не учитываются. Но даже без них — 24% очень солидно для того, чтобы их просто дропать.
Нас интересуют только 2%, у которых iOS 7.1
Ах да, вендорные префиксы, как-то забыл про них — 2016 год на дворе, извращение какое-то. :)
Короче, фактов у вас нет, а теперь вы предлагаете теперь мне опровергнуть вашу догадку найдя противоположные данные? Количество результатов поиска это слишком косвенные данные.
Что меньше общего количества пользователей, ведь до сих пор живут системы с SoC без поддержки NEON-а, которые уже не учитываются. Но даже без них — 24% очень солидно для того, чтобы их просто дропать.
А ещё существуют пользователи, которые не то что в игры построенные на Unity, а вообще не играют. Но порядок цифр, полагаю, всё равно будет ±24%. Не просто дропать, если враппинг не критичен — все пользователи получат то, что задумывалось, у части пользователей без альтернативного браузера может уплыть верстка, да. Нужно смотреть на аудиторию, но это точно не конец света.
Ах да, вендорные префиксы, как-то забыл про них — 2016 год на дворе, извращение какое-то. :)
Точно, давайте лучше display: inline-block
везде фигачить — стильно, модно, молодежно, не то что вендорные префиксы.
Короче, фактов у вас нет
Ну я хоть что-то привел, пусть и косвенно, в ответ пока ничего нет. Apple заставляет обновлять ОС принудительно, скачивая образ во внутреннюю память (это никак нельзя предотвратить) и надоедая сообщениями «ну поставь меня, ну поставь...».
давайте лучше display: inline-block везде фигачить
Я когда-то запиливал вебсокеты + флексбокс с тем же прицелом — «стильно-модно-молодежно» для реалтайм игрушки с веб-клиентом (что-то типа MUD-а). Все в итоге свелось к куче проблем со старой opera-mini и со старыми штатными браузерами android < 4.4. Оказалось, что очень многие пользуются штатными средствами и тем, чем привыкли когда-то + не готовы что-то изучать, менять на тот же хром (тупо прожорливее и неповоротливее на их железе, а зачем оно им такое?). Можно, конечно, было сделать фолбэк на флеш или просто лонгполинг + верстку блоками, но это уже было бы не стильно и не модно, хотя и шел 2015 год.
А по поводу нерепрезентативности моего опыта — я говорил как владелец acer liquid (android 2.1-2.3.7), acer iconia a501 (android 3.0-4.0.3), fly iq441 (android 4.2), fly iq451 (android 4.3), samsung note 3 (android 4.4-5.1) nexus7 2013 (android 4.4-6.0.1), iPhone5 (ios 6.0-9.3.1), iPad4 (ios 6.0-9.3.1), iPadPro (ios 9.2-9.3.1). Но вообще, эт все, конечно, субъективно.
Да, инлайн-блоки (пусть без выравнивания высоты и подгонки ширины, зато с читаемым текстом и доступными ссылками) заведомо лучше «модной» вёрстки, скукоженной из-за отстуствия враппинга в нечитаемое однострочное месиво. Вся мощь флексбоксов для адаптивщины именно во враппинге, без него они не лучше CSS-таблиц.
Так, что я за flexbox с префиксами, чем за inline-block у которого то же болячки есть.
P.S. — для себя решил, что вёрстка хороша тогда, когда Opera 12.17, Safari 5.1.4, IE 9 корректно её отображает, может быть без поддержки всех фич, но корректно.
Странно когда для вас показатель это рендеринг страницы в трех дырявых не поддерживаемых браузерах.
Давайте таблицами верстать, оно в IE5 будет правильно рендериться. Да, немного медленно, немного сложновато, кривовато, но работает же!
Грустно у вас с работой, видимо. Меня тарифом 5х не загоните даже на IE8-9.
Я скорее буду работать за 1х с новыми технологиями и учить то, что будет использоваться только послезавтра, чем копаться в дерьме за 5х. Но это на любителя.
На текущих проектах поддерживаю IE10+, задумываюсь о выбрасывании IE10 как только подрастет Edge. В некоторых проектах IE10 уже опционален и по-умолчанию не поддерживается, но подключаются полифиллы если нужно.
Во вторых вашу, извиняюсь за выражение, «говноверстку» ни один тэстэр не пропустит в продакшн.
Я до недавних пор использовать морально устаревший телефон на android версии 4.0.3 — так там стандартный браузер работал примерно как safari 5.x, ничего там не поддерживалось. Мне думается, в мире много еще такого же барахла как этот телефон.
Гарантия плохая, она удерживает пользователя на ПО, через которое его потом взламывают, крадут деньги и личные данные и так далее, а владельцам сайтов/сервисов потом приходится объяснять пользователям что к чему. Но это не нам решать, его право. Тем не менее не вижу ни одной причины пользоваться стоковым браузером на 4.0.3, когда есть альтернативные более безопасные и функциональные браузеры. Чем больше сайтов перестанут работать — тем быстрее пользователь перейдет на лучшее доступное ПО, и тем лучше будет всем.
К чему я веду — среднестатистический пользователь в ваккуме не обладает никакой технической грамотностью, не отличает интернет от браузера, и верстаете вы именно для него, а он скорее всего использует предустановленные приложения, т.к. о других не догадывается
Знаете, я помню свой восторг, когда впервые увидел iPhone. Через сколько после выхода он стал «пережитком прошлого»? Вы думаете, за эти год-два-три он и правда стал хуже? Нет, программисты нас убедили, что они уже больше не могут писать на настолько быстром процессоре. Разучились, разбаловались, что еще? Позориться или, или гордиться?
А теперь скажите, чем Вы лучше этих программистов? Вы берете за базу технологии сегодняшнего дня — это похвально. Зная при этом, что нет ни одного дня, технологии которого на 100% устраивают всех. Но через год вы же скажете, что не можете на технологиях дня годичной давности писать хорошо (а год назад, сегодня, вы гордо говорите, что можете!), и все из-за технологии, а не из-за ваших каких то особенностей?
Спасибо вам! Чем больше такого подхода, тем больше работы у тех, кто «может» писать на вчерашнем.
И, кстати, от того, что верстку div-ами заменили на что-то более симпатичное семантически, сайты принципиально лучше не стали, вот в чем обида.
В целом и общем, на фрилансе и некоторых фирмах можно, конечно, отказываться от заказов, если они не удовлетворяют собственным вкусам, но в большинстве случаев такой фокус, увы, не прокатывает и приходится потом долбаться с шимами или переверстывать сайт/громоздить костыли. Вывод — переходим на backend)
потом
>>… и приходится потом долбаться с шимами или переверстывать сайт/громоздить костыли.
Получается Вы беретесь за проект, только потому что за него платят больше чем обычно, но нужно мучатся с поддержкой устаревших браузеров, а после жалуетесь, что времени на него тоже уходит больше чем обычно? Тогда у меня вопрос почему бы не взяться за нормальный проект без «извращений», чувствую, что соотношение объем работы и оплаты за нее, получатся такие же как и с приведенным примером, но нервы Вы себе сохраните.
Кроме того, иногда резоном может служить не только оплата — к примеру, если заказ комплексный и включает в себя не только верстку, а и, скажем, разработку бэк-энда на ноде или asp, а не вордпресике(в котором, кстати, тоже есть свои прелести). Даже верстка/js под IE6 может оказаться интересным челленджем(хотя, конечно, я предпочту писать код в духе
var genPath = (x,isClosing=true)=>{
var t=[];
x.forEach((y)=>t.push(...[...y, ' ']));
return t.join(' ')+(isClosing?"z":"");
};
var result=sendData.map((x)=>racingDataHolder.data[x.gameType].odds.map((y)=>y.r.find(z=>z.i==x.actionID)).filter((y)=>y)[0]);
или
`${t.n.match(/\d+/g).join(',')}_${racingTypes.findIndex((z)=>z==y.name)}`
на ES6, выражения лиц нормальных программистов, которые на это смотрят, иногда умиляют).
Ну и, в конце-концов, новые технологии — это круто и приятно, не спорю, но жизнь не состоит из роз и какающих радугой пони, иногда приходится и лопатой помахать.
Принцип Cut The Mustard
Грубо говоря, чем делать костыли, они делают 2 версии сайта, для старых браузеров и для новых. И применяют progressive enhancement.
В итоге, клиенты со старыми браузерами, коих мало, видят контент, но без плюшек.
*display: inline; //если хотите еще и трупы IE 6-7 помучать
display: inline-block;
display: flexbox
То разница будет минимальна.
Я для себя решил использовать flexbox с полифилом для старых IE, НО только тех местах где верстка без него усложнилась бы в разы
.container {
transform: rotate(180deg);
}
.item {
transform: rotate(-180deg);
}
Нам срочно нужен хаб «Ненормальная верстка»!
Не говоря о том, что 70% сниппетов надо делать респонсив с помощью танцов с бубном, не иначе :-).
В то время как флексбокс всё сам делает замечательно и прекрасно.
Ну а хаки вроде `direction: rtl` никакой уважающий себя ревьюер не пустит в продакшен :-).
По поводу 2016 и флексбокса. Около 4ех проектов уже вывел в продакшен на голом флексбоксе, IE11 и все адекватные браузеры для десктопа и мобильных устройств сапортят флексбокс почти из коробки. У IE11 бывают какие-то баги, но очень легко фиксятся.
Ваши сниппеты потребуют такой кучи хаков внутри приложения, что за месяц сапорта приложения вы просто умрете их всех поддерживать и забьете на него :).
А так статья полезная для проектов «сдал и забыл». Можно хоть абсолют позишенем и калькуляцией на JS центрировать контент для таких проектов :), а порядок менять через jQuery's
.insertAfter()
Для долгоживущих ваши сниппеты просто недопустимы как альтернатива флексбоксу :-)Не знаю, хорошо ли плохо ли, но я бы так делать не стал.
Я просто оставлю это здесь: https://css-tricks.com/snippets/css/a-guide-to-flexbox/
Но ни то, ни другое, ни третье не отменяет необходимость включать мозг, когда а) специфика проекта требует мало-мальски пристойной деградации для «динозавров», б) специфика задачи упирается в ограничения механизма флексбоксов (внезапно, они есть), но прекрасно решается другими средствами (см. пример ниже).
Во-вторых, комментарии очень показательны. Громкость возмущения а-ля «фу, бяка, костыли» четко коррелирует с адресацией этого возмущения переводчику — т.е. с тем, что люди «ниасилили» аж два указания (в начале и в конце!) на то, что это перевод:). Что уж говорить о каких-то там спецификациях…
Конечно, практическое использование примеров из статьи Кенана — даже если рассматривать их в качестве фоллбэков — требует множества оговорок (напр. нельзя просто взять и добавить флекс-элементам display:table-cell ради фоллбэка, потому что тогда в Firefox, в котором флексбоксы работают по предыдущей версии спецификации, флекс-элементами станут не они, а их анонимная таблица-обертка). Но это — не повод забывать о том, что в CSS есть много разных инструментов, и далеко не всегда самый модный окажется оптимальным в каждой конкретной задаче.
Почти полное руководство по flexbox (без самих flexbox)