rem自適應佈局小結001

来源:http://www.cnblogs.com/zoomingos/archive/2017/12/20/8071974.html
-Advertisement-
Play Games

在最近的移動端佈局當中,最炙手可熱的方式便是使用rem進行元素的佈局。以下便是從最近的文章中所總結出來的一點東西。 首先,我們必須有以下的疑問: rem的本質是什麼? rem如何實現自適應佈局? 如何根據設計稿來調整rem的值? rem佈局是能純CSS還是必須JS進行輔助? 接著,我們來稍微解答或者 ...


在最近的移動端佈局當中,最炙手可熱的方式便是使用rem進行元素的佈局。以下便是從最近的文章中所總結出來的一點東西。

首先,我們必須有以下的疑問:

rem的本質是什麼?

rem如何實現自適應佈局?

如何根據設計稿來調整rem的值?

rem佈局是能純CSS還是必須JS進行輔助?

接著,我們來稍微解答或者解決以上的問題

一.rem的自適應原理

rem(font size of the root element)是指相對於根元素的字體大小的單位,既是一個相對的計量單位。而於此類似的便是em(font size of the element)是指相對於父元素的字體大小的單位。所以,兩個都是相對計量單位。區別在於一個相對於根元素,一個相對於父元素。rem就是根據HTML的font-size大小來進行的變化。基於該原理,可以在每一個設備下根據設備的寬度設置對應的html字型大小,從而實現自適應佈局。

二.rem 的值

目前有兩種,一種是根據js來調整html的字型大小,另一種則是通過媒體查詢來調整字型大小。

三.移動端使用rem佈局

  在採用rem之前移動端的主流適配方案

  1.流式佈局(百分比佈局)

  優點: 簡單方便,使用簡單,只需固定高度即可,寬度自適應 ;

  缺點: 在大屏幕的手機下顯示效果會變成有些頁面元素寬度被拉的很長,但是高度還是和原來一樣,實際顯示非常的不協調;

  2.固定寬度

  優點: 與設備寬度做等比縮放 ;

  缺點: 在大屏幕手機下兩邊是留白的,還有一個就是大屏幕手機下看起來頁面會特別小,操作的按鈕也很小,手機淘寶首頁起初是這麼做的,但最後改版了,採用了rem;

  3.響應式做法

  優點:可以節約成本,不用再專門為自己的網站做一個webapp的版本,所以一般都是中小型的門戶或者博客類站點會採用響應式的方法從web page到web app直接一步到位;

  缺點:工作量大,維護性難,這種方式在國內很少有大型企業的複雜性的網站在移動端用這種方法去做; 

  採用rem的優勢

  開頭提過rem是指相對於根元素的字體大小的單位,網頁中的根元素指的是html我們通過設置html的字體大小就可以控制rem的大小。

  

html{
  font-size:10px;
} .btn{
  width:6rem;
  height
:3rem;
  line-height
:3rem;
  font-size
:1.2rem;
  border
: 1px solid #333;
  color
: #333;
  border-radius
: 0.5rem;
  text-align
: center;
  margin
: 10px auto;
} 

 

 

  此時,我們會發現整個按鈕大小是60px*30px。如果我們將根元素的font-size更改為20px,按鈕就會變成120px*60px。是之前的等比放大。

  所以。我們僅僅是改變了根元素html的font-size,而.btn元素的width,height的rem屬性不變,就實現了按鈕在web中的改變。

  所以,得出

  1rem = 10px 在根元素的 font-size = 10px 的時候;

  1rem = 20px 在根元素的 font-size = 20px 的時候;

  1rem = 40px 在根元素的 font-size = 40px 的時候;

  在上面兩個例子中我們發現第一個案例按鈕是等比例放大到第二個按鈕,html font-size的改變就會導致按鈕的大小發生改變,我們並不需要改變先前給按鈕設置的寬度和高度,其實這就是我們最想看到的。

  正是基於這個出發,我們可以在每一個設備下根據設備的寬度設置對應的html字型大小,從而實現了自適應佈局。

三.現在rem主流的適配有兩種方案:  

  1.rem隨設備寬度做自適應,scale值固定為1 ;
  2.rem隨設備寬度做自適應,viewport進行縮放,scale值不固定;

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 其中容易忽略的一點是manifest.json文件。plus下加入如下配置: 然後,替換splash下的啟動png圖片。 ...
  • 一,使用Newsstand Kit API 蘋果公司在iOS5之後提供了電子報刊雜誌開發API-Newsstand Kit.Newsstand Kit 只有3個類;NKLibrary,NKIssue和NKAssetDownload. NKAssetDownload類封裝了要下載的報刊雜誌資源類。這些 ...
  • >>adb devices常見錯誤: >>解決方案彙總 檢查埠是否占用:netstat -ano | findstr 5037 | findstr LISTENING 檢查占用應用:tasklist | findstr PID adb nodaemon server —— 可以列印詳細信息 若占用 ...
  • 1、APP跳轉 2、APP功能跳轉 3、系統功能調用 1、APP跳轉 1、設置App的URL Types(別的APP打開你的APP的地址)(項目 - TARGETS - APP icon - info - (拉到最下)URL Types ) URL Schemes:填上,你要給其他應用調用的URL地 ...
  • HBuilder開發iPad程式不能全屏顯示的解決方法: targets選擇HBuilder=>Deployment Info=> devices選擇Universal即可 ...
  • 1.現有的幾種埋點技術的實現原理和優劣分析 (1)代碼埋點:將收集數據的代碼直接寫在需要的地方,當用戶點擊某個控制項或者打開某個頁面時調用到該部分代碼完成數據的收集。 優勢:準確性高,收集數據和發送數據都能精確控制,同時能方便的設置自定義屬性,自定義控制項,自定義View等。 劣勢:埋點工作量大,更新代 ...
  • 項目開發中,有時候我們需要將本地的文件上傳到伺服器,簡單的幾張圖片還好,但是針對iPhone裡面的視頻文件進行上傳,為了用戶體驗,我們有必要實現斷點上傳。其實也不是真的斷點,這裡我們只是模仿斷點機制。 需求 既然需要上傳文件,那最好要有一個上傳列表界面,方面用戶對上傳中的文件進行實時管理。這裡我簡單 ...
  • 一直以來,大家都苦惱怎麼實現微信公眾帳號可以接入客服,也因此很多第三方介面平臺也開發客服系統CRM系統,不過不是操作複雜就是成本太高。今天分享一個低成本又簡便的方法,讓你的公眾帳號接入QQ客服。下麵介紹具體的方法:1、首先,這個方法目前微信最新的手機版本都是適用的,測試過微信5.0安卓版本還有點問題 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...