移動端H5頁面注意事項

2017-11-25 更新:5. 使用 Gulp 拼合圖片

1. 單個頁面內容不能過多

設計常用尺寸:750 x 1334 / 640 x 1134撇吞,包含了手機頂部信號欄的高度茶敏。

移動端H5活動頁面常常需要能夠分享到各種社交App中码倦,常用的有 微信比然、QQ 等。

使用移動設備查看頁面時會發(fā)現(xiàn)忍疾,在微信瀏覽器中有頂部導航欄沸毁,在qq內置瀏覽器里不止有 頂部導航,底部也有 操作欄(safari瀏覽器也一樣)亥鬓,這些都會占用設計稿顯示區(qū)域完沪,因此在 設計環(huán)節(jié) 就需要考慮內容的多少,頁面底部要 預留一定的空白嵌戈,這樣在微信或qq中才不會被遮住覆积。

如下圖(QQ內置瀏覽器):頁面設計尺寸為 750 x 1334,頂部占用 150px熟呛,底部占用 110px宽档,共占用了 260px,因此設計稿內容應控制在 1334-260=1074px 的高度內庵朝。編寫代碼時吗冤,使用 Chrome 瀏覽器模擬設備大小,將該尺寸(7501074*)存下來九府,用于實時查看移動端頁面效果椎瘟。

如果頁面已經寫好了,就只能按照上面的尺寸進行內容的調整了侄旬,縮小元素間距肺蔚,縮放圖片大小等。

分享下我的失敗嘗試:

  1. 如果對整個頁面進行縮放(使用 meta 標簽)儡羔,按照設計稿的比例婆排,在高度滿足的情況下寬度會偏小,兩邊會有白底笔链;
  2. 就算使用 rem 作為相關間距的單位段只,也沒有辦法找到一個合適的比例在兩種高度(微信/QQ)下切換,因此統(tǒng)一調成適配 QQ 的鉴扫,這樣就算在微信下有多余的空白赞枕,固定底部的引導下滑箭頭也能使其不會過于突兀。
750*1334 頁面示例

2. 標題簡短

移動端瀏覽器導航條寬度有限坪创,簡短的標題可以使其展示完整炕婶。

3. 二維碼圖片使用 img 標簽引入

二維碼圖片不要寫為元素背景,不然長按沒有辦法觸發(fā)掃描功能莱预。應使用 img 標簽引入柠掂,如下:

代碼示例.png

4. 二維碼圖片記得掃描測試

有時候掃描二維碼之后,會跳轉至某個地址依沮,不幸的話QQ或者微信會對這個地址進行溫馨提醒涯贞,如下圖所示:

QQ內的溫馨提醒

這樣會阻止部分用戶繼續(xù)訪問枪狂,從而無法很好的將用戶引導到活動想要推廣的產品/品牌頁面,如 App 的下載頁面等宋渔。因此二維碼的掃描測試不能少州疾。

舉個例子,如果二維碼掃描結果是應用的下載地址的話皇拣,可以使用應用寶的微下載地址來生成二維碼严蓖,這是不會被“溫馨提醒”的。

5. 使用 Gulp 拼合圖片

如果打算先布局氧急,后使用自動化工具(如:gulp-sprite-generator2)將圖片拼起來(即通過 css 生成精靈圖)颗胡,減少請求數,需要注意:在編寫 CSS 的時候吩坝,圖片寬高應固定杭措,圖片拼合后才能通過定位和顯示區(qū)域的寬高來展示圖片。

舉個例子钾恢,如果布局時 width: 100%; background-position: center;手素,使用工具拼合圖片后,該元素區(qū)域(100% 的寬度)內會將其他圖片顯示出來瘩蚪,這不是我們想要看到的泉懦。

建議先將圖片拼起來再布局,可以使用:gulp.spritesmith疹瘦,一步獲取合并的精靈圖和對應的 css 文件崩哩。

2017-11-25 更新:推薦一個自制的 Electron 客戶端工具 Splice(集合了常用的 gulp 插件,包括上述的兩種精靈圖生成插件)言沐。

補充兩個關于使用精靈圖的問題:

  1. 將多張圖片通過工具生成精靈圖和 css 文件
    如果你生成精靈圖時不小心使用了重復的圖片(文件夾里存在重復的圖片不同的名字)邓嘹,在手機上會出現(xiàn)圖片大小位置都出錯的情況,雖然電腦瀏覽器(Chrome)里正常险胰。
    解決:去掉那張重復的圖片重新生成一次精靈圖和 css 就好了汹押。
  2. 直接通過 css 文件生成精靈圖
    制作手機端的活動頁面時,經常需要翻頁的效果起便,可以的話最好每個頁面的圖片拼成一張精靈圖(工具提供正則篩選圖片路徑的功能)棚贾。盡量不要將所有頁面的圖片統(tǒng)一拼成一張,如果你拼完沒問題也就算了榆综,但是我這邊遇到過同上面第一點一樣的問題妙痹,手機上頁面效果出錯。
    解決:最后排查不出問題鼻疮,通過將多個頁面的圖片分成三張精靈圖才勉強度過難關怯伊。

