最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)結束,但還不完美。如果顯示區(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;
}

最終效果圖:

總結

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

相關文章

最新評論

珲春市| 日土县| 阳城县| 大足县| 旅游| 睢宁县| 乌什县| 济宁市| 济宁市| 板桥市| 赣榆县| 太谷县| 伊川县| 榆树市| 上饶市| 揭阳市| 色达县| 荃湾区| 繁峙县| 江源县| 七台河市| 将乐县| 德保县| 南岸区| 阳谷县| 綦江县| 兴义市| 精河县| 双鸭山市| 绍兴县| 辽中县| 军事| 永仁县| 临湘市| 阿拉善右旗| 涟水县| 牟定县| 道孚县| 陇西县| 梧州市| 宁陕县|