1.對 WEB 標準以及 W3C 的理解與認識? css
參考: 標籤閉合、標籤小寫、不亂嵌套、提升搜索機器人搜索概率、使用外 鏈 css 和 js 腳本、 結構行爲表現的分離、文件下載與頁面速度更快、內容能被更多的用戶所訪問、內容能被更 普遍的設備所訪問、更少的代碼和組件,容易維 護、改版方便,不須要變更頁面內容、提 供打印版本而不須要複製內容、提升網站易用性。 html
2.xhtml 和 html 有什麼區別?前端
參考: HTML 是一種基本的 WEB 網頁設計語言,XHTML 是一個基於 XML 的置標語言。 最主要的不一樣: XHTML 元素必須被正確地嵌套。 XHTML 元素必須被關閉。 標籤名必須用小寫字母。 XHTML 文檔必須擁有根元素。html5
3.Doctype? 嚴格模式與混雜模式-如何觸發這兩種模式,區分它們有何意義? web
參考: 用於聲明文檔使用那種規範(html/Xhtml)通常爲 嚴格 過分 基於框架的 html 文檔。 加入 XMl 聲明可觸發,解析方式更改成 IE5.5 擁有 IE5.5 的 bug。 面試
4.描述 css reset 的做用和用途。?chrome
參考: Reset 重置瀏覽器的 css 默認屬性 瀏覽器的品種不一樣,樣式不一樣,而後重置,讓他們統 一。 編程
5.解釋 css sprites,如何使用。?canvas
參考: Css 精靈 把一堆小的圖片整合到一張大的圖片上,減輕服務器對圖片的請求數量。 跨域
6.你如何對網站的文件和資源進行優化?
參考:解決方案包括:文件合併、文件最小化/文件壓縮、使用 CDN 託管、緩存的使用
7.清除浮動的幾種方式,各自的優缺點?
參考:1.使用空標籤清除浮動 clear:both(理論上能清楚任何標籤,,,增長無心義的標籤) 。 2.使用 overflow:auto(空標籤元素清除浮動而不得不增長無心代碼的弊端,,使用 zoom:1 用於兼容 IE)。 3.是用 afert 僞元素清除浮動(用於非 IE 瀏覽器)。
8.前端頁面由哪三層構成,分別是什麼?做用是什麼?
參考: 網頁分紅三個層次,即:結構層、表示層、行爲層。
網頁的結構層(structural layer)由 HTML 或 XHTML 之類的標記語言負責建立。標籤, 也就是那些出如今尖括號裏的單詞,對網頁內容的語義含義作出了描述,但這些標籤不包含 任何關於如何顯示有關內容的信息。例如, P 標籤表達了這樣一種語義:「這是一個文本段」。
網頁的表示層(presentation layer) 由 CSS 負責建立。 CSS 對「如何顯示有關內容」 的問題作出了回答。
網頁的行爲層(behavior layer)負責回答「內容應該如何對事件作出反應」這一問題。這是 Javascript 語言和 DOM 主宰的領域。
9.瀏覽器的內核分別是什麼?
參考: IE 瀏覽器的內核 Trident、Mozilla 的 Gecko、Chrome 的 Blink(WebKit 的分支)、Opera 內核原爲 Presto,現爲 Blink。
10.常見兼容性問題?
參考: * png24 位的圖片在 iE6 瀏覽器上出現背景,解決方案是作成 PNG8. * 瀏覽器默認的margin和padding不一樣。解決方案是加一個全局的*{margin:0;padding:0;} 來統一。
* IE6 雙邊距 bug:塊屬性標籤 float 後,又有橫行的 margin 狀況下,在 ie6 顯示 margin 比設置的大。 浮動 ie 產生的雙倍距離 #box{ float:left; width:10px; margin:0 0 0 100px;} 這種狀況之下 IE 會產生 20px 的距離,解決方案是在 float 的標籤樣式控制中加入 —— _display:inline;將其轉化爲行內屬性。(_這個符號只有 ie6 會識別) 漸進識別的方式,從整體中逐漸排除局部。
首先,巧妙的使用「\9」這一標記,將 IE 遊覽器從全部狀況中分離出來。 接着,再次使用「+」將 IE8 和 IE七、IE6 分離開來,這樣 IE8 已經獨立識別。
.bb{ background-color:#f1ee18; /*全部識別*/
.background-color:#00deff\9; /*IE六、七、8 識別*/
+background-color:#a200ff;/*IE六、7 識別*/
_background-color:#1e0bd1;/*IE6 識別*/
}
* IE 下,可使用獲取常規屬性的方法來獲取自定義屬性, 也可使用 getAttribute()獲取自定義屬性; Firefox 下,只能使用 getAttribute()獲取自定義屬性. 解決方法:統一經過 getAttribute()獲取自定義屬性.
* IE 下,even 對象有 x,y 屬性,可是沒有 pageX,pageY 屬性; Firefox 下,event 對象有 pageX,pageY 屬性,可是沒有 x,y 屬性. * 解決方法:(條件註釋)缺點是在 IE 瀏覽器下可能會增長額外的 HTTP 請求數。
* Chrome 中文界面下默認會將小於 12px 的文本強制按照 12px 顯示, 可經過加入 CSS 屬性 -webkit-text-size-adjust: none; 解決.
超連接訪問事後 hover 樣式就不出現了 被點擊訪問過的超連接樣式不在具備 hover 和 active 瞭解決方法是改變 CSS 屬性的排列順序:
L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}
11.html5 有哪些新特性、移除了那些元素?如何處理 HTML5 新標籤的瀏覽器兼容問題?如 何區分 HTML 和 HTML5?
參考: * HTML5 如今已經不是 SGML 的子集,主要是關於圖像,位置,存儲,多任務等功能 的增長。
* 繪畫 canvas
用於媒介回放的 video 和 audio 元素
本地離線存儲 localStorage 長期存儲數據,瀏覽器關閉後數據不丟失;
sessionStorage 的數據在瀏覽器關閉後自動刪除 語意化更好的內容元素,好比 article、footer、header、nav、section 表單控件,calendar、date、time、email、url、search
新的技術 webworker, websockt, Geolocation
* 移除的元素 純表現的元素:basefont,big,center,font, s,strike,tt,u;
對可用性產生負面影響的元素:frame,frameset,noframes;
支持 HTML5 新標籤:
* IE8/IE7/IE6 支持經過 document.createElement 方法產生的標籤, 能夠利用這一特性讓這些瀏覽器支持 HTML5 新標籤,
瀏覽器支持新標籤後,還須要添加標籤默認的樣式:
* 固然最好的方式是直接使用成熟的框架、使用最多的是 html5shim 框架
如何區分: DOCTYPE 聲明\新增的結構元素\功能元素
12. 解釋下浮動和它的工做原理?清除浮動的技巧?
參考:浮動元素脫離文檔流,不佔據空間。浮動元素碰到包含它的邊框或者浮動元素的邊框停留。
1.內聯寫法:and以後必須有空格
@media screen and (
min-width:960px //判斷瀏覽器大小條件)
{body{background:red} //常規的樣式
}
2.外聯寫法:當知足屏幕知足條件的時候鏈接href後的css文件
<link='stylesheet' media='screen and (min-width:960)' href='xx.css'/>
<link='stylesheet' media='screen and (min-width:960) and (max-width:1960)' href='xx.css'/>
媒體查詢根據不一樣屏幕顯示不一樣界面有兩種方式:
1.在不一樣的媒體查詢斷定的大括號後寫不一樣的樣式
2.寫兩個相同的HTML內部的內容,經過媒體查詢判斷界面後,顯示一個,隱藏另外一個
14.使用 CSS 預處理器嗎?喜歡那個?
參考:一、什麼是CSS預處理器
CSS預處理器定義了一種新的語言,基本的思想是用一種專門的編程語言,開發者只須要使用這種語言進行編碼工做,減小枯燥無味的CSS代碼的編寫過程的同時,它能讓你的CSS具有更加簡潔、適應性更強、可讀性更加、層級關係更加明顯、更易於代碼的維護等諸多好處。
CSS預處理器種類繁多,本次就以Sass、Less、Stylus進行比較。
二、語法
在使用CSS預處理器以前最重要的是瞭解語法,我只寫過sass,就從網上找了下另外兩種語法的格式,與你們對比分享。
首先Sass和Less都是用的是標準的CSS語法,所以你能夠很方便的把已完成的CSS代碼轉爲預處理器識別的代碼,Sass默認使用 .sass擴展名,而Less默認使用.Less擴展名。
15.div+css 的佈局較 table 佈局有什麼優勢?
參考: •改版的時候更方便 只要改 css 文件。
•頁面加載速度更快、結構化清晰、頁面顯示簡潔。
•表現與結構相分離。
•易於優化(seo)搜索引擎更友好,排名更容易靠前。
16.爲何利用多個域名來存儲網站資源會更有效?
參考: •CDN 緩存更方便
•突破瀏覽器併發限制
•節約 cookie 帶寬
•節約主域名的鏈接數,優化頁面響應速度
•防止沒必要要的安全問題
17.請談一下你對網頁標準和標準制定機構重要性的理解?
參考: (無標準答案)網頁標準和標準制定機構都是爲了能讓 web 發展的更‘健康’,開發者 遵循統一的標準,下降開發難度,開發成本,SEO 也會更好作,也不會由於濫用代碼致使各 種 BUG、安全問題,最終提升網站易用性。
18.請描述一下 cookies,sessionStorage 和 localStorage 的區別?
參考: sessionStorage 用於本地存儲一個會話(session)中的數據,這些數據只有在同一個會 話中的頁面才能訪問而且當會話結束後數據也隨之銷燬。所以 sessionStorage 不是一種持久 化的本地存儲,僅僅是會話級別的存儲。而 localStorage 用於持久化的本地存儲,除非主動 刪除數據,不然數據是永遠不會過時的。
web storage 和 cookie 的區別
•Web Storage 的概念和 cookie 類似,區別是它是爲了更大容量存儲設計的。Cookie 的 大小是受限的,而且每次你請求一個新的頁面的時候 Cookie 都會被髮送過去,這樣無形中 浪費了帶寬,另外 cookie 還須要指定做用域,不能夠跨域調用。
•除此以外,Web Storage 擁有 setItem,getItem,removeItem,clear 等方法,不像 cookie 需 要前端開發者本身封裝 setCookie,getCookie。可是 Cookie 也是不能夠或缺的:Cookie 的做 用是與服務器進行交互,做爲 HTTP 規範的一部分而存在 ,而 Web Storage 僅僅是爲了在本 地「存儲」數據而生。
19.知道的網頁製做會用到的圖片格式有哪些?
參考: png-8,png-24,jpeg,gif,svg。
可是上面的那些都不是面試官想要的最後答案。面試官但願聽到是 Webp。(是否有關 注新技術,新鮮事物) 科普一下 Webp:WebP 格式,谷歌(google)開發的一種旨在加快圖片加載速度的圖片 格式。
圖片壓縮體積大約只有 JPEG 的 2/3,並能節省大量的服務器帶寬資源和數據空間。 Facebook Ebay 等知名網站已經開始測試並使用 WebP 格式。 在質量相同的狀況下,WebP 格式圖像的體積要比 JPEG 格式圖像小 40%
20.在 css/js 代碼上線以後開發人員常常會優化性能,從用戶刷新網頁開始,一次 js 請求一 般狀況下有哪些地方會有緩存處理?
參考: dns 緩存,cdn 緩存,瀏覽器緩存,服務器緩存。
21.一個頁面上有大量的圖片(大型電商網站),加載很慢,你有哪些方法優化這些圖片的 加載,給用戶更好的體驗?
參考: •圖片懶加載,在頁面上的未可視區域能夠添加一個滾動條事件,判斷圖片位置與瀏覽 器頂端的距離與頁面的距離,若是前者小於後者,優先加載。
•若是爲幻燈片、相冊等,可使用圖片預加載技術,將當前展現圖片的前一張和後一 張優先下載。
•若是圖片爲 css 圖片,可使用 CSSsprite,SVGsprite,Iconfont、Base64 等技術。
•若是圖片過大,可使用特殊編碼的圖片,加載時會先加載一張壓縮的特別厲害的縮 略圖,以提升用戶體驗。
•若是圖片展現區域小於圖片的真實大小,則因在服務器端根據業務須要先行進行圖片 壓縮,圖片壓縮後大小與展現一致。
22.談談之前端角度出發作好 SEO 須要考慮什麼?
參考: •瞭解搜索引擎如何抓取網頁和如何索引網頁
你須要知道一些搜索引擎的基本工做原理,各個搜索引擎之間的區別,搜索機器人(SE robot 或叫 web crawler)如何進行工做,搜索引擎如何對搜索結果進行排序等等。
•Meta 標籤優化
主要包括主題(Title),網站描述(Description),和關鍵詞(Keywords)。還有一些其它的 隱藏文字好比 Author(做者),Category(目錄),Language(編碼語種)等。 •如何選取關鍵詞並在網頁中放置關鍵詞 搜索就得用關鍵詞。關鍵詞分析和選擇是 SEO 最重要的工做之一。首先要給網站肯定 主關鍵詞(通常在 5 個上下),而後針對這些關鍵詞進行優化,包括關鍵詞密度(Density), 相關度(Relavancy),突出性(Prominency)等等。
•瞭解主要的搜索引擎
雖然搜索引擎有不少,可是對網站流量起決定做用的就那麼幾個。好比英文的主要有 Google,Yahoo,Bing 等;中文的有百度,搜狗,有道等。不一樣的搜索引擎對頁面的抓取和 索引、排序的規則都不同。還要了解各搜索門戶和搜索引擎之間的關係,好比 AOL 網頁 搜索用的是 Google 的搜索技術,MSN 用的是 Bing 的技術。
•主要的互聯網目錄
Open Directory 自身不是搜索引擎,而是一個大型的網站目錄,他和搜索引擎的主要區 別是網站內容的收集方式不一樣。目錄是人工編輯的,主要收錄網站主頁;搜索引擎是自動收 集的,除了主頁外還抓取大量的內容頁面。
•按點擊付費的搜索引擎
搜索引擎也須要生存,隨着互聯網商務的愈來愈成熟,收費的搜索引擎也開始大行其道。 最典型的有 Overture 和百度,固然也包括 Google 的廣告項目 Google Adwords。愈來愈多的 人經過搜索引擎的點擊廣告來定位商業網站,這裏面也大有優化和排名的學問,你得學會用 最少的廣告投入得到最多的點擊。
•搜索引擎登陸
網站作完了之後,別躺在那裏等着客人從天而降。要讓別人找到你,最簡單的辦法就是 將網站提交(submit)到搜索引擎。若是你的是商業網站,主要的搜索引擎和目錄都會要求 你付費來得到收錄(好比 Yahoo 要 299 美圓),可是好消息是(至少到目前爲止)最大的搜 索引擎 Google 目前仍是免費,並且它主宰着 60%以上的搜索市場。
•連接交換和連接普遍度(Link Popularity)
網頁內容都是以超文本(Hypertext)的方式來互相連接的,網站之間也是如此。除了搜 索引擎之外,人們也天天經過不一樣網站之間的連接來 Surfing(「衝浪」)。其它網站到你的網 站的連接越多,你也就會得到更多的訪問量。更重要的是,你的網站的外部連接數越多,會 被搜索引擎認爲它的重要性越大,從而給你更高的排名。
•合理的標籤使用
23.有哪項方式能夠對一個 DOM 設置它的 CSS 樣式?
參考: •外部樣式表,引入一個外部 css 文件
•內部樣式表,將 css 代碼放在 <head> 標籤內部
•內聯樣式,將 css 樣式直接定義在 HTML 元素內部
24.什麼是 Css Hack?ie6,7,8 的 hack 分別是什麼?
參考:#test {
width:300px;
height:300px;
background-color:blue; /*firefox*/
background-color:red\9; /*all ie*/
background-color:yellow; /*ie8*/
+background-color:pink; /*ie7*/
_background-color:orange; /*ie6*/
}
:root #test { background-color:purple\9; } /*ie9*/
@media all and (min-width:0px){ #test {background-color:black;} } /*opera*/
@media screen and (-webkit-min-device-pixel-ratio:0){ #test {background-color:gray;} } /*chrome and safari*/
25.什麼是外邊距重疊?重疊的結果是什麼?
參考: 外邊距重疊就是 margin-collapse。 在 CSS 當中,相鄰的兩個盒子(多是兄弟關係也多是祖先關係)的外邊距能夠結合 成一個單獨的外邊距。這種合併外邊距的方式被稱爲摺疊,而且於是所結合成的外邊距稱爲 摺疊外邊距。
摺疊結果遵循下列計算規則:
1.兩個相鄰的外邊距都是正數時,摺疊結果是它們二者之間較大的值。
2.兩個相鄰的外邊距都是負數時,摺疊結果是二者絕對值的較大值。
3.兩個外邊距一正一負時,摺疊結果是二者的相加的和。
26.rgba()和 opacity 的透明效果有什麼不一樣?
參考: rgba()和 opacity 都能實現透明效果,但最大的不一樣是 opacity 做用於元素,以及元素內 的全部內容的透明度, 而 rgba()只做用於元素的顏色或其背景色。(設置 rgba 透明的元素的子元素不會繼承透 明效果)!
27.css 中可讓文字在垂直和水平方向上重疊的兩個屬性是什麼?
參考: 垂直方向:line-height
水平方向:letter-spacing
考官會繼續追問,關於 letter-spacing 的妙用知道有哪些麼?
答案:能夠用於消除 inline-block 元素間的換行符空格間隙問題。
28.px 和 em 的區別?
參考: px 和 em 都是長度單位,區別是,px 的值是固定的,指定是多少就是多少,計算比較 容易。
em 得值不是固定的,而且 em 會繼承父級元素的字體大小。
瀏覽器的默認字體高都是 16px。因此未經調整的瀏覽器都符合: 1em=16px。那麼 12px=0.75em, 10px=0.625em。
29.Sass、LESS 是什麼?你們爲何要使用他們?
參考: 他們是 CSS 預處理器。他是 CSS 上的一種抽象層。他們是一種特殊的語法/語言編譯成 CSS。
例如 Less 是一種動態樣式語言. 將 CSS 賦予了動態語言的特性,如變量,繼承,運算,函數. LESS 既能夠在客戶端上運行 (支持 IE 6+, Webkit, Firefox),也可一在服務端運行 (藉助 Node.js)。
爲何要使用它們?
•結構清晰,便於擴展。
•能夠方便地屏蔽瀏覽器私有語法差別。這個不用多說,封裝對瀏覽器語法差別的重複 處理,減小無心義的機械勞動。
•能夠輕鬆實現多重繼承。
•徹底兼容 CSS 代碼,能夠方便地應用到老項目中。LESS 只是在 CSS 語法上作了擴展, 因此老的 CSS 代碼也能夠與 LESS 代碼一同編譯。
30.分別寫出如下幾個 HTML 標籤:文字加粗、下標、居中、字體 ?
參考: <em></em> <i></i> 斜體
<strong></strong> <b></b> 加粗,h1~h6也是文字加粗顯示
<del></del> <s></s> 刪除線
<u></u> 下劃線
<sup></sup> 上標
<sub></sub> 下標
31.寫出一個文本輸入框,屬性爲只讀,最大輸入字符爲 20 個 ?
參考:<input name="textfield" type="text" maxlength="20" readonly="" value="" />