欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue項目網(wǎng)頁自適應等比例放大縮小實例代碼

 更新時間:2022年11月29日 08:54:43   作者:歐根老婆的狗  
等比例縮放可以在不同的分辨率下都能夠一屏展示,不會有滾動條的問題,也不會有適配問題,下面這篇文章主要給大家介紹了關于vue項目網(wǎng)頁自適應等比例放大縮小的相關資料,需要的朋友可以參考下

同樣是,雖然標題寫的vue項目適用,但其它前端框架應該也可以。其它框架我沒什么經(jīng)驗,可以參考著看看,應該適用。

本文章不涉及第三方插件,純js。

自適應這個問題,老早以前就有一個解決方式,css中的%,比如height:100%; width:100%;給主容器賦予該樣式,那主容器就可以自適應屏幕,但里面的內(nèi)容不會,如果要里面的內(nèi)容也自適應,那里面也得寫%,但問題隨之而來,font-size呢?

%雖然現(xiàn)在依然有用,但現(xiàn)在的項目很多都有設計稿,比如我接觸比較多的數(shù)據(jù)大屏,這類網(wǎng)頁,長寬比是固定的,%無法解決字體自適應的問題。熟悉rem的,可以用rem,這個單位類似于微信小程序的rpx,算是自適應屬性,但我沒用過,不講,今天的主角不是它。

接下來就是正文了。在長寬比固定的情況下,網(wǎng)頁自適應,其實就是將網(wǎng)頁等比例放大或者縮小。我們提出一個 設想,在網(wǎng)頁初始化的時候,正確地放大或者縮小網(wǎng)頁,來適應屏幕;并在瀏覽器顯示區(qū)域發(fā)生變化時,修改放大或者縮小的比例,使網(wǎng)頁始終能夠適應屏幕。

放大和縮小,有什么現(xiàn)有的方法或者樣式嗎?有, css中的 zoom 以及 scale(),淺講一下兩個樣式的不同之處:

zoom:

        1. 使用該樣式的標簽會等比例縮放。zoom:0.5 (縮放50%),zoom:2(放大兩倍)。

        2. 縮放的基準點在原容器的左上角(應該沒記錯,想證實的可以自己試試),意思就是,使用zoom放大縮小,原容器的左上角作為原點不動,然后邊長放大縮小。在數(shù)學里的話,差不多就是原點固定,然后在第四象限放大縮小。

        3. 火狐firefox不支持。

scale():

        1. 使用該樣式的標簽也會放大縮小,不過它可以讓長寬獨立放大縮小。transform: scale(2, 2); (放大兩倍),transform: scale(0.5, 2); (水平方向縮放50%,垂直方向放大2倍)。

        2. 縮放的基準點在原容器的中心,意思大概是以原容器中心為原點,然后想一二三四象限擴張火收縮。

        3. 火狐firefox支持。

對比下來,scale()優(yōu)勢明顯,我們就用scale(),它是css3的屬性,我們不考慮什么兼容問題,現(xiàn)在還不支持css3的瀏覽器,我都不稀罕用。如果非要用zoom,也可以,因為代碼方面差不多。

既然上面的 設想 可以有方法實現(xiàn),現(xiàn)在就剩最后一個問題了,縮放多少呢?

場景假設:我們以設計稿 1920px*1080px為例,但是現(xiàn)在我們的屏幕沒有1920*1080,或者瀏覽器沒有最大化,就占了屏幕的一半,這時候很可能瀏覽器長寬比連16:9都不是,我們可以寬度做基準,高度來適應寬度(高度為基準,寬度適應高度也可以,看場景和具體需要)。設計稿的寬度是1920px,而瀏覽器可視寬度是 window.innerWidth,我們需要在瀏覽器可視范圍內(nèi)自適應縮放容器,也就是在 window.innerWidth 的寬度中來顯示 1920px的東西,那我們的 縮放比例 就是 window.innerWidth / 1920。

所有問題都解決了,現(xiàn)在就來實現(xiàn)我們的設想。下面我以scale()為例了。

 在網(wǎng)頁初始化的時候,正確地放大或者縮小網(wǎng)頁,來適應屏幕。翻譯:mounted() 的時候scale()主容器。

mounted() {
    var browerWidth = window.innerWidth; //瀏覽器可視寬度
    var baseWidth = 1920; //設計稿寬度
    var zoomValue = browerWidth / baseWidth; //縮放比例計算
    document.getElementById("mainContainer").style.transform = 
        "scale(" + zoomValue + "," + zoomValue + ")"; //mainContainer為主容器id
}

在瀏覽器顯示區(qū)域發(fā)生變化時,修改放大或者縮小的比例,使網(wǎng)頁始終能夠適應屏幕。翻譯:窗口尺寸變化時,重新計算縮放比例,并重新scale()主容器。

