2021年3月-第02階段-前端基礎-移動WEB開發-移動WEB開發_rem佈局

来源:https://www.cnblogs.com/minvenus/archive/2022/09/18/Mobileweb_rem_layout.html
-Advertisement-
Play Games

移動web開發之rem佈局 rem基礎 rem單位 rem (root em)是一個相對單位,類似於em,em是父元素字體大小。 不同的是rem的基準是相對於html元素的字體大小。 比如,根元素(html)設置font-size=12px; 非根元素設置width:2rem; 則換成px表示就是2 ...


移動web開發之rem佈局

rem基礎

rem單位

rem (root em)是一個相對單位,類似於em,em是父元素字體大小。

不同的是rem的基準是相對於html元素的字體大小。

比如,根元素(html)設置font-size=12px; 非根元素設置width:2rem; 則換成px表示就是24px。

/* 根html 為 12px */
html {
   font-size: 12px;
}
/* 此時 div 的字體大小就是 24px */       
div {
    font-size: 2rem;
}

rem的優勢:父元素文字大小可能不一致, 但是整個頁面只有一個html,可以很好來控制整個頁面的元素大小。

媒體查詢

什麼是媒體查詢

媒體查詢(Media Query)是CSS3新語法。

  • 使用 @media查詢,可以針對不同的媒體類型定義不同的樣式

  • @media 可以針對不同的屏幕尺寸設置不同的樣式

  • 當你重置瀏覽器大小的過程中,頁面也會根據瀏覽器的寬度和高度重新渲染頁面

  • 目前針對很多蘋果手機、Android手機,平板等設備都用得到多媒體查詢

媒體查詢語法規範

  • 用 @media開頭 註意@符號

  • mediatype 媒體類型

  • 關鍵字 and not only

  • media feature 媒體特性必須有小括弧包含

@media mediatype and|not|only (media feature) {
    CSS-Code;
}
  1. mediatype 查詢類型

將不同的終端設備劃分成不同的類型,稱為媒體類型

  1. 關鍵字

關鍵字將媒體類型或多個媒體特性連接到一起做為媒體查詢的條件。

  • and:可以將多個媒體特性連接到一起,相當於“且”的意思。

  • not:排除某個媒體類型,相當於“非”的意思,可以省略。

  • only:指定某個特定的媒體類型,可以省略。

  1. 媒體特性

每種媒體類型都具體各自不同的特性,根據不同媒體類型的媒體特性設置不同的展示風格。我們暫且瞭解三
個。

註意他們要加小括弧包含

  1. 媒體查詢書寫規則

註意: 為了防止混亂,媒體查詢我們要按照從小到大或者從大到小的順序來寫,但是我們最喜歡的還是從小到
大來寫,這樣代碼更簡潔

less 基礎

維護css弊端

CSS 是一門非程式式語言,沒有變數、函數、SCOPE(作用域)等概念。

  • CSS 需要書寫大量看似沒有邏輯的代碼,CSS 冗餘度是比較高的。

  • 不方便維護及擴展,不利於復用。

  • CSS 沒有很好的計算能力

  • 非前端開發工程師來講,往往會因為缺少 CSS 編寫經驗而很難寫出組織良好且易於維護的 CSS 代碼項目。

Less 介紹

Less(LeanerStyle Sheets 的縮寫)是一門 CSS擴展語言,也成為CSS預處理器。

做為 CSS的一種形式的擴展,它並沒有減少CSS的功能,而是在現有的CSS語法上,為CSS加入程式式語言的特
性。

它在CSS 的語法基礎之上,引入了變數,Mixin(混入),運算以及函數等功能,大大簡化了 CSS 的編寫,並且降
低了 CSS的維護成本,就像它的名稱所說的那樣,Less可以讓我們用更少的代碼做更多的事情。

Less中文網址: http://lesscss.cn/

常見的CSS預處理器:Sass、Less、Stylus

一句話:Less是一門 CSS 預處理語言,它擴展了CSS的動態特性。

Less安裝

①安裝nodejs,可選擇版本(8.0),網址: http://nodejs.cn/download/

②檢查是否安裝成功,使用cmd命令(win10是window+r 打開運行輸入cmd) ---輸入“node –v”查看版本即可

③基於nodejs線上安裝Less,使用cmd命令“npm install -g less”即可

