1. 程式人生 > >H5頁面開發之頁面基本結構佈局

H5頁面開發之頁面基本結構佈局

H5頁面主要藉助HTML5技術(例如CSS3媒體查詢、CSS3動畫、Canvas等),將圖、文、動畫、視訊、音訊等媒體形式進行合理組合,常用於邀請函、小遊戲、品牌展示、抽獎等,主要在移動社交環境如微信中傳播。

單頁Web應用(SPA)的模式是H5頁面最常用的一種模式,整個H5頁面只需要單個HTML 檔案,通常瀏覽器一開始會載入必需的HTML、CSS和JavaScript,所有的操作都在這個HTML上,通過JavaScript控制DOM操作來完成。

在下面的結構中,核心原理是,每一個包含page類名的DOM元素為一個可見的頁面,通過控制不同的page元素,來實現對頁面的進場出場的控制。本文只列出來一個簡單的HTML結構,和部分的css,當然如果想實現炫酷的效果和豐富的互動,還需要很多其他的模組,例如預載入、音訊視訊處理的JS。

PS:工作中的一些H5不方便公開,想著單獨做作品放在部落格裡,尋找好的方案和設計。。。

html檔案

<!DOCTYPE HTML>
<html>

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1 user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes"
/>
<meta name="apple-mobile-web-app-status-bar-style" content="black" /> <meta name="format-detection" content="telephone=no, email=no" /> <meta name="full-screen" content="true" /> <meta name="screen-orientation" content="portrait" /> <meta name="x5-fullscreen" content="true"
/>
<meta name="360-fullscreen" content="true" /> <title>基本結構</title> <link href="css/common.css" rel="stylesheet" /> <link href="css/index.css" rel="stylesheet" /> <script> // 統計程式碼 </script> </head> <body> <!-- 如果是在微信裡執行,在頁面的最上方放一張隱藏的圖片,作為預設的分享圖片 --> <div style="display:none;"> <img src="http://7xlzdr.com2.z0.glb.qiniucdn.com/img/share.jpg"> </div> <div class="page cssloader "> <div class="loader-inner ball-scale-multiple"> <div></div> <div></div> <div></div> </div> </div> <!-- loading --> <div class="page p0"> <img src="img/loading_m_colorful.gif" alt="" class="p0-loading"> <p class="p0-process">0</p> </div> <!-- 第1頁 --> <div class="page p1 "> <div class="content"> <img src="img/niubi.jpg" alt="" class="p1-aimg"> <div class="btn-common p1-btn-alert btn-touchable">彈框</div> <div class="btn-common btn-next ">下一頁</div> <div class="btn-common btn-prev ">上一頁</div> </div> </div> <!-- 第2頁 --> <div class="page p2 "> <img src="img/niubi.jpg" alt="" class="p2-aimg"> <div class="btn-common p2-btn-alert btn-touchable">彈框</div> <div class="btn-common btn-next btn-touchable">下一頁</div> <div class="btn-common btn-prev btn-touchable">上一頁</div> </div> <!-- 第3頁 --> <div class="page p3 "> <div class="btn-common p3-btn-alert btn-touchable">分享</div> <div class="btn-common btn-next btn-touchable">下一頁</div> <div class="btn-common btn-prev btn-touchable">上一頁</div> </div> <!-- 第4頁 --> <div class="dialog1 dialog"> <div class="dialog1-box"> <img src="img/alert1.png" alt="" class="dialog1-bg"> <div class="btn-common dialog1-btn-get btn-touchable">點選使用</div> </div> </div> <!-- 第5頁 --> <div class="dialog2 dialog "> <div class="dialog2-box"> <img src="img/alert2.png" alt="" class="dialog2-bg"> <div class="btn-common dialog2-btn-ok btn-touchable">確認</div> </div> </div> <!-- 第6頁 --> <div class="dialog0 dialog "> <img src="img/sharehint.png" alt="" class="dialog0-hint"> </div> <script> var app = app || { currentPage: 0, pages: {}, dialogs:{}, common: {} }; </script> <script type="text/javascript"></script> </body> </html>

css檔案

@charset "utf-8";
html {
  font-size: 10px
}

body {
  width: 100%;
  height: 100%;
  position: absolute;
  background: #fff;
}


/*********************************************************/
.dialog,
.page {
  width: 100%;
  max-width: 600px;
  height: 100%;
  display: none;
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  overflow: hidden;
}

.dialog {
  background: rgba(0, 0, 0, 0.8);
  z-index: 9999;
}

.content {
  height: 100%;
  width: 100%;
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate3d(-50%, -50%, 0);
  transform: translate3d(-50%, -50%, 0);
  outline: 1px solid red;
}

.btn-common {
  background: rgba(0, 0, 0, 0.6);
  position: absolute;
  width: 8rem;
  height: 3.5rem;
  line-height: 3.5rem;
  font-size: 1.8rem;
  color: #fff;
  text-align: center;
}

.btn-next {
  bottom: 1rem;
  right: 1rem;
}

.btn-prev {
  bottom: 1rem;
  left: 1rem;
}

.btn-touchable.touched {
  background: rgba(0, 0, 0, 0.3);
  margin-bottom: -2px;
}