1. CSS盒模型
IE盒模型:width=content滴劲,height=content
w3c標(biāo)準(zhǔn)盒模型:width=content+padding+border狸臣,height=content+padding+border
ie的盒模型 設(shè)置寬度集惋,只是content 的寬度,不包括邊框佛南,內(nèi)邊距绷雏,設(shè)置高度,也只是content的高度蝠检,不包括邊框沐鼠,內(nèi)邊距。
w3c盒模型設(shè)置寬度叹谁,寬度值是content+padding+border的寬度值的總和饲梭,設(shè)置高度,高度值是content+padding+border的高度值的總和焰檩。
CSS3新增盒子模型轉(zhuǎn)換:
box-sizing:content-box(默認(rèn):W3C盒子模型)
border-box(IE盒子模型)
2.margin合并/折疊
兄弟間的合并:
當(dāng)一個(gè)元素出現(xiàn)在兄弟元素上邊時(shí)憔涉,該元素的下邊距會(huì)與兄弟元素的上邊距合并。
父子間的合并:
當(dāng)一個(gè)元素包含在另一個(gè)元素里面(假設(shè)沒有內(nèi)邊距或邊框區(qū)分外邊距)析苫,它們的上或下邊距會(huì)發(fā)生合并兜叨。
空白元素合并:
有一個(gè)空元素,沒有邊框和填充衩侥,上下邊距碰到會(huì)發(fā)生合并国旷。當(dāng)該空元素的邊距碰到另外元素的邊距也會(huì)發(fā)生合并。
關(guān)于如何合并:
兩個(gè)邊距都為正邊距時(shí)茫死,合并結(jié)果是兩者中較大值
兩個(gè)邊距都是負(fù)邊距時(shí)跪但,合并結(jié)果是兩者中絕對(duì)值較大值
兩個(gè)邊距一正一負(fù)時(shí),合并結(jié)果是兩者之和
如何消除合并:
對(duì)于兄弟元素:設(shè)置浮動(dòng)璧榄,display:inline-block特漩,或者使父元素BFC(塊級(jí)格式化上下文)比如設(shè)置overflow:hidden
對(duì)于父子元素:給父元素設(shè)置border,padding
對(duì)于空白元素:設(shè)置border骨杂,padding涂身,overflow:hidden來形成BFC來防止合并
3.如何給未知寬高的圖片垂直居中對(duì)齊
- 背景法(兼容性好,簡單搓蚪,但不利于動(dòng)態(tài)導(dǎo)入的圖片)
html:
<div class="wrap"></div>
css:
.wrap{ width:300px; height:200px; background: url(../img/test.jpg) center center no-repeat;}
- 圖片外面用個(gè)p標(biāo)簽蛤售,通過設(shè)置line-height使圖片垂直居中(兼容性較好)
html:
<div class="wrap"> <img src="./img/test.jpg"></div>
css:
.wrap{ width: 300px; height: 300px; border: 1px solid #000; text-align: center;}
.wrap p{ width: 300px; height: 300px; line-height: 300px;}
.wrap p img{ *margin-top:expression((300 - this.height )/2); vertical-align: middle;}
- 利用display:table-cell(不兼容IE6、7)
html:
<div class="wrap"> <img src="./img/test.jpg"></div>
css:
.wrap{ width: 300px; height: 200px; border: 1px dashed #ccc; display: table-cell; vertical-align: middle; text-align: center;}
- 添加table標(biāo)簽(兼容性好,但是冗余標(biāo)簽比較多)
html:
<div class="wrap">
<table>
<tr>
<td align="center"><img src="./img/test.jpg"/></td>
</tr>
</table>
</div>
css:
.wrap{ width: 300px; height: 200px; border: 1px dashed #ccc; text-align: center;}
.wrap table{ width: 300px; height: 200px;}
4.JS變量聲明提升
JavaScript引擎的工作方式是悴能,解析代碼揣钦,獲取所有的被聲明的變量,再一句句執(zhí)行程序漠酿。這造成的結(jié)果是冯凹,所有變量聲明語句都會(huì)被提升到代碼頭部,并且變量被賦值undefined炒嘲,再執(zhí)行程序宇姚。在一個(gè)作用域塊中,所有變量都會(huì)提升到塊的頭部聲明夫凸,但變量的賦值不會(huì)提升浑劳。
函數(shù)的聲明前置:在一個(gè)作用域下,同var 聲明的變量一樣夭拌,function 聲明的函數(shù)也會(huì)前置魔熏。函數(shù)的聲明前置優(yōu)先級(jí)高于變量的聲明前置。
5.JS有哪些數(shù)據(jù)類型
六種數(shù)據(jù)類型:
string(字符串)鸽扁,number(數(shù)值)蒜绽,null,undefined献烦,boolean(布爾值)滓窍,object(對(duì)象)
原始類型:數(shù)值卖词,字符串巩那,布爾值(無法再細(xì)分)
復(fù)雜類型:對(duì)象
一般將null,undefined看成特殊值
6.JSON是什么
JSON:JSON是一種語法用來序列化對(duì)象此蜈,數(shù)值即横,數(shù)組,布爾值裆赵,null和字符串东囚。它基于JavaScript語法。一些JavaScript不是JSON战授,一些JSON不是JavaScript页藻。
JSON對(duì)象:json對(duì)象就是json的值。json只有一個(gè)值植兰,簡單類型(數(shù)值份帐,布爾值,null和字符串)的值楣导,復(fù)雜類型的值(對(duì)象废境,數(shù)組),不能是兩個(gè)值或多個(gè)值,只能是一個(gè)值噩凹。
JSON對(duì)象字面量:json對(duì)象字面量是json格式的JavaScript對(duì)象字面量巴元。
JSON內(nèi)置對(duì)象:由JSON字符串轉(zhuǎn)換成的json對(duì)象即經(jīng)過JSON.parse()轉(zhuǎn)化的對(duì)象。
7.call和apply的區(qū)別
apply() 方法調(diào)用一個(gè)函數(shù), 其具有一個(gè)指定的this值驮宴,以及作為一個(gè)數(shù)組(或類似數(shù)組的對(duì)象)提供的參數(shù)逮刨。
fun.apply(thisArg, [argsArray])
call() 方法調(diào)用一個(gè)函數(shù), 其具有一個(gè)指定的this值和分別地提供的參數(shù)(參數(shù)的列表)。
fun.call(thisArg[, arg1[, arg2[, ...]]])
使用call方法調(diào)用函數(shù)并且指定上下文的'this'
apply()與 call()非常相似堵泽,不同之處在于提供參數(shù)的方式禀忆。就是call()方法接受的是若干個(gè)參數(shù)的列表,而apply()方法接受的是一個(gè)包含多個(gè)參數(shù)的數(shù)組落恼。
8.jQery的鏈?zhǔn)讲僮?/h4>
方法鏈:jQery調(diào)用方法時(shí)箩退,對(duì)象方法返回的是對(duì)象本身,因此可以調(diào)用對(duì)此對(duì)象的其他jQery方法實(shí)現(xiàn)連續(xù)調(diào)用多個(gè)方法佳谦,即鏈?zhǔn)讲僮鳌?br> 例:$(this).siblings().removeClass('active');
9.常用的jQery API有哪些
.addClass() .removeClass() .appendTo() .click() .clone() .each() .attr() .add()
10.DOMContentReady事件是什么
文檔元素的加載
11.常見的網(wǎng)站性能優(yōu)化手段
合并請(qǐng)求:合并請(qǐng)求的主要目的是減少瀏覽器對(duì)服務(wù)器發(fā)起的請(qǐng)求數(shù)戴涝,從而減少在發(fā)起請(qǐng)求過程中花費(fèi)的時(shí)間。本測(cè)試采用了合并JS钻蔑、合并CSS以及合并小圖片(也就是使用CSS精靈)等方式來減少請(qǐng)求啥刻。
域名拆分:域名拆分主要是為了增加瀏覽器下載的并行度,讓瀏覽器能同時(shí)發(fā)起更多的請(qǐng)求咪笑。
開啟Gzip:Gzip是一種壓縮技術(shù)可帽,可以將資源在服務(wù)端進(jìn)行壓縮,然后發(fā)送給瀏覽器后再進(jìn)行解壓窗怒,這種方式會(huì)降低傳輸大小映跟,提高網(wǎng)頁加載性能。
開啟keepalive:開啟KeepAlive能夠減少瀏覽器與服務(wù)器建立連接的次數(shù)扬虚,從而節(jié)省建立連接時(shí)間努隙。
Minify:Minify指的是將JS和CSS等文本文件進(jìn)行最小化處理,一般對(duì)于CSS來說就是去除空格去除換行去除注釋等辜昵,對(duì)于JS荸镊,除了上述方法外,還可以進(jìn)行變量名替換堪置,將長變量名替換為短變量名躬存。目前有很多用戶做Minify的工具,例如uglifyjs等舀锨。
重點(diǎn)是測(cè)試自己的站點(diǎn)岭洲,衡量自己的收益,用自己的數(shù)據(jù)指導(dǎo)自己的優(yōu)化行為雁竞,這樣才能獲得更好的用戶體驗(yàn)钦椭。