您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“css3新單位vw、vh怎么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“css3新單位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
< div class="mod_nav"> < nav class="mod_nav_list" v-for="n in 5"> < a href="#" class="mod_nav_list_item"> < span class="mod_nav_list_item_logo"> < img src="http://jdc.jd.com/img/80"> < /span> < p class="mod_nav_list_item_name">導航入口< /p> < /a> < /nav> < /div> .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; }
以上是“css3新單位vw、vh怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。