SlideShare a Scribd company logo
Mobil Arayüz Geliştirme
21 Şubat / Mobil İstanbul - Geliştirici Günü
Bilal Çınarlı

Front-end Architect
Senior UX Developer@Turkcell

@bcinarli
github.com/bcinarli
htmlmag.com
Neden Böyle Düşünüyoruz?
• Cihazların performanslarının artması
• HTML kapsamının genişlemesi
• JavaScript’te gelinen nokta
• Semantic
• Offline & Storage
• Multimedia
• 3D, Grafik, Efekt
• Cihazlara Erişim
• Connectivity
• Performans & Entegrasyon
• CSS3
Dünya’da Bakış Nasıl?
http://www.google.com/trends/explore#q=html5%20app%2C%20hybrid%20app%2C%20native%20app&cmpt=q&tz=
Türkiye’de Bakış Nasıl?
http://www.google.com/trends/explore#q=html5%20app%2C%20hybrid%20app%2C%20native%20app%2C%20mobil%20uygulama&geo=TR&cmpt=q&tz=
Neyse Biz İşimize Bakalım
Mobil için Arayüz Geliştirme
• Yetişmiş iş gücüne kolay erişim
• Bir defa geliştirip, bütün ortamlarda uygulayabilme
Hangi Metodu Seçmeli?
http://www.google.com/trends/explore#q=responsive%20design%2C%20responsive%20web%2C%20adaptive%20design%2C%20adaptive%20web%2C%20mobile%20web&cmpt=q&tz=
• Responsive vs Adaptive
• Desktop First vs Mobile First*
Tercihler Süreci Doğrudan Etkiler
*Büyük ekran öncelikli kodlama - Mobil cihaz öncelikli kodlama
Responsive vs Adaptive
• Ekran çözünürlüğüne göre
elastik tasarım
• Aynı tema ve stillerin
genişliğe göre yönetimi
• Kolay geliştirme
• Büyük dosya boyutları
Responsive
• Önceden belirlenen
genişliklere çalışma
• Farklı genişlik için farklı tema
ve stil yönetimi
• Kısmen uzun geliştirme
süreci
• Küçük dosya boyutu
Adaptive
Desktop First vs Mobile First
• İçeriği yoğun siteler
• Kurumsal siteler, (belki) e-ticaret
• Mobil önceliği az olan
• Sürekli etkileşim beklentisi
• Çoğunlukla okunacak içeriği
olan
• Blog, liste, haber siteleri
Tercihimizi Yaptık, Peki Sonra?
• Kod kurgusu
• Touch Events*
Code Smart*
*Akıllıca Kod Yazın
Overwrite edeceğiniz kodu baştan yazmayın
	
  .article-­‐footer	
  .share-­‐widget	
  {	
  
position:	
  absolute;	
  
top:	
  50%;	
  
transform:	
  translateY(-­‐50%);	
  
padding-­‐bottom:	
  0;	
  
	
  }	
  
@media	
  screen	
  and	
  (max-­‐width:	
  768px)	
  {	
  
.article-­‐footer	
  .share-­‐widget	
  {	
  
position:	
  relative;	
  
top:	
  auto;	
  
transform:	
  none;	
  
}	
  
}
.article-­‐footer	
  .share-­‐widget	
  {	
  
padding-­‐bottom:	
  0;	
  
}	
  
@media	
  screen	
  and	
  (min-­‐width:	
  769px)	
  {	
  
.article-­‐footer	
  .share-­‐widget	
  {	
  
position:	
  absolute;	
  
top:	
  50%;	
  
transform:	
  translateY(-­‐50%);	
  
}	
  
}
 .main-­‐content	
  {	
  
float:	
  left;	
  
width:	
  900px;	
  
	
  }	
  
.supplementary	
  {	
  
float:	
  right;	
  
width:	
  380px;	
  
	
  }	
  
@media	
  screen	
  and	
  (min-­‐width:	
  769px)	
  and	
  (max-­‐width:	
  
1024px)	
  {	
  
.main-­‐content	
  {	
  
width:	
  644px;	
  
	
  }	
  
}	
  
@media	
  screen	
  and	
  (max-­‐width:	
  768px)	
  {	
  
.main-­‐content,	
  
.supplementary	
  {	
  
float:	
  none;	
  
width:	
  100%;	
  
	
  }	
  
}
@media	
  screen	
  and	
  (min-­‐width:	
  769px)	
  {	
  
.main-­‐content	
  {	
  
float:	
  left;	
  
width:	
  calc(100%	
  -­‐	
  380px);	
  
	
  }	
  
.supplementary	
  {	
  
float:	
  right;	
  
width:	
  380px;	
  
	
  }	
  
}
• Çözünürlük ve retina gibi etkenler
• Küçük dosya boyutu
• Font-icon
Vektör ve SVG Kullanın
• Dokunmaktik ekranda “hover” yok
• Farklı tarayıcıların aynı iş için farklı eventleri bulunuyor
• Ek kontrol kurgusu ihtiyacı
Touch Eventler
 	
  <nav	
  role=“navigation”>	
  
	
  	
  	
  	
  	
  	
  <ul>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”>About</a></li>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”>Services</a>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <ul>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”>Digital</a></li>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”>Print</a></li>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”>Outdoor</a></li>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  </ul>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  </li>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”>Portfolio</a></li>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”>Contact</a></li>	
  
	
  	
  	
  	
  	
  	
  </ul>	
  
	
  	
  </nav>
Dokunmatik Destekli Menü
	
  	
  <nav	
  role=“navigation”>	
  
	
  	
  	
  	
  	
  	
  <ul>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”>About</a></li>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”	
  aria-­‐haspopup=“true”>Services</a>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <ul>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”>Digital</a></li>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”>Print</a></li>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”>Outdoor</a></li>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  </ul>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  </li>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”>Portfolio</a></li>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <li><a	
  href=“#”>Contact</a></li>	
  
	
  	
  	
  	
  	
  	
  </ul>	
  
	
  	
  </nav>
• Sayfa swipe durumunun kontrolü
• İçeriklerin canvas dışına çıkma ihtimali (uzun menüler vs)
• Tablet arayüzünün, masa üstü ile aynı olduğu durumlar
Ek İhtiyaçlar
• W3C Dokunma Eventleri
• touchstart, touchmove, touchend
• Eski dostumuz IE’nin Dokunma Eventleri
• pointerdown, pointermove, pointerup
• Bitmedi (IE’nın Win 8 desktop modu)
• MSPointerDown,	
  MSPointerMove,	
  MSPointerUp
Farklı Tarayıcı, Farklı Event
 	
  $(document)	
  
.on('touchmove	
  pointermove	
  MSPointerMove',	
  function(e){	
  
touchmoved	
  =	
  true;	
  
})	
  
.on('touchstart	
  pointerdown	
  MSPointerDown',	
  function(e){	
  
//	
  ilgili	
  kodlar	
  
})	
  
.on('touchend	
  pointerup	
  MSPointerUp',	
  function(e){	
  
if(touchmoved	
  ===	
  true){	
  
//	
  ilgili	
  kodlar	
  
touchmoved	
  =	
  false;	
  
}	
  
});
Farklı Tarayıcı, Farklı Event
Performans ve Optimizasyon Sıkıntıları
• JavaScript Frameworkler işimizi kolaylaştırırken, baş ağrıtabilir
• Benzer durumda UI Kitler, stil ve html konusunda baş ağrıtabilir
• Bozuk HTML Semantiği, Native elemanların kullanılmaması
• Mobil bağlantı hızları (3G, Wireless vs)
• Yüklenme süreleri yavaş olabilir
• Dosya boyutunu gereksiz
arttırabilir
• Yanlış kullanımı çok fazla
(https://github.com/bcinarli/
frontend-horror/tree/master/js)
JavaScript
http://www.filamentgroup.com/lab/mv-initial-load-times.html
• Bootstrap, Foundation,
PureCSS vs.
• Rapid prototype*
• Genel kullanım ve form bazlı
arayüzler
• Gridler her tasarıma uymuyor
• Overwrite çok fazla yapılıyor
UI Kitler
• Yanlış HTML kurguları (https://github.com/bcinarli/frontend-horror/
tree/master/html)
• Form elemanları ve aksiyonlarda, bilinçsiz JavaScript eklentileri
• Tekrar kullanılabilirliği göz ardı etme (http://jsfiddle.net/bcinarli/
fr6Lyapb/)
HTML Semantiği ve Native Elemanlar
• Kullanıcılar genel olarak ilk 2 saniyede birşey görmeye
başlamadığında sayfayı kapatıyor
• Bazı durumlarda, Edge ve yavaş 3G hızları
• İçerik ve resimlerin optimizasyonu
• Sayfa yüklenme sürelerinin optimizasyonu
Bağlantı Hızı
Geliştirmeyi Kolaylaştıran Araçlar
• caniuse.com
• Modernizr
• icomoon font generator
• Chrome DevTools Mobile Mod
Toparlarsak
• Bundan sonra artık herşey HTML tabanlı
• JavaScript ve performans önemli bir aktör
• HTML içinde yönetilebilir mimari kurguları tasarlanmalı
• Tercihler doğru yapılmalı ve en optimal kodlama/kurgu tasarlanmalı
Sorularınız?
Merak ettikleriniz, detaylandırmak istedikleriniz…
Teşekkürler
Bilal Çınarlı
@bcinarli

More Related Content

Similar to Mobil Arayüz Geliştirme

Web İçin Teknoloji Geliştirmek
Web İçin Teknoloji GeliştirmekWeb İçin Teknoloji Geliştirmek
Web İçin Teknoloji Geliştirmek
Volkan Özçelik
 
Ozgur Web Catilari Mobil Uygulama Gelistirme
Ozgur Web Catilari Mobil Uygulama GelistirmeOzgur Web Catilari Mobil Uygulama Gelistirme
Ozgur Web Catilari Mobil Uygulama Gelistirme
Burak Dede
 
UX Analytics Sibel Akçekaya
UX Analytics Sibel AkçekayaUX Analytics Sibel Akçekaya
UX Analytics Sibel Akçekaya
Userspots
 
IBM Yazılım Zirvesi - Websphere ile Sıradışı Kullanıcı Deneyimleri
IBM Yazılım Zirvesi - Websphere ile Sıradışı Kullanıcı DeneyimleriIBM Yazılım Zirvesi - Websphere ile Sıradışı Kullanıcı Deneyimleri
IBM Yazılım Zirvesi - Websphere ile Sıradışı Kullanıcı DeneyimleriOsman Küçüksönmez, PMP
 
Mobilci - biz bize mobilize
Mobilci - biz bize mobilizeMobilci - biz bize mobilize
Mobilci - biz bize mobilize
MOTTO23
 
Yiğit Konur-Digitalzone'18
Yiğit Konur-Digitalzone'18 Yiğit Konur-Digitalzone'18
Yiğit Konur-Digitalzone'18
Zeo
 
Mobile First Indexing
Mobile First Indexing Mobile First Indexing
Mobile First Indexing
ceydaaricioglu
 
BTRİSK Web Uygulama Güvenliği Denetimi Eğitim Sunumu
BTRİSK Web Uygulama Güvenliği Denetimi Eğitim SunumuBTRİSK Web Uygulama Güvenliği Denetimi Eğitim Sunumu
BTRİSK Web Uygulama Güvenliği Denetimi Eğitim Sunumu
BTRisk Bilgi Güvenliği ve BT Yönetişim Hizmetleri
 
BTRİSK Web Uygulama Güvenliği Denetimi Eğitimi
BTRİSK Web Uygulama Güvenliği Denetimi EğitimiBTRİSK Web Uygulama Güvenliği Denetimi Eğitimi
BTRİSK Web Uygulama Güvenliği Denetimi Eğitimi
BTRisk Bilgi Güvenliği ve BT Yönetişim Hizmetleri
 
Rulesimple Hizmetlerimiz
Rulesimple HizmetlerimizRulesimple Hizmetlerimiz
Rulesimple Hizmetlerimiz
Can Taner
 
Endüstriyel Yapay Zeka ve Otonom Sistemler
Endüstriyel Yapay Zeka ve Otonom SistemlerEndüstriyel Yapay Zeka ve Otonom Sistemler
Endüstriyel Yapay Zeka ve Otonom Sistemler
Cihan Özhan
 
Windows Server 2008 Sanallaştirma Teknolojileri
Windows Server 2008 Sanallaştirma TeknolojileriWindows Server 2008 Sanallaştirma Teknolojileri
Windows Server 2008 Sanallaştirma Teknolojileri
MSHOWTO Bilisim Toplulugu
 
Çağatay Yılmaz Dijital Pazarlama Rehberi
Çağatay Yılmaz Dijital Pazarlama RehberiÇağatay Yılmaz Dijital Pazarlama Rehberi
Çağatay Yılmaz Dijital Pazarlama Rehberi
Çağatay Yılmaz
 
Workcube ERP Enterprise Portal (B2E)
Workcube ERP Enterprise Portal (B2E)Workcube ERP Enterprise Portal (B2E)
Workcube ERP Enterprise Portal (B2E)
Workcube e-Business Inc.
 
Usability Designers
Usability DesignersUsability Designers
Usability Designers
Burç Talug
 
E-Ticaret Siteleri İçin 20 SEO Maddesi - Digitalzone Meetups
E-Ticaret Siteleri İçin 20 SEO Maddesi - Digitalzone MeetupsE-Ticaret Siteleri İçin 20 SEO Maddesi - Digitalzone Meetups
E-Ticaret Siteleri İçin 20 SEO Maddesi - Digitalzone Meetups
Tevfik Mert Azizoglu
 
Mobil web’e giriş
Mobil web’e girişMobil web’e giriş
Mobil web’e girişerdemkara
 
Web development
Web developmentWeb development
Web development
Seydi Alkan
 
Dijital Ayak İzleriniz
Dijital Ayak İzlerinizDijital Ayak İzleriniz
Dijital Ayak İzleriniz
Privia Security
 
Staj.io
Staj.ioStaj.io

Similar to Mobil Arayüz Geliştirme (20)

Web İçin Teknoloji Geliştirmek
Web İçin Teknoloji GeliştirmekWeb İçin Teknoloji Geliştirmek
Web İçin Teknoloji Geliştirmek
 
Ozgur Web Catilari Mobil Uygulama Gelistirme
Ozgur Web Catilari Mobil Uygulama GelistirmeOzgur Web Catilari Mobil Uygulama Gelistirme
Ozgur Web Catilari Mobil Uygulama Gelistirme
 
UX Analytics Sibel Akçekaya
UX Analytics Sibel AkçekayaUX Analytics Sibel Akçekaya
UX Analytics Sibel Akçekaya
 
IBM Yazılım Zirvesi - Websphere ile Sıradışı Kullanıcı Deneyimleri
IBM Yazılım Zirvesi - Websphere ile Sıradışı Kullanıcı DeneyimleriIBM Yazılım Zirvesi - Websphere ile Sıradışı Kullanıcı Deneyimleri
IBM Yazılım Zirvesi - Websphere ile Sıradışı Kullanıcı Deneyimleri
 
