首頁 web前端 css教學 css3的新單位vw、vh、vmin、vmax應該如何使用

css3的新單位vw、vh、vmin、vmax應該如何使用

Jan 30, 2018 am 10:25 AM
css3 vmax vmin

這次帶給大家css3的新單位vw、vh、vmin、vmax應該如何使用,css3的新單位vw、vh、vmin、vmax使用的注意事項有哪些,下面就是實戰案例,一起來看一下。

本文介紹了css3新單位vw、vh、vmin、vmax的使用詳解,分享給大家,具體如下:

1,vw、vh、vmin、vmax 的含義

(1)vw、vh、vmin、vmax 是一種視窗單位,也是相對單位。它相對的不是父節點或頁面的根節點。而是由視窗(Viewport)大小來決定的,單位 1,代表類似 1%。
視窗(Viewport)是你的瀏覽器實際顯示內容的區域—,換句話說是你的不包含工具列和按鈕的網頁瀏覽器。

(2)具體描述如下:

vw:視窗寬度的百分比(1vw 代表視窗的寬度為1%)
vh:視窗高度的百分比
vmin:當前vw 和vh 中較小的一個值
vmax:當前vw 和vh 中較大的一個值

2,vw、vh 與% 百分比的差異

(1)%是相對於父元素的大小設定的比率,vw、vh 是視窗大小決定的。
(2)vw、vh 優點在於能夠直接取得高度,而用% 在沒有設定body 高度的情況下,是無法正確獲得可視區域的高度的,所以這是挺不錯的優勢。

3,vmin、vmax 用處

做移動頁面開發時,如果使用vw、wh 設定字體大小(例如5vw),在垂直螢幕和橫向螢幕狀態下顯示的字體大小是不一樣的。

由於 vmin 和 vmax 是目前較小的 vw 和 vh 和目前較大的 vw 和 vh。這裡就可以用到 vmin 和 vmax。使得文字大小在橫向螢幕下保持一致。

4,瀏覽器相容性

(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月)

二、一個簡單的範例

1,頁碼

視窗(Viewport)單位除了可以用來設定元素的寬高尺寸,也可以在文字中使用。下面使用 vw 設定字體大小來實現響應式文字。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>hangge.com</title>
    <style>
      html, body, div, span, h1, h2, h3 {
        margin: 0;
        padding: 0;
        border: 0;
      }
  
      .demo {
       width: 100vw;
       font-size: 5vw;
       margin: 0 auto;
       background-color: #50688B;
       color: #FFF;
      }
  
      .demo2 {
       width: 80vw;
       font-size: 5vw;
       margin: 0 auto;
       background-color: #ff6a00;
      }
  
      .demo3 {
       width: 50vw;
       height: 50vh;
       font-size: 1vw;
       margin: 0 auto;
       background-color: #ff006e;
       color: #FFF;
      }
    </style>
  </head>
  <body>
      <div class="demo">
          <h1>宽度100%, 字体5%</h1>
      </div>
      <div class="demo2">
          <h2>宽度80%, 字体5%</h2>
      </div>
      <div class="demo3">
          <h3>宽度50%, 高度50%, 字体1%</h3>
      </div>
  </body>
</html>
登入後複製

三、實現完整覆蓋的遮罩層

#有時為了突出彈出框,或避免頁面元素被點擊。我們需要一個覆蓋整個視覺區域的半透明遮罩,這個使用 vw、vh 就可以很輕易地實現。

1,範例程式碼

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>hangge.com</title>
    <style>
      html, body, div, span, button {
        margin: 0;
        padding: 0;
        border: 0;
      }
  
      button {
        width: 120px;
        height: 30px;
        color: #FFFFFF;
        font-family: "微软雅黑";
        font-size: 14px;
        background: #28B995;
      }
  
      #mask {
        width: 100vw;
        height: 100vh;
        position: fixed;
        top: 0;
        left: 0;
        background: #000000;
        opacity: 0.5;
        display: none;
      }
    </style>
  </head>
  <body>
      <button onclick="document.getElementById(&#39;mask&#39;).style.display=&#39;inline&#39;">点击显示遮罩</button>
      <div id="mask" onclick="document.getElementById(&#39;mask&#39;).style.display=&#39;none&#39;"/></div>
  </body>
