HTML5-基礎(chǔ)篇 ( 二 )-移動(dòng)端適配與調(diào)試

TZ : 看問(wèn)題的角度是很重要的,有的擅長(zhǎng)多角度被稱(chēng)為聰明,有的人從始至終固執(zhí)己見(jiàn)被稱(chēng)為死腦筋,一事無(wú)成

一 : 科普一分鐘

我們熟悉了在PC端進(jìn)行開(kāi)發(fā)網(wǎng)頁(yè),相對(duì)于移動(dòng)設(shè)備需要有哪些調(diào)整呢,才能設(shè)計(jì)出符合各個(gè)場(chǎng)景和機(jī)型的完美移動(dòng)網(wǎng)頁(yè).在眾多APP 中大多嵌入H5頁(yè)面開(kāi)發(fā),所以解決適配的問(wèn)題很重要.其實(shí)和移動(dòng)的原生適配想通,網(wǎng)頁(yè)適配很多也是用到比例或者說(shuō)是百分比來(lái)解決一下棘手問(wèn)題.但是還有更多的細(xì)致技巧,下面一一列舉.

二:教你用 python 創(chuàng)建局域網(wǎng)絡(luò)

首先我們做移動(dòng)適配,首先咱們要把材料準(zhǔn)備全,把網(wǎng)頁(yè)端做好了,但是我們需要一個(gè)載體來(lái)解決移動(dòng)端顯示問(wèn)題.

要想移動(dòng)端顯示我們做的網(wǎng)頁(yè)下面幾種通俗方式,但是只適合有條件的同學(xué)

(1).購(gòu)買(mǎi)空間域名

上傳頁(yè)面到服務(wù)器,綁定這個(gè)服務(wù)器的域名.通過(guò)購(gòu)買(mǎi)服務(wù)商的空間和域名.或者通過(guò)購(gòu)買(mǎi)云服務(wù)來(lái)獲取在線服務(wù),如阿里云,新浪云,騰訊云等等

(2)本地測(cè)試的話(huà)在PC架設(shè)IIS或者Apache,借助局域網(wǎng)來(lái)實(shí)現(xiàn)手機(jī)訪問(wèn).

如果大家覺(jué)得還是太麻煩了,那么只能教大家一種30秒搭建局域網(wǎng)的方法了

(3)

因?yàn)槲业氖荕AC所以拿來(lái)舉例,首先打開(kāi)終端檢查一下版本

python --version

然后選擇你想共享的文件夾

cd 你想共享的文件夾

為共享文件設(shè)置端口

python -m SimpleHTTPServer 9000

最后打開(kāi)手機(jī)輸入電腦IP地址進(jìn)行訪問(wèn)(拿我電腦地址舉例)

192.168.10.235:9000

是不是很簡(jiǎn)單,材料準(zhǔn)備好,下面研究一下具體適配問(wèn)題.

三 : Viewport設(shè)置

為了使桌面頁(yè)面能夠在移動(dòng)端正常顯示,移動(dòng)端瀏覽器虛擬出了叫viewport的顯示窗口,在不同設(shè)備中這一顯示窗口的大小不同,iOS設(shè)備為980像素,windowsPhone的寬度為1024像素.

為了使移動(dòng)設(shè)備能夠完整地顯示網(wǎng)頁(yè),盡可能不出現(xiàn)橫向滾動(dòng)條,viewport往往被瀏覽器自動(dòng)加以縮放以適應(yīng)屏幕寬度,例如將本身虛擬顯示980像素寬的頁(yè)面顯示窗口加以縮小,使其顯示在320像素的屏幕中.

在移動(dòng)頁(yè)面我們可以在<head>中添加meta標(biāo)簽,對(duì)viewport專(zhuān)門(mén)加以設(shè)置.

<meta name = "viewport" content="width=device-width,initial-scale=1.0 user-scalable = no , maximum-scale=1.0">

首先看一下沒(méi)有上述代碼的效果

沒(méi)有設(shè)置viewport

再看一下有上述代碼的效果

已經(jīng)設(shè)置viewport

分析:設(shè)置viewport首先適配了設(shè)備的寬度即為窗口的寬度,默認(rèn)窗口不縮放,以 1:1的比例提供移動(dòng)頁(yè)面瀏覽.用戶(hù)不可縮放,縮放最大值為1,相當(dāng)于鎖定頁(yè)面的縮放.避免用戶(hù)觸屏?xí)r影響瀏覽效果,

