一、html
1. 塊級元素蠢壹、行內(nèi)元素和空(void)元素有哪些超升?
塊級元素:div入宦、ul、li室琢、dl乾闰、dt、dd盈滴、p涯肩、h1-h6、blockquote
行內(nèi)元素:a巢钓、b病苗、span、img症汹、input硫朦、strong、select背镇、label咬展、em、button瞒斩、textarea
空(void)元素:即系沒有內(nèi)容的HTML元素挚赊,例如:br、meta济瓢、hr荠割、link、input旺矾、img
2. 清除浮動的方式有哪些蔑鹦,哪種方式最好?
(1)clear:both
原理:添加一個空div箕宙,利用css提高的clear:both清除浮動嚎朽,讓父級div能自動獲取到高度
父元素:after{
display:block;
content:'';
clear:both;
}
(2)overflow:hidden柬帕;解決高度塌陷哟忍,在父容器里寫
優(yōu)點:簡單狡门,代碼少,瀏覽器支持好
3. DOCTYPE的作用是什么锅很?
告知瀏覽器的解釋器用什么文檔標準解析這個文檔其馏。
4. html5有哪些新特性?
(1)語義標簽
<header/><footer/><nav/>
(2)增強型表單
placehoder 屬性爆安,簡短的提示在用戶輸入值前會顯示在輸入域上叛复。即我們常見的輸入框默認 提示,在用戶輸入后消失扔仓。
required 屬性褐奥,是一個 boolean 屬性。要求填寫的輸入域不能為空
pattern 屬性翘簇,描述了一個正則表達式用于驗證<input> 元素的值撬码。
min 和 max 屬性,設(shè)置元素最小值與最大值版保。
autofocus 屬性耍群,是一個 boolean 屬性。規(guī)定在頁面加載時找筝,域自動地獲得焦點蹈垢。
multiple 屬性 ,是一個 boolean 屬性袖裕。規(guī)定<input> 元素中可選擇多個值曹抬。
(3)視頻和音頻
(4)Canvas繪圖
(5)SVG繪圖
(6)地理定位
(7)拖放API
(8)Web Storage
客戶端存儲數(shù)據(jù)的兩個對象為:
localStorage - 沒有時間限制的數(shù)據(jù)存儲
sessionStorage - 針對一個 session 的數(shù)據(jù)存儲, 當用戶關(guān)閉瀏覽器窗口后,數(shù)據(jù)會被刪除急鳄。
5.前端頁面有哪三層構(gòu)成谤民,分別是什么?作用是什么?
結(jié)構(gòu)層 Html 表示層 CSS 行為層 js
6.描述css reset的作用和用途。
Reset重置瀏覽器的css默認屬性 瀏覽器的品種不同疾宏,樣式不同张足,然后重置,讓他們統(tǒng)一
7.解釋css sprites坎藐,如何使用为牍。
Css 精靈 把一堆小的圖片整合到一張大的圖片上,減輕服務(wù)器對圖片的請求數(shù)量
其實就是把網(wǎng)頁中一些背景圖片整合到一張圖片文件中岩馍,再利用CSS的“background-image”碉咆,“background- repeat”,“background-position”的組合進行背景定位蛀恩,background-position可以用數(shù)字精確的定位出[背景圖片](http://baike.baidu.com/view/950110.htm%22%20%5Ct%20%22_blank)的位置疫铜。
-
數(shù)組方法pop() push() unshift() shift() splice() slice()
Push()尾部添加 pop()尾部刪除
Unshift()頭部添加 shift()頭部刪除
9.call和apply的區(qū)別
兩者是指當前的this指針指向調(diào)用你的那個function
Object.call(this,obj1,obj2,obj3),call()的參數(shù)是單個單個的形式
Object.apply(this,arguments)有兩個參數(shù)(當前方法双谆,數(shù)組)
用處:實現(xiàn)繼承
10.Javascript的typeof返回哪些數(shù)據(jù)類型
object number string boolean underfind function
- js繼承三種方式
js原型(prototype)實現(xiàn)繼承
構(gòu)造函數(shù)實現(xiàn)繼承
call , apply實現(xiàn)繼承
- JavaScript中如何檢測一個變量是一個String類型壳咕?請寫出函數(shù)實現(xiàn)
typeof(obj) == String;
obj instanceof String
- 頁面導(dǎo)入css樣式有哪幾種席揽?link和@import的區(qū)別是?
(1) 從屬關(guān)系區(qū)別
@import是 CSS 提供的語法規(guī)則谓厘,只有導(dǎo)入樣式表的作用幌羞;link是HTML提供的標簽,不僅可以加載 CSS 文件庞呕,還可以定義 RSS新翎、rel 連接屬性等程帕。
(2)加載順序的區(qū)別
link先加載網(wǎng)頁再顯示結(jié)構(gòu)住练,import相反
(3)兼容性的區(qū)別
@import是 CSS2.1 才有的語法,故只可在 IE5+ 才能識別愁拭;link標簽作為 HTML 元素讲逛,不存在兼容性問題。
(4)DOM的可控性區(qū)別
可以通過 JS 操作 DOM 岭埠,插入link標簽來改變樣式盏混;由于 DOM 方法是基于文檔的,無法使用@import的方式插入樣式惜论。
(5)權(quán)重區(qū)別
在link標簽引入的 CSS 文件中使用@import時许赃,相同樣式將被該 CSS 文件本身的樣式層疊。
- css選擇器有哪些馆类?
(1)標簽選擇器(如:body,div,p,ul,li)
(2)類選擇器(如:class="head",class="head_logo")
(3)ID選擇器(如:id="name",id="name_txt")
(4)全局選擇器(如:*號)
(5)組合選擇器(如:.head .head_logo,注意兩選擇器用空格鍵分開)
(6)繼承選擇器(如:div p,注意兩選擇器用空格鍵分開)
(7)偽類選擇器(如:就是鏈接樣式,a元素的偽類混聊,4種不同的狀態(tài):link、visited乾巧、active句喜、hover。)
(8)字符串匹配的屬性選擇符(^ $ *三種沟于,分別對應(yīng)開始咳胃、結(jié)尾、包含)
15. js的基礎(chǔ)類型有哪些旷太?
Undefined展懈、Null、Boolean供璧、Number和String标沪。還有1中復(fù)雜的數(shù)據(jù)類型————Object,Object本質(zhì)上是由一組無序的名值對組成的
16. ajax是如何是實現(xiàn)的嗜傅?
(1) 創(chuàng)建 XMLHTTPRequest對象
(2) open(method, url, async)
method:發(fā)送請求所使用的方法(GET或POST)金句;與POST相比,GET更簡單也更快吕嘀,并且在大部分情況下都能用违寞;
url:訪問路徑贞瞒;
async:規(guī)定應(yīng)當對請求進行異步(true)或同步(false)處理;true是在等待服務(wù)器響應(yīng)時執(zhí)行其他腳本趁曼,當響應(yīng)就緒后對響應(yīng)進行處理军浆;false是等待服務(wù)器響應(yīng)再執(zhí)行。
(3) send() 方法可將請求送往服務(wù)器挡闰。
(4) onreadystatechange:存有處理服務(wù)器響應(yīng)的函數(shù)乒融,每當 readyState 改變時,onreadystatechange 函數(shù)就會被執(zhí)行摄悯。
(5) readyState:存有服務(wù)器響應(yīng)的狀態(tài)信息赞季。
(6) responseText:獲得字符串形式的響應(yīng)數(shù)據(jù)。
(7) setRequestHeader():POST傳數(shù)據(jù)時奢驯,用來添加 HTTP 頭申钩,然后send(data),注意data格式瘪阁;GET發(fā)送信息時直接加參數(shù)
到url上就可以撒遣,比如url?a=a1&b=b1。
代碼示例:
$.ajax({
url:"{:U('ajax_question')}", //請求路徑
dataType:'json', //數(shù)據(jù)類型
async:true,//請求是否異步管跺,默認為異步义黎,這也是ajax重要特性
success:function(res){
//請求成功時處理
$('.answer-wrap').append(res);//通過append的方式動態(tài)添加html代碼
},
error:function(res){
//請求成功時處理
layer.msg('服務(wù)器繁忙,請稍后重試')
}
});
17. "==="和“==”區(qū)別
“===”代表類型和值相同
“==”代表值相同
18. 什么是閉包?什么是回調(diào)豁跑?什么是跨域廉涕?
閉包:定義一個函數(shù),函數(shù)里嵌套函數(shù)贩绕,外層函數(shù)調(diào)用內(nèi)層函數(shù)方法火的。(可以訪問別的方法內(nèi)部的參數(shù))
回調(diào):一個方法作為參數(shù)傳給另一個方法,另一個方法里調(diào)用這個函數(shù).
跨域:協(xié)議淑倾、域名馏鹤、端口與當前不同
19.優(yōu)化前端性能的方法有哪些?
(1)頁面級優(yōu)化
a.減少HTTP請求次數(shù)
從設(shè)計實現(xiàn)層面簡化頁面
合理設(shè)置 HTTP緩存
資源合并與壓縮
合并 CSS圖片
將 CSS放在 HEAD中
b.將外部腳本置底(將腳本內(nèi)容在頁面信息內(nèi)容加載后再加載)
將引入的js放在行為層(最底部)
c.減少不必要的 HTTP跳轉(zhuǎn)
d.避免重復(fù)的資源請求
(2)代碼級優(yōu)化
a.少用字符串拼接娇哆,+
緩存節(jié)點湃累,盡量減少節(jié)點的查找
避免無謂的循環(huán),break碍讨、continue治力、return的適當使用
減少節(jié)點的操作(innerHTML)
(3)Image壓縮
20.get 和post有哪些區(qū)別?以及各自的使用環(huán)境
POST和GET都是向服務(wù)器提交數(shù)據(jù)勃黍,并且都會從服務(wù)器獲取數(shù)據(jù)宵统。
**區(qū)別:**
1、傳送方式:get通過地址欄傳輸覆获,post通過報文傳輸马澈。
2瓢省、傳送長度:get參數(shù)有長度限制(受限于url長度),而post無限制
3痊班、get比post更不安全勤婚,因為參數(shù)直接暴露在url中,所以不能用來傳遞敏感信息涤伐。
get請求只能進行url編碼馒胆,而post支持多種編碼方式
get請求會瀏覽器主動cache,而post支持多種編碼方式凝果。
get請求參數(shù)會被完整保留在瀏覽歷史記錄里祝迂,而post中的參數(shù)不會被保留。
4.最直觀的區(qū)別就是GET把參數(shù)包含在URL中豆村,POST通過request body傳遞參數(shù)液兽。
21. ajax請求方式骂删?
get掌动,post,delete宁玫,put粗恢,update
22.window.onload與$.onload區(qū)別
兩者都是在dom文檔樹加載完執(zhí)行的,但window.onload是在dom文檔樹加載完和所有文件加載完執(zhí)行的一個函數(shù)欧瘪。$(document).ready要比window.onload先執(zhí)行
- es6的新增功能
1. 新的變量聲明方式 let/const
2. 箭頭函數(shù)的使用
const fn = (a, b) => a + b;
箭頭函數(shù)最直觀的三個特點眷射。
不需要 function 關(guān)鍵字來創(chuàng)建函數(shù)
省略 return 關(guān)鍵字
繼承當前上下文的 this 關(guān)鍵字
3. 模板字符串 ``
4. 函數(shù)默認參數(shù) ,不定參數(shù),拓展參數(shù)
function add(x = 20, y = 30) {
return x + y;
}
console.log(add());
5. 展開運算符 ...
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 10, 20, 30];
// 這樣佛掖,arr2 就變成了[1, 2, 3, 10, 20, 30];
6. 類的支持妖碉,引入class關(guān)鍵字
7. for of
- CSS3的新特性
圓角border-radius
陰影box-shadow
文字陰影text-shadow
線性漸變gradient
旋轉(zhuǎn)transform
二. vue框架
- 創(chuàng)建vuejsjiao'shou'jia:vue init webpack 項目名
- 傳值
(1)A組件向B組建傳值
A: this.$router.push({path:'/B',query:{id:11}})
B接收:this.$router.query.id
(2) 父組件向子組件傳值 props
父:<child:name-list="names">
子接受:props:['name-list']
(3) 子組件向父組件傳值(通過事件傳值) $on(event)監(jiān)聽事件,$emit(event)觸發(fā)事件
子:<button @click="submit">
submit(){
this.$emit('code',888)
}
父接收:<child @code='getcode'>