搜尋
首頁web前端前端問答css3中vh和wh是什麼單位
css3中vh和wh是什麼單位Feb 28, 2022 pm 04:21 PM
css3vh

在css3中,vh和wh是視口單位,是相對長度單位。 wh是相對於視口的寬度,「1vw」等於視口寬度的「1%」;而vh是相對於視口的高度,「1vh」等於視口高度的「1%」。

css3中vh和wh是什麼單位

本教學操作環境:windows7系統、CSS3&&HTML5版、Dell G3電腦。

在css3中,vh和wh是視口單位,是相對長度單位。

視窗單位( Viewport units )

首先,我們要了解什麼是視口。在業界,極為推崇的一種理論是Peter-Paul Koch (江湖人稱「PPK大神」)提出的關於視口的解釋-在桌面端,視口指的是在桌面端,指的是瀏覽器的視覺區域;而在行動端較為複雜,它涉及三個視窗:分別是Layout Viewport(佈局視窗)、 Visual Viewport(視覺視窗)、Ideal Viewport。而視口單位中的“視口”,在桌面端,毫無疑問指的就是瀏覽器的可視區域;但是在行動端,它指的則是三個 Viewport 中的 Layout Viewport 。

css3中vh和wh是什麼單位

視窗單位中的「視口」 根據CSS3規範,視口單位主要包括以下4個:

  • ##vw : 相對於視窗的寬度,1vw 等於視窗寬度的1%

  • vh : 相對於視窗的高度, 1vh 等於視窗高度的1%

  • vmin : 選取vw 和vh 中最小的那個

  • #vmax : 選取vw 和vh 中最大的那個

#視口單位區別於%單位,視口單位是依賴視口的尺寸,根據視口尺寸的百分比來定義的;而%單位則是依賴於元素的祖先元素。

css3中vh和wh是什麼單位

以視窗單位測量,視窗寬度為100vw,高度為100vh(左側為垂直螢幕情況,右側為橫向螢幕情況) 例如,在桌面端瀏覽器視窗尺寸為650px,那麼1vw = 650 * 1% = 6.5px(這是理論推算的出,如果瀏覽器不支援0.5px,那麼實際渲染結果可能是7px)。

利用視窗單位適配頁面

#對於行動裝置開發來說,最為重要的一點是如何適應頁面,實作多終端的兼容,不同的適配方式各有千秋,也各有缺點。就主流的響應式佈局、彈性佈局來說,透過Media Queries 實現的佈局需要配置多個響應斷點,而且帶來的體驗也對用戶十分的不友好:佈局在響應斷點範圍內的分辨率下維持不變,而在響應斷點切換的瞬間,佈局帶來斷層式的切換變化,如同卡帶的唱機般“咔咔咔”地一下又一下。而透過採用rem單位的動態計算的彈性佈局,則是需要在頭部內嵌一段腳本來進行監聽分辨率的變化來動態改變根元素字體大小,使得 CSS 與 JS 耦合了在一起。有沒有辦法能夠解決這樣的問題呢?答案是肯定的,透過利用視口單位實現適配的頁面,是既能解決響應式斷層問題,又能解決腳本依賴的問題的。

做法一:僅使用vw作為CSS單位

在僅使用vw 單位作為唯一應用的一種CSS 單位的這種做法下,我們遵守: 1 .對於設計稿的尺寸轉換為vw單位,我們使用Sass函數編譯

//iPhone 6尺寸作为设计稿基准
$vm_base: 375; 
@function vw($px) {
    @return ($px / 375) * 100vw;
}

2.無論是文字或佈局高寬、間距等都使用vw 作為CSS 單位

.mod_nav {
    background-color: #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);
            }
        }
    }
}

3.1物理像素線(也就是普通螢幕下1px ,高清螢幕下0.5px 的情況)採用transform 屬性scale 實作。