</html>
登入後複製

四、實作居中顯示的彈出框

1,彈出框大小隨內容自適應

(1)範例效果圖

點選彈出按鈕後,會顯示一個在整個螢幕上居中顯示的彈出框。

彈出框的大小會根據內容的大小自適應(logo 圖片),同時彈出框後面還有一個覆蓋整個螢幕的半透明遮罩層。

點選關閉按鈕後,則隱藏彈出框。

(2)範例程式碼

遮罩層使用 vw、vh 實作全螢幕覆蓋。彈出框新增至遮罩層並居中。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>hangge.com</title>
    <script type="text/javascript" src="js/jquery.js"></script>
    <style>
      html, body, div, span, button {
        margin: 0;
        padding: 0;
        border: 0;
      }
  
      button {
        width: 120px;
        height: 30px;
        color: #FFFFFF;
        font-family: "微软雅黑";
        font-size: 14px;
        background: #28B995;
      }
  
      .dialog-container {
        display: none;
        width: 100vw;
        height: 100vh;
        background-color: rgba(0,0,0,.35);
        text-align: center;
        position: fixed;
        top: 0;
        left: 0;
        z-index: 10;
      }
  
      .dialog-container:after {
        display: inline-block;
        content: &#39;&#39;;
        width: 0;
        height: 100%;
        vertical-align: middle;
      }
  
      .dialog-box {
        display: inline-block;
        border: 1px solid #ccc;
        text-align: left;
        vertical-align: middle;
        position: relative;
      }
  
      .dialog-title {
        line-height: 28px;
        padding-left: 5px;
        padding-right: 5px;
        border-bottom: 1px solid #ccc;
        background-color: #eee;
        font-size: 12px;
        text-align: left;
      }
  
      .dialog-close {
        position: absolute;
        top: 5px;
        right: 5px;
        font-size: 12px;
      }
  
      .dialog-body {
        background-color: #fff;
      }
    </style>
  </head>
  <body>
      <button onclick="$(&#39;#dialogContainer&#39;).show();">点击显示弹出框</button>
      <div id="dialogContainer" class="dialog-container">
          <div class="dialog-box">
              <div class="dialog-title">居中弹出框</div>
              <a onclick="$(&#39;#dialogContainer&#39;).hide();" class="dialog-close">关闭</a>
              <div class="dialog-body">
                <img src="logo.png" class="demo-image" />
              </div>
          </div>
      </div>
  </body>
</html>
登入後複製

2,彈出框大小隨視窗大小改變

(1)範例效果圖

點擊彈出按鈕後,會顯示一個在整個螢幕上居中顯示的彈出框。

彈出框的大小不再由內容的大小決定,而是隨視窗大小改變(寬高皆為螢幕視覺區域的 80%)。

點選關閉按鈕後,則隱藏彈出框。

(2)範例程式碼

遮罩層使用 vw、vh 實作全螢幕覆蓋。而彈出框的尺寸位置同樣使用 vw、vh 設定。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>hangge.com</title>
    <script type="text/javascript" src="js/jquery.js"></script>
    <style>
      html, body, div, span, button {
        margin: 0;
        padding: 0;
        border: 0;
      }
  
      button {
        width: 120px;
        height: 30px;
        color: #FFFFFF;
        font-family: "微软雅黑";
        font-size: 14px;
        background: #28B995;
      }
  
      .dialog-container {
        display: none;
        width: 100vw;
        height: 100vh;
        background-color: rgba(0,0,0,.35);
        text-align: center;
        position: fixed;
        top: 0;
        left: 0;
        z-index: 10;
      }
  
      .dialog-box {
        top:10vh;
        left:10vw;
        width: 80vw;
        height: 80vh;
        text-align: left;
        position: absolute;
        border: 1px solid #ccc;
        display: flex;
        flex-direction: column;
      }
  
      .dialog-title {
        line-height: 28px;
        padding-left: 5px;
        padding-right: 5px;
        border-bottom: 1px solid #ccc;
        background-color: #eee;
        font-size: 12px;
        text-align: left;
      }
  
      .dialog-close {
        position: absolute;
        top: 5px;
        right: 5px;
        font-size: 12px;
      }
  
      .dialog-body {
        background-color: #fff;
        flex:1;
        overflow: auto;
      }
    </style>
  </head>
  <body>
      <button onclick="$(&#39;#dialogContainer&#39;).show();">点击显示弹出框</button>
      <div id="dialogContainer" class="dialog-container">
          <div class="dialog-box">
              <div class="dialog-title">居中弹出框</div>
              <a onclick="$(&#39;#dialogContainer&#39;).hide();" class="dialog-close">关闭</a>
              <div class="dialog-body">
                <img src="logo.png" class="demo-image" />
              </div>
          </div>
      </div>
  </body>
