rem
(font size of the root element)是指相對於根元素的字體大小的單位。<!doctype html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<style>
html{
/*以寬度640的設計爲例*/
/*demo用的是vw單位,想要兼容性好的話,用js動態寫fontSize*/
/*最後的乘以100,是由於font-size不能小於瀏覽器內置的最小字號,乘以100即好計算又大於內置最小字號*/
font-size:calc(100vw/640*100);
}
.cube{
position: absolute;
top: 0;
left: 0;
width: 6.4rem;
height: 6.4rem;
background:red;
}
</style>
</head>
<body>
<span class="cube"></span>
</body>
</html>
複製代碼
不一樣手機呈現以下:css
root font-size
以後,每一個手機的寬度都是等量的rem
,能夠理解爲每一個手機的寬度都是同樣的,區別在於高度不同。rem
便可,不過有時候咱們會遇到全屏佈局的項目,這時候就要既保證寬度顯示正常,高度也須要顯示正常。 從上邊圖片中能夠看到rem
只能解決寬度適配,高度仍是適配不了,短屏的露白比長屏的要少。接下來講一下個人適配方案:%
,不要用固定單位,會致使長屏手機定位不正常;.rect{
position: absolute;
left:0;
top:25%;//垂直定位單位爲%
width:100%;
height:1rem;
margin-top:-.5rem;//以垂直中心定位
background:red;
}
複製代碼
例:html
下圖左側定位用的是`rem`,右側垂直定位用的是`%`
複製代碼
上圖能夠理解元素垂直定位運用%
會引發相鄰元素的相對位置會發生改變,當元素過大時,在窄屏內就會過於擁擠,能夠用css的Media query
來避免這個問題;前端
aspect-ratio
定義輸出設備中的頁面可見區域寬度與高度的比率瀏覽器
```
<!doctype html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<style>
html{
font-size:calc(100vw/640*100);
}
.cube{
position: absolute;
top: 50%;
left: 0;
width: 6.4rem;
height: 11rem;
background:red;
}
@media screen and (min-aspect-ratio: 640/1050) {
.auto-scale{
transition:transform .5s;
transform:scale(0.95);
}
}
@media screen and (min-aspect-ratio: 640/1000) {
.auto-scale{
transform:scale(0.9);
}
}
@media screen and (min-aspect-ratio: 640/950) {
.auto-scale{
transform:scale(0.85);
}
}
@media screen and (min-aspect-ratio: 640/900) {
.auto-scale{
transform:scale(0.8);
}
}
</style>
</head>
<body>
<span class="cube auto-scale"></span>
</body>
</html>
```
複製代碼
結果以下:安全
左側是不加
auto-scale
類名的,右側是加了的,在不一樣尺寸下的渲染,左側的會在窄屏溢出,右側的不會。bash
爲何要外擴一些背景呢?由於通常背景層都要設置意思是psd的安全區域是640*1100,這裏的內容是要求每一個手機都顯示的,另外寬度要外擴一些尺寸,最終的設計尺寸是800 *1100;app
background-size: cover
來填充,而外擴一些寬度能夠更好的適配更多尺寸的屏幕。
來看下例子:佈局
左側的沒有外擴些寬度,右側的有字體
注:psd高度爲何是1100,而不是1236,1100是除去了app的titlebar以後的尺寸,前端控制不了的部分設計人員能夠把他忽略掉spa