成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

移動端rem布局的學(xué)習(xí)(基于自己寫的一個網(wǎng)易云播放頁面的思考)

he_xd / 1917人閱讀

摘要:最近在看關(guān)于移動端的響應(yīng)式布局,其中涉及到比較多的就是大小屬性的設(shè)置等等,今天自己就捋一捋的用法。然而萬一不能用該怎么辦啊,所以還是要學(xué)會自己寫原生的頁面布局,也就會有今天的這篇文章了。的使用是指相對于根元素的字體大小的單位。

對于一個前端的初學(xué)者來說,首先要做好的事就是切頁面了,切頁面不得不說的就是布局了,布局的重要性不言而喻,為了良好的用戶體驗,提出了許多不一樣的布局:響應(yīng)式布局,彈性布局,流動布局等等,也流入出了許多的框架。最近在看關(guān)于移動端的響應(yīng)式布局,其中涉及到比較多的就是大小屬性的設(shè)置:px、vw、vh、%、em、rem等等,今天自己就捋一捋rem的用法。

說在前面

一想到寫移動端的頁面,就要考慮自己寫的頁面能夠適應(yīng)各種不同的移動設(shè)備,起初想想要做到感覺好難啊,最初想到的就是用第三方的框架,用別人寫的東西應(yīng)該會很方便。然而萬一不能用該怎么辦啊,所以還是要學(xué)會自己寫原生的頁面布局,也就會有今天的這篇文章了。先看看自己用普通百分比、像素來寫的頁面和后來改用rem寫的頁面的對比:

普通百分百布局與rem布局的比較

小分辨率(375*667)

小分辨率(414*736)

上面是兩種小的分辨率,最后得到的效果不會很差,感覺差不多,現(xiàn)在還成大一點的分辨率,效果就不一樣了:

大分辨率

簡單的對比下就看出了效果。當(dāng)不用別人的框架,該怎么去寫。最容易想到的就是用百分比來寫,這種寫法對設(shè)備的寬度有用,寬度是固定的,對高度不起什么作用,大部分人的做法就是寬度用百分來設(shè)置,高度用px來設(shè)置,但這種的做法體驗并不是很好,用分辨率小的設(shè)備感覺不是很差,一旦換成了分辨率比較大的設(shè)備效果就差很多了,大部分的標(biāo)簽元素都會被拉伸。高度固定,換成了大的分辨率各種元素效果還是原來的,各種元素固定了大小,體驗并不是很好。

rem的使用

rem是指相對于根元素的字體大小的單位。簡單的說它就是一個相對單位,通過根元素進(jìn)行適配的。

普通使用

大部分是通過設(shè)置html的字體大小就可以控制rem的大小,例如:html的字體大小為20px,那么就說20px為1rem,接下來的所有元素的大小都基于這個比例來換算。這種的算法是存在問題的,當(dāng)我們計算頁面的寬度rem值得時候都是使用某一款移動設(shè)備的分辨率來計算的,下面的例子我用的是iphone6的分辨率375*667,它的寬度為375px,20px為1rem,那么375px就是18.75rem??聪旅娴拇a:



    
        
        
        
        
        
    
    
        
手手手手手手手手手手手手手手手手手手手手手手手
段段段段段段段段段段段段段段段段段段段段段段段
方方方方方方方方方方方方方方方方方方方方方方方方
哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦

上面的代碼在375667的分辨率下剛好能夠占滿寬度,當(dāng)你切換到其他的分辨率(如414736)時問題就來了,看圖:

這個問題的原因很簡單,這種寫法即使用的是rem也起不來作用,寬度和高度都是固定的,width為18.75rem就是375px,切換成其它分辨率(如414*736),它的寬度還是375px,空白處還是顯示出來了,很多人會認(rèn)為可以把寬度設(shè)置成百分比的形式,或者用媒介查詢@media,或是viewport設(shè)置中的那個deviceWidth()的方式來解決問題,當(dāng)然這些方式均能解決寬度的問題,然而高度的問題又該怎么辦呢?看下面:



    
        
        
        
        
        
        
        
    
    
        
手手手手手手手手手手手手手手手手手手手手手手手
段段段段段段段段段段段段段段段段段段段段段段段
方方方方方方方方方方方方方方方方方方方方方方方方
哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦

看效果:

看圖就知道了,寬度可以適應(yīng)不同的移動設(shè)備,然而高度一直都沒有發(fā)生變化,一直都是150px,頁面效果并不好看,分辨率大了,頁面被拉伸,高度顯得變小了。

正確使用

動態(tài)計算html的font-size,核心是切換不同移動設(shè)備通過js獲取設(shè)備寬度,然后按比例計算html的font-size的值,動態(tài)變化。

var d = document.documentElement;//獲取html元素
var cw = d.clientWidth || 750;
d.style.fontSize = (20 * (cw / 375)) > 40 ? 40 + "px" : (20 * (cw / 375)) + "px";

