干貨分享:Web應用響應式頁面制作

最近寫移動端整理了一些入門級的知識,比較實用,如取消移動端的默認樣式,取消點擊表單后的延遲時間等,都是日常項目中碰到的問題,部分整理自網絡,部分按照自己的理解,如果有更好的建議希望大家評論補充

一、移動端種類、分辨率大小

說明:以主流的iPad、iPhone為例。

工具:Resizer官網:Resizer

用法:將通欄處寫有“Click or Bookmark”的藍色按鈕拖拽至標簽欄(加入收藏,注意,不是上面的官網地址) 。先打開要進行測試的頁面,再點擊已加入收藏夾的標簽即可。此時被測試頁面頂部會多出一條工具欄,于是就可以根據需求任意進行測試。

分辨率:預設的分辨率有(可切換橫版,豎版)

普通智能手機:320×480

iPhone5:320×568

普通平板:800×600

iPad2、3、mini:768×1024

寬屏電腦:1280×800

HDTV:1920×1080

另外,也可以自定義分辨率。

2.節省樣式的加載

目前而言,要改變網站的配色方案或者寫iPad專用的樣式表,是通過如下代碼:

@media only screen and (min-device-width:640px) { … }//例如,適應某設備的分辨率

其實,沒有必要這樣讓你的樣式表白白超載??梢酝ㄟ^下面這個方法去加載指定分辨率下的樣式。

這樣的好處是,只有當你的使用相應的設備,才能加載到相應的樣式表。

二、meta標簽

1)

//強制讓文檔的寬度與設備的寬度保持1:1,

//文檔初始化縮放比例是1:1,

//不允許用戶點擊屏幕放大瀏覽,

//允許用戶縮放到的最大比例,

//尤其要注意的是content里多個屬性的設置一定要用分號+空格來隔開,如果不規范將不會起作用。

其他屬性有:

width;

height;

initial-scale;

minimum-scale;

maximum-scale;

user-scalable;

2)

//iPhone私有標簽,它表示:允許全屏模式瀏覽

3)

//iPhone私有標簽,它指定的iPhone中safari頂端的狀態條的樣式

4)

//不識別郵件和不把數字識別為電話號碼

三、CSS3 -webkit

1、問題描述:移動端表單類有圓角、陰影,點擊鏈接時,有灰色底高亮等

1) 消除被點擊元素的外觀變化,所謂的點擊后高亮:

-webkit-tap-highlight-color: rgba(255, 255, 255, 0);

2) 阻止旋轉屏幕時自動調整字體大?。?webkit-text-size-adjust:none;

3) 解決字體在移動端比例縮小后出現鋸齒的問題:-webkit-font-smoothing: antialiased;

4) 盒子陰影:-webkit-box-shadow: none;

5) 圓角:-webkit-border-radius: 0;

6) appearance 屬性使元素看上去像標準的用戶界面元素,

也可以取消默認的樣式:-webkit-appearance: none;

7) 鼠標可以懸停在內容上(指向該內容)而不激活它(單擊它):-webkit-touch-action: manipulation;

四、使用自適應模式布局

為了讓用戶在safari中正常的瀏覽網頁,我們必須保證用戶的設備處于任何一個方位時,safari都能夠正常的顯示網頁內容(也就是自適應),而且自適應之后也不用考慮分辨率的問題。

比如:-webkit-box,流體盒模型,這是一種自適應的解決方案。

、App icon 制作

說明:所謂單機模式,其實就是通過把網站添加到主屏,由主屏進入并訪問網站的一種方式。通常,app icon是自動截取網站的一部分截圖。這樣并不是很美觀,但也可以通過代碼來解決這個問題。

尺寸:在iPhone上的默認大小是57px,在iPad上是72px。icon原始圖片建議尺寸為128px或者256,并且不建議自行添加光影效果,因為OS自帶了。

// 若想去掉系統自帶的反光效果,可以增加“-precompsed”屬性。

App Icon 設計資源:

圖標模板:App Icon Template

設計靈感:iOS Icon Gallery,Hongkiat

制作工具:MakeAppIcon,iconkit(付費軟件)

其他技巧

Float屬性替換

使用display:inline-block屬性代替;因為float不適用于反向停靠和無法接受水平間隙

檢測用戶是通過主屏啟動你的web app

從主屏啟動的web app和瀏覽器訪問web app最大的區別 是它清除了瀏覽器上方和下方的工具條,這樣web app就更加像是native app了。

window.navigation.standalone

if(!window.navigation.standalone) {

…// do your magic

}

此外,還可以通過以下方式,停留在單機模式中。

//最簡單的方法

onclick=”window.location.href=this.href; return false”>QmyO

//改進一下,寫成函數

function openLink(anchor) {

window.location.href = anchor.href;

return false;

}

//調用

QmyO

//更廣泛的使用,如頁面導航

/* 創建一個全局點擊事件監聽器 */

document.addEventListener(“click”, clickHandler, false);

function clickHandler(e) {

var element = e.target;

/* 只處理錨標簽元素 */

if (element.localName.toUpperCase() != ‘A’) {

return;

}

/* 忽略target屬性。*/

if (!!element.getAttribute(‘target’)) {

return;

}

var url = element.href;

/* 忽略不符合https正則規范以為的內容并區分來源 */

var match = url.match(/^https?:\/\/(.+?)\/.*$/);

if (!match || match[1] != window.location.host) {

return;

}

/* 最后打開全屏幕視圖的鏈接,來防止默認行為 */

window.location.href = url;

e.preventDefault();

}

//注意:當a標簽含有子標簽如:

這個腳本就不起作用了,因為接收事件的不是鏈接,而是img標簽。

但其他情況下都能使用戶留在單機模式內。當點擊外部鏈接時,OS可能會跳至瀏覽器。

如何解決盒子邊框溢出當指定了一個塊級元素時,并且為其定義了邊框,設置了其寬度為100%。在移動設備開發過程中我們通常會對文本框定義為寬度100%,將其定義為塊級元 素以實現全屏自適應的樣式,但此時,該元素的邊框(左右)各1個像素會溢了文檔,導致出現橫向滾動條,為解決這一問題,可以為其添加一個特殊的樣式:

-webkit-box-sizing:border-box;

//用來指定該盒子的大小包括邊框的寬度。

自動大寫與自動修正

關閉這兩項功能,可以通過autocapitalize 與autocorrect 這兩個選項

橫板與豎版

方法一:

// 肖像模式樣式

// 風景模式樣式

方法二:

//肖像模式樣式

#landscape { display: none; }

//風景模式樣式

#portrait { display: none; }

轉載請注明:前端徐遠?干貨:Web App 響應式頁面制作筆記

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容