Javascript_javascript スキルを使用してページ要素の位置を取得するコード
下面的教程总结了Javascript在网页定位方面的相关知识。
一、网页的绝对大小和相对大小
首先,要明确两个基本概念。
一张网页的全部面积,就是它的绝对大小。通常情况下,网页的绝对大小由内容和CSS样式表决定。
网页的相对大小则是指在浏览器窗口中看到的那部分网页,也就是浏览器窗口的大小,又叫做viewport(视口)。
下图中央的方框就代表浏览器窗口,每次只能显示一部分网页。
(图一 网页的绝对大小和相对大小)
很显然,如果网页的内容能够在浏览器窗口中全部显示(也就是不出现滚动条),那么网页的绝对大小和相对大小是相等的。
二、获取网页的相对大小
网页上的每个元素,都有clientHeight和clientWidth属性,利用它们就可以得到网页的相对大小。这两个属性代表的大小,是指元素的内容部分再加上padding的大小,但是不包括border和滚动条占用的空间。
(图二 clientHeight和clientWidth属性)
因此,document元素的clientHeight和clientWidth属性,就代表了网页的相对大小。
function getViewport(){
if (document.compatMode == "BackCompat"){
return {
width: document.body.clientWidth,
height: document.body.clientHeight
}
} else {
return {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight
}
}
}
上面的getViewport函数就可以返回浏览器窗口的高和宽。使用的时候,有三个地方需要注意:
1)这个函数必须在页面加载完成后才能运行,否则document对象还没生成,浏览器会报错。
2)大多数情况下,都是document.documentElement.clientWidth返回正确值。但是,在IE6的quirks模式中,document.body.clientWidth返回正确的值,因此函数中加入了对文档模式的判断。
3)clientWidth和clientHeight都是只读属性,不能对它们赋值。
三、获取网页的绝对大小
document对象的scrollHeight和scrollWidth属性就是网页的绝对大小,意思就是滚动条滚过的所有长度和宽度。
仿照getViewport()函数,可以写出getPagearea()函数。
function getPagearea(){
if (document.compatMode == "BackCompat"){
return {
width: document.body.scrollWidth,
height: document.body.scrollHeight
}
} else {
return {
width: document.documentElement.scrollWidth,
height: document.documentElement.scrollHeight
}
}
}
但是,这个函数有一个问题。前面说过,如果网页内容能够在浏览器窗口中全部显示,不出现滚动条,那么网页的绝对大小与相对大小应该相等,即 clientWidth和scrollWidth应该相等。但是实际上,不同浏览器有不同的处理,这两个值未必相等。所以,我们需要取它们之中较大的那个值,因此要对getPagearea()函数进行改写。
function getPagearea(){
if (document.compatMode == "BackCompat"){
return {
width: Math.max(document.body.scrollWidth,
document.body.clientWidth),
height: Math.max(document.body.scrollHeight,
document.body.clientHeight)
}
} else {
return {
width: Math.max(document.documentElement.scrollWidth,
document.documentElement.clientWidth),
height: Math.max(document.documentElement.scrollHeight,
document.documentElement.clientHeight)
}
}
}
四、获取网页元素的绝对位置
由于网页大小有绝对和相对之分,所以网页元素的位置也有绝对和相对之分。网页元素的左上角相对于整张网页左上角的坐标,就是绝对位置;相对于浏览器窗口左上角的坐标,就是相对位置。
JavaScript 言語では、Web ページ要素の絶対座標を計算する必要があります。各要素には offsetTop 属性と offsetLeft 属性があり、要素の左上隅と親コンテナ (offsetParent オブジェクト) の左上隅の間の距離を表します。したがって、要素の絶対座標を取得するには、これら 2 つの値を累積するだけで済みます。
(図 3 offsetTop 属性と offsetLeft 属性)
絶対位置の横座標と縦座標を求めるには、次の2つの関数を使用できます。
function getElementLeft(element){
varactualLeft = element.offsetLeft;
var current = element.offsetParent;
while (current !== null){
actualLeft = current.offsetLeft;
current = current.offsetParent;
}
returnactualLeft;
}
function getElementTop(element){
varactualTop = element.offsetTop;
var current = element.offsetParent;
while (current !== null){
actualTop = current.offsetTop;
current = current.offsetParent;
}
returnactualTop;
}
テーブルと iframe では、offsetParent オブジェクトが親コンテナと等しくない可能性があるため、上記の関数はテーブルと iframe の要素には適用できません。
5. Web 要素の相対位置を取得します
要素の絶対位置がわかったら、絶対座標からスクロール バーのスクロール距離を引くだけで相対位置を取得することができます。スクロール バーの垂直方向の距離は、ドキュメント オブジェクトのscrollTop プロパティであり、スクロール バーの水平方向の距離は、ドキュメント オブジェクトのscrollLeft プロパティです。
(図 4 のscrollTop属性とscrollLeft属性)
前のセクションの 2 つの関数を次のように書き換えます。
function getElementViewLeft(element){
varactualLeft = element.offsetLeft;
var current = element.offsetParent;
while (current !== null){
actualLeft = current.offsetLeft;
current = current.offsetParent;
}
if (document.compatMode == "BackCompat"){
var elementScrollLeft=document.body.scrollLeft;
} else {
🎜>
returnactualLeft-elementScrollLeft;
function getElementViewTop(element){
var current = element.offsetParent;
while (current !== null){
current = current.offsetParent;
}
if (document.compatMode == "BackCompat"){
} else {
🎜>
returnactualTop-elementScrollTop;
}
上記の機能に加えて、Web ページ要素の位置を即座に取得する簡単な方法もあります。 それは、getBoundingClientRect() メソッドを使用することです。これは、left、right、top、bottom の 4 つの属性を含むオブジェクトを返します。これらの属性は、ブラウザ ウィンドウ (ビューポート) の左上隅を基準とした要素の左上隅と右下隅の間の距離にそれぞれ対応します。
Web ページ要素の相対位置は
です。変数
スクロール距離を加算して絶対位置を取得します変数
現在、IE、Firefox 3.0、Opera 9.5 はすべてこの方法をサポートしていますが、Firefox 2.x、Safari、Chrome、Konqueror はサポートしていません。
(終了)

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











環境変数機能は、システム内で設定プログラムを実行するために不可欠なツールですが、最新の win11 システムでは、設定方法がわからないユーザーもまだ多くいます。 win11 環境変数の開き方. ぜひ参加して操作方法を学びましょう。 win11 環境変数はどこですか: 1. まず「win+R」と入力して、実行ボックスを開きます。 2. 次に、コマンド「controlsystem」を入力します。 3. 開いたシステム情報インターフェイスで、左側のメニューから「システムの詳細設定」を選択します。 4. 次に、開いた「システムのプロパティ」ウィンドウの下部にある「環境変数」オプションを選択します。 5. 最後に、開いた環境変数で、必要に応じて関連する設定を行うことができます。

すべての Windows システムには起動パスがあり、そこにファイルやソフトウェアを追加すると、起動時にそのパスが開かれます。しかし、多くの友人は win11 の起動パスがどこにあるのか知りませんが、実際には、C ドライブ上の対応するフォルダーに入力するだけで済みます。 Win11 スタートアップ パス: 1. ダブルクリックして「この PC」を開きます。 2. パス「C:\ProgramData\Microsoft\Windows\StartMenu\Programs\Startup」をパス ボックスに直接貼り付けます。 3. ここに win11 の起動パスがあり、起動後にファイルを開きたい場合は、そのファイルを置くことができます。 4. このパスに従って入力できない場合は、非表示になっている可能性があります。

pip によってインストールされるパッケージの保存場所の詳細については、特定のコード サンプルが必要です。Pip は、Python 言語で一般的に使用されるパッケージ管理ツールです。Python パッケージのインストール、アップグレード、管理を簡単に行うために使用されます。 pip を使用してパッケージをインストールすると、対応するパッケージ ファイルが PyPI (Python Package Index) から自動的にダウンロードされ、指定された場所にインストールされます。では、pip によってインストールされたパッケージはどこに保存されるのでしょうか?これは、多くの Python 開発者が遭遇する問題です。この記事では、pip によってインストールされるパッケージの場所について詳しく説明し、次のことを提供します。

スター ドーム鉄道のクローカー 映画テレビ パークには、合計 20 羽の折り紙の鳥がいます。多くのプレイヤーは、クロッカー映画テレビ パークのどこに折り紙の鳥があるのか知りません。編集者は、誰もがわかるように、各折り紙の鳥の場所をまとめました。検索して、具体的な内容については、クローカー映画テレビ公園の折り紙の鳥の場所に関するこの最新のまとめをご覧ください。本海スタードーム鉄道のご案内:クルックムービーパーク1階2、クルックムービーパーク2階のオリガミバード スタードーム鉄道

中国で有名なショートビデオプラットフォームとして、Kuaishou は多くのクリエイターに自分の才能を披露し、人生を共有する機会を提供します。動画をアップロードする際、初心者クリエイターの中には動画の投稿場所を変更する方法に戸惑う方もいるかもしれません。この記事では、Kuaishou ビデオの公開場所を変更する方法を紹介し、このプラットフォームを有効に活用して作品を紹介できるように、Kuaishou ビデオ公開に関するいくつかのヒントを共有します。 1. Kuaishou はどこで公開されていますか?またその場所を変更するにはどうすればよいですか? 1. 公開インターフェイス: Kuaishou APP で、[公開] ボタンをクリックしてビデオ公開インターフェイスに入ります。 2. 場所情報: 公開インターフェースに「場所」列があり、クリックして場所選択インターフェースに入ります。 3. 場所を変更する: 場所選択インターフェイスで、[場所] ボタンをクリックして現在の場所を表示します。場所を変更したい場合は「場所」をクリックしてください

私たちの日常旅行の強力なアシスタントとして、Amap は正確なナビゲーション サービスを提供するだけでなく、ユーザーが使いやすい方法で「自宅の位置」を直接決定することもできます。帰宅ルートを毎回確認できるので便利です。しかし、場合によっては自宅の場所も更新する必要があるので、Amap で「自宅の場所」を簡単に変更するにはどうすればよいですか? 次に、エディターのガイドに従って、一緒に変更する方法を学びましょう! Amap 自宅の場所を変更するには? 回答: [Amap] - [設定] - [三点アイコン] - [場所を変更] - [場所を設定] - [自宅の住所として設定]。具体的な手順: 1. まず、Amap ソフトウェアを開き、ホームページに入り、上にスライドしてホームを見つけ、[設定] をクリックします; 2. 次に、設定ページで次のことができます。

1. 携帯電話で Meituan を開き、ホームページの左上隅にあるテイクアウト オプションをクリックします。 2. テイクアウトプラットフォームのページに入ると、ホームページに毎日のクーポンのあるセクションが表示されますので、直接クリックしてください。 3. 天天神クーポンを入力すると、多くのアクティビティが表示され、「完了」をクリックすると、タスクを完了すると報酬を受け取ることができます。

「ラストエイジ」では、ゲームモード、チャレンジモード、アリーナなど、さまざまなモードでプレイすることができます。アリーナはゲームをプレイするための究極の方法であり、プレイヤーが選択できる 2 つのモードを提供します。最後の時代のアリーナはどこですか? 回答: アリーナはエンドゲームのゲームであり、その特定の場所はチャンピオンズ ゲートにあります。アリーナキーまたはメモリーアリーナキーを入手する必要があります。右クリックすると世界地図が表示され、チャンピオンズゲートの特定の場所を見つけることができます。アリーナは、アリーナ チャンピオンシップ モードとエンドレス アリーナ モードの 2 つの主要なモードに分かれています。前者には、40 ウェーブの敵と選択された報酬が含まれており、常にアリーナ チャンピオンとの戦いで最高潮に達します。アリーナチャンピオンシップモードには4つのステージがあり、難易度が高いほど報酬が豪華になります。エンドレスアリーナは無限のウェーブがあるモードで、徐々に難易度が上がり、最高のスコアを獲得した挑戦者が獲得できます。