④檢查是否安裝成功,使用cmd命令“ lessc -v ”查看版本即可

Less 使用之變數
變數是指沒有固定的值,可以改變的。因為我們CSS中的一些顏色和數值等經常使用。

@變數名:值;
  • 必須有@為首碼

  • 不能包含特殊字元

  • 不能以數字開頭

  • 大小寫敏感

@color: pink;

Less 編譯 vocode Less 插件

Easy LESS 插件用來把less文件編譯為css文件

安裝完畢插件,重新載入下 vscode。

只要保存一下Less文件,會自動生成CSS文件。

Less 嵌套

// 將css改為less
#header .logo {
  width: 300px;
}

#header {
    .logo {
       width: 300px;
    }
}

如果遇見 (交集|偽類|偽元素選擇器) ,利用&進行連接

a:hover{
    color:red;
}
a{
  &:hover{
      color:red;
  }
}

Less 運算

任何數字、顏色或者變數都可以參與運算。就是Less提供了加(+)、減(-)、乘(*)、除(/)算術運算。

/*Less 裡面寫*/
@witdh: 10px + 5;
div {
    border: @witdh solid red;
}
/*生成的css*/
div {
  border: 15px solid red;
}
/*Less 甚至還可以這樣 */
width: (@width + 5) * 2;
  • 乘號(*)和除號(/)的寫法

  • 運算符中間左右有個空格隔開 1px + 5

  • 對於兩個不同的單位的值之間的運算,運算結果的值取第一個值的單位

  • 如果兩個值之間只有一個值有單位,則運算結果就取該單位

rem適配方案

①讓一些不能等比自適應的元素,達到當設備尺寸發生改變的時候,等比例適配當前設備。

②使用媒體查詢根據不同設備按比例設置html的字體大小,然後頁面元素使用rem做尺寸單位,當html字體大小變
化元素尺寸也會發生變化,從而達到等比縮放的適配。

技術方案:

①less+rem+媒體查詢

②lflexible.js+rem

總結:

兩種方案現在都存在。

方案2 更簡單,現階段大家無需瞭解裡面的js代碼。

rem實際開發適配方案1

①假設設計稿是750px

②假設我們把整個屏幕劃分為15等份(劃分標準不一可以是20份也可以是10等份)

③每一份作為html字體大小,這裡就是50px

④那麼在320px設備的時候,字體大小為320/15就是 21.33px

⑤用我們頁面元素的大小除以不同的 html字體大小會發現他們比例還是相同的

⑥比如我們以750為標準設計稿

⑦一個100✖100像素的頁面元素在 750屏幕下, 就是 100/ 50 轉換為rem 是 2rem2rem 比例是1比1

⑧320屏幕下, html字體大小為21.33 則 2rem= 42.66px 此時寬和高都是 42.66 但是寬和高的比例還是 1比1

⑨但是已經能實現不同屏幕下 頁面元素盒子等比例縮放的效果

總結:

①最後的公式:頁面元素的rem值 = 頁面元素值(px) / (屏幕寬度 / 劃分的份數)

②屏幕寬度/劃分的份數就是 htmlfont-size 的大小

③或者:頁面元素的rem值 = 頁面元素值(px) / html font-size 字體大小

蘇寧首頁

蘇寧首頁地址 : 蘇寧首頁

1、 技術選型

方案:我們採取單獨製作移動頁面方案

技術:佈局採取rem適配佈局(less + rem + 媒體查詢)

設計圖: 本設計圖採用 750px 設計尺寸

2、搭建文件結構

3、設置視口標簽以及引入初始化樣式

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

<link rel="stylesheet" href="css/normalize.css">

4、設置公共common.less文件

  • 新建common.less 設置好最常見的屏幕尺寸,利用媒體查詢設置不同的html字體大小,因為除了首頁其他
    頁面也需要

  • 我們關心的尺寸有 320px、360px、375px、384px、400px、414px、424px、480px、540px、720px、
    750px

  • 劃分的份數我們定為 15等份

  • 因為我們pc端也可以打開我們蘇寧移動端首頁,我們預設html字體大小為 50px,註意這句話寫到最上面

rem 適配方案2

手機淘寶團隊出的簡潔高效 移動端適配庫

我們再也不需要在寫不同屏幕的媒體查詢,因為裡面js做了處理