四 : 百分比布局

和寫(xiě)原生APP的相對(duì)布局一樣,移動(dòng)端頁(yè)面開(kāi)發(fā)很多用到百分比

我們先做一個(gè)小頁(yè)面然后規(guī)定它的不同約束 ,首先創(chuàng)建6個(gè)標(biāo)簽圖片.

<div class="comic">
<img src = "fate.png" alt="Fate">
<h1>Fate</h1>
</div>


<div class="comic">
<img src = "hulk.png" alt="Hulk">
<h1>Hulk</h1>
</div>

<div class="comic">
<img src = "superman.png" alt="Superman">
<h1>Superman</h1>
</div>


<div class="comic">
<img src = "captain.png" alt="Captain">
<h1>Captain</h1>
</div>


<div class="comic">
<img src = "wonder.png" alt="Wonder">
<h1>Wonder</h1>
</div>

<div class="comic">
<img src = "ironman.png" alt="Ironman">
<h1>Ironman</h1>
</div>

頁(yè)面效果

原始效果

(1)頁(yè)面內(nèi)外間距清零,字體和背景色,并且兩列輸出

*{
    margin:0;
    padding:0;
    
 }

 body{
     background:#f3f2ef;
     font-family:Tahoma, Geneva, sans-serif;
     
     }
.comic{
     
     width:50%;
     text-align:center;
     float:left;
     background:#e5e8e1;
     box-shadow:0 0 1px rgba(0,0,0,0.2) inset;
     padding:30px 0;
     margin: 10px 4%;
     
     }
兩列

(2)三列

同理只需要改width

.comic{
     
    width:33.33%;
     text-align:center;
     float:left;
     background:#e5e8e1;
     box-shadow:0 0 1px rgba(0,0,0,0.2) inset;
     padding:30px 0;
     margin: 10px 4%;
     
     }

但是圖片的大小是不變的當(dāng)我們縮小到一定程度就會(huì)有所擠壓,用比例解決圖片擠壓?jiǎn)栴}

.comic img{
         
         width:60%;
         
         }

解決文字的自適應(yīng)問(wèn)題 vwvh 相對(duì)字體大小單位來(lái)解決

.comic h1{
         color:#666;
         font-weight:normal;
         font-size:5vw;
         
         }  

vw 相對(duì)體系中,默認(rèn)將整個(gè)viewport的寬度設(shè)置為100vw,以此相對(duì)換算文字的大小.

(3)想要兩列,并且距離上邊,左邊和右邊有等距的距離,這種情況我們要把奇數(shù)的右側(cè)margin清零 用 nth-child偽類(lèi)選擇器

.comic:nth-child(even){
         
         margin-left:0;
         
         }
         width:44%;
     text-align:center;
     float:left;
     background:#e5e8e1;
     box-shadow:0 0 1px rgba(0,0,0,0.2) inset;
         margin:10px 4%;

效果圖


等距

四 : Flexbox 彈性布局

了解 Flexbox 又成為彈性框布局- Flexible Box Model.在傳統(tǒng)的定位方式各種float屬性,浮動(dòng)對(duì)于移動(dòng)來(lái)說(shuō)就是對(duì)渲染性能的消耗,在Flexbox提升了移動(dòng)的效能,我們不必去考慮 marg,padding,width,height這些煩人的東西,一切由Flexbox處理

同樣是上面頁(yè)面 接下來(lái)用Flexbox處理

body{
     background:#f3f2ef;
     font-family:Tahoma, Geneva, sans-serif;
     
     display:-webkit-flex;
     display:flex;
     
     -webkit-flex-direction:row;
     flex-direction:row;
     flex-wrap:wrap;
     
     }

上下排列

body{
    
    
      -webkit-flex-direction:column;
     flex-direction:column;
     }

可以去掉所以float marg width

.comic{
     
     text-align:center;
     background:#e5e8e1;
     box-shadow:0 0 1px rgba(0,0,0,0.2) inset;
     padding:30px 0;
     }

倒敘顯示

body{
      -webkit-flex-direction:column-reverse;
     flex-direction:column-reverse;
     }

橫向,同理很簡(jiǎn)單

body{
    
    
      -webkit-flex-direction:row;
     flex-direction:row;
     }

伸縮方式