.mod_grid {
    position: relative;
    &::after {
        // 实现1物理像素的下边框线
        content: '';
        position: absolute;
        z-index: 1;
        pointer-events: none;
        background-color: #ddd;
        height: 1px;
        left: 0;
        right: 0;
        top: 0;
        @media only screen and (-webkit-min-device-pixel-ratio: 2) {
            -webkit-transform: scaleY(0.5);
            -webkit-transform-origin: 50% 0%;
        }
    }
    ...
}

4.對於需要保持高寬比的圖,應改用padding-top 實作

.mod_banner {
    position: relative;
    padding-top: percentage(100/700); // 使用padding-top
    height: 0;
    overflow: hidden;
    img {
        width: 100%;
        height: auto;
        position: absolute;
        left: 0;
        top: 0; 
    }
}

由此,我們能夠實現一個常見佈局的頁面效果如下:

做法二:搭配vw和rem,佈局更優化

這樣的頁面雖然看起來適配得很好,但是你會發現由於它是利用視口單位實現的佈局,依賴視口大小而自動縮放,無論視口過大或過小,它也隨著視口過大或過小,失去了最大最小寬度的限制。當然,你可以不在乎這樣微小的不友善使用者體驗,但我們還是嘗試下追求修復這樣的小瑕疵吧。於是,聯想到不如結合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;
}

(学习视频分享:css视频教程web前端入门教程

以上是css3中vh和wh是什麼單位的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
css怎么隐藏元素但不占空间css怎么隐藏元素但不占空间Jun 01, 2022 pm 07:15 PM

两种方法:1、利用display属性,只需给元素添加“display:none;”样式即可。2、利用position和top属性设置元素绝对定位来隐藏元素,只需给元素添加“position:absolute;top:-9999px;”样式。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

css3如何实现鼠标点击图片放大css3如何实现鼠标点击图片放大Apr 25, 2022 pm 04:52 PM

实现方法:1、使用“:active”选择器选中鼠标点击图片的状态;2、使用transform属性和scale()函数实现图片放大效果,语法“img:active {transform: scale(x轴放大倍数,y轴放大倍数);}”。

css3什么是自适应布局css3什么是自适应布局Jun 02, 2022 pm 12:05 PM

自适应布局又称“响应式布局”,是指可以自动识别屏幕宽度、并做出相应调整的网页布局;这样的网页能够兼容多个不同的终端,而不是为每个终端做一个特定的版本。自适应布局是为解决移动端浏览网页而诞生的,能够为使用不同终端的用户提供很好的用户体验。

css3动画效果有变形吗css3动画效果有变形吗Apr 28, 2022 pm 02:20 PM

css3中的动画效果有变形;可以利用“animation:动画属性 @keyframes ..{..{transform:变形属性}}”实现变形动画效果,animation属性用于设置动画样式,transform属性用于设置变形样式。

css3怎么设置动画旋转速度css3怎么设置动画旋转速度Apr 28, 2022 pm 04:32 PM

在css3中,可以利用“animation-timing-function”属性设置动画旋转速度,该属性用于指定动画将如何完成一个周期,设置动画的速度曲线,语法为“元素{animation-timing-function:速度属性值;}”。

css3线性渐变可以实现三角形吗css3线性渐变可以实现三角形吗Apr 25, 2022 pm 02:47 PM

css3线性渐变可以实现三角形;只需创建一个45度的线性渐变,设置渐变色为两种固定颜色,一个是三角形的颜色,另一个为透明色即可,语法“linear-gradient(45deg,颜色值,颜色值 50%,透明色 50%,透明色 100%)”。

一文了解CSS3中的新特性 ::target-text 选择器一文了解CSS3中的新特性 ::target-text 选择器Apr 12, 2022 am 11:24 AM

本篇文章带大家一起深入了解一下CSS3中的新特性::target-text 选择器,聊聊该选择器的作用和使用方法,希望对大家有所帮助!

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中