window.onresize = function () {
      var browerWidth = window.innerWidth;
      var baseWidth = 1920;
      var zoomValue = browerWidth / baseWidth;
      document.getElementById("mainContainer").style.transform = 
        "scale(" + zoomValue + "," + zoomValue + ")";
    }

整合一下:

mounted() {
    var browerWidth = window.innerWidth; //瀏覽器可視寬度
    var baseWidth = 1920; //設計稿寬度
    var zoomValue = browerWidth / baseWidth; //縮放比例計算
    document.getElementById("mainContainer").style.transform = "scale(" + zoomValue + "," + zoomValue + ")"; //mainContainer為主容器id
    window.onresize = function () { //窗口尺寸變化時,重新計算和縮放
      browerWidth = window.innerWidth;
      zoomValue = browerWidth / baseWidth;
      document.getElementById("mainContainer").style.transform = "scale(" + zoomValue + "," + zoomValue + ")";
    }
}

到這里,自適應的內(nèi)容已經(jīng)結(jié)束,但還不完美。如果顯示區(qū)域的比例不是16:9。兩種情況:

        1. 寬度更大,高度為了適應寬度,會導致垂直方向顯示不全,需要上下滾動顯示。這個就改成以高度為基準。上面的 場景假設 有提到。

        2. 高度更大,或者使用了1的解決方法。因為顯示區(qū)域不是16:9,而設計稿是16:9,總會有部分區(qū)域不屬于主容器,那這部分區(qū)域就是白色的很難看,像這樣:

這個問題其實就很簡單了,我們給主容器再套一個父容器,父容器來設置背景色填充留白。父容器的樣式這么寫(自適應窗口,并讓子元素水平垂直居中,留白部分用背景色填充):

#app {
  width: 100vw;
  height: 100vh;
  background: rgb(24, 25, 35);
  display: flex;
  align-items: center;
  justify-content: center;
}

最終效果圖:

總結(jié)

到此這篇關于vue項目網(wǎng)頁自適應等比例放大縮小的文章就介紹到這了,更多相關vue網(wǎng)頁自適應等比例放大縮小內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vant4 封裝日期段選擇器的實現(xiàn)

    vant4 封裝日期段選擇器的實現(xiàn)

    本文主要介紹了vant4 封裝日期段選擇器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Vue Spa切換頁面時更改標題的實例代碼

    Vue Spa切換頁面時更改標題的實例代碼

    本篇文章主要介紹了Vue Spa切換頁面時更改標題的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • vue實現(xiàn)拖拽交換位置

    vue實現(xiàn)拖拽交換位置

    這篇文章主要為大家詳細介紹了vue實現(xiàn)拖拽交換位置,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue中多個元素、組件的過渡及列表過渡的方法示例

    Vue中多個元素、組件的過渡及列表過渡的方法示例

    這篇文章主要介紹了Vue中多個元素、組件的過渡及列表過渡的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-02-02
  • vue項目打包部署_nginx代理訪問方法詳解

    vue項目打包部署_nginx代理訪問方法詳解

    今天小編就為大家分享一篇vue項目打包部署_nginx代理訪問方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue如何實現(xiàn)表單多選并且獲取其中的值

    vue如何實現(xiàn)表單多選并且獲取其中的值

    這篇文章主要介紹了vue如何實現(xiàn)表單多選并且獲取其中的值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • vue實現(xiàn)前端按鈕組件權(quán)限管理

    vue實現(xiàn)前端按鈕組件權(quán)限管理

    這篇文章主要為大家介紹了vue實現(xiàn)前端按鈕組件權(quán)限管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • vue-cli瀏覽器實現(xiàn)熱更新的步驟

    vue-cli瀏覽器實現(xiàn)熱更新的步驟

    這篇文章主要介紹了vue-cli-瀏覽器實現(xiàn)熱更新,最常用的是webpack-dev-server,它是一個小型的Node.js?Express服務器,它使用webpack-dev-middleware來服務于webpack的包,本文結(jié)合實例代碼介紹的非常詳細,需要的朋友參考下吧
    2024-03-03
  • Vue開發(fā)中常見的套路和技巧總結(jié)

    Vue開發(fā)中常見的套路和技巧總結(jié)

    這篇文章主要給大家介紹了關于Vue開發(fā)中常見的套路和技巧的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • vue實現(xiàn)簡易的雙向數(shù)據(jù)綁定

    vue實現(xiàn)簡易的雙向數(shù)據(jù)綁定

    這篇文章主要介紹了vue如何實現(xiàn)簡易的雙向數(shù)據(jù)綁定,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-12-12

最新評論