rem單位css
html
不一樣的是rem的基準是相對於html元素的字體大小。前端
好比,根元素( html)設置font -size= 12px;非根元素設置width:2rem;則換成px表示就是24px。瀏覽器
less
2.1什麼是媒體查詢iphone
媒體查詢( Media Query )是CSS3新語法。函數
使用 @media查詢,能夠針對不一樣的媒體類型定義不一樣的樣式字體
@media 能夠針對不一樣的屏幕尺寸設置不一樣的樣式flex
當你重置瀏覽器大小的過程當中 ,頁面也會根據瀏覽器的寬度和高度從新渲染頁面spa
目前針對不少蘋果手機、 Android手機 ,平板等設備都用獲得多媒體查詢
@media mediatype and | not lonly (media feature) {
CSS-Code ; //css樣式代碼
}
用@media開頭注意 @符號
mediatype 媒體類型
關鍵字and not only
將不一樣的終端設備劃分紅不一樣的類型,稱爲媒體類型
值 | 解釋說明 |
---|---|
all | 用於全部設備 |
用於打印機和打印預覽 | |
screen | 用於電腦屏幕,平板電腦,智能手機等 |
關鍵字將媒體類型或多個媒體特性鏈接到一塊兒作爲媒體查詢的條件。
and: 能夠將多個媒體特性鏈接到一塊兒,至關於"且" 的意思。
not: 排除某個媒體類型,至關於「非」的意思,能夠省略。
only :指定某個特定的媒體類型,能夠省略。
每種媒體類型都具體各自不一樣的特性,根據不一樣媒體類型的媒體特性設置不一樣的展現風格。咱們暫且瞭解三個。 注意他們要加小括號包含
值 | 解釋說明 |
---|---|
width | 定義輸出設備中頁面可見區域的寬度 |
min-width | 定義輸出設備中頁面最小可見區域寬度 |
max-width | 定義輸出設備中頁面最大可見區域寬度 |
注意:爲了防止混亂,媒體查詢咱們要按照從小到大或者從大到小的順序來寫,可是咱們最喜歡的仍是從小到大來寫, 這樣代碼更簡潔
rem單位是跟着html來走的,有了rem頁面元素能夠設置不一樣大小尺寸, 媒體查詢能夠根據不一樣設備寬度來修改樣式 媒體查詢+ rem就能夠實現不一樣設備寬度,實現頁面元素大小的動態變化
當樣式比較繁多的時候,咱們能夠針對不一樣的媒體使用不一樣stylesheets (樣式表)。 原理,就是直接在link中判斷設備的尺寸,而後引用不一樣的css文件。
CSS是一門非程序式語言,沒有變量、函數、SCOPE (做用域)等概念。
CSS 須要書寫大量看似沒有邏輯的代碼, CSS冗餘度是比較高的。
不方便維護及擴展,不利於複用。
CSS沒有很好的計算能力
非前端開發工程師來說 ,每每會由於缺乏CSS編寫經驗而很難寫出組織良好且易於維護的CSS代碼項目。
Less ( Leaner Style Sheets的縮寫)是一門CSS擴展語言,也稱爲CSS預處理器。
作爲CSS的一種形式的擴展,它並無減小CSS的功能,而是在現有的CSS語法上,爲CSS加入程序式語言的特性。
它在CSS的語法基礎之上,引入了變量, Mixin (混入) , 運算以及函數等功能,大大簡化了CSS的編寫,而且下降了CSS的維護成本,
就像它的名稱所說的那樣, Less可讓咱們用更少的代碼作更多的事情。
Less中文網址: http://lesscss.cn/
常見的CSS預處理器: Sass、Less、 Stylus
咱們首先新建一個後綴名爲less的文件 ,在這個Iess文件裏面書寫less語句。
Less 變量
Less 編譯
Less 嵌套
Less運算
變量是指沒有固定的值,能夠改變的。由於咱們CSS中的一些顏色和數值等常用。
變量定義:
@變量名:值;
1.變量命名規範:
必須有 @爲前綴
不能包含特殊字符
不能以數字開頭
大小寫敏感
本質上,Less包含一套自定義的語法及一個解析器,用戶根據這些語法定義本身的樣式規則,這些規則 最終會經過解析器,編譯生成對應的CSS文件。 因此,咱們須要把咱們的less文件, 編譯生成爲css文件,這樣咱們的html頁面才能使用。
vocode Less插件
Easy LESS插件用來把less文件編譯爲Css文件 安裝完畢插件,從新加載下vscode. 只要保存一下Less文件,就會會自動生成CSS文件。
咱們常常用到選擇器的嵌套
#header .logo {
width: 300px;
}
Less嵌套寫法
#header {
.Iogo {
width: 300px;
}
}
若是碰見(交集|僞類|僞元素選擇器)
a:hover{
color: red;
}
Less嵌套寫法:
a{
&:hover
{
color: red;
}
}
任何數字、顏色或者變量均可以參與運算。就是Less提供了加(+)、減(-)、乘(*)、除(/)算術運算。
//Less裏面寫
@witdh: 10px +5;
div {
border: @witdh solid red;
}
//生成的css
div {
border: 15px solid red;
}
Less甚至還能夠這樣:
width: (@width + 5) * 2;
注意:
乘號(* )和除號(/)的寫法
運算符中間左右有個空格隔開1px + 5
對於兩個不一樣的單位的值之間的運算 ,運算結果的值取第一個值的單位
若是兩個值之間只有一個值有 單位,則運算結果就取該單位
1.讓一些不能等比自適應的元素,達到當設備尺寸發生改變的時候,等比例適配當前設備。
2.使用媒體查詢根據不一樣設備按比例設置html的字體大小,而後頁面元素使用rem作尺寸單位,當html字體大小變化,元素尺寸也會發生變化,從而達到等比縮放的適配。
①按照設計稿與設備寬度的比例,動態計算並設置html根標籤的font-size大小; ( 媒體查詢)
②CSS中,設計稿元素的寬、高、相對位置等取值,按照同等比例換算爲rem爲單位的值;
技術方案1
rem
媒體查詢
less
技術方案2 (推薦)
flexible.js
rem
設備 | 常見寬度 |
---|---|
iphone 4.5 | 640px |
iphone 678 | 750px |
Android | 常見320px、360px、 375px、 384px、 400px、 414px 500px、 720px 大部分4.7~5寸的安卓設備爲720px |
通常狀況下,咱們以一套或兩套效果圖適應大部分的屏幕,放棄極端屏或對其優雅降級, 犧牲一些效果。 如今基本以750爲準。
①假設設計稿是750px
②假設咱們把整個屏幕劃分爲15等份 (劃分標準不一,能夠是20份也能夠是10等份)
③每一份做爲html字體大小,這裏就是50px
④那麼在320px設備的時候 ,字體大小爲320/15就是21.33px
⑤用咱們頁面元素的大小除以不一樣的html字體大小會發現他們比例仍是相同的
⑥好比咱們以750爲標準設計稿
⑦一個100*100像素的頁面元素在750屏幕下,就是100/ 50轉換爲rem是2rem * 2 rem比例是1比1
⑧320屏幕下 ,html 字體大小爲21.33,則2rem = 42.66px,此時寬和高都是42.66,可是寬和高的比例仍是1比1
⑨可是已經能實現不一樣屏幕下頁面元素盒子等比例縮放的效果
①最後的公式:頁面元素的rem值=頁面元素值(px) / ( 屏幕寬度/劃分的份數)
②屏幕寬度 / 劃分的份數 就是 html font-size 的大小
③或者:頁面元素的rem值 = 頁面元素值( px) / html font-size字體大小