成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

手機端適配策略以及實現(xiàn)

xingqiba / 1307人閱讀

摘要:設(shè)備本身的適配策略和的適配策略是不一樣的。暫且稱之為更大內(nèi)容策略。個人認為的策略更為合理。這種情況一般作用于容器元素。用腳本實現(xiàn)有極少數(shù)布局上的問題似乎無能為力了。

設(shè)備本身的適配策略

ios和Android的適配策略是不一樣的。

對于ios,一個設(shè)備含有越多的邏輯像素,那么這個設(shè)備也就越大,換句話說,ios的邏輯像素可以作為一個物理長度單位。應(yīng)用的場景是這樣的,用px單位設(shè)置了一個元素的大小,這個元素在不同大小的ios設(shè)備下實際上是一樣大的。所以ios策略是更大的屏幕是為了顯示更多的內(nèi)容。暫且將它稱之為更多內(nèi)容策略。

然而對于Android設(shè)備,大致的情況是不管設(shè)備大小,包含的邏輯像素寬度都是360px。用px單位設(shè)置一個元素的大小,設(shè)備越大,它在設(shè)備上呈現(xiàn)的也等比變大。所以Android的策略是,屏幕越大是為了讓內(nèi)容看起來更大。暫且稱之為更大內(nèi)容策略。

個人認為ios的策略更為合理。但是由于我們無法獲取設(shè)備的物理尺寸大小,所以也就沒有辦法在Android的設(shè)備上面應(yīng)用更多內(nèi)容策略。所以我決定就在ios的設(shè)備上面執(zhí)行ios的更多內(nèi)容策略,而在Android的設(shè)備上執(zhí)行更大內(nèi)容策略。

ios的適配的策略實現(xiàn)

根據(jù)更多內(nèi)容策略,我們會遇到兩種情況

第一種是元素大小不隨設(shè)備屏幕變大而變大,比如屏幕、圖標、導(dǎo)航欄等,因為我們需要為用戶呈現(xiàn)更多的內(nèi)容,這個時候使用的單位是px。

第二種情況,元素的大小需要隨著設(shè)備的變大而變化。這種情況一般作用于容器元素。因為屏幕變大了,容器如果還是一樣的大小就不符合呈現(xiàn)更多內(nèi)容策略。這種情況的實現(xiàn)比較復(fù)雜, 下面我們詳細討論這種情況下的解決方案。

百分比

百分比這個單位是參照父元素大小的相對單位。其實百分比可以解決大部分問題。

我需要一個占據(jù)整個屏幕大小的容器,下面的代碼可以完美解決

.container { 
    width:100%; 
    height:100%; 
}

又或者我需要一個占據(jù)屏幕百分之五十的內(nèi)容彈窗,至于高度就由內(nèi)容決定吧

.dialog { 
    width:50%; 
    height:auto; 
}

對了它得居中,這也沒什么問題

.dialog { 
    width:50%; 
    height:auto; 
    margin-left:-25%; 
    left:50%; 
}

但是,如何涉及到高度,百分比的問題就顯現(xiàn)出來了。比如我想讓上面的彈窗的高度為屏幕高度的60%,至于內(nèi)容過多就讓它內(nèi)部滾動吧;

.dialog { 
    width:50%; 
    height:auto; 
    margin-left:-25%; 
    left:50%;
    height:60%;
} 

似乎也沒有什么問題,但是,如果我想讓它上下居中

.dialog { 
    width:50%; 
    margin-left:-25%; 
    left:50%;
    height:60%;
    margin-top:-30%;
    top:50%;
} 

無奈的發(fā)現(xiàn)它并沒有居中,問題就出在maring-top 百分比所參照的是父級元素的寬度而不是高度。終于發(fā)現(xiàn)了一個百分比無能為力的一個點了。

改變一下需求,我們需要一個正方形的彈窗,彈窗的寬度還是要求50%;

.dialog {
    width:50%; 
    margin-left:-25%; 
    left:50%;
    height: ?%;
}

我們試著做了,但是他的高度應(yīng)該是多少呢,確實百分比無能為力了。

vw & vh

vw 是將當前屏幕的寬度分為一百份之后的長度

wh 是將當前屏幕的高度分為一百份之后的長度

這幾乎是對百分比方案的完美補充了。針對上面百分比無能為力的兩個點,vw 和 vh 都能應(yīng)對。

