1:移動端你們一般採用什麼佈局?移動端設計稿是多大的尺寸?
-
定寬佈局
-
一般移動端設計稿是640或者750的尺寸
2:em和rem的區別
-
em相對父級元素設定的font-size來設定大小 如果父元素沒有設定font-size ,則繼續向上查詢,直至有設定font-size元素
-
rem直接參照html標籤字型大小,並且所有使用rem單位的都是參照html標籤
3:移動端用過那些meta標籤?
<!--1:設定視口寬度 縮放比例-->
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
<!--2:忽略將數字變為電話號碼-->
<meta content="telephone=no" name="format-detection">
<!--3:忽略識別郵箱-->
<meta name="format-detection" content="email=no" />
<!--4:IOS中Safari允許全屏瀏覽-->
<meta content="yes" name="apple-mobile-web-app-capable">
複製程式碼
4:移動端click 300毫秒延遲原因?
移動端瀏覽器會有一些預設的行為,比如雙擊縮放、雙擊滾動。這些行為,尤其是雙擊縮放,主要是為桌面網站在移動端的瀏覽體驗設計的。而在使用者對頁面進行操作的時候,移動端瀏覽器會優先判斷使用者是否要觸發預設的行為。
5:移動端zepto中的tap事件點透問題?
問題點選穿透問題:點選蒙層(mask)上的關閉按鈕,蒙層消失後發現觸發了按鈕下面元素的click事件
zepto的tap事件是繫結到document的,所以一般點選tap事件都會冒泡到document才會觸發。當點選隱藏蒙層的時候預設也會手指觸發到蒙層下面的元素 執行事件
複製程式碼
1. github上有個fastclick外掛,用來規避click事件的延時執行
2. 用touchend代替tap事件並阻止掉touchend的預設行為preventDefault()
//tap事件出現點透問題
$("#id").on("tap", function (event) {
//很多處理比如隱藏什麼的
event.preventDefault();
});
//touchend事件解決點頭問題
$("#id").on("touchend", function (event) {
//很多處理比如隱藏什麼的
event.preventDefault();
});
複製程式碼
3:給tap事件裡面的隱藏蒙層方法執行的方法300毫秒延遲
$("#id").on('tap',function(ev){
setTimeout(function(){
$("#id").hide();
},320)
})
複製程式碼
6:固定定位佈局 鍵盤擋住輸入框內容?
1:通過繫結視窗改變事件,監聽鍵盤的彈出。然後去改變固定定位元素的位置。預設鍵盤的寬度應該是頁面的2分之一。所以我們位移的距離改成鍵盤的二分之一就可以
window.onresize = function(){
//$(".mian")就是固定定位的元素
if($(".mian").css('top').replace('px','') != 0){
$(".mian").css('top',0);
}else{
var winHeight = $(window).height();
$(".mian").css('top',-(winHeight/4));
}
}
複製程式碼
2:通過定時器實時監聽是否觸發input。如果觸發input框 就把固定定位,改變成靜態定位。這樣就會瀏覽器會總動把內容頂上去。
function fixedWatch(el) {
//activeElement 獲取焦點元素
if(document.activeElement.nodeName == 'INPUT') {
el.css('position', 'static');
} else {
el.css('position', 'fixed');
}
}
setInterval(function() {
fixedWatch($('.mian'));
}, 500);
複製程式碼
7: 移動端相容問題?
1:移動端預設的input和按鈕樣式還有點選出現的樣式不一樣 需要預設去清除一些預設樣式
//去掉webkit的滾動條——display: none;
//其他引數
::-webkit-scrollba //滾動條整體部分
::-webkit-scrollbar-thumb //滾動條內的小方塊
::-webkit-scrollbar-track //滾動條軌道
::-webkit-scrollbar-button //滾動條軌道兩端按鈕
::-webkit-scrollbar-track-piece //滾動條中間部分,內建軌道
::-webkit-scrollbar-corner //邊角,兩個滾動條交匯處
::-webkit-resizer //兩個滾動條的交匯處上用於通過拖動調整元素大小的小控制元件
// 禁止長按連結與圖片彈出選單
a,img { -webkit-touch-callout: none }
// 禁止ios和android使用者選中文字
html,body {-webkit-user-select:none; user-select: none; }
// 改變輸入框placeholder的顏色值
::-webkit-input-placeholder { /* WebKit browsers */
color: #999; }
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #999; }
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #999; }
:-ms-input-placeholder { /* Internet Explorer 10+ */
color: #999; }
input:focus::-webkit-input-placeholder{ color:#999; }
// android上去掉語音輸入按鈕
input::-webkit-input-speech-button {display: none}
// 阻止windows Phone的預設觸控事件
/*說明:winphone下預設觸控事件事件使用e.preventDefault是無效的,可通過樣式來禁用,如:*/
html { -ms-touch-action:none; } //禁止winphone預設觸控事件
//ios使用者點選一個連結,會出現一個半透明灰色遮罩, 如果想要禁用,可設定-webkit-tap-highlight-color的alpha值為0去除灰色半透明遮罩;
//android使用者點選一個連結,會出現一個邊框或者半透明灰色遮罩, 不同生產商定義出來額效果不一樣,可設定-webkit-tap-highlight-color的alpha值為0去除部分機器自帶的效果;
//winphone系統,點選標籤產生的灰色半透明背景,能通過設定<meta name="msapplication-tap-highlight" content="no">去掉;
//特殊說明:有些機型去除不了,如小米2。對於按鈕類還有個辦法,不使用a或者input標籤,直接用div標籤
a,button,input,textarea {
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-user-modify:read-write-plaintext-only; //-webkit-user-modify有個副作用,就是輸入法不再能夠輸入多個字元
}
// 也可以
* { -webkit-tap-highlight-color: rgba(0,0,0,0); }
//winphone下
<meta name="msapplication-tap-highlight" content="no">
複製程式碼
2:手機拍照和上傳圖片
/*
*IOS有拍照、錄影、選取本地圖片功能,
*部分Android只有選擇本地圖片功能。
*Winphone不支援
*/
<input type="file" accept="images/*" />
複製程式碼
3:消除transition閃屏
.css {
-webkit-transform-style: preserve-3d;
-webkit-backface-visibility: hidden;
-webkit-perspective: 1000;
}
======一下內容與上無關=====
//目前,像Chrome/Filefox/Safari/IE9+以及最新版本Opera都支援硬體加速,當檢測到某個DOM元素應用了某些CSS規則時就會自動開啟,從而解決頁面閃白,保證動畫流暢。
.css {
-webkit-transform: translate3d(0,0,0);
-moz-transform: translate3d(0,0,0);
-ms-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
}
複製程式碼
4:固定定位相關問題?
- 固定定位會產生 鍵盤彈出遮住固定元素裡面元素的input框
- 固定定位的遮罩層彈出時 滾動到最底部 qq和uc瀏覽器會出現遮罩層下面的樣式露出來
5: 在ios上寫有郵箱文字點選這個郵箱地址不會有反應,安卓手機上點選郵箱會自動開啟本地郵箱軟體。
8:移動端橫屏怎麼處理?
寫好一套樣式 獲取視窗的寬度大於高度的時候 說明橫屏了 。那麼就顯示一個遮罩層提示使用者 豎屏觀看更佳。