6. 關于鏈接的分享-QQ

如果將頁面鏈接直接復制分享給其他人,在手機上接收鏈接消息的用戶可能會看到鏈接的相關信息判沟,如頁面標題耿芹、描述和圖片崭篡。相關信息設置方式如下:

<title>QQ中鏈接的標題由此處獲取</title>
<meta name="description" content="QQ中鏈接的描述由此處獲取">
<!-- QQ默認獲取的圖片有可能出現(xiàn)縮放問題,效果不佳猩系,可以通過如下方法進行設置 -->
<meta itemprop="image" content="http://*.*.com/static/images/share.png" />

可參考 手機QQ接口文檔:setShareInfo

問題:即使使用了如上的 image 設置方法中燥,還是沒能顯示預期圖片寇甸?
解決:確定下你發(fā)送的鏈接格式,會不會有所省略疗涉,如:somedomain/ 或者 somedomain/index拿霉,正確的應為 somedomain/index.html,才能正確解析到圖片咱扣。

如果是打開鏈接后绽淘,在QQ內置瀏覽器里選擇將頁面分享出去,那一般不會出錯闹伪。

7. 圖片壓縮

使用自動化工具 gulp-imagemin教程) 來壓縮圖片沪铭,效果舉例:101 KB => 80.7 KB。后來我使用了在線工具 Tinypng 又進行了一次壓縮偏瓤,效果舉例:(上面使用 gulp-imagemin 壓縮過的圖片)80.7 KB => 38.1 KB杀怠,可見光使用自動化工具來壓縮是不夠的,大部分圖片仍存在較大的壓縮空間厅克,可以再扔到 Tinypng 里壓縮一下看看赔退。

在線的 Tinypng 可以無限次使用,如果想要使用其 API 來進行壓縮自動化的話证舟,可以使用 gulp-tinypng 等插件硕旗,但是有每月壓縮圖片數量限制,每月前500張圖片免費女责,其他收費情況參考官網說明漆枚。使用其 API 還需要獲取 API Key,這里可以獲取抵知。
個人覺得想要免費的話使用 API 會有數量限制浪读,時刻惦記著數量有點心累,不如直接使用在線工具辛藻,也不麻煩~

8. Loading

首屏 Loading碘橘,代碼段分享,拿走即用~

function loading(){

    function Load(){}

    Load.prototype.loadImgs = function(urls,callback) {
        this.urls = urls;
        this.imgNumbers = urls.length;
        this.loadImgNumbers = 0;
        var that =this;
        for(var i=0;i<urls.length;i++){
            var obj = new Image();
            obj.src = urls[i];
            obj.onload = function(){
                that.loadImgNumbers++;
                callback(parseInt((that.loadImgNumbers/that.imgNumbers)*100));
            }
        }
    };

    var loader = new Load();

    loader.loadImgs([
        // 將所有需要加載的圖片地址寫于此處
        "http://domain/site/dist/img/XX.png",
        "http://domain/site/dist/img/XX.png",
        "http://domain/site/dist/img/XX.png",
        "http://domain/site/dist/img/XX.png",
        "http://domain/site/dist/img/XX.png",
        "http://domain/site/dist/img/XX.png",
        "http://domain/site/dist/img/XX.png"
    ],function(percent){
        // 假設顯示百分比的元素為 $(".percent")
        $(".percent").text(percent+'%');
        
        // 加載結束后吱肌,隱藏相應的 loading 或遮罩 
        if(percent==100) {
            $(".mask").css('display','none');
        }
    });
}

// 執(zhí)行 loading 方法
loading();

9. CSS 動畫屬性前綴 webkit

使用 CSS3 來制作動畫效果的話痘拆,webkit 前綴一定記得加,要不然在某些手機下動畫效果是沒有的氮墨。
如下:

-webkit-animation: f .8s 2s forwards ease-in-out;
animation: f .8s 2s forwards ease-in-out;

@-webkit-keyframes f {
    0% {
        opacity: 0;
        -webkit-transform: translate3d(750px,0,0);
        transform: translate3d(750px,0,0)
    }

    to {
        opacity: 1;
        -webkit-transform: translateZ(0);
        transform: translateZ(0)
    }
}

@keyframes f {
    0% {
        opacity: 0;
        -webkit-transform: translate3d(750px,0,0);
        transform: translate3d(750px,0,0)
    }

    to {
        opacity: 1;
        -webkit-transform: translateZ(0);
        transform: translateZ(0)
    }
}

