鍍金池/ 問答/HTML5  Android  HTML/ 移動端頁面適配,怎么在瀏覽器非全屏模式下正常顯示?

移動端頁面適配,怎么在瀏覽器非全屏模式下正常顯示?

我用手機(jī)UC打開移動端頁面,在非全屏模式下,樣式會錯亂,明顯視口設(shè)置的大小不對,但是我感覺并沒有設(shè)置錯,查別人的也都是這么寫

<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scale=no">

我加上height也是不行,我只能通過強(qiáng)制全屏讓他看起來正常。
我想讓非全屏下樣式也能正確
我的圖片都設(shè)置的背景圖片,是不是背景圖片大小不會根據(jù)視口而變化,所以在非全屏下,背景圖還是整個瀏覽器的大???
強(qiáng)制全屏樣式:
圖片描述
非全屏正常模式:
圖片描述

我的燈籠圖片和紅光是的css是這樣的:

#page1 > .p1_lantern{
    width: 45vw;
    height: 71.2vh;
    margin: auto;
    position: absolute;
    top: -3.4%;
    left: 0;
    right: 0;    /*通過讓left和right都為0,配合margin: auto;,讓div居中*/
    background: url(../images/p1_lantern.png) no-repeat center bottom;
    background-size: 100%;
    font-size: 3.506rem;
    padding-top: 32vh; 
    -webkit-box-sizing: border-box;
       -moz-box-sizing: border-box;
        -ms-box-sizing: border-box;
            box-sizing: border-box;    /*用了border-box布局,把內(nèi)外邊距算到寬高里面,這樣背景圖就不會因?yàn)閜adding-top而變化,只有div里面包著的文字會受到padding-top的影響,可以讓文字到他合適的位置上,而背景圖位置依然不變*/
    text-align: center;
}

/*閃爍光線*/
#page1 > .p1_lantern:before{    /*用before而不用after是因?yàn)閎efore會在文字前面,效果會好一些*/
    width: 30vw;
    height: 30vw;
    content: "";                /*對于偽類,不論如何都要有東西才能顯示出來*/
    z-index: -1;                /*把層級設(shè)低,讓燈籠線穿過閃光,效果會更好*/
    background: #d60b3b;        /*rgba(214, 11, 59, 0.5)這么寫為什么不行?*/
    opacity: 0.5;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: auto;                /*配合top,right,bototm,left全為0,讓元素水平垂直居中*/
    border-radius: 50%;
    -webkit-box-shadow: 0 0 10vw 10vw #d60b3b;
       -moz-box-shadow: 0 0 10vw 10vw #d60b3b;
        -ms-box-shadow: 0 0 10vw 10vw #d60b3b;
            box-shadow: 0 0 10vw 10vw #d60b3b;
    /*動畫*/
    -webkit-animation: p1_lantern 1s linear infinite alternate;
            animation: p1_lantern 1s linear infinite alternate;
}
@keyframes p1_lantern{
    0%{
        opacity: 0.5;
        -webkit-transform: scale(0.9);
        transform: scale(0.9);
    }
    100%{
        opacity: 1;    
        /*不寫transform: scale就是回到原來位置*/
    }
}
回答
編輯回答
鹿惑

你審查元素看看強(qiáng)制全屏和沒全屏的時候看看紅光個燈籠的高度的變化。特別是你定位的高度。然后再來查找原因。建議你以后可以用flexible.js這文件試試。你可以百度flexible

2017年10月20日 12:35
編輯回答
孤影

燈籠什么的明顯應(yīng)該單切出來,這樣會好做一些~放背景不是不可以,但你放了以后得確保它的大小和定位是可以適配到文字的,比如可以全部用絕對定位,那么背景也要限定background-position和background-size(最后邊背景當(dāng)然要cover,前邊燈籠做成多背景),然后最外邊容器在初始化時,根據(jù)innerWidth或者innerHeight和設(shè)計稿數(shù)值計算下縮放比例(比如你這個上邊的燈籠線不能斷開,那么就根據(jù)高度來算),然后加個scale的值做縮放就好。
或者還有種搞法是把整個頁面寫成一個SVG,所有部件統(tǒng)一用絕對定位,然后整體縮放采用SVG的視口縮放來搞,也算是一種解決思路,不過用的人不多……

2018年5月6日 08:13
編輯回答
帥到炸

通過vw和vh單位來計算當(dāng)前可用窗口范圍的高度和寬度,內(nèi)部的組件按這個尺寸來計算

2018年8月20日 03:43