這篇文章主要介紹了css3新單位vw、vh的使用教程,本文透過實例代碼給大家介紹vw、vh、vmin、vmax 的含義及vw、vh與%百分比的區別,感興趣的朋友一起看看吧
響應式佈局的單位我們第一時間會想到透過rem單位來實現適配,但是它還需要內嵌一段腳本去動態計算跟元素大小。
例如:
(function (doc, win) { let docEl = doc.documentElement let resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize' let recalc = function () { var clientWidth = docEl.clientWidth if (!clientWidth) return docEl.style.fontSize = 14 * (clientWidth / 320) + 'px' } if (!doc.addEventListener) return win.addEventListener(resizeEvt, recalc, false) doc.addEventListener('DOMContentLoaded', recalc, false) })(document, window)
那有沒有一個單位不需要JS和CSS耦合在一起的單位?答案是有的,就是vw/vh。
vw = view width vh = view height
這兩個單位是CSS3引入的,以上稱為視口單位允許我們更接近瀏覽器視窗定義大小。
vw、vh、vmin、vmax 的意思
(1)vw、vh、vmin、vmax 是一種視窗單位,也是相對單位。它相對的不是父節點或頁面的根節點。而是由視窗(Viewport)大小來決定的,單位 1,代表類似 1%。
視窗(Viewport)是你的瀏覽器實際顯示內容的區域—,換句話說是你的不包含工具列和按鈕的網頁瀏覽器。
(2)具體描述如下:
vw:視窗寬度的百分比(1vw 代表視窗的寬度為1%)
-
vh:視窗高度的百分比
vmin:目前vw 和vh 中較小的一個值
vmax:目前vw 和vh 中較大的一個值
vw、vh 與% 百分比的差異
(1)% 是相對於父元素的大小設定的比率,vw、vh 是視窗大小決定的。
(2)vw、vh 優點在於能夠直接取得高度,而用 % 在沒有設定 body 高度的情況下,是無法正確獲得可視區域的高度的,所以這是挺不錯的優勢。
vmin、vmax 用處
#做移動頁面開發時,如果使用vw、wh 設定字體大小(例如5vw),在垂直螢幕和橫屏狀態下顯示的字體大小是不一樣的。
由於 vmin 和 vmax 是目前較小的 vw 和 vh 和目前較大的 vw 和 vh。這裡就可以用到 vmin 和 vmax。使得文字大小在橫向螢幕下保持一致。
瀏覽器相容性
(1)桌面PC
Chrome:自26 版起就完美支援(2013年2月)
Firefox:自19 版起就完美支援(2013年1月)
Safari :自6.1 版起就完美支持(2013年10月)
#Opera:自15 版起就完美支持(2013年7月)
IE:自IE10 起(包括Edge)到現在還只是部分支援(不支援vmax,同時vm 代替vmin)
(2)行動裝置
Android:自4.4 版起就完美支援(2013年12月)
iOS:自iOS8 版起就完美支援(2014年9月)
如何利用視窗單位適應頁面
僅使用vw作為CSS單位
#1.根據設計稿的尺寸轉換為vw單位(SASS函數編譯)
//iPhone 6尺寸作为设计稿基准 $vm_base: 375; @function vm($px) { @return ($px / 375) * 100vw; }
2.無論是文字或佈局高寬、間距等都使用vw
导航入口 .mod_nav { background: #fff; &_list { display: flex; padding: vm(15) vm(10) vm(10); &_item { flex: 1; text-align: center; font-size: vm(10); &_logo { display: block; margin: 0 auto; width: vm(40); height: vm(40); img { display: block; margin: 0 auto; max-width: 100%; } } &_name { margin-top: vm(2); } } } }
最優做法-搭配vw和rem
#使用vm作為css單位代碼量確實減少很多,但你會發現它是利用視口單位實現,依賴視口大小而自動縮放,失去了最大最小寬度的限制。
於是,聯想到不如結合rem單位來實現佈局? rem 彈性佈局的核心在於動態改變根元素大小,那麼我們可以透過:·
給根元素大小設定隨著視窗變化而變化的 vw 單位,這樣就可以實現動態改變其大小。
限制根元素字體大小的最大最小值,配合 body 加上最大寬度和最小寬度
這樣我們就能夠實現對佈局寬度的最大最小限制。因此,根據以上條件,我們可以得出程式碼實作如下:
// rem 单位换算:定为 75px 只是方便运算,750px-75px、640-64px、1080px-108px,如此类推 $vm_fontsize: 75; // iPhone 6尺寸的根元素大小基准值 @function rem($px) { @return ($px / $vm_fontsize ) * 1rem; } // 根元素大小使用 vw 单位 $vm_design: 750; html { font-size: ($vm_fontsize / ($vm_design / 2)) * 100vw; // 同时,通过Media Queries 限制根元素最大最小值 @media screen and (max-width: 320px) { font-size: 64px; } @media screen and (min-width: 540px) { font-size: 108px; } } // body 也增加最大最小宽度限制,避免默认100%宽度的 block 元素跟随 body 而过大过小 body { max-width: 540px; min-width: 320px; }
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
以上是關於css3的單位vw和vh的使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

文章討論了CSS FlexBox,這是一種佈局方法,用於有效地對齊和分佈響應設計中的空間。它說明了FlexBox用法,將其與CSS網格進行了比較,並詳細瀏覽了瀏覽器支持。

本文討論了使用CSS創建響應網站的技術,包括視口元標籤,靈活的網格,流體媒體,媒體查詢和相對單元。它還涵蓋了使用CSS網格和Flexbox一起使用,並推薦CSS框架

本文討論了CSS盒裝屬性,該屬性控制了元素維度的計算方式。它解釋了諸如Content-Box,Border-Box和Padding-Box之類的值,以及它們對佈局設計和形式對齊的影響。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器