最近一直在研究移動手機網站的開發(fā),發(fā)現做手機網站沒有想象中的那么難嗅定。為什么會這么說呢自娩?我們試想下:我們連傳統(tǒng)的PC網站都會做,難道連一個小小的手機網站難道都搞不定嗎渠退?其實手機網站就是一個微縮版的PC網站罷了忙迁!至于為什么覺得難、覺得無從下手碎乃。
段亮覺得有以下幾點:
一姊扔、沒有完整的思路和流程
就像做網站的流程一樣,如果你能知道它的流程梅誓,我相信就不會覺得做手機網站難恰梢!真正難的是你沒有思路。
二证九、把html5這門技術想的高深莫測
好像覺得學會用html5+css3做手機網站删豺,就相當于學會了頂尖的絕世武功。其實你錯了愧怜!不要把html5這玩意想的太高深呀页,其實做手機網站,真正意義上用不到什么的html5的強大功能拥坛。(可能對于一些不懂什么技術的小白而言:你的手機網站是用HTML5+CSS3做的啊蓬蝶,簡直牛逼呀!能用上目前互聯網上最新最前沿的技術猜惋。其實明眼人一看丸氛,就知道是用什么技術做的。俗話說的好:"外行看熱鬧著摔,內行看門道")
好了扯了這么多缓窜,下面就說說怎么來開發(fā)移動手機網站吧!
基本上開發(fā)手機網站谍咆,可大致分為兩大類禾锤。一類是用框架開發(fā)手機網站。一類是自己手寫手機網站摹察。
一恩掷、框架開發(fā)手機網站
一般用現在常用的開發(fā)框架有:目前Web前端最火的框架(BootStrap)、Jquery mobile..當然可能還有一些移動端開發(fā)的框架供嚎,這些我就沒具體去研究過黄娘。
為什么說BootStrap是目前前端最火熱的開發(fā)框架呢峭状?
因為bootstrap自帶響應式布局(柵格系統(tǒng)),而且能做到移動設備優(yōu)先的原則逼争。
運用bootstrap來開發(fā)網站有什么好處呢优床?
1.不懂設計也可以做網站
就算不懂設計,你的網頁在Bootstrap的幫助下氮凝,也能擁有超高顏值羔巢。它強大的內置樣式庫讓你的作品變成尤物。
主要體現在:字體文件和bootstrap自帶的UI樣式罩阵。(為廣大不會UI設計的程序員竿秆,提供了福音)
2.上手快
你可以專心解決問題,冗繁的細節(jié)都丟給Bootstrap操心稿壁∮母郑可以做到一次開發(fā),就可適配所有終端傅是,并且能迅速上手并建出網站原型匪燕。還提供很多豐富的插件,就算你不會JS喧笔,基本能看懂常見的API帽驯,網站上的效果,基本能解決书闸。
缺點:
1.不遵循最佳實踐
我們在使用Bootstrap時遇到的最大問題之一是你的DOM元素上將擁擠大量的類尼变。這打破了良好的web設計基本規(guī)則之一,HTML不再有語義浆劲,而且內容和表示不再分離嫌术。前端純粹主義者會覺得這相當令人討厭,以為它使可擴展性牌借、重用性和維護性遇到了更大的挑戰(zhàn)度气。
- Bootstrap 太重
直接點說:就是CSS和JS有點點大。CSS壓縮后115k,JS壓縮后35k
如果你想要使用Bootstrap的所有功能膨报,你應該好好考慮資源的加載時間磷籍。當然,對于一些地方這可能不是問題现柠,但是在新西蘭互聯網不得不橫跨太平洋院领,這時數據達到那兒將是很緩慢的。因此考慮你的目標市場晒旅。
相信任何框架都有它的優(yōu)點栅盲,同時也是有它的缺點的汪诉。沒有一個產品是很完美的废恋,所以根據自身實際情況進行選擇谈秫。至于一些其它框架暫時不做過多的解釋了,相信只要你肯愿意百度一下鱼鼓,就可以找到你想要的答案拟烫。
移動手機端開發(fā)流程
二、手寫手機網站
一般我們自己手動開發(fā)手機網站的話迄本,基本可以劃分兩類來做到硕淑。一類是通過在網頁頭部添加meta標簽進行實現(網頁指html5的格式來開發(fā))。另一類是通過CSS3的Media標簽(媒介查詢)來實現嘉赎。不了解媒介查詢的朋友置媳,可以看看這篇文章:響應式布局。
在這里我們詳細講解下,利用添加meta標簽來做手機網站公条。
基本在網頁頭部我們只需添加四個meta標簽就可以實現一個手機網站的框架拇囊。我一起來看看是哪些meta標簽。
1靶橱、添加viewport標簽
<pre>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
</pre>
詳細屬性:
width ---- viewport的寬度(width=device-width意思是:寬度等于設備寬度)
height ------ viewport的高度(height=device-height意思是:高度等于設備寬度)
initial-scale ----- 初始的縮放比例
minimum-scale ----- 允許用戶縮放到的最小比例
maximum-scale ----- 允許用戶縮放到的最大比例
user-scalable ----- 用戶是否可以手動縮放
關于viewport的詳細原理和知識點寥袭,各位就百度吧!在這里我就不做詳細的講解了关霸。
2传黄、禁止將數字變?yōu)殡娫捥柎a
<pre><meta name="format-detection" content="telephone=no" />
</pre>
一般情況下,IOS和Android系統(tǒng)都會默認某長度內的數字為電話號碼队寇,即使不加也是會默認顯示為電話的膘掰,so,取消這個很有必要英上!
3炭序、iphone設備中的safari私有meta標簽
<pre><meta name="apple-mobile-web-app-capable" content="yes" />
</pre>
它表示:允許全屏模式瀏覽,隱藏瀏覽器導航欄
4苍日、iphone的私有標簽
<pre><meta name="apple-mobile-web-app-status-bar-style" content="black"></pre>
它指定的iphone中safari頂端的狀態(tài)條的樣式
默認值為default(白色)惭聂,可以定為black(黑色)和black-translucent(灰色半透明)
另外還有一個個性化的link標簽,它支持用戶將網頁創(chuàng)建快捷方式到桌面時相恃,其圖標變?yōu)槲覀冏约憾x的圖標辜纲。比如手機騰訊網上的標簽:
<pre><link rel="apple-touch-icon-precomposed" ></pre>
不過騰訊對這個png圖標的命名并不規(guī)范,常規(guī)我們要求文件名應為 apple-touch-icon.png 或 apple-touch-icon-precomposed.png 拦耐,前者的命名iOS會為這個圖標自動添加圓角耕腾、陰影和高亮覆蓋層,后者則不會添加這些效果杀糯。
手機網站基本框架代碼:
<pre>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>手機網站</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<meta name="format-detection" content="telephone=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="author" content="duanliang, duanliang920.com" />
<style>
body{font-size:62.5%;font-family:"Microsoft YaHei",Arial; overflow-x:hidden; overflow-y:auto;}
.viewport{ max-width:640px; min-width:300px; margin:0 auto;}
</style>
</head>
<body>
<div>
大家好扫俺!我是段亮,這是我的第一個手機網頁哦固翰!
</div>
</body>
</html>
</pre>
其實在移動端的開發(fā)讓我糾結的是在字體單位上的選擇狼纬。
隨著CSS3的興起羹呵,有一種叫rem的單位漸漸的出現在我們的視野中。它是一個相對單位疗琉,能實現響應式的那種冈欢。它是相對于html根元素來設置當前文字大小,或者寬高的盈简。因為它是一個不固定值,不像PX凑耻。聽說在PX這個單位在PC和移動的解析不同,所以才使用rem的柠贤。這點我也不是很清楚香浩,也請教了一些做手機網站的高手,了解了一些信息臼勉。
原來大部分的人依舊是使用PX來布局弃衍,rem都用的少。目前來說坚俗,就移動端的淘寶首頁就是采用rem來作為單位來布局的镜盯。關于使用rem單位這個問題以及它的好處:還得需要大神來解答這個問題,畢竟我也只是剛接觸猖败。
寫在最后:其實等你真正熟悉做手機網站這套流程后速缆,你會發(fā)現做手機網站沒有你想象的那么難,真正難的是不知道如何去下手恩闻。對于移動端的JS效果可能和PC端有些不同艺糜,因為移動端有移動端的事件,這也是我為什么老是強調學JS幢尚,是學原生JS破停,而不是學Jquery。我的下篇文章就會講到"為什么學JS要學原生JS"尉剩,喜歡的朋友可以如有不足的地方可以指出真慢,相互學習!