</html>
登入後複製

五、顯示大圖時限制其最大尺寸

我們也可以透過視圖單位來限制一些元素的最大寬度或高度,避尺寸過大而超出螢幕。

(1)點選按鈕,在螢幕中央顯示原始圖片的大圖。
(2) 若圖片原始寬高皆不超過螢幕寬高的 90%,則顯示圖片的預設大小。
(3)如果圖片原始寬高均超過螢幕寬高的 90%,則限制為螢幕的 90%,使其能夠完全顯示。

相信看了這些案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

相關閱讀:

html5怎麼做出圖片轉圈的動畫效果

用H5的WebGL如何在同一個介面做出json和echarts圖表

H5的語意化標籤新特性應該如何使用

以上是css3的新單位vw、vh、vmin、vmax應該如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1324
25
PHP教程
1272
29
C# 教程
1251
24
純CSS3怎麼實現波浪效果? (程式碼範例) 純CSS3怎麼實現波浪效果? (程式碼範例) Jun 28, 2022 pm 01:39 PM

純CSS3怎麼實現波浪效果?這篇文章就來跟大家介紹一下使用 SVG 和 CSS 動畫來製作波浪效果的方法,希望對大家有幫助!

巧用CSS實現各種奇形怪狀按鈕(附代碼) 巧用CSS實現各種奇形怪狀按鈕(附代碼) Jul 19, 2022 am 11:28 AM

這篇文章帶大家看看怎麼使用 CSS 輕鬆實現高頻出現的各類奇形怪狀按鈕,希望對大家有幫助!

css怎麼隱藏元素但不佔空間 css怎麼隱藏元素但不佔空間 Jun 01, 2022 pm 07:15 PM

兩種方法:1、利用display屬性,只要為元素加上「display:none;」樣式即可。 2.利用position和top屬性設定元素絕對定位來隱藏元素,只需為元素加上「position:absolute;top:-9999px;」樣式。

css3怎麼實現花邊邊框 css3怎麼實現花邊邊框 Sep 16, 2022 pm 07:11 PM

在css中,可以利用border-image屬性來實作花邊邊框。 border-image屬性可以使用圖片來建立邊框,即給邊框加上背景圖片,只需要將背景圖片指定為花邊樣式即可;語法「border-image: url(圖片路徑) 向內偏移值圖像邊界寬度outset 是否重複;」。

原來利用純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怎麼設定動畫旋轉速度 Apr 28, 2022 pm 04:32 PM

在css3中,可以利用「animation-timing-function」屬性來設定動畫旋轉速度,該屬性用於指定動畫將如何完成一個週期,設定動畫的速度曲線,語法為「元素{animation-timing-function:速度屬性值;}」。

使用 CSS Viewport 單位 vh 和 vmin 建立媒體查詢的技巧 使用 CSS Viewport 單位 vh 和 vmin 建立媒體查詢的技巧 Sep 13, 2023 am 11:18 AM

使用CSSViewport單位vh和vmin創建媒體查詢的技巧隨著行動裝置的普及,響應式設計已成為現代網頁設計的必備技術。為了適應不同大小的螢幕,開發人員需要透過媒體查詢來調整佈局和樣式。而在媒體查詢中,最常用的單位是像素(px)。然而,CSS3引入了一種新的視窗單位,即vh和vmin,它們能夠更好地適應不同設備尺寸。本文將介紹如何使用vh和v

See all articles