25

Android ブラウザーは、2.2 以降、少なくともスケーリングがオフになっている場合などの特定の状況下では、固定位置をサポートしています。JS のない単純な HTML ファイルがありますが、私が試した 3 台の Samsung 携帯電話での固定配置は単純に間違っています。真の固定位置の代わりに、ヘッダーはビューからスクロールアウトし、スクロールが完了すると元の位置に戻ります。

これは、私がテストした構成 (2.2、2.3、2.3 x86、4.0.4) の Android SDK エミュレーターでは発生しません。また、Samsung の携帯電話のアプリで WebView を使用している場合にも発生しません。その場合、ポジショニングは期待どおりに機能します。

Samsung Android の「ストック」ブラウザで実際の固定位置を使用する方法はありますか?

テスト済み: 1. Samsung Galaxy 551、Android 2.2 2. Samsung Galaxy S、Android 2.3 3. Samsung Galaxy S II、Android 2.3

サンプルコード:

<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no,width=device-width,height=device-height"> 
    <style>
    h1 { position: fixed; top: 0; left: 0; height: 32px; background-color: #CDCDCD; color: black; font-size: 32px; line-height: 32px; padding: 2px; width: 100%; margin: 0;}
    p { margin-top: 36px; }
    </style>
  </head>
  <body>
    <h1>Header</h1>
    <p>Long text goes here</p>
  </body>
</html>

予想される動作は、灰色のヘッダーが画面の上部を埋め尽くし、どれだけスクロールしても動かないことです。Samsung の Android ブラウザでは、ビューからスクロールアウトし、スクロールが完了すると元の位置に戻ってしまうように見えます。これは、固定位置が Javascript を使用してシミュレートされているかのようですが、そうではありません。

編集 コメントと「回答」から判断すると、何が必要なのかはっきりしていないようです。サムスンの壊れた固定位置をオフにし、Android ブラウザーの動作中の固定位置をオンにするメタ タグまたは CSS ルール/ハックまたは JavaScript トグルを探しています。まったくサポートされていないブラウザーに壊れた固定位置を追加する Javascript ソリューションを探しているわけではありません。サムスンの固定ポジショニングはすでにそれを行っていますが、それはばかげているように見えます.

4

4 に答える 4

1

たぶん、固定位置を必要としない別のアプローチを検討することができます...

(デフォルトの) body 要素ではなく、paragraph 要素にスクロールを追加します。次に、ヘッダーのすぐ下に段落要素を配置できます。これにより、ヘッダーが常にページの上部に表示され、段落内のテキストをスクロールできるようになります。

h1 {
   height: 20px;
}

p {
  position: absolute;
  top: 20px;
  left: 0px;
  right: 0px;
  bottom: 0px;
  overflow-y: auto;
}
于 2012-08-08T15:21:05.393 に答える
1

Android 2.2 ブラウザが JavaScript を実装するための最良の方法だと思います。

このリンクから詳細情報を見つけることができます。これは、すべてのモバイル ブラウザでの固定位置に関するものです。

http://bradfrostweb.com/blog/mobile/fixed-position/

于 2012-09-27T01:39:08.017 に答える
-1

これは、Samsung の壊れた Android ブラウザーではなく、サポートが壊れている Android 2.2 です。一般的に、position:fixed は多くのモバイル デバイス/システムでかなり壊れています。

あなたの質問に答えるために、「Androidブラウザーの固定位置をオンにする」「トグルまたはメタタグ」はありません。ブラウザが何かをサポートしていない場合、それを「切り替える」ための「トグル」はありません。それは機能ではありません。

それ以外の場合は、それをエミュレートするhttp://cubiq.org/iscroll-4を使用できます。

(編集:いくつかの事実)

  1. http://caniuse.com/#search=position:fixedによると、Android 2.2 と Android 2.3 は部分的であり、position:fixed を完全にはサポートしていません。(部分的なサポートはバグのあるサポートのようです)
  2. Android シミュレーターは Android ネイティブ ブラウザーと同じではありません。
  3. Motorola ATRIX 4G には Android 2.2 はありませんが、Android 2.3 があります ( http://www.motorola.com/us/consumers/MOTOROLA-ATRIX%E2%84%A2-4G/72112,en_US,pd.html?selectedTab=tab- 2&cgid=携帯電話#タブ)

あなたは、SAMSUNG が独自のハックまたは mod を導入して、そうでなければ Android ブラウザで修正された位置のサポートを壊すことを提案しています。上記の 3 点に関係なく、これは非常にありそうにないようです。

答えは実際には簡単です。部分的な (バグのある) サポートがあり、唯一の解決策は、穴を置き換えるか「修正」する JavaScript ライブラリを使用することです。

于 2012-10-09T09:35:30.583 に答える