Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Что не так с мобильным вебом
Search
Den Ilin
December 09, 2017
Programming
72
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Что не так с мобильным вебом
09.12.17
RNDJS4
https://vk.com/rndjs
Den Ilin
December 09, 2017
More Decks by Den Ilin
See All by Den Ilin
Модель принятия решений или От идеи К релизу
dgizmo
0
42
Other Decks in Programming
See All in Programming
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.3k
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
Jetpack Compose Mechanisms
skydoves
3
820
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
Event is what happens
moro
2
860
contenteditable と日本語入力に向き合う
colorful12
0
200
Next.js: The final boss of Web Performance
guaca
0
280
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
500
APNsからLive Activityを開始する話
yumnumm
0
170
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
430
phperだってパンチカードでコーディングしたい
o0h
PRO
0
350
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
630
Featured
See All Featured
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Ethics towards AI in product and experience design
skipperchong
2
440
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
A Soul's Torment
seathinner
8
3.8k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
My Coaching Mixtape
mlcsv
0
360
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
Utilizing Notion as your number one productivity tool
mfonobong
4
620
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