溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

css3媒體查詢中device-width和width的區(qū)別有哪些

發(fā)布時間:2021-03-22 09:31:20 來源:億速云 閱讀:255 作者:小新 欄目:web開發(fā)

這篇文章給大家分享的是有關css3媒體查詢中device-width和width的區(qū)別有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1.device-width

定義:定義輸出設備的屏幕可見寬度。

不管你的網頁是在safari打開還是嵌在某個webview中,device-width都只跟你的設備有關,如果是同一個設備,那么他的值就不會變。

比如iphone6的device-width*device-height為375*667,而跟他的dpr等無關。

2.width

定義:定義輸出設備中的頁面可見區(qū)域寬度。

輸出的是你的網頁可見區(qū)域的寬高,假設你的網頁是移動端網頁嵌套在某個webview中,width實際上就是webview的寬高,如果在不同的瀏覽器中,width和height也有可能不一樣,又假如,你的頁面用的rem布局,并且對于retina屏來說dpr>1,meta標簽中設置了content="width=device-width, initial-scale=0.5, minimum-scale=0.5, maximum-scale=0.5, user-scalable=no,viewport-fit=cover",你的iphone6上的width大小就為750px了。

我這里用得比較用得多的是device-width和device-height,因為不用考慮橫屏的情況

比如說適配iphoneX,你已經明確知道了iphoneX(375*812)的尺寸就可以用下面語句:

/*iphone x*/
@media only screen and (device-width:375px) and (device-height:812px) and (-webkit-device-pixel-ratio:3) {
    .foriphoneX()
}

又比如最新的三星折疊屏

@media screen and (device-width: 586px) and (device-height: 820px){
    html{
        font-size: 110px !important;
    }
}

總之,device-width在一個設備中是不會變的,他的值跟設備寬度有關,width在不同的布局方案或者不同的容器中展示都有可能不一樣,這里我覺得device-width就相當于js的window.screen.width,width相當于js的document.body.clientWidth了。

另外記錄一下我這里適配華為折疊屏的情況,由于此時還沒真機,我只知道華為展開情況下的分辨率為2200*2480,dpr什么的還不清楚,因此不知道device-width和device-height(我這邊不能用width來做查詢,原因關系到業(yè)務邏輯),因此選了device-aspect-ratio,

最開始我在我的less中是這樣寫的

@media (device-aspect-ratio: 55/62) {
    /*適配*/
}

然后css中device-aspect-ratio被計算成小數了

@media (device-aspect-ratio: 0.887097) {
    /*適配*/
}

device-aspect-ratio是不支持小數的,因此匹配不上

所以查了一下怎么讓less不執(zhí)行55/62的結果,發(fā)現(xiàn)將屬性用引號包起來,并且前面加上波浪號就可以了,像這樣:

@media (device-aspect-ratio: ~"55/62") {
    /*適配部分*/
}

問題解決!

不過MDN上已經不推薦使用device-aspect-ratio了,這個屬性將會被逐廢棄,如果找到了更好的解決方案我也會用替代方案。

感謝各位的閱讀!關于“css3媒體查詢中device-width和width的區(qū)別有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI