-
apply()與call()使用詳解(上) Function1.apply(obj2,args): 1. Function1:obj1對象內的函數,并且此函數內有this指針. obj2:內部沒有Function1函數. 使用情況:因為obj2這個對象中沒有沒有Function1這個方法,所以利用apply()這個函數,讓obj2對象可以調用Function1這個方法,并將Function1內的指向obj1的this指針改為指向obj2的this指針,args是Function函數所需要傳遞的參數; 2. Function1:不屬于任何對象. obj2:內部沒有Function1函數. 使用情況:因為obj2這個對象中沒有沒有Function1這個方法,所以利用apply()這個函數,讓obj2對象可以調用Function1這個方法,并將Function1內的this指針改為指向obj2的this指針,args是Function函數所需要傳遞的參數.(此時可以把Function1視為一個對象,因為js中一切皆為對象,只是這個對象中除了subject這個超級父對象有的元素之外,就只有一個內部叫Function1的函數) 3. Function1:情況1或者情況2都可以. obj2:內部沒有Function1函數. 使用情況:args參數不符合Function1函數的參數要求[函數不接受數組作為參數,只接受參數列表],調用apply()這個函數可以將args數組變為參數列表(argument0,argument1,argument2,…)以傳遞給函數Function1[這是apply函數的特點],并讓內部沒有Function1函數的obj2對象,調用可以Function1函數,同時將Function1內的this指針改為指向obj2的this指針.查看全部
-
JS修改css樣式方法歸納(下): 方法三、使用obj.className/idName來修改元素的類名,進而修改css樣式 function changeStyle3() { var obj = document.getElementById("btnB"); //obj.className = "style2"; obj.setAttribute("class", "style2"); } 通過更改btB的css的類名的方式來更改樣式,更改樣式類名有兩種方式。1、obj.className = "style2"; 2、 obj.setAttribute("class", "style2");都是一樣的效果。 用這種方式來修改css比上面的效果要好很多。 方法四、使用更改外聯的css文件,從而改變元素的css 首先得引用外聯的css文件,代碼如下: <link href="css1.css" rel="stylesheet" type="text/css" id="css"/> function changeStyle4() { var obj = document.getElementById("css"); obj.setAttribute("href","css2.css"); }查看全部
-
JS修改css樣式方法歸納(上): 方法一、使用obj.className/idName來修改元素的css樣式 function changeStyle1() { var obj = document.getElementById("btnB"); obj.style.backgroundColor= "black"; } 該段代碼修改btB的文字的顏色,在瀏覽器中打開調試工具,可以發現btB標簽中多了一個屬性,即直接用嵌入式將css樣式嵌入到html標簽屬性style中.[style=內嵌式>內聯式>外聯式]。如果btB有hove偽類的background-color樣式寫在內聯式中,那么嵌入式的background-color覆蓋了偽類中,這就使得鼠標放入btB上背景顏色不變化。 方法二、使用obj.style.cssTest來修改嵌入式的css function changeStyle2() { var obj = document.getElementById("btnB"); obj.style.cssText = "background-color:black; display:block;color:White; } 該段代碼和方法一中的效果是一樣的,缺陷也是一樣。查看全部
-
瀑布流 原理: 數據加載的時候通過絕對定位來找到box的位置,而box的位置又是相對于main來定義的,所以main要用position:relative;來定義 特點: 等寬不等高 HTML中的類: #main、.box、.pic 外層套一個div為.box來設置padding作為pic之間的間隔,不推薦margin。因為獲取數據塊高度時用offset().height,這個屬性可以獲取內容height+padding+border,而不會獲取margin的間距。 box與box之間用padding來去間隔位置,而不用margin查看全部
-
【原理】 第二行的第一個box排在第一行高度最矮的那個下面,第二個排在次矮的那個下面,以此類推。需要一個數組,存放每行每個box的offsetHeight的數組。 【要點】 - 求數組中最小值 Math.min()只能求一組數據的最小值,通過傳參,而不是數組。 借助apply()方法,apply用來改變函數中this的指向,這裡用來改變Math對象中的this指向 Math.min.apply(null,hArr); apply()方法的說明:https://www.youtube.com/watch?v=c0mLRpw-9rI,這段影片不錯,apply()忘了怎麼用可以複習一下 - 求最小值在數組中的索引:封裝函數「getminHIndex」 - 圖片定位: position: absolute; //數組 最小高元素的高 + 添加上的aPin[i]塊框高 aPin[i].style.left=aPin[minHIndex].offsetLeft+'px'; - 存放offsetHeight的數組值hArr要不斷更改 在每次定位之後,最小高度的box加上定位在其下的box的offsetHeight ;即:hArr[index]+=oBox[i].offsetHeight;查看全部
-
要點: - 封裝瀑布流的函數waterfall - 封裝通過className獲取元素集的函數(getClassObj) - 計算一行顯示的列數,父級寬度/box的offsetWidth,注意取整Math.floor; var cols = Math.floor(document.documentElement.clientWidth / oBoxWidth); - obj.style.cssText ="",以字符串的形式設置多個樣式 - #main一開始沒有設置寬度, 所以瀏覽器大小有變化, #main也就會跟著變化, 所以列數就算不準了, 所以要給#main設置固定寬度 - push() 方法可向數組的末尾添加一個或多個元素,並返回新的長度。 - offsetWidth屬性包括padding在內的寬度,而不是元素的width值 - offsetWidth = 內容寬度 + 內邊距寬度×2 +邊框寬度×2 (不包括外邊距margin) - 獲取頁面的寬:document.documentElement.clientWidth 目前這樣做就可以找到父元素的「寬」,該設定多少了。查看全部
-
value是divdom,不能用jquery的方法,要把dom轉換一下才可以用jq的方法css();查看全部
-
$.inArry(minh,arr),求的minh在數組中的索引查看全部
-
math、min。apply(null,數組)求數組最小值查看全部
-
不知道寫得對不對查看全部
-
oBoxs[i].style.left=oBoxW*index+"px"; index從0開始查看全部
-
太坑了 len2寫成len1 怎么可能對查看全部
-
相對定位是要定義在所有數據塊的父盒子上的查看全部
-
CSS3多蘭布局!查看全部
-
瀑布流布局實現方法查看全部
舉報
0/150
提交
取消