參數(shù)分析 : 參數(shù) 1 : flew-grow 決定伸縮元素可擴(kuò)展空間的分配,1表示每個(gè)元素的可擴(kuò)展控件大小相等;
參數(shù) 2 :flew-shrink 決定來(lái)定義當(dāng)元素超過(guò)容器的大小后的壓縮比例,1 表示每個(gè)元素的壓縮能力相同
參數(shù) 3 : flew-basis 定義伸縮的基準(zhǔn)值,auto即自動(dòng)分配空間.

 .comic{
     
/*已完成代碼*/
     -webkit-flex:1 1 atuo;
     flex:1 1 auto;
     }

設(shè)置換行屬性

body{
  flex-direction:row;
  flex-wrap:wrap;

         }

五:雪碧圖

了解:移動(dòng)網(wǎng)頁(yè)中不能并行下載,只能串行完成一一下載等操作,因此多張圖片的下載時(shí)長(zhǎng)會(huì)很大.為了解決這一問(wèn)題,我們會(huì)用 CSS Sprites 也被稱(chēng)為雪碧圖

首先我們利用 Photoshop 來(lái)制作一張雪碧圖.

還是看代碼


<ul>
<li>Weather</li>
<li>Feature</li>
<li>Phone</li>
<li>Notebook</li>

</ul>

預(yù)處理

*{
    margin:0;
    padding::0;
    font-family:Tahoma, Geneva, sans-serif;
    
  }
  
  
  li{
      
      font-size:32px;
      color:#565656;
      border-bottom::1px solid #ccc;
      line-height:120px;
      text-indent:130px;
      position:relative;



     }

接下來(lái)通過(guò)在每個(gè) li 節(jié)點(diǎn)前面插入 before偽元素來(lái)作為icon顯示容器,在偽元素中,我們將 content屬性設(shè)置為空,使其不顯示內(nèi)容,并設(shè)置寬高.并設(shè)置sprite.png 我們制作好的雪碧圖 當(dāng)作背景圖片.

 li::before{
         
         content:"";
         width:96px;
         height:100px;
         background:url(sprite.png)  no-repeat;
         position:absolute;
         top:18px;
         left:12px;
         
         
         }

效果圖

圖片發(fā)自簡(jiǎn)書(shū)App

最后通過(guò)改變垂直位置完成最終顯示

li:nth-child(1)::before{
             
             background-position:0 0;
             
             }
             
    li:nth-child(2)::before{
             
             background-position:0 -100px;

             
             }
     
    li:nth-child(3)::before{
             
             background-position:0 -200px;

             }
     
     
    li:nth-child(4)::before{
             
            background-position:0 -300px;

             
             }
     

效果圖

圖片發(fā)自簡(jiǎn)書(shū)App

解析: 通過(guò)在垂直方向移動(dòng) -100像素,來(lái)完成分段顯示.

六:移動(dòng)交互和調(diào)試技巧

(1)交互

當(dāng)手指替換成了鼠標(biāo),有了哪些新的交互方法和定義呢.

首先我們寫(xiě)一個(gè)控件 class = "submit",這個(gè)現(xiàn)在都沒(méi)問(wèn)題了應(yīng)該,跳過(guò)此步驟,直接去完成交互代碼部分.

為submit 元素注冊(cè)事件監(jiān)聽(tīng) 當(dāng)手指觸摸時(shí)候觸發(fā)

submit.addEventListener("touchstart",submitForm);
    function submitForm(){
        
            //功能代碼

        
        }

在觸發(fā) touchstart事件同時(shí)也會(huì)產(chǎn)生一個(gè)event對(duì)象,我們可以求出觸摸點(diǎn)的個(gè)數(shù)

submit.addEventListener("gesturestart",editForm);
        function submitForm(event){
            
            submit.innerHTML = "觸摸點(diǎn)個(gè)數(shù)為" + event.touches.length;
            }

獲取觸摸點(diǎn)的x ,y 屬性, pageX pageY

function submitForm(event){
            
            submit.innerHTML = "觸摸點(diǎn)x位置" + event.touches[0].pageX;
            }

獲取用戶(hù)正在操作姿勢(shì) 會(huì)不斷觸發(fā) gesturechange事件

