要素がViewportで見えるならば、知っている方法.
起動する前に、ブラウザのエンジンに対してビューポートがどのようなものかを明確にしたいのですが.
A Viewport is the area (ordinarily rectangular) of our computer graphics (Screen) that is currently being viewed. In other words, it's the area of your computer screen that is currently visible to you (physically).
チェックするMDN docs 私の鉱山が十分でないならば、詳細な説明のために.
さて、なぜこれはあなたに役立つでしょうか?ブラウザのビューポートで要素が現在表示されているかどうかを知りたいのですが.
次のような状況で役に立つでしょう.
ウォークスルー
この関数は、DOMRect 要素のサイズとビューポートに対する位置の情報を提供するオブジェクト.
だから私たちは
yourElement.getBoundingClientRect()
or elementInfo = yourElement.getBoundingClientRect()
A DOMRect describes the size and position of a rectangle.
から返されるDOMRECTオブジェクト
getBoundingClientRect()
は、目標値を計算するために使用できるキー値(ピクセル単位)で、パディングとボーダー幅を含む要素全体を含む最小の四角形です.返されるオブジェクトは次のようになります.
{
x: 20,
y: 5.5,
width: 882,
height: 198.890625,
top: 5.5,
right: 902,
bottom: 204.390625,
left: 20,
};
説明をもっと詳しく説明しましょう.私は、混乱を避けるために、視覚的なプレゼンテーションを切り離しました.domrect key value (ピクセル単位)
The width and height properties of the DOMRect object returned by the method include the padding and border-width, not only the content width/height. In the standard box model, this would be equal to the width or height property of the element + padding + border-width. But if box-sizing: border-box is set for the element this would be directly equal to its width or height.
あなたは、チェックすることができますMDN Docs ボックスサイジング
フルダイアグラム
あなたが私がここからすべてのこれらの図をどこで得たかについて疑問に思っているならば、私はfigmaで彼らを設計しました
役に立つヒント
window.addEventListener("scroll", () => {
//Some javascript magic here...
});
これを実現するには、単にビューポートの高さ(画面)からトップ/y値を減算し、底値が0より大きいことを確認するためのチェックも行います.ビューポートの高さは
window.innerHeight
or document.documentElement.clientHeight
しかし、通常、それはブラウザの互換性のためにそれらを結合するのがより安全ですinnerHeight and documentElement したがって、次のように使うことができます.
const height =
window.innerHeight || document.documentElement.clientHeight;
したがって、部分的な視認性は条件のために通過します:viewportight - topは0より大きく、bottomは0より大きい
const viewportHeight =
window.innerHeight || document.documentElement.clientHeight;
// condition
(viewportHeight - top > 0 && bottom > 0)
If this is getting a little rough, it might be helpful to use the diagram and a pen and paper (I definitely did).
bottomは0より大きく、bottomはviewportheight以下であり、topは0より大きいか等しい
このようになります.
bottom > 0 && bottom <= viewportHeight && top >= 0
この時点で、私たちは、私たちにビューを持って良いことだと思うlive website これはgetBoundingClientRect()
リアルタイムで.また、どのようにすべての条件を理解するのに役立ちます/チェックは、以前は、可視性テストをパスした.ちょうどページをスクロールし、魔法を見る.
素敵な調理と理解できるコードとそのスーパーシンプルなWebページ😎.
自由にクローン/フォークgitHub repo あなたがコードに精通したいならば.
今、私たちがこれまで行ったすべてが垂直スクロール可能な要素(スクロールトップボトム&スクロールボトムトップ)を説明しているが、水平スクロール可能な要素(スクロール左右&スクロール右)についてはどうですか?
ブラウザの幅を使って条件を組み合わせる必要があります.
(window.innerWidth || document.documentElement.clientWidth)
それで、以下のようなものがあります.(right > 0 && right <= width)
ブラウザ互換性
それは、このチュートリアルの最後に来ている.あなたがそれが役に立つと思います.あなたが参照してくださいこのポストを維持したい場合は、ブックマークしてください/ユニコーンを残してください🙂. 私はあなたがコメント/ディスカッションセクション(改善、あなたの考えなど)で何を考えるか知っている.歓声🥂.
Reference
この問題について(要素がViewportで見えるならば、知っている方法.), 我々は、より多くの情報をここで見つけました https://dev.to/emmaccen/how-to-know-if-an-element-is-visible-in-viewport-c45テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol