Mobil Arayüz Geliştirme

51
Mobil Arayüz Geliştirme 21 Şubat / Mobil İstanbul - Geliştirici Günü

Transcript of Mobil Arayüz Geliştirme

Page 1: Mobil Arayüz Geliştirme

Mobil Arayüz Geliştirme21 Şubat / Mobil İstanbul - Geliştirici Günü

Page 2: Mobil Arayüz Geliştirme

Bilal Çınarlı Front-end Architect Senior UX Developer@Turkcell

@bcinarli github.com/bcinarli htmlmag.com

Page 3: Mobil Arayüz Geliştirme
Page 4: Mobil Arayüz Geliştirme

Neden Böyle Düşünüyoruz?

Page 5: Mobil Arayüz Geliştirme

• Cihazların performanslarının artması

• HTML kapsamının genişlemesi

• JavaScript’te gelinen nokta

Page 6: Mobil Arayüz Geliştirme

• Semantic

• Offline & Storage

• Multimedia

• 3D, Grafik, Efekt

• Cihazlara Erişim

• Connectivity

• Performans & Entegrasyon

• CSS3

Page 7: Mobil Arayüz Geliştirme

Dünya’da Bakış Nasıl?

Page 8: Mobil Arayüz Geliştirme

http://www.google.com/trends/explore#q=html5%20app%2C%20hybrid%20app%2C%20native%20app&cmpt=q&tz=

Page 9: Mobil Arayüz Geliştirme

Türkiye’de Bakış Nasıl?

Page 10: Mobil Arayüz Geliştirme

http://www.google.com/trends/explore#q=html5%20app%2C%20hybrid%20app%2C%20native%20app%2C%20mobil%20uygulama&geo=TR&cmpt=q&tz=

Page 11: Mobil Arayüz Geliştirme

Neyse Biz İşimize Bakalım

Page 12: Mobil Arayüz Geliştirme

Mobil için Arayüz Geliştirme

Page 13: Mobil Arayüz Geliştirme
Page 14: Mobil Arayüz Geliştirme

• Yetişmiş iş gücüne kolay erişim

• Bir defa geliştirip, bütün ortamlarda uygulayabilme

Page 15: Mobil Arayüz Geliştirme

Hangi Metodu Seçmeli?

Page 16: Mobil Arayüz Geliştirme

http://www.google.com/trends/explore#q=responsive%20design%2C%20responsive%20web%2C%20adaptive%20design%2C%20adaptive%20web%2C%20mobile%20web&cmpt=q&tz=

Page 17: Mobil Arayüz Geliştirme

• Responsive vs Adaptive

• Desktop First vs Mobile First*

Tercihler Süreci Doğrudan Etkiler

*Büyük ekran öncelikli kodlama - Mobil cihaz öncelikli kodlama

Page 18: Mobil Arayüz Geliştirme

Responsive vs Adaptive

Page 19: Mobil Arayüz Geliştirme

• 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

Page 20: Mobil Arayüz Geliştirme

• Ö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

Page 21: Mobil Arayüz Geliştirme

Desktop First vs Mobile First

Page 22: Mobil Arayüz Geliştirme

• İç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

Page 23: Mobil Arayüz Geliştirme

Tercihimizi Yaptık, Peki Sonra?

Page 24: Mobil Arayüz Geliştirme

• Kod kurgusu

• Touch Events*

Page 25: Mobil Arayüz Geliştirme

Code Smart*

*Akıllıca Kod Yazın

Page 26: Mobil Arayüz Geliştirme
Page 27: Mobil Arayüz Geliştirme

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%);  

}  }

Page 28: Mobil Arayüz Geliştirme

 .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;  

 }  }

Page 29: Mobil Arayüz Geliştirme

• Çözünürlük ve retina gibi etkenler

• Küçük dosya boyutu

• Font-icon

Vektör ve SVG Kullanın

Page 30: Mobil Arayüz Geliştirme
Page 31: Mobil Arayüz Geliştirme

• Dokunmaktik ekranda “hover” yok

• Farklı tarayıcıların aynı iş için farklı eventleri bulunuyor

• Ek kontrol kurgusu ihtiyacı

Touch Eventler

Page 32: Mobil Arayüz Geliştirme

   <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>

Page 33: Mobil Arayüz Geliştirme

• 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

Page 34: Mobil Arayüz Geliştirme

• 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

Page 35: Mobil Arayüz Geliştirme

   $(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

Page 36: Mobil Arayüz Geliştirme

Performans ve Optimizasyon Sıkıntıları

Page 37: Mobil Arayüz Geliştirme

• 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)

Page 38: Mobil Arayüz Geliştirme

• 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

Page 39: Mobil Arayüz Geliştirme

• 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

Page 40: Mobil Arayüz Geliştirme

• 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

Page 41: Mobil Arayüz Geliştirme

• 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ı

Page 42: Mobil Arayüz Geliştirme

Geliştirmeyi Kolaylaştıran Araçlar

Page 43: Mobil Arayüz Geliştirme

• caniuse.com

• Modernizr

• icomoon font generator

• Chrome DevTools Mobile Mod

Page 44: Mobil Arayüz Geliştirme
Page 45: Mobil Arayüz Geliştirme
Page 46: Mobil Arayüz Geliştirme
Page 47: Mobil Arayüz Geliştirme
Page 48: Mobil Arayüz Geliştirme

Toparlarsak

Page 49: Mobil Arayüz Geliştirme

• 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ı

Page 50: Mobil Arayüz Geliştirme

Sorularınız?Merak ettikleriniz, detaylandırmak istedikleriniz…

Page 51: Mobil Arayüz Geliştirme

TeşekkürlerBilal Çınarlı @bcinarli