javascript学習ノート(2)jsは外部css様式表のstyle値を呼び出して、予測できない高さのDIVの高さを獲得します.
2860 ワード
前の日記の中でデモの二つの不足を改善します.
jsはhtml内部のcssスタイルコードしか修正できません. divの高さが固定されていません.非表示領域の文字が変動するとレイアウトが悪くなります.
1.js外部cssスタイルシートのスタイル値を呼び出します.
cssスタイルシートには3つの書き方があります.
インライン・スタイル:Tagに書いてあります.インライン・スタイルはすべてのTagにのみ有効です. 内部様式(internal Style Sheet):HTMLの中に書いてあります.内部様式はあるページにのみ有効です. 外部様式表(External Style Sheet):多くのページで同じスタイルを使う必要がある場合、スタイルをcssを後ろ綴りのCSSファイルに書いて、これらのスタイル(Steylas)を使う必要があるページでこのCSSファイルを参照してください. JavaScriptでは、document.getElement ById(id).style.XXXを通じてXXXの値を取得することができますが、意外にも、埋め込みによって設定されたスタイル値、すなわちstyle属性に設定された値しか取れません.
解決策:currentStyle、runtimeStyle、get ComputatidStyle標準のスタイルを導入する:
予知できない高さのDIVを得る.
以下は完全に以下から抜粋します. 予知できない高さのDIVを得る。
元素のclientHeight属性によって元素の高さが得られます. var height = element.client Height; このやり方の限界: 1. 要素のdisplay属性がnoneに設定されている場合、 それでは得られた結果は0です. 2. safariブラウザでは、element.offset Heightを実際の高度にする必要があります.これはsafariブラウザのbugです. 以下はProttotypeが提供する方法です.各種ブラウザに対応できます.要素が隠れている場合も、元素サイズを正確に入手できます. get Dimensions: function(element) { element = $(element) var ディsplay = $(element).get Steyle('display') if (display != 'none && ディsplay != null // Safari bug return {width: element.offset Width、 height: element.offset Height; // All *Width and *ヘight properties give 0 オン elements with ディsplay none // そ enable the element temporarly var els = element.style var オリジナリティVisibility = els.visibility var origginal Position = els.position var オリジンディスク = els.display els.visibility = 'hidden; els.position = 'absolute; els.display = 'block; var オリジンWidth = element.client Width var originalHeight = element.client Height; els.display = originalDisplay; els.position = origginal Position els.visibility = oricginal Visibility; return {width: オリジンWidth、 height: originalHeight; }
Prottypeが提供する方法はとても賢いです.
els.visibility = 'hidden; els.position = 'absolute; els.display = 'block; 手に入れました
display:none のwidth、height.
自分は裸でjsコードを書くのがバカです.
1.js外部cssスタイルシートのスタイル値を呼び出します.
cssスタイルシートには3つの書き方があります.
解決策:currentStyle、runtimeStyle、get ComputatidStyle標準のスタイルを導入する:
/*Get css property value from extenal style sheet for IE browser */
if(hid.currentStyle) {
display = hid.currentStyle['display'];
}
/*Get css property value from extenal style sheet for FireFox, Chrome browser */
else if(window.getComputedStyle) {
display = window.getComputedStyle(hid, null)['display'];
}
参照リンク:http://apps.hi.baidu.com/share/detail/22727000予知できない高さのDIVを得る.
以下は完全に以下から抜粋します. 予知できない高さのDIVを得る。
元素のclientHeight属性によって元素の高さが得られます. var height = element.client Height; このやり方の限界: 1. 要素のdisplay属性がnoneに設定されている場合、 それでは得られた結果は0です. 2. safariブラウザでは、element.offset Heightを実際の高度にする必要があります.これはsafariブラウザのbugです. 以下はProttotypeが提供する方法です.各種ブラウザに対応できます.要素が隠れている場合も、元素サイズを正確に入手できます. get Dimensions: function(element) { element = $(element) var ディsplay = $(element).get Steyle('display') if (display != 'none && ディsplay != null // Safari bug return {width: element.offset Width、 height: element.offset Height; // All *Width and *ヘight properties give 0 オン elements with ディsplay none // そ enable the element temporarly var els = element.style var オリジナリティVisibility = els.visibility var origginal Position = els.position var オリジンディスク = els.display els.visibility = 'hidden; els.position = 'absolute; els.display = 'block; var オリジンWidth = element.client Width var originalHeight = element.client Height; els.display = originalDisplay; els.position = origginal Position els.visibility = oricginal Visibility; return {width: オリジンWidth、 height: originalHeight; }
Prottypeが提供する方法はとても賢いです.
els.visibility = 'hidden; els.position = 'absolute; els.display = 'block; 手に入れました
display:none のwidth、height.
自分は裸でjsコードを書くのがバカです.