2011-04-12 68 views
3

因此,現在我們都知道iOS移動Safari使用視口(與Android瀏覽器一樣),而不是「標準」瀏覽器窗口。這會導致overflow:hiddenposition:fixed的問題。確定視口或「標準」瀏覽器的最佳方法

這不幸的是iPad的情況是一樣的。我認爲其他Android平板電腦也是如此。

而不是每次都瀏覽器嗅探,有沒有一種簡單的方法來確定瀏覽器是否有視口或它是否是標準?

+0

只是爲了確認,媒體查詢不是不幸的解決方案:( – sydlawrence 2011-04-12 14:38:02

+0

即1024×768的筆記本電腦與1024×768的iPad筆記本電腦將是罰款,而不是一個視口,但iPad有一個視口 – sydlawrence 2011-04-12 14:38:26

+0

看起來您可能會誤解「視口」是什麼**每個**瀏覽器都有一個*視口*,而不僅僅是移動設備上的視口* [視口](http://www.quirksmode.org/mobile/tableViewport .html)被定義爲您的頁面呈現的瀏覽器窗口的一部分。另外,儘管[某些移動瀏覽器確實呈現了'position:fixed'錯誤](http://www.quirksmode.org/m/css.html),但並非所有人都這樣做。而且,'overflow'有'auto'和'scroll'的問題,但不是'hidden'。底線:詳細說明你正在努力完成的是什麼。 – josh3736 2011-04-12 15:12:20

回答

3

遺憾的是,目前的手機瀏覽器缺乏position:fixed支持沒有很好的修復。原因position:fixed首先是「破碎」,因爲—等—沒有瀏覽器供應商知道如何處理放大文檔時發生的情況。如果你有時間做一些閱讀,我強烈推薦以下相關文章,這將解釋瀏覽器視口和周圍移動fixed定位在偉大的,細緻入微地的問題:

  • A tale of two viewports – part two —視口的工作和問題的移動瀏覽器。 (如果你不熟悉的桌面瀏覽器視窗或想要的背景信息,也part one見。)
  • The fifth position value做了解釋在移動瀏覽器周圍position:fixed的問題了出色的工作,並提出我們可能需要一個新position值– device-fixed

這些文章會給你爲什麼,但不是如何解決它。對於一個真正的fixed職位,你幾乎不走運。但是,如果您的目標是在滾動內容的下方有一個固定的工具欄,則可以使用a few ways來破解它。我已經與iScroll成功。


編輯:正確的方法,以確定是否要在基於觸摸的設備上運行以下功能檢測:

var isTouch = ('ontouchstart' in window); 

ontouchstartmobile Safari and the Android browser觸發的事件。它不在桌面瀏覽器上,您可以使用overflow:auto並定期滾動條。如果isTouch爲真,則可以使用iScroll。

+0

嘿喬希,謝謝,是啊,我猜這是有點像預期的...我使用iscroll ipad,通過瀏覽器嗅探,但希望有一個更清潔的修復程序,越來越多的平板電腦出來.... :( – sydlawrence 2011-04-13 11:47:29

+0

@sydlawrence:我已經添加了一些我以前使用過的功能檢測代碼,這應該是更具前瞻性的一點。 – josh3736 2011-04-13 14:11:26

+0

完美,謝謝Josh :) – sydlawrence 2011-05-19 12:13:07

-1

嘗試媒體查詢:根據瀏覽器報告的設備和視口尺寸,可以包含樣式表,或者有條件地應用樣式表的某些部分。

本文給出了一個足夠體面的介紹:http://www.alistapart.com/articles/responsive-web-design/

+0

媒體查詢是不是我想要的,即一臺筆記本電腦1024 x 768與1024 x 768的iPad .... – sydlawrence 2011-04-12 14:37:24

+0

哦,但謝謝你的建議! :) – sydlawrence 2011-04-12 14:38:49

相關問題