submit.addEventListener("gesturechange",changeForm);
function changeForm(event){
    submit.innerHTML = "手指的旋轉(zhuǎn)度為" + event.rotation + ",縮放值"+event.scale;
(2)調(diào)試技巧

以iOS為例子,蘋(píng)果為我們提供了一套有效的移動(dòng)調(diào)試方案, 設(shè)置 ->Safari->"高級(jí)"

接下來(lái)在 iphone 的Safari 訪問(wèn)頁(yè)面

設(shè)置

然后切換到Mac-Safari-開(kāi)發(fā)中,對(duì)頁(yè)面調(diào)試,我們可以直接修改調(diào)試節(jié)點(diǎn)元素,iphone 會(huì)做出相應(yīng)的反應(yīng).

web檢查器

有了如此直觀的調(diào)試工具,制作移動(dòng)端頁(yè)面的效率大大提高.

七 : 總結(jié)

之所以要進(jìn)行移動(dòng)端的適配,就是因?yàn)镻C和移動(dòng)兩者的分辨率存在明顯差別.對(duì)于移動(dòng)端,屏幕尺寸小得多,而桌面頁(yè)面是橫向的,移動(dòng)端是縱向的.

兩者文件的大小尺寸也有不同,太大的頁(yè)面對(duì)于移動(dòng)流量有很大壓力,需要加載時(shí)間也很長(zhǎng),因此要盡量精簡(jiǎn),進(jìn)行適配.

兩者性能不同,桌面需要更好的渲染,特效,特性,而移動(dòng)需要的相對(duì)要低很多.

兩者的交互方式不同,移動(dòng)是用手指觸發(fā)事件,而PC是用鼠標(biāo)鍵盤(pán)來(lái)操作.兩者的差異還存在于兼容性 等等的各個(gè)地方,所以做適配是必要的選擇.簡(jiǎn)單的敘述了移動(dòng)端H5的適配.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茬末,一起剝皮案震驚了整個(gè)濱河市种冬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌躯砰,老刑警劉巖捷绒,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡讯壶,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)湾盗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)伏蚊,“玉大人,你說(shuō)我怎么就攤上這事格粪□锏酰” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵帐萎,是天一觀的道長(zhǎng)比伏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)疆导,這世上最難降的妖魔是什么凳怨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮是鬼,結(jié)果婚禮上肤舞,老公的妹妹穿的比我還像新娘。我一直安慰自己均蜜,他們只是感情好李剖,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著囤耳,像睡著了一般篙顺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上充择,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天德玫,我揣著相機(jī)與錄音,去河邊找鬼椎麦。 笑死宰僧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的观挎。 我是一名探鬼主播琴儿,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嘁捷!你這毒婦竟也來(lái)了造成?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤雄嚣,失蹤者是張志新(化名)和其女友劉穎晒屎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鼓鲁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年履肃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坐桩。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尺棋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绵跷,到底是詐尸還是另有隱情膘螟,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布碾局,位于F島的核電站荆残,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏净当。R本人自食惡果不足惜内斯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望像啼。 院中可真熱鬧俘闯,春花似錦、人聲如沸忽冻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)僧诚。三九已至遮婶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間湖笨,已是汗流浹背旗扑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留慈省,地道東北人臀防。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像辫呻,于是被迫代替她去往敵國(guó)和親清钥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

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

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案放闺? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評(píng)論 1 92
  • 剛開(kāi)始做移動(dòng)端web開(kāi)發(fā)的同學(xué)應(yīng)該都碰到過(guò)頁(yè)面適配問(wèn)題,為什么我在開(kāi)發(fā)手機(jī)上調(diào)試好的頁(yè)面在其他手機(jī)會(huì)有這樣或那樣的...
    留七七閱讀 19,299評(píng)論 5 80
  • 在移動(dòng)互聯(lián)網(wǎng)快速發(fā)展的今天缕坎,手機(jī)的種類(lèi)和尺寸越來(lái)越多怖侦,作為前端的小伙伴們可能會(huì)越來(lái)越頭疼,但又不得不去適配一款又一...
    keenjaan閱讀 26,793評(píng)論 9 86
  • 經(jīng)歷: 學(xué)到: 經(jīng)驗(yàn):
    葶寳寳閱讀 176評(píng)論 0 2
  • 遠(yuǎn)際,天邊 不曾被人記起的斜陽(yáng) 六月初匾寝,梅雨江淮 風(fēng)雨飄搖搬葬,留下清冷的風(fēng) 那風(fēng),是炎熱的夢(mèng) 詮釋著渴望的滿(mǎn)足 無(wú)數(shù)...
    蘭因素果閱讀 135評(píng)論 0 0