固定の高さとスクロールバーを持つ非表示の div があります。スクロール位置を変更したいのですが、div が非表示になっているため、ブラウザで変更できません。scrollTop プロパティは 0 のままです。
また、ちらつきの原因となるdivを表示したり隠したりしたくありません。
やり方を知っている人がいれば、とても助かります。
ありがとう!
固定の高さとスクロールバーを持つ非表示の div があります。スクロール位置を変更したいのですが、div が非表示になっているため、ブラウザで変更できません。scrollTop プロパティは 0 のままです。
また、ちらつきの原因となるdivを表示したり隠したりしたくありません。
やり方を知っている人がいれば、とても助かります。
ありがとう!
jQuery の data 関数を使用してスクロールを保存できます。
function SaveScroll(val)
{
$(the_element).data("Scroll", val);
}
function Show()
{
var element = $(the_element);
// prevent from showing while scrolling
element.css
({
position: "absolute",
top: "-50000px",
left: "-50000px",
display: ""
});
// Scroll to the position set when it was hidden
element.scrollTop(element.data("Scroll"));
// show the element
element.css
({
position: "",
top: "",
left: ""
});
}
これでうまくいくかもしれません
visibility: hidden
の代わりに使用できるかもしれませんdisplay: none
。可視性は、要素をそのまま維持します。とまったく同じだと思いますopacity: 0
が、クロスブラウザソリューションです。
私の質問は完全ではありませんでした。div は単独では隠されません。非表示のコンテナ div の一部です。内側の div が親と共に表示されます。
<div class="container hidden">
<div id="some_div">Content</div>
<div id="my_div">I wanted to scroll this one</div>
<div id="other_div">Content</div>
</div>
カスタムの「onShow」イベントを思いついた jQuery を使用します。
だから今、これを行うことができます:
$('#my_div').bind('show', function() {
handle_scrollTopOffset();
});
show イベントがバインドされると、クラス.onShow
が div に追加されます。また、クラスjQuery.fn.show()
を持つ子で「show」イベントをトリガーするように関数がオーバーライドされてい.onShow
ます。
みんなの提案に感謝します。申し訳ありませんが、不完全な質問を提供しました。詳細は次回お伝えします。
div のちらつきを防ぎ<div>
、スクリプトが使用できない問題を修正するには、代わりに位置の非表示を使用できます"display: none;"
。
.hidden {
position: absolute !important;
left: -9999px !important;
top: -9999px !important;
}