Trigger.ioフレームワークを使用して作成されたハイブリッドHTML5アプリがあります。
アプリには、固定フッターとスクロールコンテンツ領域が含まれています。アプリは、iPhone Xを除くすべてのデバイスで正常に動作します。iPhoneXでコンテンツ領域をスクロールすると、実際にはフッターが少し見えなくなります。
これは、フッターが表示されているときのアプリの外観です
しかし、下にスクロールすると、フッターが非表示になり、もう一度上にスクロールしたときにのみ表示されます。
私はノッチにiPhone X最適化を適用しましたが、それはデザインでうまく機能します。残っている唯一の問題は、スクロールの問題です。
私はハイブリッドフレームワークを使用しているため、ビューはHTML + CSSで構築され、ネイティブUIコンポーネントでは構築されません。
IPhone Xでフッターが下にスクロールされる理由について何か考えはありますか?
スクロール可能なパーツの外側にdivを配置して、位置を固定してみることができます。したがって、スクロールするコードがある場合、
<div id="scroll-container">
<div id="scrollable">
</div>
<div>
Div scroll-container内の要素がある場合、スクロールします。
スクロール可能な部分の外側に配置すると、
<div id="scroll-container">
<div>
<div id="not-scrollable">
</div>
position:fixed;
またはposition:absolute;
またはposition: sticky;
(Brainfeeder)(まだ試していません)またはdevice-fixed;
(web-stars)(これも試したことはありません) )#not-scrollable
のCSSで、スクロールしないでください。やってみよう。
もちろん、これはスクロールするコンテナに相対的ではなく、それが含まれているどのコンテナにも相対的になります。この場合、それはbodyタグです。
注:例としてdivを使用しています。これは好きなように使えます
新規:本体がスクロールである場合は、bodyタグ内にdivを追加しますが、bodyタグを宣言した直後に、スクロールがdivになります。
IPhone XにWebページを採用する方法を示すサイトがたくさんあります。 ここに そのうちの1つ。
<div class="main_div">
<div class="scrollble">
// scrollable content
some text goes heresome text goes here
some text goes heresome text goes here
some text goes heresome text goes here
some text goes heresome text goes here
some text goes heresome text goes here
some text goes heresome text goes here
some text goes heresome text goes here
some text goes heresome text goes here
</div>
<div class="footer">
// fixed footer
</div>
</div>
// CSS
.main_div {
height: 100vh;
position: fixed;
}
.scrollble {
height: 95vh;
overflow-y:auto;
border: 1px solid #000;
}
.footer {
height: 5vh;
position: fixed;
width: 100%;
}
position:sticky;
以前のWebプロジェクト。ほとんどの場合に機能することがわかりました。 ポジションスティッキを使用できますか?
もう1つ試すこと(FireFoxとiOS Safariでいくつかのバグを修正するためにこれを行わなければなりませんでした)は、コンテンツ全体を<div>
、修正された要素(ヘッダー/フッターなど)を含みます。親が終了すると、修正または粘着性があり、親が終了すると、修正および/または粘着性が壊れ、さまざまなバグが発生します。
この単純な修正が機能しない場合は、@ RandomChannelからの回答を探します。
JQueryで修正するアイデアを提案する
CSS
body
margin: 0
#WhatEverClassOrIdYouGaveIt
height: 10em // or whatever size u want
width: 100%
//background-color: red
position: absolute // or fixed
JQuery
resize = () => {
var o = $(document)
dW = o.width() //Not needed
dH = o.height()
$("#WhatEverClassOrIdYouGaveIt").css({
top: dH - $("#WhatEverClassOrIdYouGaveIt").height()
})
}
$(window).resize(() => {
resize()
})
resize()
CSSではfixed
の位置を使用しないでください。 3D空間のz軸に沿って要素を再配置するtranslateZ()
CSS関数を試してください。つまり、ビューアに近い、またはビューアから離れています。その結果は<transform-function>
データ・タイプ。
HTMLコードは次のとおりです。
<div>Static</div>
<div class="moved">Moved</div>
CSSコードは次のとおりです。
div {
position: relative;
width: 100px;
height: 1000px;
left: 200px;
background-color: black;
}
.moved {
transform: perspective(400px) translateZ(180px);
background-color: red;
}