上述代碼解釋:

設(shè)計稿橫向分辨率為375(iphone6),計劃20px為1rem;

布局的時候,各元素的css尺寸= 20 * (設(shè)備寬度/設(shè)計稿豎向分辨率)。

完整代碼:

window.addEventListener(("orientationchange" in window ? "orientationchange" : "resize"), (function() {//判斷是屏幕旋轉(zhuǎn)還是resize
                function c() {
                    var d = document.documentElement;//獲取html元素
                    var cw = d.clientWidth || 750;
                    d.style.fontSize = (20 * (cw / 375)) > 40 ? 40 + "px" : (20 * (cw / 375)) + "px";
                }
                c();
                return c;
            })(), false);

上面的做法就可以動態(tài)的設(shè)置各種標(biāo)簽元素的寬和高,按比例的調(diào)試適應(yīng)不同的移動設(shè)備。例如下:
上面的代碼中是以iphone6為設(shè)計稿的,box1的height為7.5rem(150px),如果切換成iphone6 plus的大小,box1的height=(414/375)7.5=8.28rem,也就是8.2820=165.6px,與iphone6時的高度是不一樣的,寫頁面時會更加的美觀??葱Ч?br>

看上面顯示的效果就可以看出來,和計算出的結(jié)果是一樣的,方法正確。以后可以用了??纯凑w效果:

頁面元素完全沒有被拉伸的效果,按照一定的比例縮放,保持頁面效果美觀。

源碼


    
        
        
        
        
        
        
        
        
    
    
        
手手手手手手手手手手手手手手手手手手手手手手手
段段段段段段段段段段段段段段段段段段段段段段段
方方方方方方方方方方方方方方方方方方方方方方方方
哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦
寫在最后

終于寫完了這篇文章,感覺寫文章的過程就是再學(xué)習(xí)的過程,可以多做做;

最近在學(xué)習(xí)寫寫網(wǎng)易云的播放頁面,一做頁面就要考慮布局的事情,就思考了這方面的問題,記錄下來。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/112718.html

相關(guān)文章

  • 移動rem布局學(xué)習(xí)基于自己一個網(wǎng)易播放頁面思考

    摘要:最近在看關(guān)于移動端的響應(yīng)式布局,其中涉及到比較多的就是大小屬性的設(shè)置等等,今天自己就捋一捋的用法。然而萬一不能用該怎么辦啊,所以還是要學(xué)會自己寫原生的頁面布局,也就會有今天的這篇文章了。的使用是指相對于根元素的字體大小的單位。 對于一個前端的初學(xué)者來說,首先要做好的事就是切頁面了,切頁面不得不說的就是布局了,布局的重要性不言而喻,為了良好的用戶體驗,提出了許多不一樣的布局:響應(yīng)式布局,...

    wums 評論0 收藏0
  • 用vue全家桶寫一個“以假亂真”網(wǎng)易音樂

    摘要:關(guān)于路由,剛開始設(shè)計路由的時候想了很多,由于一開始的目標(biāo)就是網(wǎng)易云音樂的所有內(nèi)容,所以設(shè)計了三級路由,,大概這樣,點擊查看。 標(biāo)題略夸張了,但是這個從ui還原上已經(jīng)很接近官方版本了。雖然目前這個是很多人造過的輪子,但是可能每個人的實現(xiàn)方式都不一樣,自己寫一遍也會有許多收獲。 項目地址 預(yù)覽地址 api:ap使用的是一個開源的nodejs封裝的網(wǎng)易云音樂api,地址 技術(shù)棧 vue...

    clasnake 評論0 收藏0
  • 資源收集整理

    摘要:工作原因,最近一年斷斷續(xù)續(xù)寫了一點前端代碼,收集整理了一些資料,和大家共享。 工作原因,最近一年斷斷續(xù)續(xù)寫了一點前端代碼,收集整理了一些資料,和大家共享。 Github版本:Front-End Resource Collection 前端相關(guān)資源匯總 學(xué)習(xí)指導(dǎo) 精華文章 Web前端的路該怎么走?:文章超長,但是干貨超級多,值得反復(fù)精讀! 聽說2017你想寫前端?:適合于已經(jīng)度過了小白階...

    awesome23 評論0 收藏0
  • 資源收集整理

    摘要:工作原因,最近一年斷斷續(xù)續(xù)寫了一點前端代碼,收集整理了一些資料,和大家共享。 工作原因,最近一年斷斷續(xù)續(xù)寫了一點前端代碼,收集整理了一些資料,和大家共享。 Github版本:Front-End Resource Collection 前端相關(guān)資源匯總 學(xué)習(xí)指導(dǎo) 精華文章 Web前端的路該怎么走?:文章超長,但是干貨超級多,值得反復(fù)精讀! 聽說2017你想寫前端?:適合于已經(jīng)度過了小白階...

    antyiwei 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<