-
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
提交
取消