開(kāi)發(fā)之隨手記

類(lèi)數(shù)組轉(zhuǎn)換為數(shù)組

htmlcollection = document.getElementByTagName('tr');
htmlcollection = Array.prototype.slicestrong text.call(htmlcollection); 

重力感應(yīng)事件

注意移動(dòng)端和PC端的屬性不相同,當(dāng)重力感應(yīng)事件 onorientationchange被觸發(fā)時(shí)。
可以通過(guò)判斷window.orientation來(lái)或得旋轉(zhuǎn)的方向,但是在PC端當(dāng)中,這個(gè)屬性等同于
window.screen.orientation.type,并且不能如愿的區(qū)分各個(gè)方向,大多其值為landscape-promary。

window.onorientationchange = orientationChange;
function orientationChange(){
     switch(window.orientation){
         case 0:
             console.log('正常的');
             break;
         case 90:
             console.log('左轉(zhuǎn)');
             break;
         case -90:
             console.log('右轉(zhuǎn)');
             break;
         case 180:
             console.log('倒轉(zhuǎn)');
             break;
     }
};

通過(guò)CSS設(shè)置設(shè)備轉(zhuǎn)屏?xí)r的樣式

<!--豎屏?xí)r使用的樣式-->
<style media="all and (orientation:portrait)" type="text/css">
    #landscape { display: none; }
</style>

<!--橫屏?xí)r使用的樣式-->
<style media="all and (orientation:landscape)" type="text/css">
    #portrait { display: none; }
</style>

關(guān)于innerHTML

innerHTML在IE10以前不支持

<col><colgroup><frameset><head><html><style><table><tbody><thead><tfoot><tr>

所以可以使用以下方案解決

function setTBodyInnerHTML(tbody, html) {
   var div = document.createElement("div")
   div.innerHTML = "<table>" + html + "</table>";
   while (tbody.firstChild) {
    tbody.removeChild (tbody.firstChild)
   }
   tbody.appendChild (div.firstChild.firstChild)
}

關(guān)于inline-block的bug

display:inline-block

如此設(shè)置會(huì)導(dǎo)致元素現(xiàn)實(shí)上有多余空格,解決方案:把元素間空格省略,或者設(shè)置font-size為0

移動(dòng)端滾動(dòng)條緩沖

    -webkit-overflow-scrolling:touch; /* 核心代碼 */

代碼有效性

使用 W3C HTML Validator 來(lái)驗(yàn)證你的HTML代碼有效性;
使用 W3C CSS Validator 來(lái)驗(yàn)證你的CSS代碼有效性。

Css縮寫(xiě)

CSS文本:

font-style: italic;
font-weight: bold;
font-size: 30px;
line-height:50px;
font-family:arial,sans-serif;

font:italic bold 30px/50px arial,sans-serif;(有順序) 

CSS背景:

background-color:#f00;
background-image:url(background.gif);
background-repeat:no-repeat;
background-attachment:fixed;
background-position:0 0;   

background:#f00 url(background.gif) no-repeat fixed 0 0; (無(wú)順序)

JS自定義事件

var event = new Event('build');
// Listen for the event.
elem.addEventListener('build', function (e) { ... }, false);
// Dispatch the event.
elem.dispatchEvent(event);

touch事件

原生的touch事件是 touchStart、touchMove、touchEnd。
在寫(xiě)自定義的touch時(shí)間的時(shí)候 需要注意是否需要將事件冒泡到document上,將會(huì)導(dǎo)致document的偏移,因此 可以使用以下代碼來(lái)阻止時(shí)間冒泡。

document.addEventListener('touchmove', function(e) {
    e.preventDefault();
});

關(guān)于如何理解Css動(dòng)畫(huà)透視

關(guān)于3D動(dòng)畫(huà)的容器設(shè)置 prespective 的值時(shí),可以簡(jiǎn)單將其理解為三維坐標(biāo)軸的原點(diǎn) ,該值決定的是Z值,另兩個(gè)值由 prespective-origin來(lái)決定,默認(rèn)為容器的中心。
因此當(dāng)確定透視點(diǎn)之后,所有元素沿Z軸的位移不能超過(guò)prespective的值,原因是默認(rèn)屏幕為Z= 0的平面,設(shè)置prespective = x坐標(biāo)原點(diǎn)變化后,屏幕為Z=x的平面,所有元素在Z軸上的位移超過(guò)x,在理論上將存在于屏幕的前方,所以無(wú)法在屏幕上顯示。

關(guān)于動(dòng)畫(huà)的注意事項(xiàng)

prespective 相關(guān)的屬性 要先于 rotateXTZ定義。否則無(wú)意義。

使用樣式

所有樣式使用class 與JS相關(guān)的 使用js-開(kāi)頭 用來(lái)與非功能性樣式區(qū)分

表單驗(yàn)證

所有的文字內(nèi)容需要轉(zhuǎn)碼 encodeURI進(jìn)行轉(zhuǎn)碼

撥打電話

a標(biāo)簽的tel協(xié)議

    <a href='tel:18945000734'>my</a>

關(guān)于把數(shù)據(jù)強(qiáng)制轉(zhuǎn)換為布爾值的最佳實(shí)踐

    !!num

非零數(shù)據(jù)為true 0為false

使用 ~實(shí)現(xiàn) indexof()==-1 轉(zhuǎn)換為false
~取反 為在十進(jìn)制中表現(xiàn)為 符號(hào)取反后減一 故此,-1取反變現(xiàn)為0 由此可以使用這種方式

    if(~'abc'.indexOf(b))console.log(ok)

setTimeOut() 和 clearTimeOut()使用

