移動端”宴席知多少

轉載(http://adt.aicai.com/index.php/archives/179/)

瞎折騰移動端的項目已經很長一段時間了,并不像其它企業一樣,可以有項目組去完成,基本都是一個人瞎嘗試,時而web,時而web app。恍恍惚惚過了這段歲月,也不曉得自己忙了啥。總叫別人去總結,讓別人學會總結,也該為自己總結總結了。也為了團隊之間更好的知識共享吧。如何開發 移動端就跟如何上菜一樣,上菜有規則,先冷后熱,先菜后點,先咸后甜,先炒后燒等等。按照一定的程序來才能恰到好處地掌握。那么,現在還是上菜吧,客官等 久了... ...

前菜(涼菜,冷盤)

一、移動端開發與PC端開發不同
大家都知曉,手機種類千千萬,也導致移動端開發面對的屏幕尺寸是各種頭疼。
Web:固定布局和彈性布局
Web app:響應式布局

二、調試工具
firefox的響應式設計視圖:Firefox 瀏覽器內置了?自定義設計視圖?的功能,可以通過?Firefox->Web 開發者->自定義設計視圖(或者摁下?Shift + Ctrl + m?)。相比網絡工具,運行更加流暢,無需聯網。

Chrome開發,chrome瀏覽器也有個Emulation,如圖:

chrome

另外,就是設備上的調試,方法很多。

1. 直接把做好的靜態頁面放到手機用瀏覽器打開查閱
2. 在本地搭建環境,比如php環境,局域網訪問ip查閱頁面(有搭建過博客的都知道)
3. 遠程調試

A:Android 設備 Chrome 遠程調試
B:uc瀏覽器開發者調試

開胃湯

那么,問題來了,移動端開發到底該如何下手?
1.關于viewport

  • a)概念:設備的pixels和css的pixels(總體而言,你只需要關注CSS的pixels,這些pixels指定你的樣式被如何渲染。
  • b)概念:視窗 viewport(viewport的功能在于控制你網站的最高塊狀(block)容器:<html>元素。 )

viewport

viewport2

下面是link的一些用法,但是移動端也好web端也好,為了減少HTTP請求數, 個人建議最好能使用媒體查詢來解決的可以盡可能的用媒體查詢。

link

媒體查詢如下:

媒體查詢

頭菜

