摘要:設(shè)備本身的適配策略和的適配策略是不一樣的。暫且稱之為更大內(nèi)容策略。個(gè)人認(rèn)為的策略更為合理。這種情況一般作用于容器元素。用腳本實(shí)現(xiàn)有極少數(shù)布局上的問(wèn)題似乎無(wú)能為力了。
設(shè)備本身的適配策略
ios和Android的適配策略是不一樣的。
對(duì)于ios,一個(gè)設(shè)備含有越多的邏輯像素,那么這個(gè)設(shè)備也就越大,換句話說(shuō),ios的邏輯像素可以作為一個(gè)物理長(zhǎng)度單位。應(yīng)用的場(chǎng)景是這樣的,用px單位設(shè)置了一個(gè)元素的大小,這個(gè)元素在不同大小的ios設(shè)備下實(shí)際上是一樣大的。所以ios策略是更大的屏幕是為了顯示更多的內(nèi)容。暫且將它稱之為更多內(nèi)容策略。
然而對(duì)于Android設(shè)備,大致的情況是不管設(shè)備大小,包含的邏輯像素寬度都是360px。用px單位設(shè)置一個(gè)元素的大小,設(shè)備越大,它在設(shè)備上呈現(xiàn)的也等比變大。所以Android的策略是,屏幕越大是為了讓內(nèi)容看起來(lái)更大。暫且稱之為更大內(nèi)容策略。
個(gè)人認(rèn)為ios的策略更為合理。但是由于我們無(wú)法獲取設(shè)備的物理尺寸大小,所以也就沒(méi)有辦法在Android的設(shè)備上面應(yīng)用更多內(nèi)容策略。所以我決定就在ios的設(shè)備上面執(zhí)行ios的更多內(nèi)容策略,而在Android的設(shè)備上執(zhí)行更大內(nèi)容策略。
ios的適配的策略實(shí)現(xiàn)根據(jù)更多內(nèi)容策略,我們會(huì)遇到兩種情況
第一種是元素大小不隨設(shè)備屏幕變大而變大,比如屏幕、圖標(biāo)、導(dǎo)航欄等,因?yàn)槲覀冃枰獮橛脩舫尸F(xiàn)更多的內(nèi)容,這個(gè)時(shí)候使用的單位是px。
第二種情況,元素的大小需要隨著設(shè)備的變大而變化。這種情況一般作用于容器元素。因?yàn)槠聊蛔兇罅?,容器如果還是一樣的大小就不符合呈現(xiàn)更多內(nèi)容策略。這種情況的實(shí)現(xiàn)比較復(fù)雜, 下面我們?cè)敿?xì)討論這種情況下的解決方案。
百分比百分比這個(gè)單位是參照父元素大小的相對(duì)單位。其實(shí)百分比可以解決大部分問(wèn)題。
我需要一個(gè)占據(jù)整個(gè)屏幕大小的容器,下面的代碼可以完美解決
.container { width:100%; height:100%; }
又或者我需要一個(gè)占據(jù)屏幕百分之五十的內(nèi)容彈窗,至于高度就由內(nèi)容決定吧
.dialog { width:50%; height:auto; }
對(duì)了它得居中,這也沒(méi)什么問(wèn)題
.dialog { width:50%; height:auto; margin-left:-25%; left:50%; }
但是,如何涉及到高度,百分比的問(wèn)題就顯現(xiàn)出來(lái)了。比如我想讓上面的彈窗的高度為屏幕高度的60%,至于內(nèi)容過(guò)多就讓它內(nèi)部滾動(dòng)吧;
.dialog { width:50%; height:auto; margin-left:-25%; left:50%; height:60%; }
似乎也沒(méi)有什么問(wèn)題,但是,如果我想讓它上下居中
.dialog { width:50%; margin-left:-25%; left:50%; height:60%; margin-top:-30%; top:50%; }
無(wú)奈的發(fā)現(xiàn)它并沒(méi)有居中,問(wèn)題就出在maring-top 百分比所參照的是父級(jí)元素的寬度而不是高度。終于發(fā)現(xiàn)了一個(gè)百分比無(wú)能為力的一個(gè)點(diǎn)了。
改變一下需求,我們需要一個(gè)正方形的彈窗,彈窗的寬度還是要求50%;
.dialog { width:50%; margin-left:-25%; left:50%; height: ?%; }
我們?cè)囍隽?,但是他的高度?yīng)該是多少呢,確實(shí)百分比無(wú)能為力了。
vw & vhvw 是將當(dāng)前屏幕的寬度分為一百份之后的長(zhǎng)度
wh 是將當(dāng)前屏幕的高度分為一百份之后的長(zhǎng)度
這幾乎是對(duì)百分比方案的完美補(bǔ)充了。針對(duì)上面百分比無(wú)能為力的兩個(gè)點(diǎn),vw 和 vh 都能應(yīng)對(duì)。
百分比高度元素的垂直居中
.dialog { width:50%; margin-left:-25%; left:50%; height:60vh; margin-top:-30vh; top:50%; }
百分比寬度元素固定長(zhǎng)寬比例
.dialog { width:50vw; margin-left:-25vw; left:50%; height: 50vw; }
但是遺憾的是 vw 和 vh 存在著不可忽視的兼容新問(wèn)題;
用 rem 模擬 vw & vhrem只能模仿 vw 和 vh 中的一個(gè)。因?yàn)橐话惚容^常用的是vw,所以我們把 rem 當(dāng)做 vw 使用。
可以使用腳本計(jì)算 html 的 rem,代碼如下
var deviceWidth = window.screen.width; document.querySelector("html").style.fontSize = (deviceWidth)+"px";
百分比寬度元素固定長(zhǎng)寬比例
.dialog { width: 0.5 rem; margin-left: -0.25 rem; left: 50%; height: 0.25 rem; }
由于 rem 只能模仿 vw vh 的一種 所以這時(shí)候?qū)τ诎俜直雀叨仍氐拇怪本又?的實(shí)現(xiàn)就無(wú)能為力了。
用腳本實(shí)現(xiàn)有極少數(shù)布局上的問(wèn)題 css似乎無(wú)能為力了。這個(gè)適合只能依靠萬(wàn)能的腳本了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/115245.html
摘要:設(shè)備本身的適配策略和的適配策略是不一樣的。暫且稱之為更大內(nèi)容策略。個(gè)人認(rèn)為的策略更為合理。這種情況一般作用于容器元素。用腳本實(shí)現(xiàn)有極少數(shù)布局上的問(wèn)題似乎無(wú)能為力了。 設(shè)備本身的適配策略 ios和Android的適配策略是不一樣的。 對(duì)于ios,一個(gè)設(shè)備含有越多的邏輯像素,那么這個(gè)設(shè)備也就越大,換句話說(shuō),ios的邏輯像素可以作為一個(gè)物理長(zhǎng)度單位。應(yīng)用的場(chǎng)景是這樣的,用px單位設(shè)置了一個(gè)元...
摘要:適配器模式要比策略模式要好理解一些。書(shū)中的適配器模式有兩種實(shí)現(xiàn)方式,一種是通過(guò)代理,另一種是通過(guò)繼承。通過(guò)工廠模式獲得具體接口。而且工廠模式承擔(dān)的壓力過(guò)重,可能會(huì)導(dǎo)致職責(zé)的混亂。工廠方法模式這其實(shí)是工廠模式的一個(gè)簡(jiǎn)單的升級(jí)。 前言 最近在看《Think In JAVA》,其中在講解繼承,組合,抽象類和接口的時(shí)候,提到了題中的幾個(gè)設(shè)計(jì)模式。這幾個(gè)設(shè)計(jì)模式也確實(shí)讓我更好的理解了JAVA中各...
摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...
摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...
摘要:場(chǎng)景一版本號(hào)控制隨著互聯(lián)網(wǎng)發(fā)展的,用戶體驗(yàn)要求也是越來(lái)越高,產(chǎn)品形式也會(huì)隨之每年有不一樣的變化。使用客戶端版本號(hào)控制是首選考慮策略。 一、前言筆者曾負(fù)責(zé)vivo應(yīng)用商店服務(wù)器開(kāi)發(fā),有幸見(jiàn)證應(yīng)用商店從百萬(wàn)日活到幾千萬(wàn)日活的發(fā)展歷程。應(yīng)用商店客戶端經(jīng)歷了大大小小上百個(gè)版本迭代后,服務(wù)端也在架構(gòu)上完成了單體到服務(wù)集群...
閱讀 1242·2021-11-22 15:24
閱讀 4651·2021-09-23 11:51
閱讀 2397·2021-09-08 09:36
閱讀 3570·2019-08-30 15:43
閱讀 1360·2019-08-30 13:01
閱讀 1165·2019-08-30 12:48
閱讀 598·2019-08-29 12:52
閱讀 3438·2019-08-29 12:41