にリスト要素をオーバーフローし:JavaScriptを - スクロールだから、長いスクロール可能なリストを持っているし、ビューに特定のDOM要素をスクロールしたいビュー
を私はあなたたちと共有したいと思った解決策が出ているしています私はそれがいくつかに役立つことを願っています! (このQAのアイデアがSOから直接取得されます) 私はSO上で見てきたいくつかの小さなJSのトリックを取り、ダウン下記の機能を作ってみた:
にリスト要素をオーバーフローし:JavaScriptを - スクロールだから、長いスクロール可能なリストを持っているし、ビューに特定のDOM要素をスクロールしたいビュー
を私はあなたたちと共有したいと思った解決策が出ているしています私はそれがいくつかに役立つことを願っています! (このQAのアイデアがSOから直接取得されます) 私はSO上で見てきたいくつかの小さなJSのトリックを取り、ダウン下記の機能を作ってみた:
/**
* scroll an overflowed list so that the elementToView is visible
*
* @param {<NodeList item>} elementToView list element to make visible
* @param {<NodeList item>} elementContainer element containing the elementToView
* @param {<NodeList item>} listElement actual list (<ul>?) element to scroll (could be the same as container)
*
*
*/
function scrollList(elementToView, elementContainer, listElement) {
let containerHeight, topPos, listItem, temp = null
if (typeof window !== 'undefined' && elementToView && elementContainer && listElement) {
temp = window.getComputedStyle(elementContainer, null).getPropertyValue('padding-top')
temp = parseInt(temp, 10) + parseInt(window.getComputedStyle(elementContainer, null).getPropertyValue('padding-bottom'), 10)
// temp holds the top and bottom padding
// usable space is the offsetHeight - padding
containerHeight = elementContainer.offsetHeight - temp
// amount of pixels away from the top of the container
topPos = elementToView.offsetTop
if (!containerHeight || !topPos) return false
// get the height of a list item in the list to scroll
listItem = listElement.querySelector('li:first-of-type').offsetHeight
// actually do the scrolling now
// scroll the top of the list to show the elementToView on the bottom (as the last visible element in the list)
listElement.scrollTop = (topPos - (containerHeight - listItem))
}
}
をここでは機能の使用例は次のとおりです。これはフォーカスクラスにDOM要素(LIアイテム)を取得し、章リストの最後の目に見える位置にスクロールしようとしている(右の下より上の位置を意味
let focusElement = document.getElementsByClassName('focus')[0]
let containerElement = document.getElementsByClassName('modal')[0]
let listElement = document.getElementsByClassName('chapter-list')[0]
// let's check if any selection index has changed, and then scroll to the correct
// positions to make sure the selected elements are in view
if (chapterlistSelectionIndex !== prevState.chapterlistSelectionIndex) {
scrollList(focusElement, containerElement, listElement)
}
モーダルコンテナ)ここで
は、私が指摘したいいくつかのことです。)getPropertyValueとともに(
私はこれが助けてくれることを願っています!
あなたはこのカップルの数ヶ月前に投稿したはずです:)私は同様の問題を私の方法で解決しましたが、あなたのソリューションはよりエレガントで、jQueryを必要としません:) – Morpheus
@Morpheusはフィードバックに感謝します! :)私のプロジェクトはjQueryを使用していなかったので、私はバニラの解決策が必要でした!あなたもうまくいきました! – jacoballenwood
どのような要素でどのような要素ですか?はい、あなたはそれを行うことができます...しかし、どのように?ボタンをクリックするか、divにカーソルを合わせるか、フォームにマウスを入力してください... ...何を達成しようとしていますか?何か試してみて問題がありますか? – repzero
@repzero申し訳ありません混乱のために私は自分自身に同じ質問をしてくれて、私のためにうまくいく解決策を思いつきました。だから私は自分自身の質問に答えて、うまくいけば他の人たちを助けてくれるでしょう – jacoballenwood
私はこの質問をクイズホスティングサイトではありません。 –