Mobilci - biz bize mobilize
Mobilci - biz bize mobilizeMobilci - biz bize mobilize
Mobilci - biz bize mobilize
 
Yiğit Konur-Digitalzone'18
Yiğit Konur-Digitalzone'18 Yiğit Konur-Digitalzone'18
Yiğit Konur-Digitalzone'18
 
Mobile First Indexing
Mobile First Indexing Mobile First Indexing
Mobile First Indexing
 
BTRİSK Web Uygulama Güvenliği Denetimi Eğitim Sunumu
BTRİSK Web Uygulama Güvenliği Denetimi Eğitim SunumuBTRİSK Web Uygulama Güvenliği Denetimi Eğitim Sunumu
BTRİSK Web Uygulama Güvenliği Denetimi Eğitim Sunumu
 
BTRİSK Web Uygulama Güvenliği Denetimi Eğitimi
BTRİSK Web Uygulama Güvenliği Denetimi EğitimiBTRİSK Web Uygulama Güvenliği Denetimi Eğitimi
BTRİSK Web Uygulama Güvenliği Denetimi Eğitimi
 
Rulesimple Hizmetlerimiz
Rulesimple HizmetlerimizRulesimple Hizmetlerimiz
Rulesimple Hizmetlerimiz
 
Endüstriyel Yapay Zeka ve Otonom Sistemler
Endüstriyel Yapay Zeka ve Otonom SistemlerEndüstriyel Yapay Zeka ve Otonom Sistemler
Endüstriyel Yapay Zeka ve Otonom Sistemler
 
Windows Server 2008 Sanallaştirma Teknolojileri
Windows Server 2008 Sanallaştirma TeknolojileriWindows Server 2008 Sanallaştirma Teknolojileri
Windows Server 2008 Sanallaştirma Teknolojileri
 
Çağatay Yılmaz Dijital Pazarlama Rehberi
Çağatay Yılmaz Dijital Pazarlama RehberiÇağatay Yılmaz Dijital Pazarlama Rehberi
Çağatay Yılmaz Dijital Pazarlama Rehberi
 
Workcube ERP Enterprise Portal (B2E)
Workcube ERP Enterprise Portal (B2E)Workcube ERP Enterprise Portal (B2E)
Workcube ERP Enterprise Portal (B2E)
 
Usability Designers
Usability DesignersUsability Designers
Usability Designers
 
E-Ticaret Siteleri İçin 20 SEO Maddesi - Digitalzone Meetups
E-Ticaret Siteleri İçin 20 SEO Maddesi - Digitalzone MeetupsE-Ticaret Siteleri İçin 20 SEO Maddesi - Digitalzone Meetups
E-Ticaret Siteleri İçin 20 SEO Maddesi - Digitalzone Meetups
 
Mobil web’e giriş
Mobil web’e girişMobil web’e giriş
Mobil web’e giriş
 
Web development
Web developmentWeb development
Web development
 
Dijital Ayak İzleriniz
Dijital Ayak İzlerinizDijital Ayak İzleriniz
Dijital Ayak İzleriniz
 
Staj.io
Staj.ioStaj.io
Staj.io
 

More from Mobile İstanbul

Hacking App Stores - Boost Campaigns
Hacking App Stores - Boost CampaignsHacking App Stores - Boost Campaigns
Hacking App Stores - Boost Campaigns
Mobile İstanbul
 
Hacking App Stores - App Search Optimization
Hacking App Stores - App Search OptimizationHacking App Stores - App Search Optimization
Hacking App Stores - App Search Optimization
Mobile İstanbul
 
Çare Oyun !
Çare Oyun !Çare Oyun !
Çare Oyun !
Mobile İstanbul
 
Building a Community Around a Mobile Application
Building a Community Around a Mobile ApplicationBuilding a Community Around a Mobile Application
Building a Community Around a Mobile Application
Mobile İstanbul
 
