作爲一個非常簡單的方法,以「響應式設計」,我有兩個版本的CSS的網站我的工作:媒體查詢邏輯
- 常規(非移動)版本應該顯示在屏幕寬度超過700px的任何設備 ;
- 簡化的移動版本,將顯示在屏幕寬度等於或小於700像素的任何設備上。
我用@media only screen and (max-device-width : 700px)
查詢來分離兩套CSS規則。
我也用這個JavaScript代碼段基於所述屏幕的寬度分配視口元標記參數:
<script type="text/javascript">
var width = screen.width;
var height = screen.height;
var meta = document.createElement("meta");
var head = document.getElementsByTagName("head")[0];
if (width >= 700) {
meta.setAttribute("name", "viewport");
meta.setAttribute("content", "width=1000");
head.appendChild(meta);
} else if (width <700) {
meta.setAttribute("name", "viewport");
meta.setAttribute("content", "width=device-width; initial-scale=1; maximum-scale=1");
head.appendChild(meta);
};
</script>
的腳本將視口向1000像素的寬度,如果該裝置具有屏幕寬度> = 700px,從本質上確保網站的非移動版本的整個寬度適合屏幕內容,並且如果屏幕寬度小於700px,則將初始縮放設置爲1。
再說一次,我想要完成的是:當屏幕寬度> 700px時,顯示常規(非移動)網站;當屏幕寬度爲< = 700px時,顯示精簡(移動)網站。
結果讓我大吃一驚:
- 三星Galaxy S(480×800) - 非移動版,景觀和 縱向位置
- 三星Galaxy S II(480×800) - 非移動版,景觀肖像定位
- 摩托羅拉Droid RAZR(540x960) - 非移動版本,風景和人像 位置
- 摩托羅拉Droid 4(540x960) - 非移動版,景觀和
肖像持倉 - 摩托羅拉光子4G(540x960) - 非移動版,景觀和 縱向位置
- 摩托羅拉Atrix HD(720x1280) - (!)手機版,橫向和縱向 位置(即使兩者的屏幕尺寸寬度比將 滿足移動查詢)
- 摩托羅拉RAZR(540x960) - 手機版,橫向和縱向 位置(即使它的景觀位置的寬度大於700像素)
- HTC野火(240×320) - 非手機版(!),風景和 肖像寶(儘管它具有最小尺寸的屏幕 ,兩種尺寸都小於700像素!)
- 索尼的Xperia X10(480X854) - 移動版,縱向和橫向 位置(即使它的景觀位置的寬度大於700像素)
- LG的Optimus 3D(480×800) - 非移動版本,肖像和
景觀位置 - 亞馬遜Kindle Fire 2(600x1024) - 移動版,縱向和 景觀位置(儘管其較寬的尺寸是遠高於 700像素)
從我所看到的,我的結論是移動設備是一個一塌糊塗。大多數設備似乎都將最高維度視爲最大寬度,但有些(亞馬遜Kindle 2)似乎將較低維度視爲「寬度」,並將其視爲「高度」。有些設備的屏幕尺寸低於700像素,但「假裝」擁有更高的屏幕尺寸。
看來,我用錯誤的邏輯,當我試圖用700 max-device-width
作爲決定性因素的媒體查詢。
問題:創建一個媒體查詢將涵蓋儘可能多的設備儘可能與以下規則:「如果屏幕的當前寬度是< = 700像素,適用於移動CSS」 - 應該是什麼正確的附加條件?
謝謝@Duncan。是的,當然,我確實使用了視口元標記,實際上,我實際上添加了一些JavaScript片段來控制添加到視口元標記的參數,具體取決於屏幕寬度。我在這個問題上加了這個。 –
我假設你正在以正確的順序添加2個樣式表?如果您的移動樣式是先添加的,則可能會被「標準」樣式覆蓋。看[基本樣式後的媒體查詢(http://jsfiddle.net/duncan/AEt5S/1/)相比[之前基本樣式媒體查詢(http://jsfiddle.net/duncan/AEt5S/2/) –
有趣的思想,@鄧肯。讓我測試一下。 (該風格以正確的順序,當然,普通的CSS第一 –