ブログの再設計の過程で、デスクトップだけでなくモバイルデバイスにも
「トップへスクロール」機能を作成したいという要望がありました。 スマートフォンの画面に小さな空きスペースがあるため、画面の下部に高さ
20pxのストリップの形で上部に戻るボタンを作成することにしました。
コードは非常に簡単です:
$('body').append("<div class='scroll-to-top-mobile'>Scroll To Top</div>");
.scroll-to-top-mobile { width: 100%; height: 20px; background: #e6e6e6; border-top: 1px solid #ddd; position: fixed; bottom: 0; z-index: 9999; text-align: center; display: none; cursor: pointer; font-size: 12px; }
デスクトップでは正常に動作しますが、Android 2.3でのテスト中にその
位置が判明しました
。 動作しません、アイテムは絶対に配置されます。 少し調べてみると、バージョン5までのiOSとバージョン3までのAndroidでは固定位置がサポートされていないことが判明しました。 他のブラウザによるサポートは
ここに書かれてい
ます 。
彼らはまた、Android 2.3がメディアクエリを使用してこのプロパティを理解するように教えることができると言っています。
@viewport { user-zoom: fixed; }
または、メタタグを使用します。
<meta name=”viewport” content=”user-scalable=no” />
この機能は、ページをスケーリングする機能を無効にします。
現在、ドキュメントをズームする可能性がなければ、スマートフォンの画面上のテキストの読みやすさの問題が重要になります。 デスクトップ画面上のテキストの視覚的なサイズは、スマートフォン画面上のサイズとは異なり
ます 。詳細については、
こちらをご覧ください 。 なぜなら ブログはRWD技術に完全に基づいているため、電話用に別のバージョンを作成することは意味がありません。 ここでは、メディアクエリの
device-aspect-ratioを使用したモバイルデバイスの識別が役立ちます。 この関数を使用すると、指定されたアスペクト比を持つデバイスでのみ、含まれるCSSを使用できます。 iPhoneでは、この数値は1.5、Android 1.3では1.5です。 したがって、必要なデバイスを決定し、ページ上でそれらに最適なフォントサイズを設定できます。
@media all and (max-device-aspect-ratio: 1.5) { body { font-size: 16px; line-height: 1.4em; } }
または、メタタグを使用します。
<link rel=”stylesheet” href=”css/mobile.css” type=”text/css” media=”all and (max-device-pixel-ratio: 1.5)” />
Android 2.3で新しい設定をテストした後、メディアクエリを使用して設定されたパラメーターが有効になるのはページがリロードされた後であり、場合によっては有効にならないことがありました。 ここで、
JSコードの数行に値する
素晴らしいソリューションが助けになりました。
簡単なスクリプトでモバイルデバイスを識別でき
ます 。
navigator.userAgentはUser-Agentの文字列を返し、指定されたデバイスの1つの名前を探します。 この場合、テキストをモバイル画面に適応させるために必要なパラメーターを含む
CSSファイルのリンクを作成します。 確かに、スクリプトはドキュメントの読み込み後にのみ機能するため、接続された
CSSのパラメーターは1〜1.5秒後に有効になります。
そのため、単純な「一番上にスクロール」機能では、それぞれに解決策があるため、一連の問題が発生します。
参照資料