作一個PC端的網頁,設計圖是1920X1080的. 要在常見屏上顯示正常(比例正確可) 1280X720 1366X768 1440X900 1920X1080html
使用了幾種辦法瀏覽器
1.內容在一屏內顯示的,採用了(內容框)上下左右居中的辦法,裏面的內容絕對於這個內容框定位.這樣一來,在不一樣大小屏中,內容老是在中間,看起來較正常字體
2.使用rem的地方設計
width,height,margin,padding,left top都採用了REM,htm
HTML的FONT-SIZE設置的爲100PX.是爲了計算方便.此時BODY的FONT-SIZE要設置爲正常值,例如14PX.否則的話,其它的DOM都會繼承HTML的100PX的FONT-SIZE,致使效果巨大.繼承
3.當瀏覽器窗口變化時,內容的大小以及相對位置也會相應變化,這個依靠JS修改HTML的FONT-SIZE值實現.以下:事件
$(window).resize(function ()// 綁定到窗口的這個事件中
{rem
let designSize = 1920; // 設計圖尺寸it
let html = document.documentElement;io
let rem = wW * 100 / designSize;
});
計算font-size的邏輯是:
當設計圖是1920時,規定HTML的FONT-SIZE的值是100. 也就是,當瀏覽器窗口調整到1920PX時,1REM=100PX,若是要設定一個160PX(1920設計圖時)的margin-top,那麼REM設置值是1.6rem.
當窗口調整到非設計圖的寬度如winWidth時,HTML的FONT-SIZE值是:(100/1920)*winWidth.也就是說,1920下FONT-SIZE是100px.那麼winWidth下,按比例計算.
或者能夠這樣:窗口寬1920時,FONT-SIZE是100PX,那麼winWidth時,至關於窗口變化爲1920時的 (winWidth / 1920).根據比例公式,winWidth時的FONT-SIZE就是
(winWidth/1920)*100
winWidth / 1920 = FONT-SIZE(PX) / 100
100 / 1920 = FONT-SIZE(PX) / winWidth 這個公式容易理解
若是調整窗口大小,會發現HTML的FONT-SIZE值在變化,同時,使用REM設置的DOM也在變化.由於REM正是參考HTML的FONT-SIZE值來計算的
4.若是是在手機上,平板電腦上,更要使用REM
因爲手機上通常不會調整瀏覽器大小,因此能夠在頁面載入時,設置一次便可
$(function(){
let designSize = 750; // 設計圖尺寸
let html = document.documentElement;
let rem = wW * 100 / designSize;
})
5.使用REM可以較好的自適應移動端
手機平板移動設備的寬度不超過1080,若是設備已經超過了這個寬度,則不該再計算html的font-size值了.由於已是PC屏幕了.
if ( window.innerWidth>1080)
return;
6.關於字體大小
若是字體大小使用rem,因爲rem是計算出來的.因此字體大小變化會比較明顯.
例如設計稿750px,字體大小20px,那麼就是 "font-size : .2rem" ,這裏有個問題是,設計稿是2倍的,在手機上是1倍的.因而rem會小一半,這時,手機上的字體就會很是小了.
人老是但願pc屏幕上看到的文字,在手機上仍然能看得清楚,能夠接受一點縮小,但不能是鉅變.
一種解決方法是,字體使用2倍大小,也就是 "font-size: .4rem".
這個方法會致使在超過設計稿寬度尺寸的屏幕上,字體變得很是大.這種狀況通常是在平板或者PC上了,若是隻是手機端使用,則不用考慮此種狀況.
還有個辦法是使用回em或者px,而後針對不一樣的屏幕作媒體查詢,
使用em,前提是設置body字體大小,例如 font-size:14px
這種辦法對手機端很差,平板和PC合適.能夠作媒體查詢適配小屏的em基準
@media (max-width: 320px)
{
font-size: 12px;
}
@media (min-width: 321px)
{ font-size: 14px;}