前端作品集(二)移動端頁面開發--攜程網

隨著移動設備的普及的普及,人們越來越習慣使用移動設備來訪問網頁,所以學會如何開發移動端頁面是一個前端必備的技能。

一、頁面的整體布局

先上圖,做完后的效果如下圖所示:


網站預覽

從圖中很容易發現,整個頁面有以下一部分組成:

  1. 頁頭和頁腳
  2. 輪播圖,也就是banner,作為廣告展示部分
  3. 整個網站的導航部分
  4. 攜程的產品位
  5. 活動部分,分為特賣匯和熱門活動兩部分

二、HTML結構

3-1. HTML整體結構

由于移動端對各種HTML5和CSS3的新特性的支持和好,所以可以采用HTML5的新標簽屬性內容,如下:

<head>
    <meta charset="UTF-8">
    <title>攜程在手·說走就走</title>
    <meta name=viewport content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no,minimal-ui">
</head>
<body>
    <!-- 頭部 -->
    <header></header>
    <!-- banner -->
    <section class="banner"></section>

    <!-- 導航部分 -->
    <nav></nav>
    <!-- 產品 -->
    <section class="products"></section>
    <!-- 特賣匯 -->
    <section class="temaihui"></section>
    <!-- 熱門活動 -->
    <section class="huodong"></section> 
    <!-- 頁腳 -->
    <footer></footer>
</body>
</html>

注意,由于是移動端的頁面,所以需要加上視口標簽,即
<meta name=viewport>
后面content跟的是一些具體屬性,如設備寬度,縮放程度等,有興趣的同學可以自己去了解下。

3-2. 詳細的HTML書寫

頭部由兩個div構成,一個包裹input搜索框,一個作為用戶中心

特賣匯部分采用了定義列表dl、dd、dt的展示方式

活動的頭部統一采用h3包裹標題,div攜帶右邊的圖文

剩余的部分都是采用無序列表的形式展現ul、li,在li里面寫具體的信息

網頁的底部使用a標簽包裹一些跳轉鏈接

三、CSS編寫

使用了便于頁面縮放的單位rem,作為編寫單位,配合百分比布局實現整體框架布局,圓角部分是由border-radius實現的。當該屬性的值為50%,就能顯示一個圓,常用該特性做頭像框。

頭部,采用固定定位fixed的方式布局,user部分使用絕對定位,定位到頁面的右上角,搜索寬的大盒子寬度為100%;使用padding-right流出右邊user的位置,內部的input設為100%即可

剩下的部分,都是采用父盒子寬度為100%,子元素根據需求分配,如33%的導航部分,50%的活動部分

由于有的地方要加上邊框和內邊距,默認的盒模型是采用向外擴張的方式的,所以一旦加上邊框或者內邊距就會超過100%的寬度,變為上下兩行排列,這不是我們需要的,故每一處用到的邊框的標簽,都要加上box-sizing為boder-box的聲明,讓實際分配寬度等于分配的百分比,讓盒子內部留出邊框和內邊距的空間。

四、移動端的輪播效果

移動端的輪播效果的觸發是由觸摸事件觸發的,不同于PC端的點擊事件,故要采用新的書寫方式。

首先執行一個初始化函數,讓輪播圖的寬度等于設備的寬度

function set(){
            //var windowWidth = document.documentElement.clientWidth;
            var windowWidth = document.documentElement.clientWidth;
            var bannerWidth = parseInt(getComputedStyle(banner)["width"]);
            //設置banner高度
            banner.style.height = bannerWidth / (1242 / 248) + "px";

            //設計圖540寬,540狀態下的font-size我們自己設置了一個15px。
            //所以當前的字號就要按比例來:
            // document.documentElement.style.fontSize = 15 * (windowWidth / 540) + "px";
        }

接著寫事件監聽函數,移動的觸摸事件touch,有三部分組成,分別為touchstart,touchmove和touchend

//事件監聽
        banner.addEventListener("touchstart",touchstartHandler,false);
        banner.addEventListener("touchmove",touchmoveHandler,false);
        banner.addEventListener("touchend",touchendHandler,false);

移動端觸摸,又分為點擊和滑動兩種,判斷的依據就是滑動的距離和操作的時間戳(開始觸摸時的時間減去結束觸摸時的時間)

//如果你像右邊滑動超過了屏幕的一半,或者你向右邊滑動且時間小于500,就認為滑動成功
            if(distance >= windowWidth / 2 || (distance > 30 && time < 300))

然后根據具體的左右滑動做相應的處理即可。

五、總結

移動端頁面的開發,能采用百分比布局的地方盡量采用百分比布局,如果一定要寫單位,那么請用rem或者em(不推薦)為單位,便于使用@media時放大或縮小整個頁面,還有,在開發移動端時,一些新的特性,能使用的就放心大膽的使用,如果實在不知道能不能用,可以訪問該網站can i use.

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

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,098評論 25 708
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,796評論 1 92
  • 剩余參數(rest parameter)語法允許我們將一個不定數量的參數表示為一個數組。 參數默認值
    顛倒的黑白閱讀 408評論 0 0
  • 吳聘走了,周瑩哭得撕心裂肺,世間最寵她的那個人不在了,從此,她生無可戀,不如隨他一起走,生死相隨,成全彼此的情意。...
    葉瑩閱讀 1,434評論 0 2
  • 每次啟動vue的時候都要修改一次端口號,也就是每次修改一次端口號只能啟動一次npm run dev 關閉在啟動時就...
    _ethan_閱讀 4,280評論 0 1