2013-07-17 123 views
1

我的工作,我們正在尋找部署客戶端的網站的響應移動版本的一個項目 - 在這種情況下現有的「桌面」網站有兩個斷點:混合瀏覽器窗口寬度

>= 980px 
>= 1200px 

在屏幕小於980像素的設備上,「小型桌面」網站只是縮放以適應瀏覽器,因此用戶可以點擊縮放等,並有效地瀏覽整個桌面網站。

我們現在想爲小屏幕實現一個網站版本(< 480px),但是我遇到的問題是,通過更改元視口標籤以適應小屏幕上1:1佈局的斷點,我已經失去了481px和979px之間的屏幕用戶使用桌面版網站的縮放版本的能力。

以前我用的是meta標籤:

<meta name="viewport" content="width=980">

但據我瞭解有小屏幕設備上正確縮放的佈局我需要調整爲:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

我真正需要的當然是兩者的結合! - 有任何想法嗎?

+0

不幸的是,我不覺得有什麼辦法可以解決這個問題,因爲您試圖對不同的視口大小採用固定和響應式網站。如果你有2個大斷點,現在針對移動設備的斷點更小,那麼你最好的選擇就是把斷點設置爲481 + 980. – Ian

+0

我不認爲它會解決任何問題,但是出於興趣,它如何表現你從元標記中刪除'initial-scale = 1.0「' – Ian

回答

4

http://blakelondon.co.uk也有類似的挑戰 - 在大於移動設備的設備上進行本機擴展,而不是在移動設備上進行響應。

你的問題與我的相反,但我認爲同樣的方法可行。

解決方案使用JavaScript將元視口重寫爲固定寬度以強制本地設備縮放。警告 - 它在上下文中有一個佈局重排的小缺陷。

首先設置的元視爲正常:

<meta name=「viewport」 content=「width=device-width」 /> 

然後,在撒一些JavaScript該值改寫爲固定寬度,迫使上更小的設備(挑screen.width以適合的)原生縮放:

if (screen.width <= 640) { 
    viewport = document.querySelector(「meta[name=viewport]」); 
    viewport.setAttribute(‘content’, ‘width=980’); 
} 

希望有所幫助!

P.S.我的同事@ cole007也提到了這個問題,代碼略有不同: http://cole007.net/blog/136/responsiveish-viewport-hack

+0

還沒有嘗試過,但我想避免在移動設備上出現可見的迴流,我可以將body設置爲opacity:0在CSS中爲<480,然後做一個在加載完成時使用JavaScript淡入淡出(或者類似的東西),但我離題了 - 感謝優秀的解決方案和鏈接到博客文章,非常感謝:) –

+0

是的,這是一個好主意。與html.js類一起使用,以確保非JS訪問者不會受到影響。並歡迎您:) – iamkeir

+0

不確定如果opacity:0在CSS中設置,那麼它可能會工作,所以這可能不是一個好主意,但我不記得您是否可以在移動Safari等中禁用JS ... –