Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Что не так с мобильным вебом
Search
Den Ilin
December 09, 2017
Programming
0
65
Что не так с мобильным вебом
09.12.17
RNDJS4
https://vk.com/rndjs
Den Ilin
December 09, 2017
Tweet
Share
More Decks by Den Ilin
See All by Den Ilin
Модель принятия решений или От идеи К релизу
dgizmo
0
26
Other Decks in Programming
See All in Programming
MicrosoftのPlatform Engineeringガイドを読んで実際になにかやってみた
ymd65536
1
290
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
700
Fragment Composition of GraphQL
quramy
2
160
デフォルトにして至高、RubyMineの大好きな所
ruzia
0
260
Snowflakeで眠ったデータを起こそう!
estie
0
110
Netty Chicago Java User Group 2024-04-17
sullis
0
170
[技育CAMPアカデミア]アイディアを形に!【超入門】スマホアプリ開発〜リリースまでの流れをご紹介
teamlab
PRO
0
360
What We Can Learn From OSS
inouehi
0
420
PostmanでAPIの動作確認が楽になった話
h455h1
0
160
Build Apps for iOS, Android & Desktop in 100% Kotlin With Compose Multiplatform (mDevCamp 2024)
zsmb
0
260
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
340
Tailwind CSSを本気でカスタマイズする方法
fsubal
13
5.1k
Featured
See All Featured
Facilitating Awesome Meetings
lara
42
5.6k
Designing for Performance
lara
601
67k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
274
13k
Side Projects
sachag
451
41k
A better future with KSS
kneath
231
16k
Into the Great Unknown - MozCon
thekraken
10
990
Visualization
eitanlees
136
14k
What’s in a name? Adding method to the madness
productmarketing
PRO
16
2.6k
Happy Clients
brianwarren
92
6.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
116
18k
Thoughts on Productivity
jonyablonski
58
3.8k
Navigating Team Friction
lara
178
13k
Transcript
Что не так с мобильным вебом? illustration by Alleaume Jeremy
Денис Ильин Songsterr
None
Баги браузеров Баги мобильного веба То что не исправить Нативный
веб?
Статистика мобильного веба за 2017 /netmarketshare.com Safari 28 % Chrome
58 % Chrome Safari UC Browser Opera Mini Android Browser Остальные
Баги Браузеров
Особенности Chrome
/video
Pull-to-refresh • touch-action: none • overflow-y: hidden • e.preventDefault() все
тачи верхней части экрана • via chrome://flags (disable-pull-to-refresh-effect) https://goo.gl/oX2K5a
Overflow glowing • position: absolute div блок • e.preventDefault() все
тачи верхней части экрана
Особенности Safari
/video
Swipe back/forward window.history.replaceState(null, null, "#" + url) /video
/video
Controls • «Мертвая зона» в 44px. Хочешь контролы снизу, размещай
не ниже этого значения. • Сделай панель видимой всегда! • Хак: удвой кастомную панель до 88px, по проведенным исследованиям пользователь кликает в центр/верхнюю границу кнопки. /video
Варианты решения Tjournal Songsterr concept
Остальной мир
Show/hide url bar
Не нужно ломать поведение браузера. Только если очень хочется.
/video
Keyboard disappear document.activeElement.blur() ✅ /video
Button/input highlight • :hover, :focus, :active, outline • tap-highlight-color: transparent
а кақ же A11Y?
Баги Мобильного Веба
Анимации
Как сделать гладкие анимации? • translate: transform() • will-change •
What forces layout/reflow и csstriggers.com • requestAnimationFrame() • анимации на js, а не css (прерываемые) • частный случай Web Animations Api
https://dassur.ma/things/120fps/#angle-2-the-main-thread-is-the-ui-thread
position: fixed
www /video
/video
/video
/video
Пути решения overflow: hidden на html и body ✅
Пути решения Слушаем touchmove, если касание происходит вне position:fixed блока,
то e.preventDefault().
Пути решения • (scrollTop === 0) iOS думает, что скроллим
body. touchstart + touchmove проверяем направление скролла, ставим e.preventDefault(). • Форсированно ставим scrollTop = 1, получаем резиновую ленту на iOS ✅
Перестрахуемся! Ставим ::before / after псевдоэлементы
overscroll-behaviour
Спасибо Константину Земцовскому, команда ВКонтакте http://sidebar.imkost.com
/video
Sidebar navigation https://googlechromelabs.github.io/ui-element-samples/side-nav
CSS: portrait/landscape
@media screen and (orientation: landscape) and (min-aspect-ratio: 13/9) ✅
Есть 2 способа исправить ошибку: • написать хак • изменить
дизайн
То что не Исправить!
Существуют решения вроде NoSleep.js, но стабильной работы нет Display sleep
/video
Infinity Scroller https://developers.google.com/web/updates/2016/07/infinite-scroller /video
/video
Схлопывание поиска iOS ❌ /video
«Что мертво, умереть не может»
Нативный Веб?
None
Проблемы с иконками и названиями Twitter Twitter Lite YouTube YouTube
Standalone mode
Без Service Worker на iOS грустно
Веб приложения не хранят стэйт /video
Нативный мобильный веб определенно сохранит больше места на телефоне
Какое приложение выбрать мобильное или нативное?
Лучше один раз попробовать, чем сто раз услышать
Вопросы? @followdarko @followdarko /dgizmo