Paranoid Android
Paranoid AndroidParanoid Android
Paranoid Android
Mobile İstanbul
 
Mobile Analytics 101
Mobile Analytics 101Mobile Analytics 101
Mobile Analytics 101
Mobile İstanbul
 
Smartface ile Crossplatform Uygulama Geliştirme
Smartface ile Crossplatform Uygulama GeliştirmeSmartface ile Crossplatform Uygulama Geliştirme
Smartface ile Crossplatform Uygulama Geliştirme
Mobile İstanbul
 
Beyond App Development
Beyond App DevelopmentBeyond App Development
Beyond App Development
Mobile İstanbul
 
iOS Workflow: Tools, Tips & Tricks
iOS Workflow: Tools, Tips & TricksiOS Workflow: Tools, Tips & Tricks
iOS Workflow: Tools, Tips & Tricks
Mobile İstanbul
 
Nokia Mobil App Geliştirici Platformu
Nokia Mobil App Geliştirici PlatformuNokia Mobil App Geliştirici Platformu
Nokia Mobil App Geliştirici Platformu
Mobile İstanbul
 
2014 'de Mobil Trendler
2014 'de Mobil Trendler2014 'de Mobil Trendler
2014 'de Mobil Trendler
Mobile İstanbul
 
EPosta Pazarlaması Hakkında Bilinmesi Gerekenler
EPosta Pazarlaması Hakkında Bilinmesi GerekenlerEPosta Pazarlaması Hakkında Bilinmesi Gerekenler
EPosta Pazarlaması Hakkında Bilinmesi Gerekenler
Mobile İstanbul
 
Mobile Application Engagement
Mobile Application EngagementMobile Application Engagement
Mobile Application Engagement
Mobile İstanbul
 

More from Mobile İstanbul (13)

Hacking App Stores - Boost Campaigns
Hacking App Stores - Boost CampaignsHacking App Stores - Boost Campaigns
Hacking App Stores - Boost Campaigns
 
Hacking App Stores - App Search Optimization
Hacking App Stores - App Search OptimizationHacking App Stores - App Search Optimization
Hacking App Stores - App Search Optimization
 
Çare Oyun !
Çare Oyun !Çare Oyun !
Çare Oyun !
 
Building a Community Around a Mobile Application
Building a Community Around a Mobile ApplicationBuilding a Community Around a Mobile Application
Building a Community Around a Mobile Application
 
Paranoid Android
Paranoid AndroidParanoid Android
Paranoid Android
 
Mobile Analytics 101
Mobile Analytics 101Mobile Analytics 101
Mobile Analytics 101
 
Smartface ile Crossplatform Uygulama Geliştirme
Smartface ile Crossplatform Uygulama GeliştirmeSmartface ile Crossplatform Uygulama Geliştirme
Smartface ile Crossplatform Uygulama Geliştirme
 
Beyond App Development
Beyond App DevelopmentBeyond App Development
Beyond App Development
 
iOS Workflow: Tools, Tips & Tricks
iOS Workflow: Tools, Tips & TricksiOS Workflow: Tools, Tips & Tricks
iOS Workflow: Tools, Tips & Tricks
 
Nokia Mobil App Geliştirici Platformu
Nokia Mobil App Geliştirici PlatformuNokia Mobil App Geliştirici Platformu
Nokia Mobil App Geliştirici Platformu
 
2014 'de Mobil Trendler
2014 'de Mobil Trendler2014 'de Mobil Trendler
2014 'de Mobil Trendler
 
EPosta Pazarlaması Hakkında Bilinmesi Gerekenler
EPosta Pazarlaması Hakkında Bilinmesi GerekenlerEPosta Pazarlaması Hakkında Bilinmesi Gerekenler
EPosta Pazarlaması Hakkında Bilinmesi Gerekenler
 
Mobile Application Engagement
Mobile Application EngagementMobile Application Engagement
Mobile Application Engagement
 

