日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

谈谈我的移动端rem适配方案

發布時間:2024/4/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈谈我的移动端rem适配方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近有點懷疑人生,畢竟一個人寫前端,有時候會懷疑自己理解的一些東西包括用法有沒有符合標準。趁著這陣子閑下來,翻了翻別人的rem適配博客,發現有點繞口,怪自己是個強迫癥,啥都要自己去試試結果并從中理解,趁著這段時間有點閑就整理了一下自己的移動端rem適配方案:

  1.思路很簡單,首先我們得明白一樣東西,就是viewport,簡單的說就是我們打開谷歌瀏覽器模擬手機不同型號時看到的不同像素比例大小,i5為320x568,i6為375x667,其它的就不一一列舉了,現在假設我們ui給出的設計圖大小是750x1334的基準,也就是i6的viewport的兩倍大小。那么我就會通過js來自定義根元素的字體像素大小:如下:

    var w = document.documentElement.clientWidth,
     ? fz = w * 20 / 375;
    document.getElementsByTagName('html')[0].style.fontSize = fz + 'px';

  解釋一下=>clientWidth也就是我們經常所說的viewport視口寬度大小,除以375是因為設計稿是基于750x1334的基準做出來的,也就是i6設備device-width的兩倍寬度大小(375px),這個寬度大小可以根據設計圖實際大小自定義,假設設計圖的寬度大小是640px,那么就要將375px換成640/2=320px大小;

      =>而20的意義是用來自定義你要設置的viewport的device-width為375px下的根字體大小,可隨意更改,因此設定了上面一段代碼后你會看到谷歌瀏覽器模擬下的設備為i6(375pxX667px)的html元素上多了style="font-size:20px"這個樣式,也就是我們自己定義的根字體的像素大小,當然不能少了window.onresize事件讓視口被改變時自動算出并跟新html根字體大小,所以完整的代碼是這樣的:     

Window.οnlοad=window.οnresize=function?()?{
            var?w?=?document.documentElement.clientWidth,
            fz?=?w?*?20?/?375;
            document.getElementsByTagName('html')[0].style.fontSize?=?fz?+?'px';
            }, 那么此時1rem就相當于20px=>(html根目錄字體大小),于是我們可以通過設計圖中某一塊元素的標記大小來調整它對應的rem值,比如設計圖上(基于750x1334的基準)某一個logo的寬度為100px,那么寫成rem樣式就是100/2*(1/20)=2.5rem,為什么要除以2呢,不要忘了設計圖寬度750px是i6設備viewport的兩倍寬度大小(375px)。當然,可以通過sass的@mixin()自定義方法設定一個缺省變量將轉化公式100/2*(1/20)寫在該方法中,sass會自動幫你完成轉換,寫其它元素樣式時就可以@include該方法啦,關于sass的使用可以看這篇文章=>http://www.ruanyifeng.com/blog/2012/06/sass.html 這樣子基本上就實現了rem適配,原理就是在你轉換成不同型號手機時1rem的相對大小==html根字體大小,而html根字體大小是會隨時變動的,1rem相對大小也就會跟著變動.

轉載于:https://www.cnblogs.com/lpggo/p/7847097.html

總結

以上是生活随笔為你收集整理的谈谈我的移动端rem适配方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。