Kedudukan elemen diukur dalam piksel, dengan koordinat X meningkat ke kanan dan koordinat Y meningkat turun, namun, terdapat dua titik berbeza sebagai asal sistem koordinat: koordinat X dan Y bagi sesuatu elemen boleh menjadi relatif Di penjuru kiri sebelah atas dokumen atau relatif kepada penjuru kiri sebelah atas port pandangan di mana dokumen itu dipaparkan.
Dalam tetingkap dan tab yang dinilai, "port pandangan" hanyalah sebahagian daripada penyemak imbas yang sebenarnya memaparkan kandungan dokumen: ia tidak termasuk "cangkang" penyemak imbas (seperti menu, bar alat dan tab).
Untuk dokumen yang dipaparkan dalam bingkai, elemen
Jika dokumen lebih kecil daripada viewport, atau skrol belum lagi berlaku, sudut kiri atas dokumen ialah sudut kiri atas viewport dan sistem koordinat dokumen dan viewport adalah sama. Tetapi secara amnya, untuk menukar antara dua sistem koordinat, offset skrol mesti ditambah atau ditolak. Contohnya, jika koordinat Y elemen ialah 200 piksel dalam koordinat dokumen dan pengguna telah menatal pelayar ke bawah 75 piksel, maka koordinat Y elemen dalam koordinat port pandang ialah 125 piksel. Begitu juga, jika koordinat X elemen ialah 400 piksel dalam koordinat port pandang, dan pengguna telah menatal port pandang 200 piksel secara mendatar, maka koordinat X elemen dalam koordinat dokumen ialah 600 piksel.
Koordinat dokumen adalah lebih asas daripada koordinat port pandang, dan ia tidak berubah semasa pengguna menatal. Walau bagaimanapun, adalah sangat biasa untuk menggunakan koordinat port pandang dalam pengaturcaraan sisi klien. Koordinat dokumen digunakan apabila menentukan kedudukan elemen menggunakan CSS. Tetapi cara paling mudah untuk menanyakan kedudukan elemen: getBoundingClientRect() mengembalikan kedudukan dalam koordinat viewport. Begitu juga, apabila anda mendaftarkan fungsi pengendali acara untuk acara tetikus, koordinat penuding tetikus yang dilaporkan berada dalam sistem koordinat port pandangan.
Untuk mengubah sistem koordinat, kita perlu menentukan kedudukan bar skrol tetingkap penyemak imbas. Sifat pageXoffset dan pageYOffset bagi objek Window menyediakan nilai ini dalam semua pelayar kecuali IE8 dan lebih awal. IE (dan semua pelayar moden) juga boleh mendapatkan kedudukan bar skrol melalui sifat scrollLeft dan scrollTop. Apa yang mengelirukan ialah biasanya anda mendapat sifat ini dengan mencari nod akar dokumen (document.documentElement), tetapi dalam mod aneh anda perlu menanyakannya pada elemen
dokumen (documeng.body). Berikut menunjukkan cara menanyakan kedudukan bar skrol dengan mudah.functon getScrollOffsets(w){ w = w || window; var sLeft,sTop; if(w.pageXOffset != null) { sLeft = w.pageXOffset; sTop = w.pageYOffset; return {x:sLeft,y:sTop}; } if(document.compatMode == "CSS1Compat"){ sLeft = document.documentElement.scrollLeft == 0 ? document.body.scrollLeft : document.documentElement.scrollLeft; sTop = document.documentElement.scrollTop == 0 ? document.body.scrollTop : document.documentElement.scrollTop; return {x:sLeft,y:sTop}; }else if(document.compatMode == "BackCompat"){ sLeft = document.body.scrollLeft; sTop = document.body.scrollTop; return {x:sLeft,y:sTop}; } }
Adakalanya berguna untuk dapat menentukan saiz port pandangan, sebagai contoh, untuk menentukan bahagian dokumen yang kelihatan pada masa ini. Kaedah mudah untuk menanyakan dimensi port pandangan menggunakan offset skrol tidak berfungsi dalam IE8 dan lebih awal, dan keupayaan teknik untuk berfungsi dalam IE bergantung pada sama ada penyemak imbas berada dalam mod pelik atau mod standard.
Atribut di bawah tetingkap:
innerHeight: Ketinggian bahagian kandungan tetingkap termasuk bar skrol
InnerWidth: Lebar bahagian kandungan tetingkap termasuk bar skrol
Ketinggian luar: Ketinggian keseluruhan penyemak imbas, termasuk semua komponen antara muka.
Lebar luar: Lebar keseluruhan penyemak imbas, termasuk semua komponen antara muka.
pageXOffset: Kedudukan paksi X bar skrol tetingkap penyemak imbas
pageYOffset: Kedudukan paksi-Y bar skrol tetingkap penyemak imbas
scrollX: Kedudukan paksi X bar skrol tetingkap penyemak imbas
scrollY: Kedudukan paksi-Y bar skrol tetingkap penyemak imbas
Hartanah
document.documentElement document.body
clientHeight Saiz kandungan yang boleh dilihat dalam port pandangan, tidak termasuk bahagian tatal dan bar tatal.
clientWidth
clientLeft
klienTop
saiz kandungan offsetHeight, termasuk bar skrol.
offsetWidth
offsetLeft
offsetTop
scrollHeight Saiz kandungan menatal, termasuk bahagian menatal, tetapi tidak termasuk bar skrol.
scrollWidth
tatal Atas
scrollWidth
Saiz paparan tetingkap pertanyaan:
function getViewportSize(w){ w = w || window; var cWidth,cHeight; if(w.innerWidth != null){ cWidth = w.innerWidht; cHeight = w.innerHeight; return {w:cWidth,h:w.cHeight}; } if(document.compatMode == "CSS1Compat"){ cWidth = document.documentElement.clientWidth; cHeight = doument.documentElement.clientHeight; return {w:cWidth,h:w.cHeight}; }else if(document.compatMode == "BackCompat"){ cWidth = document.body.clientWidth; cHeight = doument.body.clientHeight; return {w:cWidth,h:w.cHeight}; } }
Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.