《精通JavaScript》讀書筆記(四)

2021-08-25 23:33:39 字數 3100 閱讀 6440

1.元素的尺寸

找出 元素的的高度和寬度可以很容易,也可以很困難,取決於它所處的不同場合,在大多數情況下,我們只需要利用前面自己封裝的getstyle函式即可,如下所示:

var getheight = function(elem);

var getwidth = function(elem);

但是這樣做會遇到2個問題:其一,需要獲取有預定義高度元素的完整高度。比如,以0畫素開始的動畫,但你需要事先知道元素究竟能有多高或多寬。其二,當元素的display為none的時候,你會得不到這個數值(當display屬性為none時,若未設定height,則通過getstyle函式獲得的height屬性為auto)。在需要執行動畫時這兩個問題就會發生。

經過我的測試,元素display為none時,clientheight、clientwidth、offsetwidth、offsetheight、offsettop為0, offsetwidth在ie8下是-1, 在ff和chrome下是0。

在設計獲得元素的潛在完整尺寸的函式時,我們有必要先弄清楚clientheight、cilentwidth、offsetheight、offsetwidth這幾個屬性的概念:

offsetheight : 元素在垂直方向上占用的空間大小,以畫素記。包括元素的高度、(可見的)垂直滾動條的高度、上內邊距和下內邊距、上邊框高度和下邊框的高度。

clientheight: 元素內容及區高度加上上下內邊距所佔據的大小。

下面的**展示了如何找到元素的潛在的完整高度和寬度。這需要通過訪問clientwidth和clientheight屬性來實現,它們提供了元素可能到達的總尺寸。

/*

*在元素原有的css屬性上修改或新增css屬性

*引數css_obj:要新增或修改的css屬性

*返回值:元素最初的被修改或新增的css屬性值

*/var resetcss = function(elem, css_obj);

for (var k in css_obj)

return old;

};/*

*設定元素的相關css屬性,引數與xx.resetcss函式一樣,返回undefined

*/var setcss = function(elem, css_obj)

};/*

* 獲取元素潛在的完整寬度和高度

*/var getfullheight = function(elem)

//否則,我們重置它的css屬性以獲得更精確的資料

var old = resetcss(elem, );

//使用clientheight找出元素的完整高度,如果不生效,使用getheight函式

var h = elem.clientheight || getheight(elem);

//恢復元素的css屬性

setcss(elem, old);

return h;

};var getfullwidth = function(elem)

var old = xx.resetcss(elem, );

var w = elem.clientwidth || getwdith(elem);

setcss(elem, old);

return w;

};

2. 元素的可見性

下面**展示了使用css的display屬性來切換元素可見性的一組函式:

/*

* 使用display屬性來切換元素可見性的一組函式

*///隱藏元素函式

var hide = function(elem)

elem.style.display = 'none';

};/*顯示元素函式

* 引數type: 要顯示的格式('block'、'inline'等),

* 若不輸入,則先查詢元素是否有儲存的display屬性,若有,則更改為儲存的display屬性,

* 否則預設為',此時會清除元素的display屬性,從而繼承樣式表的display屬性,

* 若樣式表display為none,此時元素則不會顯示出來

*/var show = function(elem, type) else

};

3. 動畫

以下**通過在短時間內增加高度或寬度滑動展開元素:

/*

*滑動展開函式:在短時間內增加高度或寬度逐步顯示隱藏元素

*type: 按何種型別展開(寬度或高度),應輸入'width'或'height'或'both',預設為'both'

*wvalue:要展開的最終寬度值,預設為元素的潛在完整寬度,若hvalue未輸入,則預設為寬度和高度的值

*hvalue:要展開的最終高度值,預設為元素的潛在完整高度

*/xx.slideopen = function(elem, type, wvalue, hvalue) else

} else if (3 === len) else

} else

if('width' === type)

if('both' === type)

} xx.show(elem, 'block');//先顯示元素,但是看不到它,因為元素寬或高為0

for(var i = 0; i <= 100; i += 5)

}, (pos + 1) * 10 );

})();

}};

以下**在短時間內增加透明度逐步顯示隱藏元素的函式:

/*

*調節元素透明度函式(level從0-100)

*/xx.setopacity = function(elem, level) else

};/*

*讓乙個元素漸顯(通過短時間內逐步增加透明度顯示)

*/xx.fadein = function(elem), (pos + 1) * 10);

})();

}};

《精通JavaScript》讀書筆記(五)

1.滑鼠位置 1 首先需要確定的兩個變數是 游標相對於整個頁面的x和y位置。如下所示 獲取滑鼠相對於整個頁面的偏移量 param e var getx function evt var gety function evt 上面的 中pagex只存在於非ie的瀏覽器中,代表著滑鼠事件相對於整個頁面 包...

精通指令碼黑客2 10 2 11筆記

3 虛擬主機用的最多的軟體就是serv u這個ftp工具。4 查詢conn和config,pass這型別的檔案。5 檢查有什麼系統服務,或者隨系統啟動自動啟動的程式和管理員經常使用的軟體,是否可以修改其程式,繫結乙個批處理或者vbs。6 管理員會把,cmd.exe,net.exe,netl.exe都...

精通指令碼黑客3 1 3 8筆記

html 超文字標記語言 html格式 1 標記名 文字文字首尾 2 頭 3 標題 4 標記 5 換行 6 插入一條分割線 7 向中對齊 8 文字連線html的表單是html頁面與瀏覽器端互動的重要手段。語法解釋 基本屬性 name 表單的名稱 method 定義表單的從瀏覽器傳送到伺服器的方法 a...