它的原理是把當前設備劃分為10等份,但是不同設備下,比例還是一致的。

我們要做的,就是確定好我們當前設備的html 文字大小就可以了

比如當前設計稿是 750px, 那麼我們只需要把 html 文字大小設置為 75px(750px / 10) 就可以

裡面頁面元素rem值: 頁面元素的px 值 / 75

剩餘的,讓flexible.js來去算

github地址: https://github.com/amfe/lib-flexible

總結:

因為flexible是預設將屏幕分為10等分

但是當屏幕大於750的時候希望不要再去重置html字體了

所以要自己通過媒體查詢設置一下

並且要把權重提到最高

VSCode px 轉換rem 插件 cssrem

因為cssrem中css自動轉化為rem是參照預設插件的16轉換的所以需要自己配置

拓展閱讀@

掃一掃下麵的二維碼,關註我們,獲取更多精彩活動資訊,有好禮相送哦~

微信公眾號:梁京隨筆

【騰訊雲】618雲上GO!雲伺服器限時秒殺,1核2G首年95元!

騰訊雲伺服器

【華為雲】特惠專區,多款產品限時特價!

華為雲伺服器

【阿裡雲】上新必買搶先知,勁爆優惠不錯過!

阿裡雲伺服器

【七牛雲】優惠專區,多款雲產品限時搶購!

七牛雲伺服器

【又拍雲】免費CDN專區,10G免費大放送!

【知識星球】一個資料分享的站點,各種學習資料,隨時分享

微信贊助    微信打賞    支付寶打賞

免責聲明:本文所有內容均為互聯網上收集而來,僅供學習交流,整理文章為傳播相關技術,如有侵權,請聯繫刪除

A thousand journey is started by taking the first step.
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 那麼如果你也經常因為屏幕尺寸小,在 Mac 系統中拖放文件感覺很不方便的話,強烈推薦你試試 Yoink 這個小程式。Yoink(臨時文件存儲助手) for Mac是一款適用於蘋果電腦Mac os平臺的臨時文件存儲助手,可以幫助用戶更好的管理屏幕上的文件。 詳情:Yoink for Mac(臨時文件存 ...
  • 痞子衡嵌入式半月刊: 第 62 期 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。 本期刊是開源項目(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。 上期回顧 ...
  • 想要提升你的打字速度?打字大師3中文版是一款運行在Mac端的觸摸打字軟體,很多現代人幾乎生活離不開電腦。這就是為什麼快速打字很重要。Master of Typing 3是為那些想學習打字的人而設計。這是一個用你的十個手指不看鍵盤打字的方法,快速打字,下載列印可以節省時間,打字大師3中文版能夠有效的幫 ...
  • 內核是如何處理系統調用 每個系統調用被賦予了一個系統調用號 在i386平臺上,執行一個系統調用是通過int 0X80指令完成的 eax存放系統的調用號 ebx,ecx,edx,esi,edi存儲系統調用的參數,對於超過5個參數的系統調用,用一個寄存器指向用戶空間存儲所有的系統調用的參數 錯誤的處理 ...
  • By:授客 QQ:1033553122 刪除表數據操作 清空所有表記錄 TRUNCATE TABLE your_table_name; 或者批量刪除滿足條件的表記錄 BEGIN LOOP DELETE FROM your_table_name WHERE rownum <= 50000; EXIT ...
  • 成本核算程式執行某個存儲過程一直阻塞,排查發現類似以下語句阻塞: select tbl1.product_id,sum(isnull(tbl1.qty,0) * isnull(tbl2.unit_other_cost,0)) as other_cost from tbl1.p_id=@pId and ...
  • MySQL的通用日誌: 用來記錄對資料庫的通用操作,包括錯誤的sql語句等信息。 通用日誌可以保存在:file(預設值)或 table(mysql.general_log表) mysql通用日誌的設置: general_log=ON|OFF 是否啟用通用日誌 general_log_file=HOS ...
  • 1 - 編程語言 1.1 編程 編程: 就是讓電腦為解決某個問題而使用某種程式設計語言編寫程式代碼,並最終得到結果的過程。 電腦程式: 就是電腦所執行的一系列的指令集合,而程式全部都是用我們所掌握的語言來編寫的,所以人們要控制電腦一定要通過電腦語言向電腦發出命令。 1.2 電腦語言 計 ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...