轉(zhuǎn)帖|行業(yè)資訊|編輯:鄭恭琳|2015-09-17 09:59:28.000|閱讀 148 次
概述:本文羅列一些響應(yīng)式網(wǎng)頁開發(fā)中的一些常見陷阱,并指定了對應(yīng)的解決方案,希望可以幫助你節(jié)省開發(fā)時間。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
想象這樣的場景: 你剛剛創(chuàng)建了一個杰出的響應(yīng)式設(shè)計,然后準備在移動設(shè)備中測試一下。在你意想不到的地方產(chǎn)生了一些問題,文字亂糟糟的,動畫波濤洶涌,表單沒有呈現(xiàn)你設(shè)計的樣式。然后花費N多時間修復這些問題,你可能抓狂地把電腦扔出窗外砸中鄰居家的貓。
好消息是,我準備在本篇文章里介紹這些可能令你抓狂的問題,并講解相應(yīng)的解決方案。主要包括以下五個問題:
ios設(shè)備的旋轉(zhuǎn)將破壞布局、改變頁面中的文字大小,當元素(例如導航條、菜單等)設(shè)置為固定定位時經(jīng)常產(chǎn)生類似的問題,只有刷新頁面才可以修復問題。幸運的是,有一個方法可以防患于未然。
在你的css中添加如下代碼:
html {
/* 防止橫屏時的文字縮放 */
-webkit-text-size-adjust: 100%;
}
該代碼設(shè)置橫屏時文字的縮放為100%,從而防止意外的文字改變發(fā)生。
平板或移動設(shè)備經(jīng)常調(diào)用默認樣式搞糟您的表單樣式,我們可以使用如下的css代碼阻止表單的默認樣式。
input[type=text], button, select, textarea{
-webkit-appearance: none;
-moz-appearance: none;
border-radius: 0px;
}
你可以根據(jù)需要選擇重置的表單,例如將input[type=text]
改變?yōu)?code>input會選擇所有類型的input。
如果你使用基于瀏覽器的移動仿真器進行測試,有時會產(chǎn)生一些煩人的問題。在你代碼沒有問題的情況下拋出一個問題,令人糾結(jié)。
例如,有一次正在開發(fā)中的頁面底部的導航條莫名其妙的消失了,正當我準備查找問題原因時,我發(fā)現(xiàn)Chrome模擬器的視窗底部被切掉一部分,當我在新tab中打開頁面,然后切換移動視圖刷新之后就解決了問題。
遇到類似的問題,最為重要的是,要保證你的代碼沒問題僅僅是模擬器的問題。你可以嘗試隔離問題區(qū)域看看代碼是否正常工作,然后在真正的移動設(shè)備上測試一下。
如果你在移動設(shè)備上使用動畫,請一定要尤其注意動畫的性能問題。一般來說,瀏覽器能夠有效的動畫以下屬性translate、scale、rotate和 opacity
等,例如下面的案例。
transform: translate(15px, 40px); /* shift left 15px and down 40px */
transform: scale(2); /* scale to 2 times original size */
transform: rotate(30deg); /* rotate 30 degrees */
opacity: 0.5; /* set opacity at 0.5 */
這些屬性動畫性能良好的原因是,這些屬性位于瀏覽器渲染器的頂層。你可以把一個網(wǎng)頁看成一個餐桌,動畫這些屬性就類似于移動一個調(diào)羹,動畫底層屬性類似于移動整個餐桌布,你需要同時移動上面的所有覆蓋物,所以更加費勁一些(性能就會差一點)。
為了最大化的支持你的動畫,你可能需要加瀏覽器前綴(verdor prefix)。
另外注意,盒陰影(box-shadow)有時會影響動畫性能,所以強烈建議使用盒陰影時注意移動設(shè)備的測試。
觸摸事件的坐標注冊問題也比較微妙,因為坐標在不同設(shè)備中存儲區(qū)域不同。一些設(shè)備(例如ios)的觸摸坐標和單擊坐標相同,而另一些(例如android)設(shè)備則不同。好消息是,在任何移動設(shè)備中都可以通過特定的觸摸事件數(shù)據(jù)(touch event data)獲取坐標。
對于觸摸事件來說,使用e.touches[0].pageX
而非e.pageX
獲取觸摸點的x坐標,獲取y坐標也是類似的道理。下面是一些可能實際應(yīng)用的代碼。
/* event */
document.onclick = function(e){
var x = e.pageX; // get x coordinate of click
var y = e.pageY; // get y coordinate of click
console.log('x = ' + x + ', y = ' + y); // show coordinates in console
}
/* for touch event */
document.ontouchstart = function(e){
var x = e.touches[0].pageX; // get x coordinate of touch
var y = e.touches[0].pageY; // get y coordinate of touch
console.log('x = ' + x + ', y = ' + y); // show coordinates in console
}
大家不妨模擬器里測試下上面的代碼。
本文羅列一些響應(yīng)式網(wǎng)頁開發(fā)中的一些常見陷阱,并指定了對應(yīng)的解決方案,希望可以幫助你節(jié)省開發(fā)時間。
轉(zhuǎn)載自
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn