移動端常見JS與CSS問題及解決方法

一. css部分
body如果設(shè)置height:100%;overflow:hidden是依然可以滑動的址儒,如果需禁止捕发,要再加一層div設(shè)置 height:100%加overflow:hidden(html,body加height:100%) 庙楚,這樣元素超出body的高度也不能滑動了
meta標簽
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"/>移動端加上這個標簽才是真正的自適應(yīng)面哥,不加的話哎壳,假如你把一個960px寬度的PC網(wǎng)頁放在手機上顯示,倒也能正常顯
示不出現(xiàn)滾動條尚卫,不過是移動設(shè)備對頁面 做了縮小優(yōu)化归榕,所以字體等都相應(yīng)縮小了(960px是相對于手機像素的,我的是超過1000px多一些就出現(xiàn)滾動條了吱涉,這個沒具體研究刹泄。
關(guān)于 initial-scale=1 ,這個是參照iphone5的尺寸320568怎爵,如果你頁面按照6401136做的話特石,scale就設(shè)為0.5

<meta content="yes" name="apple-mobile-web-app-capable"> IOS中safari允許全屏瀏覽 <meta content="black" name="apple-mobile-web-app-status-bar-style"> IOS中Safari頂端狀態(tài)條樣式
<meta content="telephone=no" name="format-detection"> 忽略將數(shù)字變?yōu)殡娫捥柎a

<meta content="email=no" name="format-detection"> 忽略識別email

做全屏顯示的圖片時,一般為了兼容大部分的手機鳖链,圖片尺寸一般設(shè)為640*960(我是覺得這個尺寸好姆蘸,也看不少的圖片也是這個尺寸,是情況而定)
去除webkit的滾動條
element::-webkit-scrollbar{
display: none;
}

去除button在ios上的默認樣式
-webkit-appearance: none;
border-radius: 0

不想讓按鈕touch時有藍色的邊框 -webkit-tap-highlight-color:rgba(0,0,0,0);

如果要用到fixed譬如導(dǎo)航等芙委,可以用absolute達到一樣的效果逞敷,把body設(shè)為100%;將元素absolute到body上即可

在移動端做動畫效果的話题山,如果通過改變絕對定位的top兰粉,或者margin的話做出來的效果很差,很不流暢顶瞳,而使用css3的transition或者animation的效果將會非常棒(這一方面IOS比android又要好不少)

使用圖片時玖姑,會發(fā)現(xiàn)圖片下總是有大概4px的空白,(原因據(jù)說圖片是inline慨菱,觸發(fā)baseline什么的焰络。。符喝。)常用解決方法有
img{display:block}闪彼;
img{vertical-align:top}也可取其他幾個值,視情況而定
其他解決辦法 見此

學會使用display:-webkit-box的布局,能很好地幫我們做到頁面自適應(yīng)畏腕,譬如 導(dǎo)航欄 這些個人覺得特別適合缴川,具體使用方法此處不敘述

使用 a 標簽的話,盡量讓 a 標簽 block 描馅,盡量讓用戶可點擊區(qū)域最大化

兩個頁面使用了transform之后把夸,頁面下的z-index有時就會失效,我遇到過铭污,但沒去認真探究恋日,只是把z-index提高就好了,如果遇到這個問題的嘹狞,詳細可以 看這

在iOS中岂膳,當你點擊比如 input 準備輸入時,虛擬鍵盤彈出磅网,整個視窗的 高度 就會變?yōu)?減去鍵盤 的高度谈截,加入你在底部有fixed的元素比如btn,這個元素就會跑上來知市,一般都不會太美觀傻盟。我是當focus時就把它設(shè)為absolute,視情況而定

禁止用戶選中文字 -webkit-user-select:none

當你把input設(shè)為 width:100%時嫂丙,有時可能會遇到input的寬度超出了屏幕娘赴,這時可對input加一個屬性 box-sizing:border-box
關(guān)于box-sizing:border-box,此屬性是把邊框的高寬包含在盒子的高寬中跟啤,假如你設(shè)置兩個元素float且各占50%诽表,又都有border時,用這個屬性就可以完美地讓它們能顯示在同一行

要table的td用col設(shè)置了寬度后超出部分隱藏的話給table加屬性table-layout:fixed(固定寬度布局)

如果想改變 placeholder 里的文字隅肥,需要用css偽類 ::-webkit-input-placeholder{color:#ccc}

二. JS部分
如果使用jquery綁定touch事件的話竿奏,獲取touchstart,touchmove的觸點坐標用 e.originalEvent.targetTouches[0].pageX腥放,獲取touchend則用 e.originalEvent.changedTouches[0].pageX

利用style獲取獲取transform的rotate值
parseInt(/rotateX((.*?))/.exec(getALL.style.webkitTransform)[1])
如果頁面一開始沒有style值泛啸,rotate是寫在CSS里的,需要用到getComputedStyle秃症,具體請看這里 候址。

有些版本的iphone4中, audio和video默認播放事件不會觸發(fā)种柑,比如使用window.onload或計時器等都不能觸發(fā)播放岗仑,必須用JS寫事件讓用戶手動點擊觸發(fā)才會開始播放

想要在touchmove:function(e,參數(shù)一)加一個參數(shù),結(jié)果直接使用e.preventDefault() 就會 e 報錯聚请,處理方法為
touchmove:function(e,參數(shù)一){
var e=arguments[0]
e.preventDefault()
}

HTML5的新js API有新的選擇器荠雕,比如querySelector(".class #id")和querySelectorAll(".class element")。
點擊一個元素時,使用touchstart會立即觸發(fā)炸卑,而使用click則用有大概0.3s的延遲

判斷是否來自微信瀏覽器
function isFromWeiXin() {
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == "micromessenger") {
return true;
}
return false;
}

判斷手機的類型
var user="";
if (/android/i.test(navigator.userAgent)){
// android
user="1";
}
if (/ipad|iphone|mac/i.test(navigator.userAgent)){
// ios
user="0";
}

微信瀏覽器里均不能打開下載的鏈接既鞠,需在瀏覽器打開

如果在網(wǎng)頁里嵌套一個iframe,src為其他的網(wǎng)址等盖文,當在微信瀏覽器打開時损趋,如果irame里的頁面過大,則iframe的src不能加載(具體多大不知道椅寺,只是遇到過)

微信升級到6.0后,在微信網(wǎng)頁里需要用到設(shè)置分享的標題等蒋失,需要用到JSSDK返帕,同時去微信公眾平臺里綁定里放置網(wǎng)頁的域名。 不過JSSDK也不是所有問題都解決了篙挽,在android里點擊分享到朋友圈時就觸發(fā)了分享成功的回調(diào)函數(shù)荆萤,即使取消分享也已經(jīng)觸發(fā)了成功的函數(shù)(現(xiàn)在不知道是否有修復(fù),如果遇到了這類問題铣卡,應(yīng)該就是這個原因)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末链韭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子煮落,更是在濱河造成了極大的恐慌敞峭,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝉仇,死亡現(xiàn)場離奇詭異旋讹,居然都是意外死亡,警方通過查閱死者的電腦和手機轿衔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門沉迹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人害驹,你說我怎么就攤上這事鞭呕。” “怎么了宛官?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵葫松,是天一觀的道長。 經(jīng)常有香客問我摘刑,道長进宝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任枷恕,我火速辦了婚禮党晋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己未玻,他們只是感情好灾而,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扳剿,像睡著了一般旁趟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庇绽,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天锡搜,我揣著相機與錄音,去河邊找鬼瞧掺。 笑死耕餐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的辟狈。 我是一名探鬼主播肠缔,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哼转!你這毒婦竟也來了明未?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤壹蔓,失蹤者是張志新(化名)和其女友劉穎趟妥,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體佣蓉,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡煮纵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了偏螺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片行疏。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖套像,靈堂內(nèi)的尸體忽然破棺而出酿联,到底是詐尸還是另有隱情,我是刑警寧澤夺巩,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布贞让,位于F島的核電站,受9級特大地震影響柳譬,放射性物質(zhì)發(fā)生泄漏喳张。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一美澳、第九天 我趴在偏房一處隱蔽的房頂上張望销部。 院中可真熱鬧摸航,春花似錦、人聲如沸舅桩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擂涛。三九已至读串,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撒妈,已是汗流浹背恢暖。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留狰右,地道東北人胀茵。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像挟阻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子峭弟,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,469評論 0 6
  • 關(guān)于css常見問題附鸽,大多是移動端的。 簡單的排版規(guī)則:條目與條目之間空兩行瞒瘸,每條內(nèi)容部分分段空一行坷备。標點符號全部用...
    蘇水兒閱讀 5,017評論 0 9
  • H5移動端知識點總結(jié) 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,490評論 0 26
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)情臭,斷路器省撑,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • 產(chǎn)品推薦以前是沒有被單獨的拿出來作為一個模塊來進行設(shè)計,隨著互聯(lián)網(wǎng)的發(fā)展尤其是推薦算法的不斷演化俯在,越來越多...
    良人子兮閱讀 689評論 1 5