時(shí)間:2023-09-23 17:42:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-09-23 17:42:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)
你必須知道的響應(yīng)式布局:<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />width=device-width 視口為設(shè)備寬度(就是人設(shè)置的一個(gè)寬度)//不設(shè)置的話默認(rèn)為980pxinitial-scale=1.0 初始化的視口大小是1.0倍maximum-scale=1.0 最大的倍數(shù)是1.0倍user-scalable=0 不允許縮放視口
這個(gè)視口的標(biāo)簽告訴瀏覽器怎么渲染網(wǎng)頁(yè)。在這里,標(biāo)簽想表達(dá)的意思是:按照設(shè)備的寬度(device-width)來(lái)渲染網(wǎng)頁(yè)內(nèi)容。事實(shí)上,在支持這個(gè)標(biāo)簽的設(shè)備上給你看一看效果,你就明白了。img { max-width: 100%;}
回到手機(jī)上,刷新頁(yè)面,結(jié)果比較符合預(yù)期了。 這里聲明 max-width 規(guī)則,就是要保證所有圖片最大顯示為其自身的 100%(即最大只可以顯示為自身那么大)。此時(shí),如果包含圖片的元素(比如包含圖片的 body 或 div)比圖片固有寬度小,圖片會(huì)縮放占滿最大可用空間。兼容的前綴:1 -ms-2 -moz-3 -o-4 -webkit-
中國(guó)用戶的瀏覽器市場(chǎng)份額:div{ width:200px; height:300px; padding:10px; } div p{ width:50%; height:50%; padding:10%; } /*此時(shí)p的真實(shí)寬度是多少?*/
body { background-color: grey; }@media screen and (min-width:1200px){ body{ background-color: pink; }} @media screen and (min-width:700px) and (max-width:1200px){ body{ background-color: blue; }}@media screen and (max-width:700px){ body{ background-color: orange; }}
其中 @media 就表示媒體查詢,查詢現(xiàn)在看這個(gè)網(wǎng)頁(yè)的設(shè)備是什么,以及它的寬度是多少。screen 表示看這個(gè)網(wǎng)頁(yè)的設(shè)備是顯示器,而不是殘疾人聽力設(shè)備、也不是打印機(jī)。后面用 and 符號(hào)羅列所有的可能性。 值得注意:媒體查詢只能包裹選擇器,不能包裹 k:v 對(duì)兒。rem 響應(yīng)式布局思想
什么是 rem,它與 em 有何區(qū)別rem:當(dāng)前頁(yè)面中元素的 REM 單位的樣式值都是針對(duì)于 HTML 元素的 font-size 的值進(jìn)行動(dòng)態(tài)計(jì)算的
body →font-size:20px; <div class="box1"> → font-size:2em; box1 <div class="box2"> → font-size:2em; box2 <div class="box3"> → font-size:2em; box3 </div> </div> </div>
@media screen and (min-width: 320px) { html {font-size: 14px;}}@media screen and (min-width: 360px) { html {font-size: 16px;}}@media screen and (min-width: 400px) { html {font-size: 18px;}}
運(yùn)用場(chǎng)景如果我們做的 H5 頁(yè)面只在移動(dòng)端訪問(wèn),這是因?yàn)?REM 不兼容低版本的瀏覽器。而如果移動(dòng)端和 PC 端公用一套代碼,建議使用流式布局。
如何做個(gè) REM 響應(yīng)式布局1、從 UI 設(shè)計(jì)師拿到 PSD 設(shè)計(jì)稿,然后在樣式中給 HTML 設(shè)定一個(gè) font-size 的值,我們一般都設(shè)置一個(gè)方便后面計(jì)算的值,例如:100px
html{ font-size:100px;//1rem=100px}
2、寫頁(yè)面,寫樣式 首先按照設(shè)計(jì)稿的尺寸來(lái)寫樣式,然后在寫樣式值的時(shí)候,需要把得到的像素值除以 100 計(jì)算出對(duì)應(yīng)的 REM 的值。 值得注意的是:真實(shí)項(xiàng)目中外層盒子的寬度我們一般還是不寫固定值,沿用流式布局法的思想,我們用百分比的方式布局margin:0 0.2rem;height:3rem;
3、根據(jù)當(dāng)前屏幕的寬度和設(shè)計(jì)稿的寬度來(lái)計(jì)算我們 HTML 的 font-size 的值 例如:設(shè)計(jì)稿寬度為 640px,其中有一個(gè)部分是輪播圖,它的尺寸是 600*300,在樣式中給 HTML 設(shè)定一個(gè) font-size 的值為 100px,則輪播圖大小應(yīng)該為 6rem×3rem,那如果手機(jī)屏幕寬度為 375px,其 font-size 應(yīng)該設(shè)置為多少。375/640*100->fontsize=58.59375//此時(shí)輪播圖能自適應(yīng)手機(jī)屏幕大小
根據(jù)當(dāng)前屏幕寬度和設(shè)計(jì)稿寬度的比例,動(dòng)態(tài)計(jì)算一下當(dāng)前寬度下的 fontsize 值應(yīng)該是多少,如果 fontsize 的值改變了,之前設(shè)定的所有 REM 單位的值自動(dòng)會(huì)跟著放大或者縮小??梢酝ㄟ^(guò)以下這段代碼實(shí)現(xiàn):<script>~function(){var desW=640,winW=document.documentElement.clientwidth,ratio=winW/desW;document.documentElement.style.fontSize=ratio*100+"px";}();</script>
但如果當(dāng)前屏幕寬度大于設(shè)計(jì)稿寬度,圖片會(huì)被拉長(zhǎng)而失真,所以以上代碼需要稍微做些修改://html部分<section id="main"><div class="box"></div></section>//js部分<script>~function(){var desW=640,winW=document.documentElement.clientwidth,ratio=winW/desW;var oMain=document.getElementById(main");if(winW>desW){oMain.style.width=desW+"px";oMain.style.margin="0 auto";return;}document.documentElement.style.fontSize=ratio*100+"px";}();</script>
作者:浪里行舟
鏈接:關(guān)于響應(yīng)式布局,你必須要知道的
來(lái)源:GitHub
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明住處
關(guān)鍵詞:響應(yīng),布局,須知
客戶&案例
營(yíng)銷資訊
關(guān)于我們
客戶&案例
營(yíng)銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。