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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...