Mobil Arayüz Geliştirme

  • 1. Mobil Arayüz Geliştirme 21 Şubat / Mobil İstanbul - Geliştirici Günü
  • 2. Bilal Çınarlı
 Front-end Architect Senior UX Developer@Turkcell
 @bcinarli github.com/bcinarli htmlmag.com
  • 3.
  • 5. • Cihazların performanslarının artması • HTML kapsamının genişlemesi • JavaScript’te gelinen nokta
  • 6. • Semantic • Offline & Storage • Multimedia • 3D, Grafik, Efekt • Cihazlara Erişim • Connectivity • Performans & Entegrasyon • CSS3
  • 12. Mobil için Arayüz Geliştirme
  • 13.
  • 14. • Yetişmiş iş gücüne kolay erişim • Bir defa geliştirip, bütün ortamlarda uygulayabilme
  • 17. • Responsive vs Adaptive • Desktop First vs Mobile First* Tercihler Süreci Doğrudan Etkiler *Büyük ekran öncelikli kodlama - Mobil cihaz öncelikli kodlama
  • 19. • Ekran çözünürlüğüne göre elastik tasarım • Aynı tema ve stillerin genişliğe göre yönetimi • Kolay geliştirme • Büyük dosya boyutları Responsive
  • 20. • Önceden belirlenen genişliklere çalışma • Farklı genişlik için farklı tema ve stil yönetimi • Kısmen uzun geliştirme süreci • Küçük dosya boyutu Adaptive
  • 21. Desktop First vs Mobile First
  • 22. • İçeriği yoğun siteler • Kurumsal siteler, (belki) e-ticaret • Mobil önceliği az olan • Sürekli etkileşim beklentisi • Çoğunlukla okunacak içeriği olan • Blog, liste, haber siteleri
  • 24. • Kod kurgusu • Touch Events*
  • 26.
  • 27. Overwrite edeceğiniz kodu baştan yazmayın  .article-­‐footer  .share-­‐widget  {   position:  absolute;   top:  50%;   transform:  translateY(-­‐50%);   padding-­‐bottom:  0;    }   @media  screen  and  (max-­‐width:  768px)  {   .article-­‐footer  .share-­‐widget  {   position:  relative;   top:  auto;   transform:  none;   }   } .article-­‐footer  .share-­‐widget  {   padding-­‐bottom:  0;   }   @media  screen  and  (min-­‐width:  769px)  {   .article-­‐footer  .share-­‐widget  {   position:  absolute;   top:  50%;   transform:  translateY(-­‐50%);   }   }
  • 28.  .main-­‐content  {   float:  left;   width:  900px;    }   .supplementary  {   float:  right;   width:  380px;    }   @media  screen  and  (min-­‐width:  769px)  and  (max-­‐width:   1024px)  {   .main-­‐content  {   width:  644px;    }   }   @media  screen  and  (max-­‐width:  768px)  {   .main-­‐content,   .supplementary  {   float:  none;   width:  100%;    }   } @media  screen  and  (min-­‐width:  769px)  {   .main-­‐content  {   float:  left;   width:  calc(100%  -­‐  380px);    }   .supplementary  {   float:  right;   width:  380px;    }   }
  • 29. • Çözünürlük ve retina gibi etkenler • Küçük dosya boyutu • Font-icon Vektör ve SVG Kullanın
  • 30.
  • 31. • Dokunmaktik ekranda “hover” yok • Farklı tarayıcıların aynı iş için farklı eventleri bulunuyor • Ek kontrol kurgusu ihtiyacı Touch Eventler
  • 32.    <nav  role=“navigation”>              <ul>                      <li><a  href=“#”>About</a></li>                      <li><a  href=“#”>Services</a>                              <ul>                                      <li><a  href=“#”>Digital</a></li>                                      <li><a  href=“#”>Print</a></li>                                      <li><a  href=“#”>Outdoor</a></li>                              </ul>                      </li>                      <li><a  href=“#”>Portfolio</a></li>                      <li><a  href=“#”>Contact</a></li>              </ul>      </nav> Dokunmatik Destekli Menü    <nav  role=“navigation”>              <ul>                      <li><a  href=“#”>About</a></li>                      <li><a  href=“#”  aria-­‐haspopup=“true”>Services</a>                              <ul>                                      <li><a  href=“#”>Digital</a></li>                                      <li><a  href=“#”>Print</a></li>                                      <li><a  href=“#”>Outdoor</a></li>                              </ul>                      </li>                      <li><a  href=“#”>Portfolio</a></li>                      <li><a  href=“#”>Contact</a></li>              </ul>      </nav>
  • 33. • Sayfa swipe durumunun kontrolü • İçeriklerin canvas dışına çıkma ihtimali (uzun menüler vs) • Tablet arayüzünün, masa üstü ile aynı olduğu durumlar Ek İhtiyaçlar
  • 34. • W3C Dokunma Eventleri • touchstart, touchmove, touchend • Eski dostumuz IE’nin Dokunma Eventleri • pointerdown, pointermove, pointerup • Bitmedi (IE’nın Win 8 desktop modu) • MSPointerDown,  MSPointerMove,  MSPointerUp Farklı Tarayıcı, Farklı Event
  • 35.    $(document)   .on('touchmove  pointermove  MSPointerMove',  function(e){   touchmoved  =  true;   })   .on('touchstart  pointerdown  MSPointerDown',  function(e){   //  ilgili  kodlar   })   .on('touchend  pointerup  MSPointerUp',  function(e){   if(touchmoved  ===  true){   //  ilgili  kodlar   touchmoved  =  false;   }   }); Farklı Tarayıcı, Farklı Event
  • 36. Performans ve Optimizasyon Sıkıntıları
  • 37. • JavaScript Frameworkler işimizi kolaylaştırırken, baş ağrıtabilir • Benzer durumda UI Kitler, stil ve html konusunda baş ağrıtabilir • Bozuk HTML Semantiği, Native elemanların kullanılmaması • Mobil bağlantı hızları (3G, Wireless vs)
  • 38. • Yüklenme süreleri yavaş olabilir • Dosya boyutunu gereksiz arttırabilir • Yanlış kullanımı çok fazla (https://github.com/bcinarli/ frontend-horror/tree/master/js) JavaScript http://www.filamentgroup.com/lab/mv-initial-load-times.html
  • 39. • Bootstrap, Foundation, PureCSS vs. • Rapid prototype* • Genel kullanım ve form bazlı arayüzler • Gridler her tasarıma uymuyor • Overwrite çok fazla yapılıyor UI Kitler
  • 40. • Yanlış HTML kurguları (https://github.com/bcinarli/frontend-horror/ tree/master/html) • Form elemanları ve aksiyonlarda, bilinçsiz JavaScript eklentileri • Tekrar kullanılabilirliği göz ardı etme (http://jsfiddle.net/bcinarli/ fr6Lyapb/) HTML Semantiği ve Native Elemanlar
  • 41. • Kullanıcılar genel olarak ilk 2 saniyede birşey görmeye başlamadığında sayfayı kapatıyor • Bazı durumlarda, Edge ve yavaş 3G hızları • İçerik ve resimlerin optimizasyonu • Sayfa yüklenme sürelerinin optimizasyonu Bağlantı Hızı
  • 43. • caniuse.com • Modernizr • icomoon font generator • Chrome DevTools Mobile Mod
  • 44.
  • 45.
  • 46.
  • 47.
  • 49. • Bundan sonra artık herşey HTML tabanlı • JavaScript ve performans önemli bir aktör • HTML içinde yönetilebilir mimari kurguları tasarlanmalı • Tercihler doğru yapılmalı ve en optimal kodlama/kurgu tasarlanmalı