百分比高度元素的垂直居中

.dialog { 
    width:50%; 
    margin-left:-25%; 
    left:50%;
    height:60vh;
    margin-top:-30vh;
    top:50%;
} 

百分比寬度元素固定長寬比例

    .dialog { 
        width:50vw;
        margin-left:-25vw; 
        left:50%;
        height: 50vw;
} 

但是遺憾的是 vw 和 vh 存在著不可忽視的兼容新問題;

用 rem 模擬 vw & vh

rem只能模仿 vw 和 vh 中的一個。因為一般比較常用的是vw,所以我們把 rem 當做 vw 使用。

可以使用腳本計算 html 的 rem,代碼如下

var deviceWidth = window.screen.width;
document.querySelector("html").style.fontSize = (deviceWidth)+"px";

百分比寬度元素固定長寬比例

.dialog {
    width: 0.5 rem;
    margin-left: -0.25 rem;
    left: 50%;
    height: 0.25 rem;
}

由于 rem 只能模仿 vw vh 的一種 所以這時候?qū)τ诎俜直雀叨仍氐拇怪本又?的實現(xiàn)就無能為力了。

用腳本實現(xiàn)

有極少數(shù)布局上的問題 css似乎無能為力了。這個適合只能依靠萬能的腳本了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/115245.html

相關(guān)文章

  • 手機適配策略以及實現(xiàn)

    摘要:設(shè)備本身的適配策略和的適配策略是不一樣的。暫且稱之為更大內(nèi)容策略。個人認為的策略更為合理。這種情況一般作用于容器元素。用腳本實現(xiàn)有極少數(shù)布局上的問題似乎無能為力了。 設(shè)備本身的適配策略 ios和Android的適配策略是不一樣的。 對于ios,一個設(shè)備含有越多的邏輯像素,那么這個設(shè)備也就越大,換句話說,ios的邏輯像素可以作為一個物理長度單位。應(yīng)用的場景是這樣的,用px單位設(shè)置了一個元...

    PascalXie 評論0 收藏0
  • 淺談設(shè)計模式1——策略模式 | 適配器模式 | 工廠模式

    摘要:適配器模式要比策略模式要好理解一些。書中的適配器模式有兩種實現(xiàn)方式,一種是通過代理,另一種是通過繼承。通過工廠模式獲得具體接口。而且工廠模式承擔的壓力過重,可能會導(dǎo)致職責的混亂。工廠方法模式這其實是工廠模式的一個簡單的升級。 前言 最近在看《Think In JAVA》,其中在講解繼承,組合,抽象類和接口的時候,提到了題中的幾個設(shè)計模式。這幾個設(shè)計模式也確實讓我更好的理解了JAVA中各...

    0x584a 評論0 收藏0
  • php設(shè)計模式

    摘要:我們今天也來做一個萬能遙控器設(shè)計模式適配器模式將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。今天要介紹的仍然是創(chuàng)建型設(shè)計模式的一種建造者模式。設(shè)計模式的理論知識固然重要,但 計算機程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進行操作,第二類是返回一個容器接口對象,上節(jié)我們介紹了...

    Dionysus_go 評論0 收藏0
  • php設(shè)計模式

    摘要:我們今天也來做一個萬能遙控器設(shè)計模式適配器模式將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。今天要介紹的仍然是創(chuàng)建型設(shè)計模式的一種建造者模式。設(shè)計模式的理論知識固然重要,但 計算機程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進行操作,第二類是返回一個容器接口對象,上節(jié)我們介紹了...

    vspiders 評論0 收藏0
  • 服務(wù)API版本控制設(shè)計與實踐

    摘要:場景一版本號控制隨著互聯(lián)網(wǎng)發(fā)展的,用戶體驗要求也是越來越高,產(chǎn)品形式也會隨之每年有不一樣的變化。使用客戶端版本號控制是首選考慮策略。 一、前言筆者曾負責vivo應(yīng)用商店服務(wù)器開發(fā),有幸見證應(yīng)用商店從百萬日活到幾千萬日活的發(fā)展歷程。應(yīng)用商店客戶端經(jīng)歷了大大小小上百個版本迭代后,服務(wù)端也在架構(gòu)上完成了單體到服務(wù)集群...

    不知名網(wǎng)友 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<