推薦使用自動化工具來處理未加前綴的 CSS 文件纺蛆,如 gulp-autoprefixer吐葵。

10. Swiper.js & Animate.css

你只需要 Swiper.js 和 Animate.css 即可打造(簡單的)移動端 H5 活動頁面~
Swiper 是純 javascript 打造的滑動特效插件,面向手機桥氏、平板電腦等移動終端温峭。
Animate.css 是純 CSS 編寫而成的動畫庫,包含多種常見的 CSS 動畫字支。
引用 Swiper.js凤藏,同時在 Animate.css 中尋找需要的動畫效果復制粘貼進 css 文件即可,完全不必引用 Animate.css堕伪。

11. 使用 Meta 標簽進行頁面縮放

<!-- 以下代碼默認設計稿尺寸為 640 x 1134 -->
<meta id="viewport" content="width=device-width, user-scalable=yes,initial-scale=1" name="viewport" />
<script>
    var detectBrowser = function(name) {
        if(navigator.userAgent.toLowerCase().indexOf(name) > -1) {
            return true;
        } else {
            return false;
        }
    };
    var width = parseInt(window.screen.width);
    var scale = width/640;  // 根據設計稿尺寸進行相應修改:640=>?
    var userScalable = 'no';
    if(detectBrowser("qq/")) userScalable = 'yes';
    document.getElementById('viewport').setAttribute(
            'content', 'target-densitydpi=device-dpi,width=640,user-scalable='+userScalable+',initial-scale=' + scale); // 這里也別忘了改:640=>?
</script>

利用 meta 標簽對頁面進行縮放揖庄,使得我們可以直接根據設計稿來進行頁面的編寫,不用再進行單位的換算等等欠雌,省卻了很多麻煩蹄梢。

12. 微信二維碼問題

01:同一個頁面里要是有兩個二維碼,長按掃描總是只能掃出 左側/第一個 二維碼富俄。
解決:可視區(qū)域內只能出現(xiàn)一個二維碼禁炒。

02:使用 meta 標簽縮放頁面后長按二維碼圖片無反應。
解決:使用了以下代碼之后霍比,就能長按識別二維碼了~

<!--同一張二維碼圖片-->
<!--下面這張 opacity 為 0齐苛,隱藏起來,但是實際存在桂塞,并且寬為 100%凹蜂,屏幕有多大就多大-->
< img style="right:0; top:0; height: auto;width: 100%;opacity: 0;position: absolute;" src="二維碼圖片地址">
<!--下面這張是呈現(xiàn)給用戶看的-->
< img src="二維碼圖片地址" title="qrcode" alt="qrcode">
<!--PS: img 標簽前面的空格記得去掉,這里加上空格是因為簡書有 bug阁危,針對 img 標簽代碼渲染會出錯-->

參考

途牛Q2財報
2017年輕人花花花錢大報告

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末玛痊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子狂打,更是在濱河造成了極大的恐慌擂煞,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趴乡,死亡現(xiàn)場離奇詭異对省,居然都是意外死亡,警方通過查閱死者的電腦和手機晾捏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門蒿涎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惦辛,你說我怎么就攤上這事劳秋。” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵玻淑,是天一觀的道長嗽冒。 經常有香客問我,道長补履,這世上最難降的妖魔是什么添坊? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮箫锤,結果婚禮上贬蛙,老公的妹妹穿的比我還像新娘。我一直安慰自己麻汰,他們只是感情好速客,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布戚篙。 她就那樣靜靜地躺著五鲫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪岔擂。 梳的紋絲不亂的頭發(fā)上位喂,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天,我揣著相機與錄音乱灵,去河邊找鬼塑崖。 笑死,一個胖子當著我的面吹牛痛倚,可吹牛的內容都是我干的规婆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蝉稳,長吁一口氣:“原來是場噩夢啊……” “哼抒蚜!你這毒婦竟也來了?” 一聲冷哼從身側響起耘戚,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嗡髓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后收津,有當地人在樹林里發(fā)現(xiàn)了一具尸體饿这,經...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年撞秋,在試婚紗的時候發(fā)現(xiàn)自己被綠了长捧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡吻贿,死狀恐怖唆姐,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤奉芦,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布赵抢,位于F島的核電站,受9級特大地震影響声功,放射性物質發(fā)生泄漏烦却。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一先巴、第九天 我趴在偏房一處隱蔽的房頂上張望其爵。 院中可真熱鬧,春花似錦伸蚯、人聲如沸摩渺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摇幻。三九已至,卻和暖如春挥萌,著一層夾襖步出監(jiān)牢的瞬間绰姻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工引瀑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留狂芋,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓憨栽,卻偏偏與公主長得像帜矾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子屑柔,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359