一、如何禁止微信h5頁面默認下拉,并且同時頁面局部可滾動?眾所周知,微信瀏覽器默認是可以上拉和下拉的,就像下面這樣: 然而,有時候我們需要禁止它,那該怎么做呢? 1. 禁止頁面的touchmove事件document.addEventListener('touchmove',function(e){ e.preventDefault(); }); 該方法簡潔明了,但是問題來了,瀏覽器默認下拉是禁掉了,可頁面卻不能滑動了。因此,該方法只適用于在單屏內(nèi)能夠顯示全內(nèi)容的頁面。 2. 使用iScroll.js插件該方法才是真正要提到的,既可以禁止瀏覽器默認下拉,也能同時讓頁面局部可滾動。 使用iScroll.js插件時需要注意一下幾點:
iScroll.js插件的具體用法可以參考:http://wiki.jikexueyuan.com/project/iscroll-5/。 二、Less中寫border-radius時用到 “/” 時該如何處理?不知道大家現(xiàn)在寫CSS是怎么寫呢?是直接寫原生的CSS,還是使用像Sass或Less這樣的預(yù)編譯語言呢? 如果你是習(xí)慣使用Less,那么遇到border-radius中的 “/” 該如何處理呢? 大家可能都知道border-radius有很多種寫法,不知道的話可以看《你不知道的CSS3圓角》這篇文章,其中有比較詳細的介紹。然而,如果是在Less中直接寫 “/” 可不行,因為它會被認為是個除號而直接參與運算了。這時的解決方法就是使用 e(“/”) 來替代,比如像下面這樣: //Less代碼 .box{ border-radius: 5px e("/") 10px;} //編譯后的CSS代碼 .box{ border-radius: 5px / 10px;} 三、Less中如何寫循環(huán)?Less中的循環(huán)其實就像是其他編程語言中通常意義上的遞歸調(diào)用,用法如下: .loop(@n, @i:1) when (@i <= @n){ // 此處僅為函數(shù)定義 .loop(@n,@i+1); } .loop(4); // 此處為函數(shù)調(diào)用,代表循環(huán)4次 其中l(wèi)oop是方法名,可以由自己喜好定義,i 是循環(huán)因子,n 是循環(huán)次數(shù)。比如想要給列表元素有規(guī)律地依次設(shè)置不同大小,可以這樣寫: //Less代碼 .loop(@n, @i:1) when (@i <= @n){ // 此處僅為函數(shù)定義 li:nth-child(@{i}){ // 注意此處需用 {} 將 i 括起 width: @i*100px; height: @i*100px; } .loop(@n,@i+1); } .loop(4); //HTML代碼 這時四個 li 元素的寬高分別為 100、200、300和400。 四、如何將一個數(shù)組中的元素全部賦值給另外一個數(shù)組?你可能會想,這還不簡單,將 a 數(shù)組直接賦值給 b 數(shù)組不就行了嗎? 就像下面這樣: var a = [1,2,3]; var b = a; 實際上通過這種方式賦值只不過是將 a 數(shù)組所在地址賦值給了 b,如果 b 中元素改變其實也就改變了 a 元素,那么該如何保證賦值操作之后改變 b 而不會影響 a 呢? 其實這里就涉及到的深拷貝和淺拷貝的區(qū)別了。 簡單來說,淺拷貝其實就是簡單地對地址的賦值,上面例子就是淺拷貝。 而這里我們要說的是數(shù)組的深拷貝,也就是開辟一個新的存儲地址,然后將 a 數(shù)組中的所有元素存入該新地址中,最后將 b 指向該地址。 具體實現(xiàn)其實非常簡單: b = [].concat(a); 我們知道,JS數(shù)組方法中的concat()是用于合并兩個數(shù)組的,返回的是一個新的數(shù)組。 以上是我在工作當(dāng)中所遇到的一些問題總結(jié),在此與大家共勉! |