作為頭菜,一般宴會來說,頭菜是代表性的菜點。那么說到移動端呢?

  • 移動端的reset

    時過境遷,Reset 逐漸淡出的前沿前端的視野,normalize.css?取 而代之。normalize.css,統一樣式的同時保留可辨識性;reset 統一樣式,完全沒有可讀性,破壞原有標簽的語義化。針對每個項目的不同,各自可以基于Normalize.css,根據目前我們大家的使用習慣進行了一些 清零及移動端的特點添加一些基礎樣式。

    在這里會提到一個rem,想當初應該很多人也討論研究過px,pt,em等單位吧。rem是CSS3新 引進來的一個度量單位,舉個例子:“em”是相對于其父元素來設置字體大小的,這樣就會存在一個問題,進行任何元素設置,都有可能需要知道他父元素的大 小,在我們多次使用時,就會帶來無法預知的錯誤風險。而rem是相對于根元素<html>,這樣就意味著,我們只需要在根元素確定一個參考 值。

    瀏覽器的基準字號設置為?62.5%,也就是?10px,現在?1rem = 10px?—— 為了計算方便。然后在body?上應用了?font-size: 1.6rem;,將頁面字號設置為?16px。
    html {font-size: 62.5%;} body {font-size: 1.6rem; /* =16px */}

    可以用以下的代碼片段保證在低端瀏覽器下也不會出問題

  1. html { font-size: 62.5%; }
  2. body { font-size: 14px; font-size: 1.4rem; } /* =14px /

移動端的html5+css3

css3代替DOM animation,使用setTimeout定時器, 定時修改DOM元素的style屬性。
css3使用設備GPU渲染,動用硬件設備本身的計算能力來做一些展示,效率上要比DOM animation要高很多。

  1. @keyframes
  2. animation-name(動畫名稱)
  3. animation-duration(動畫持續時間)
  4. animation-delay(延遲執行時間)
  5. animation-timing-function(動畫形變函數指定)
  6. animation-play-state(播放狀態指定)
  7. animation-iteration-count(無限循環)

至于HTML5,大家目前用的最多的也就僅僅是那幾個標簽而已,想詳細了解的自便吧。比如:

  1. <input type="text" placeholder="規定幫助用戶填寫輸入字段的提示">
  2. <input type="number">
  3. <input type="date">
  4. <input type="range">
  5. <input type="color">
  6. <input type="email">
  7. <input type="search">

移動端的javascript

先說這一類的框架吧:
JQuery mobile,Sencha Touch等都是很龐大的UI框架。
Zepto.js:框架小,類jQuery,沒有多余的其他模塊,適合團隊自己擴展。(不支持WP)
沒有一個很好的團隊去折騰的話,還是建議使用jqm,因為你到后面還是會改成jqm搭配Hammer.js來搭建

說起移動端的javascript,使用手勢操作代替鼠標輸入/出事件。開發者大多數會使用封裝的 tap 事件來代替click 事件,所謂的 tap 事件由 touchstart 事件 + touchmove 判斷 + touchend 事件封裝組成。那就先來看看PC端的一些事件:(mousedown, mouseup, click)

移動端的手勢事件:
touchstart //當手指接觸屏幕時觸發
touchmove //當已經接觸屏幕的手指開始移動后觸發
touchend //當手指離開屏幕時觸發
touchcancel //當在滑動手機的過程中突然出現一個系統事件,比如電話。這會就cancel掉。(基本很少用)

為何要用touch事件代替click事件?
- click事件300ms延時
- touch事件支持多點觸摸
- 手勢操作

移動端的css3的自定義字體(@font-face),前一篇文章有做介紹。這里就不詳細述說。

主菜

有人會問,圖片該怎么切,拿到的psd文件尺寸是多少,按照何種尺寸去制作?還是無從下手。那么,移動端頁面那么小,做頁面的時候按照何種安全可視尺寸來呢?

alert('width:' + window.innerWidth + ';height:' + window.innerHeight);

目前我知道的移動端可視區尺寸

  • iPhone4/iPhone4s 320 * 372 / 320 * 441 (已隱藏URL與狀態欄)
  • iPhone5/iPhone5s 320 * 460 / 320 * 529 (已隱藏URL與狀態欄)
  • Note2 360 * 567 (未隱藏URL與狀態欄)
  • iPad 3/4 768*928 (未隱藏URL與狀態欄)
  • GALAXY SIII 360 * 567 (未隱藏URL與狀態欄)
  • 小米2A 360 *567 (未隱藏URL與狀態欄)
  • HTC G10 320 * 460
  • 酷派大神 400615/400568(未隱藏URL與狀態欄)

設計稿按照640的尺寸去切(有的人按照480的去切,主要是考慮圖片資源的浪費),然后頁面可以當作是320的來寫,也就是說,字體大小以及圖片大小,在頁面制作的時候都需要除以2。

為什么要按照640的來切,卻用320的來制作呢?因為設備分辨率太多,圖片切大的去壓縮,在高分辨率的設備,圖片就不會變得很小了。
其實結果可知,手機端頁面,因為上面viewport設置了,一般瀏覽器都是320,360,400這類寬度制作頁面。

1、meta,link都有了
2、css reset也有了
3、盡可能的使用Flexbox 布局,盡量放棄float
4、圖片的切法和媒體查詢
5、移動端js的事件使用
6、最后手機測試完美收工
(簡單粗糙上檔次吧?)

甜品(飯后閑談消化)

這里我必須說的是局部刷新,定位問題吧。
position:sticky與position:fixed布局,因為存在太多兼容bug,于是都會利用iscroll來解決這個問題。
如何使用,請移步iscroll官網查閱,這里不作詳細說明。因為這里每一個點都可以來了說一篇或者好幾篇文章。

盒子邊框溢出
當我們指定了一個塊級元素時,并且為其定義了邊框,設置了其寬度為100%。按照盒子模型,就會發現該元素的左右邊框各1個像素會溢了,導致出現橫向滾動 條,這時候我們可以為其添加-webkit-box-sizing:border-box用來指定該盒子的大小包括邊框的寬度。

ios數字顏色樣式超過9位后失控
這個問題我不知道該怎么描述,就是在ios中,當數字超過9位數時,瀏覽器會給這個數字默認加上一個顏色,無論你設置什么顏色都無效。

css3關于background-size縮放背景圖像的使用;如何用flex和translate等分,居中。

轉載于:https://www.cnblogs.com/ling-du/p/5101821.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257859.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257859.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257859.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

快速的取整方法(~~)

為什么80%的碼農都做不了架構師&#xff1f;>>> 最近看一篇js裝逼小技巧————雙波浪號的妙用(將內容轉化為數字,或者小數取整)&#xff0c;但是本身我的JavaScript水平比較低對其底層操作和其使用范圍不甚了解&#xff1b;通過翻閱資料現進行簡單的整理。 ###裝…

git log友好顯示

查看commit 提交日志 $ git log $git log --prettyoneline $git reflog 顯示所有提交記錄&#xff0c;包括已經回退的提交&#xff0c;如圖&#xff1a;提交了abc 和 bb 然后回退到 abc   $git log 只顯示abc提交 可以使用 $git reset --hard commit號 回退到bb git reflog…

jprofiler_windows-x64_9_1注冊碼

L-Larry_Lau163.com#5481-ucjn4a16rvd98#6038 L-Larry_Lau163.com#36573-fdkscp15axjj6#25257 轉載于:https://www.cnblogs.com/sprinng/p/5104507.html

南理工計算機技術專業學位,南京理工大學計算機技術(專業學位)考研難嗎

很多考生在準備南京理工大學計算機技術(專業學位)考研難嗎&#xff1f;是考研報考的時候都會產生這樣的疑問&#xff1a;這個專業的研究生好嗎&#xff1f;適合我嗎&#xff1f;對我以后的人生和職業會有幫助嗎&#xff1f;考生在準備南京理工大學計算機技術(專業學位)專業考研…

《分布式系統:概念與設計》一2.3.2 體系結構模式

2.3.2 體系結構模式 體系結構模式構建在上述討論過的相對原始的體系結構元素之上&#xff0c;提供組合的、重復出現的結構&#xff0c;這些結構在給定的環境中能運行良好。它們未必是完整的解決方案&#xff0c;但當與其他模式組合時&#xff0c;它們會更好地引導設計者給出一…

javascript sort()實現元素json對象的排序

看以下代碼&#xff1a; var s [ { name: "Robin Van PurseStrings", age: 30 } ,{ name: "Theo Walcott", age: 24 } ,{ name: "Bacary Sagna", age: 28 } ].sort(function(obj1, obj2) {// 實現增序排列&#xff1a;前者的 age 小于后者…

html5手機簽名,html5手寫簽名

var canvas, board;canvas document.getElementById(myCanvas);canvas.height 300;canvas.width 400;board canvas.getContext(2d);board.lineWidth 1; //設置畫筆粗細board.strokeStyle "#f00";board.lineJoin "round"; //設置畫筆軌跡基于圓點拼接…

調查:Java程序員最傷心,C++程序員最年老

說起我們對編程世界現有的刻板印象&#xff0c;你一定聽說過類似于沒有人喜歡用Java編碼或者使用C 都是老人家&#xff0c;等等這樣的話。為了分析這些刻板印象背后的真相&#xff0c;Trestle Technology的數據工程師寫了一個工具。 不知道你有沒有聽說過微軟的Project Oxford&…

mysql一些寫常用命令

參見pcttcnc2007博客騰飛 1.mysql的status信息命令: mysql> show global status; 2.可以列出mysql服務器運行各種狀態值&#xff0c;另外&#xff0c;查詢mysql服務器配置信息語句&#xff1a; mysql> show variables; 3.連接數 經 常會遇見”mysql: error 1040: too man…

計算機不小心刪除怎么找回桌面,如何將桌面上誤刪的文件找回

在如今工作電腦化的趨勢下&#xff0c;用戶都會在桌面上創建各種各樣的文件等&#xff0c;這些文件都是需要在工作中經常要進行各種操作的重要文件&#xff0c;那么頻繁的操作也會出現各種的意外情況等&#xff0c;如果不小心刪除了重要的文件該怎么恢復呢&#xff1f;想要恢復…

《編程原本 》一3.3 程序變換

3.3 程序變換 power0是有關算法的一個令人滿意的實現,它適用于運算的代價高于函數遞歸調用開銷的情況.本節要推導出一個迭代算法,它執行運算的次數和power0一樣.這里將要做一系列程序變換,這些變換也可以用在其他許多情況中.5 在本書后面的部分,通常將只給出算法的最終版本或幾…

Effective C++ .07 virtual析構函數的提供

主要講了&#xff0c; 1. virtual析構函數的作用與調用順序 2. 使用時機&#xff0c;并不是使用了繼承就要把基類的析構函數變為虛函數&#xff08;virtual&#xff09;&#xff0c;只有當用于多態目的時才進行一個virtual析構函數的定義。 3. 不要繼承那些沒有將析構函數定義為…

OnClickListener沖突的問題

OnClickListener沖突的問題 (2011-11-26 15:28:27) 轉載▼標簽&#xff1a; 雜談 分類&#xff1a; android學習記錄 import anfroid.view.View.OnClickListenerimport anfroid.content.DialogInterface.OnClickListener 這兩個東西要同時用的話&#xff0c;要使用以下方式&…

html 響應式 同一行,一行CSS實現各種響應式元素 – Fluidity

一行CSS實現各種響應式元素 – Fluidity3月 31, 2014評論SponsorFLUIDITY是一個極微小的CSS樣式表&#xff0c;壓縮版只有一行代碼&#xff0c;大小只有115個字節&#xff0c;它能實現圖像、文本、Canvas、Table表格以及iFrame框架的響應式功能。好用且實用&#xff01;這個響應…

玩C一定用得到的19款Java開源Web爬蟲

網絡爬蟲(又被稱為網頁蜘蛛&#xff0c;網絡機器人&#xff0c;在FOAF社區中間&#xff0c;更經常的稱為網頁追逐者)&#xff0c;是一種按照一定的規則&#xff0c;自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。 今天將為…

一元二次方程

轉載于:https://www.cnblogs.com/569114a/p/4179164.html

cookie html5,HTML5——存儲(cookie、localStorage、sessionStorage)的區別

cookie本來用于客戶端和服務端通信&#xff0c;但是因為它有本地存儲的功能&#xff0c;于是被“借用”了。使用方法document.cookie 獲取和修改即可缺點存儲量太少&#xff0c;只有4kb所有http請求都帶著&#xff0c;會影響獲取資源的效率。API簡單&#xff0c;需要封裝才能使…

數據中心存在不當投資嗎?

不正當的投資是一種危害&#xff1a;在一些項目建設中&#xff0c;投入大量的資金是錯誤的&#xff0c;因為這些項目的需求是不可持續的或高估的。那么數據中心屬于這一類嗎? 投資不當的問題 不當投資會與經濟的繁榮與蕭條齊頭并進。例如&#xff0c;抑制按揭貸款利率可能會導…

問題:循環元素,被選中元素個數,全選

一段時間不寫js都有點忘記了&#xff0c;這里看幾個常見的js&#xff0c;涉及到循環&#xff0c;計算元素個數&#xff0c;checkbox選中等問題&#xff0c;首先是html元素 <div class"content border p05"><div><input type"checkbox" id&q…

LeetCodeOJ. String to Integer (atoi)

試題請參見: https://oj.leetcode.com/problems/string-to-integer-atoi/ 題目概述 Implement atoi to convert a string to an integer.Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the…