通常用于處理程序執(zhí)行超時(shí)

    var setTime;
    window.clearTimeOut(setTime);
    var setTime = setTimeOut(function(){
        console.log('ok');
    },1000);

window.onload與document.DOMContentLoaded事件

window.onload需要等到所有全部加載完成,包括我們不想等待的圖片加載。
document.DOMContentLoaded則是當(dāng)所有DOM解析完以后會(huì)觸發(fā)這個(gè)事件。
常見(jiàn)的庫(kù)中都提供了此事件的兼容各個(gè)瀏覽器的封裝,如果你是個(gè)jQuery使用者,你可能會(huì)經(jīng)常使用$(document).ready();或者$(function(){}) 這都是使用了DOMContentLoaded事件

Css樣式 加載順序

不以class內(nèi)寫(xiě)的順序迭代,而是以CSS中寫(xiě)的順序?yàn)闇?zhǔn)

圖片加載

onload onerror 這個(gè)事件不冒泡

function loadImage(url, callback) {
    var img = new Image(); //創(chuàng)建一個(gè)Image對(duì)象,實(shí)現(xiàn)圖片的預(yù)下載
    img.src = url;
     
    if(img.complete) { // 如果圖片已經(jīng)存在于瀏覽器緩存,直接調(diào)用回調(diào)函數(shù)
        callback.call(img);
        return; // 直接返回,不用再處理onload事件
    }
    img.onload = function () { //圖片下載完畢時(shí)異步調(diào)用callback函數(shù)。
        callback.call(img);//將回調(diào)函數(shù)的this替換為Image對(duì)象
    };
};

CSS動(dòng)畫(huà)結(jié)束觸發(fā)的事件

webkitTransitionEnd

transition-property

PC上已經(jīng)支持 transform ,手機(jī)端需要 使用 -webkit-transform

    -webkit-transform: translate3d(-1125px, 0px, 0px); 
    -webkit-transition: -webkit-transform 0.3s ease-in-out; 

關(guān)于min-height

即使父元素已經(jīng)觸發(fā)min-height,但是min-height子元素透明,子元素獲取不到父元素的高,所以在響應(yīng)式設(shè)計(jì)中需要注意的是盡量減少層級(jí)。

與此相同的還有 伸縮盒模型

關(guān)于垂直居中

    top:50%;
    transform: translatey(-50%);

translatey以百分比設(shè)置時(shí),其基于元素本身大小進(jìn)行計(jì)算。
同理 進(jìn)行水平居中的時(shí)候

    top:50%;
    transform: translatex(-50%);

clac()

calc()使用通用的數(shù)學(xué)運(yùn)算規(guī)則,但是也提供更智能的功能:

使用“+”“-”“*”“/”四則運(yùn)算;
可以使用百分比、px、em、rem等單位;
可以混合使用各種單位進(jìn)行計(jì)算。

瀏覽器支持

firefox 4.0+已經(jīng)開(kāi)支支持calc()功能,不過(guò)要使用-moz-calc()私有屬性,chrome從19 dev版,也開(kāi)始支持私有的-webkit-calc()寫(xiě)法,IE9這次則牛逼了一次,原生支持標(biāo)準(zhǔn)的不帶前綴的寫(xiě)法了。Opera貌似還不支持~~

注意:
http://www.qianduan.net/calc-at-at-at-page-intelligent-layout.html看到的,他的原文中width:calc(100%-100px)是沒(méi)有空格的,經(jīng)測(cè)試無(wú)效,就像其評(píng)論中:calc()里面的表達(dá)式好像要注意格式。

事件

function swithcToTouchEvent(ori, pro){ 
    var TouchList = [{
        clientX : pro.clientX, 
        clientY : pro.clientY, 
        pageX : pro.pageX,
        pageY : pro.pageY,
        screenX : pro.screenX,
        screenY : pro.screenY,
        target : pro.target
    }];
    ori.changedTouches = TouchList; 
    ori.touches = TouchList;
    ori.targetTouches = TouchList;
    return ori;
}
mockTouchstart = document.createEvent('MouseEvents');
mockTouchstart.initEvent('touchstart',true,true);
frameDom.addEventListener('mousedown',function(e){
    window._mockTouchTarget = e.target;
    frameDom._touchstate = true;        e.target.dispatchEvent(swithcToTouchEvent(mockTouchstart,e));  
},false);
    

值得注意的是 creatEvent('MouseEvents'),MouseEvents.

圖片格式的選擇

能夠滿(mǎn)足透明需求的圖片格式有 png和 gif。
gif的透明只提供全透明,對(duì)于半透明不知道。
對(duì)于圖片中色彩跨度大的圖片適用于jpg
對(duì)于圖片中色彩較為單一png壓縮比更高。
另有新興圖片格式webP,該格式不能處理透明。

獲取css最終樣式

    window.getComputedStyle(document.getElementById('name'))

此時(shí)取到的為計(jì)算后的樣式 ,transform為矩陣方式表達(dá)的。

表單input包在label內(nèi)

會(huì)擴(kuò)大有效操作區(qū)域

css3 實(shí)現(xiàn)毛玻璃濾鏡

-webkit-filter: blur(10px); /* Chrome, Opera */ -moz-filter: blur(10px); -ms-filter: blur(10px); filter: blur(10px);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,182評(píng)論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,489評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,290評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,776評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,510評(píng)論 6 412
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,866評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,860評(píng)論 3 447
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 43,036評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,585評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,331評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,536評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,058評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,754評(píng)論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,154評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,469評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,273評(píng)論 3 399
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,505評(píng)論 2 379

推薦閱讀更多精彩內(nèi)容