前端面試寶典

1、HTML和CSScss

  1. 你作的頁面在哪些流覽器測試過?這些瀏覽器的內核分別是什麼?
    IE: trident內核
    Firefox:gecko內核
    Safari:webkit內核
    Opera:之前是presto內核,Opera現已改用Google Chrome的Blink內核
    Chrome:Blink(基於webkit,Google與Opera Software共同開發)html

  2. 每一個HTML文件裏開頭都有個很重要的東西,Doctype,知道這是幹什麼的嗎?
    <!DOCTYPE> 聲明位於文檔中的最前面的位置,處於 <html> 標籤以前。此標籤可告知瀏覽器文檔使用哪一種 HTML 或 XHTML 規範。(重點:告訴瀏覽器按照何種規範解析頁面)前端

  3. Quirks模式是什麼?它和Standards模式有什麼區別
    從IE6開始,引入了Standards模式,標準模式中,瀏覽器嘗試給符合標準的文檔在規範上的正確處理達到在指定瀏覽器中的程度。
    在IE6以前CSS還不夠成熟,因此IE5等以前的瀏覽器對CSS的支持不好, IE6將對CSS提供更好的支持,然而這時的問題就來了,由於有不少頁面是基於舊的佈局方式寫的,而若是IE6 支持CSS則將令這些頁面顯示不正常,如何在即保證不破壞現有頁面,又提供新的渲染機制呢?
    在寫程序時咱們也會常常遇到這樣的問題,如何保證原來的接口不變,又提供更強大的功能,尤爲是新功能不兼容舊功能時。遇到這種問題時的一個常見作法是增長參數和分支,即當某個參數爲真時,咱們就使用新功能,而若是這個參數 不爲真時,就使用舊功能,這樣就能不破壞原有的程序,又提供新功能。IE6也是相似這樣作的,它將DTD當成了這個「參數」,由於之前的頁面你們都不會去寫DTD,因此IE6就假定 若是寫了DTD,就意味着這個頁面將採用對CSS支持更好的佈局,而若是沒有,則採用兼容以前的佈局方式。這就是Quirks模式(怪癖模式,詭異模式,怪異模式)。
    區別:
    整體會有佈局、樣式解析和腳本執行三個方面的區別。
    盒模型:在W3C標準中,若是設置一個元素的寬度和高度,指的是元素內容的寬度和高度,而在Quirks 模式下,IE的寬度和高度還包含了padding和border。web

    設置行內元素的高寬:在Standards模式下,給<span>等行內元素設置wdith和height都不會生效,而在quirks模式下,則會生效。
    設置百分比的高度:在standards模式下,一個元素的高度是由其包含的內容來決定的,若是父元素沒有設置百分比的高度,子元素設置一個百分比的高度是無效的用margin:0 auto設置水平居中:使用margin:0 auto在standards模式下可使元素水平居中,但在quirks模式下卻會失效。
    (還有不少,答出什麼不重要,關鍵是看他答出的這些是否是本身經驗遇到的,仍是說都是看文章看的,甚至徹底不知道。)面試

  4. div+css的佈局較table佈局有什麼優勢?
    改版的時候更方便 只要改css文件。
    頁面加載速度更快、結構化清晰、頁面顯示簡潔。
    表現與結構相分離。
    易於優化(seo)搜索引擎更友好,排名更容易靠前。算法

  5. img的alt與title有何異同? strong與em的異同?
    a:alt(alt text):爲不能顯示圖像、窗體或applets的用戶代理(UA),alt屬性用來指定替換文字。替換文字的語言由lang屬性指定。(在IE瀏覽器下會在沒有title時把alt當成 tool tip顯示)
    title(tool tip):該屬性爲設置該屬性的元素提供建議性的信息。
    strong:粗體強調標籤,強調,表示內容的重要性
    em:斜體強調標籤,更強烈強調,表示內容的強調點chrome

  6. 你能描述一下漸進加強和優雅降級之間的不一樣嗎?
    漸進加強 progressive enhancement:針對低版本瀏覽器進行構建頁面,保證最基本的功能,而後再針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗。
    優雅降級 graceful degradation:一開始就構建完整的功能,而後再針對低版本瀏覽器進行兼容。
    區別:優雅降級是從複雜的現狀開始,並試圖減小用戶體驗的供給,而漸進加強則是從一個很是基礎的,可以起做用的版本開始,並不斷擴充,以適應將來環境的須要。降級(功能衰減)意味着往回看;而漸進加強則意味着朝前看,同時保證其根基處於安全地帶。
    「優雅降級」觀點
    「優雅降級」觀點認爲應該針對那些最高級、最完善的瀏覽器來設計網站。而將那些被認爲「過期」或有功能缺失的瀏覽器下的測試工做安排在開發週期的最後階段,並把測試對象限定爲主流瀏覽器(如 IE、Mozilla 等)的前一個版本。
    在這種設計範例下,舊版的瀏覽器被認爲僅能提供「簡陋卻無妨 (poor, but passable)」 的瀏覽體驗。你能夠作一些小的調整來適應某個特定的瀏覽器。但因爲它們並不是咱們所關注的焦點,所以除了修復較大的錯誤以外,其它的差別將被直接忽略。
    「漸進加強」觀點
    「漸進加強」觀點則認爲應關注於內容自己。
    內容是咱們創建網站的誘因。有的網站展現它,有的則收集它,有的尋求,有的操做,還有的網站甚至會包含以上的種種,但相同點是它們全都涉及到內容。這使得「漸進加強」成爲一種更爲合理的設計範例。這也是它當即被 Yahoo! 所採納並用以構建其「分級式瀏覽器支持 (Graded Browser Support)」策略的緣由所在。
    那麼問題來了。如今產品經理看到IE6,7,8網頁效果相對高版本現代瀏覽器少了不少圓角,陰影(CSS3),要求兼容(使用圖片背景,放棄CSS3),你會如何說服他?跨域

  7. 爲何利用多個域名來存儲網站資源會更有效?
    CDN緩存更方便
    突破瀏覽器併發限制
    節約cookie帶寬
    節約主域名的鏈接數,優化頁面響應速度
    防止沒必要要的安全問題瀏覽器

  8. 請談一下你對網頁標準和標準制定機構重要性的理解。
    網頁標準和標準制定機構都是爲了能讓web發展的更‘健康’,開發者遵循統一的標準,下降開發難度,開發成本,SEO也會更好作,也不會由於濫用代碼致使各類BUG、安全問題,最終提升網站易用性。緩存

  9. 請描述一下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僅僅是爲了在本地「存儲」數據而生。

  10. 簡述一下src與href的區別。
    src用於替換當前元素,href用於在當前文檔和引用資源之間確立聯繫。
    src是source的縮寫,指向外部資源的位置,指向的內容將會嵌入到文檔中當前標籤所在位置;在請求src資源時會將其指向的資源下載並應用到文檔內,例如js腳本,img圖片和frame等元素。
    <script src =」js.js」></script>
    當瀏覽器解析到該元素時,會暫停其餘資源的下載和處理,直到將該資源加載、編譯、執行完畢,圖片和框架等元素也如此,相似於將所指向資源嵌入當前標籤內。這也是爲何將js腳本放在底部而不是頭部。
    href是Hypertext Reference的縮寫,指向網絡資源所在位置,創建和當前元素(錨點)或當前文檔(連接)之間的連接,若是咱們在文檔中添加
    <link href=」common.css」 rel=」stylesheet」/>
    那麼瀏覽器會識別該文檔爲css文件,就會並行下載資源而且不會中止對當前文檔的處理。這也是爲何建議使用link方式來加載css,而不是使用@import方式。
    11.知道的網頁製做會用到的圖片格式有哪些?
    png-8,png-24,jpeg,gif,svg。
    可是上面的那些都不是面試官想要的最後答案。面試官但願聽到是Webp。(是否有關注新技術,新鮮事物)
    科普一下Webp:WebP格式,谷歌(google)開發的一種旨在加快圖片加載速度的圖片格式。圖片壓縮體積大約只有JPEG的2/3,並能節省大量的服務器帶寬資源和數據空間。Facebook Ebay等知名網站已經開始測試並使用WebP格式。
    在質量相同的狀況下,WebP格式圖像的體積要比JPEG格式圖像小40%

  11. 知道什麼是微格式嗎?談談理解。在前端構建中應該考慮微格式嗎?
    微格式(Microformats)是一種讓機器可讀的語義化XHTML詞彙的集合,是結構化數據的開放標準。是爲特殊應用而制定的特殊格式。
    優勢:將智能數據添加到網頁上,讓網站內容在搜索引擎結果界面能夠顯示額外的提示。(應用範例:豆瓣,有興趣自行google)

12.在css/js代碼上線以後開發人員常常會優化性能,從用戶刷新網頁開始,一次js請求通常狀況下有哪些地方會有緩存處理?

答案:dns緩存,cdn緩存,瀏覽器緩存,服務器緩存。
  1. 一個頁面上有大量的圖片(大型電商網站),加載很慢,你有哪些方法優化這些圖片的加載,給用戶更好的體驗。

    圖片懶加載,在頁面上的未可視區域能夠添加一個滾動條事件,判斷圖片位置與瀏覽器頂端的距離與頁面的距離,若是前者小於後者,優先加載。
      若是爲幻燈片、相冊等,可使用圖片預加載技術,將當前展現圖片的前一張和後一張優先下載。
      若是圖片爲css圖片,可使用CSSsprite,SVGsprite,Iconfont、Base64等技術。
      若是圖片過大,可使用特殊編碼的圖片,加載時會先加載一張壓縮的特別厲害的縮略圖,以提升用戶體驗。
      若是圖片展現區域小於圖片的真實大小,則因在服務器端根據業務須要先行進行圖片壓縮,圖片壓縮後大小與展現一致。
  2. 你如何理解HTML結構的語義化? 

    去掉或樣式丟失的時候能讓頁面呈現清晰的結構:
      html自己是沒有表現的,咱們看到例如<h1>是粗體,字體大小2em,加粗;<strong>是加粗的,不要認爲這是html的表現,這些其實html默認的css樣式在起做用,因此去掉或樣式丟失的時候能讓頁面呈現清晰的結構不是語義化的HTML結構的優勢,可是瀏覽器都有有默認樣式,默認樣式的目的也是爲了更好的表達html的語義,能夠說瀏覽器的默認樣式和語義化的HTML結構是不可分割的。
      屏幕閱讀器(若是訪客有視障)會徹底根據你的標記來「讀」你的網頁.
      例如,若是你使用的含語義的標記,屏幕閱讀器就會「逐個拼出」你的單詞,而不是試着去對它完整發音.
      PDA、手機等設備可能沒法像普通電腦的瀏覽器同樣來渲染網頁(一般是由於這些設備對CSS的支持較弱)
      使用語義標記能夠確保這些設備以一種有意義的方式來渲染網頁.理想狀況下,觀看設備的任務是符合設備自己的條件來渲染網頁.
      語義標記爲設備提供了所需的相關信息,就省去了你本身去考慮全部可能的顯示狀況(包括現有的或者未來新的設備).例如,一部手機能夠選擇使一段標記了標題的文字以粗體顯示.而掌上電腦可能會以比較大的字體來顯示.不管哪一種方式一旦你對文本標記爲標題,您就能夠確信讀取設備將根據其自身的條件來合適地顯示頁面.
      搜索引擎的爬蟲也依賴於標記來肯定上下文和各個關鍵字的權重
      過去你可能尚未考慮搜索引擎的爬蟲也是網站的「訪客」,但如今它們他們其實是極其寶貴的用戶.沒有他們的話,搜索引擎將沒法索引你的網站,而後通常用戶將很難過來訪問.
      你的頁面是否對爬蟲容易理解很是重要,由於爬蟲很大程度上會忽略用於表現的標記,而只注重語義標記.
      所以,若是頁面文件的標題被標記,而不是,那麼這個頁面在搜索結果的位置可能會比較靠後.除了提高易用性外,語義標記有利於正確使用CSS和JavaScript,由於其自己提供了許多「鉤鉤」來應用頁面的樣式與行爲.
      SEO主要仍是靠你網站的內容和外部連接的。
      便於團隊開發和維護
      W3C給咱們定了一個很好的標準,在團隊中你們都遵循這個標準,能夠減小不少差別化的東西,方便開發和維護,提升開發效率,甚至實現模塊化開發。
  3. 談談之前端角度出發作好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(「衝浪」)。其它網站到你的網站的連接越多,你也就會得到更多的訪問量。更重要的是,你的網站的外部連接數越多,會被搜索引擎認爲它的重要性越大,從而給你更高的排名。
      合理的標籤使用
  4. 有哪項方式能夠對一個DOM設置它的CSS樣式? 

    外部樣式表,引入一個外部css文件
      內部樣式表,將css代碼放在 <head> 標籤內部
      內聯樣式,將css樣式直接定義在 HTML 元素內部
  5. CSS都有哪些選擇器?

    派生選擇器(用HTML標籤申明)
      id選擇器(用DOM的ID申明)
      類選擇器(用一個樣式類名申明)
      屬性選擇器(用DOM的屬性申明,屬於CSS2,IE6不支持,不經常使用,不知道就算了)
      除了前3種基本選擇器,還有一些擴展選擇器,包括
      後代選擇器(利用空格間隔,好比div .a{  })
      羣組選擇器(利用逗號間隔,好比p,div,#a{  })
      那麼問題來了,CSS選擇器的優先級是怎麼樣定義的?
      基本原則:
      通常而言,選擇器越特殊,它的優先級越高。也就是選擇器指向的越準確,它的優先級就越高。
      複雜的計算方法:
      用1表示派生選擇器的優先級
      用10表示類選擇器的優先級
      用100標示ID選擇器的優先級
      div.test1 .span var 優先級 1+10 +10 +1
      span#xxx .songs li 優先級1+100 + 10 + 1
      #xxx li 優先級 100 +1
      那麼問題來了,看下列代碼,<p>標籤內的文字是什麼顏色的?
      <style>
      .classA{ color:blue;}
      .classB{ color:red;}
      </style>
      <body>
      <p class='classB classA'> 123 </p>
      </body>
      答案:red。與樣式定義在文件中的前後順序有關,便是後面的覆蓋前面的,與在<p class=’classB classA’>中的前後關係無關。
  6. CSS中能夠經過哪些屬性定義,使得一個DOM元素不顯示在瀏覽器可視範圍內?

    最基本的:
      設置display屬性爲none,或者設置visibility屬性爲hidden
      技巧性:
      設置寬高爲0,設置透明度爲0,設置z-index位置在-1000em
  7. 什麼是Css Hack?ie6,7,8的hack分別是什麼?

    答案:針對不一樣的瀏覽器寫不一樣的CSS code的過程,就是CSS 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*/
  8. 行內元素和塊級元素的具體區別是什麼?行內元素的padding和margin可設置嗎?

    塊級元素(block)特性:
      老是獨佔一行,表現爲另起一行開始,並且其後的元素也必須另起一行顯示;
      寬度(width)、高度(height)、內邊距(padding)和外邊距(margin)均可控制;
      內聯元素(inline)特性:
      和相鄰的內聯元素在同一行;
      寬度(width)、高度(height)、內邊距的top/bottom(padding-top/padding-bottom)和外邊距的top/bottom(margin-top/margin-bottom)都不可改變(也就是padding和margin的left和right是能夠設置的),就是裏面文字或圖片的大小。
      那麼問題來了,瀏覽器還有默認的天生inline-block元素(擁有內在尺寸,可設置高寬,但不會自動換行),有哪些?
      答案:<input> 、<img> 、<button> 、<texterea> 、<label>。
  9. 什麼是外邊距重疊?重疊的結果是什麼?

    外邊距重疊就是margin-collapse。
      在CSS當中,相鄰的兩個盒子(多是兄弟關係也多是祖先關係)的外邊距能夠結合成一個單獨的外邊距。這種合併外邊距的方式被稱爲摺疊,而且於是所結合成的外邊距稱爲摺疊外邊距。
      摺疊結果遵循下列計算規則:
      兩個相鄰的外邊距都是正數時,摺疊結果是它們二者之間較大的值。
      兩個相鄰的外邊距都是負數時,摺疊結果是二者絕對值的較大值。
      兩個外邊距一正一負時,摺疊結果是二者的相加的和。
  10. rgba()和opacity的透明效果有什麼不一樣?

    rgba()和opacity都能實現透明效果,但最大的不一樣是opacity做用於元素,以及元素內的全部內容的透明度,
      而rgba()只做用於元素的顏色或其背景色。(設置rgba透明的元素的子元素不會繼承透明效果!)
  11. css中可讓文字在垂直和水平方向上重疊的兩個屬性是什麼?

    垂直方向:line-height
      水平方向:letter-spacing
      那麼問題來了,關於letter-spacing的妙用知道有哪些麼?
      答案:能夠用於消除inline-block元素間的換行符空格間隙問題。
  12. 如何垂直居中一個浮動元素?
    // 方法一:已知元素的高寬

    #div1{
          background-color:#6699FF;
          width:200px;
          height:200px;
          position: absolute;        //父元素須要相對定位
          top: 50%;
          left: 50%;
          margin-top:-100px ;   //二分之一的height,width
          margin-left: -100px;
          }

    //方法二:未知元素的高寬

    #div1{
      width: 200px;
      height: 200px;
      background-color: #6699FF;
    
      margin:auto;
      position: absolute;        //父元素須要相對定位
      left: 0;
      top: 0;
      right: 0;
      bottom: 0;
      }

    那麼問題來了,如何垂直居中一個<img>?(用更簡便的方法。)

    #container     //<img>的容器設置以下
      {
          display:table-cell;
          text-align:center;
          vertical-align:middle;
      }
  13. px和em的區別。

    px和em都是長度單位,區別是,px的值是固定的,指定是多少就是多少,計算比較容易。em得值不是固定的,而且em會繼承父級元素的字體大小。
      瀏覽器的默認字體高都是16px。因此未經調整的瀏覽器都符合: 1em=16px。那麼12px=0.75em, 10px=0.625em。
  14. 描述一個」reset」的CSS文件並如何使用它。知道normalize.css嗎?你瞭解他們的不一樣之處?

    重置樣式很是多,凡是一個前端開發人員確定有一個經常使用的重置CSS文件並知道如何使用它們。他們是盲目的在作仍是知道爲何這麼作呢?緣由是不一樣的瀏覽器對一些元素有不一樣的默認樣式,若是你不處理,在不一樣的瀏覽器下會存在必要的風險,或者更有戲劇性的性發生。
      你可能會用Normalize來代替你的重置樣式文件。它沒有重置全部的樣式風格,但僅提供了一套合理的默認樣式值。既能讓衆多瀏覽器達到一致和合理,但又不擾亂其餘的東西(如粗體的標題)。
      在這一方面,沒法作每個復位重置。它也確實有些超過一個重置,它處理了你永遠都不用考慮的怪癖,像HTML的audio元素不一致或line-height不一致。
  15. Sass、LESS是什麼?你們爲何要使用他們?

    他們是CSS預處理器。他是CSS上的一種抽象層。他們是一種特殊的語法/語言編譯成CSS。
      例如Less是一種動態樣式語言. 將CSS賦予了動態語言的特性,如變量,繼承,運算, 函數. LESS 既能夠在客戶端上運行 (支持IE 6+, Webkit, Firefox),也可一在服務端運行 (藉助 Node.js)。
      爲何要使用它們?
      結構清晰,便於擴展。
      能夠方便地屏蔽瀏覽器私有語法差別。這個不用多說,封裝對瀏覽器語法差別的重複處理,減小無心義的機械勞動。
      能夠輕鬆實現多重繼承。
      徹底兼容 CSS 代碼,能夠方便地應用到老項目中。LESS 只是在 CSS 語法上作了擴展,因此老的 CSS 代碼也能夠與 LESS 代碼一同編譯。
  16. display:none與visibility:hidden的區別是什麼?

    display : 隱藏對應的元素但不擠佔該元素原來的空間。
      visibility: 隱藏對應的元素而且擠佔該元素原來的空間。
      便是,使用CSS display:none屬性後,HTML元素(對象)的寬度、高度等各類屬性值都將「丟失」;而使用visibility:hidden屬性後,HTML元素(對象)僅僅是在視覺上看不見(徹底透明),而它所佔據的空間位置仍然存在。
  17. CSS中link和@import的區別是:

    Link屬於html標籤,而@import是CSS中提供的
      在頁面加載的時候,link會同時被加載,而@import引用的CSS會在頁面加載完成後纔會加載引用的CSS
      @import只有在ie5以上才能夠被識別,而link是html標籤,不存在瀏覽器兼容性問題
      Link引入樣式的權重大於@import的引用(@import是將引用的樣式導入到當前的頁面中)
  18. 簡介盒子模型:

    CSS的盒子模型有兩種:IE盒子模型、標準的W3C盒子模型模型
      盒模型:內容、內邊距、外邊距(通常不計入盒子實際寬度)、邊框
  19. 爲何要初始化樣式?

    因爲瀏覽器兼容的問題,不一樣的瀏覽器對標籤的默認樣式值不一樣,若不初始化會形成不一樣瀏覽器之間的顯示差別
      可是初始化CSS會對搜索引擎優化形成小影響
  20. BFC是什麼?

    BFC(塊級格式化上下文),一個建立了新的BFC的盒子是獨立佈局的,盒子內元素的佈局不會影響盒子外面的元素。在同一個BFC中的兩個相鄰的盒子在垂直方向發生margin重疊的問題
      BFC是指瀏覽器中建立了一個獨立的渲染區域,該區域內全部元素的佈局不會影響到區域外元素的佈局,這個渲染區域只對塊級元素起做用
  21. html語義化是什麼?

    當頁面樣式加載失敗的時候可以讓頁面呈現出清晰的結構
      有利於seo優化,利於被搜索引擎收錄(更便於搜索引擎的爬蟲程序來識別)
      便於項目的開發及維護,使html代碼更具備可讀性,便於其餘設備解析。
  22. Doctype的做用?嚴格模式與混雜模式的區別?

    <!DOCTYPE>用於告知瀏覽器該以何種模式來渲染文檔
      嚴格模式下:頁面排版及JS解析是以該瀏覽器支持的最高標準來執行
      混雜模式:不嚴格按照標準執行,主要用來兼容舊的瀏覽器,向後兼容
  23. IE5-8不支持opacity,解決辦法:

    .opacity {
          opacity: 0.4
          filter: alpha(opacity=60); /* for IE5-7 */
          -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; /* for IE 8*/
      }
  24. IE6不支持PNG透明背景,解決辦法: IE6下使用gif圖片

  25. 對WEB標準以及W3C的理解與認識

    答:標籤閉合、標籤小寫、不亂嵌套、提升搜索機器人搜索概率、使用外 鏈css和js腳本、結構行爲表現的分離、文件下載與頁面速度更快、內容能被更多的用戶所訪問、內容能被更普遍的設備所訪問、更少的代碼和組件,容易維 護、改版方便,不須要變更頁面內容、提供打印版本而不須要複製內容、提升網站易用性。
  26. 行內元素有哪些?塊級元素有哪些?CSS的盒模型?

    答:塊級元素:div p h1 h2 h3 h4 form ul
      行內元素: a b br i span input select
      Css盒模型:內容,border ,margin,padding
  27. 前端頁面有哪三層構成,分別是什麼?做用是什麼?

    答:結構層 Html 表示層 CSS 行爲層 js。
  28. Doctype做用? 嚴格模式與混雜模式-如何觸發這兩種模式,區分它們有何意義?
    (1)、<!DOCTYPE> 聲明位於文檔中的最前面,處於 <html> 標籤以前。告知瀏覽器的解析器,用什麼文檔類型 規範來解析這個文檔。
    (2)、嚴格模式的排版和 JS 運做模式是 以該瀏覽器支持的最高標準運行。
    (3)、在混雜模式中,頁面以寬鬆的向後兼容的方式顯示。模擬老式瀏覽器的行爲以防止站點沒法工做。
    (4)、DOCTYPE不存在或格式不正確會致使文檔以混雜模式呈現。

  29. 行內元素有哪些?塊級元素有哪些? 空(void)元素有那些?

    (1)CSS規範規定,每一個元素都有display屬性,肯定該元素的類型,每一個元素都有默認的display值,好比div默認display屬性值爲「block」,成爲「塊級」元素;span默認display屬性值爲「inline」,是「行內」元素。  
      (2)行內元素有:a b span img input select strong(強調的語氣) 塊級元素有:div ul ol li dl dt dd h1 h2 h3 h4…p  
      (3)知名的空元素:      
      <br><hr><img><input><link><meta>不爲人知的是: <area><base><col><command>
      <embed><keygen><param><source><track><wbr>
  30. CSS的盒子模型?

    (1)兩種, IE 盒子模型、標準 W3C 盒子模型;IE 的content部分包含了 border 和 pading;
      (2)盒模型: 內容(content)、填充(padding)、邊界(margin)、 邊框(border).
  31. CSS 選擇符有哪些?哪些屬性能夠繼承?優先級算法如何計算? CSS3新增僞類有那些?

    • 1.id選擇器( # myid)
      2.類選擇器(.myclassname)
      3.標籤選擇器(div, h1, p)
      4.相鄰選擇器(h1 + p)
      5.子選擇器(ul < li)
      6.後代選擇器(li a)
      7.通配符選擇器( * )
      8.屬性選擇器(a[rel = "external"])
      9.僞類選擇器(a: hover, li: nth - child)

    • 可繼承: font-size font-family color, UL LI DL DD DT;

    • 不可繼承 :border padding margin width height ;

    • 優先級就近原則,樣式定義最近者爲準;

    • 載入樣式以最後載入的定位爲準;
      優先級爲:
      !important > id > class > tag
      important 比 內聯優先級高
      CSS3新增僞類舉例:

    p:first-of-type 選擇屬於其父元素的首個 <p> 元素的每一個 <p> 元素。
    p:last-of-type 選擇屬於其父元素的最後 <p> 元素的每一個 <p> 元素。
    p:only-of-type 選擇屬於其父元素惟一的 <p> 元素的每一個 <p> 元素。
    p:only-child 選擇屬於其父元素的惟一子元素的每一個 <p> 元素。
    p:nth-child(2) 選擇屬於其父元素的第二個子元素的每一個 <p> 元素。
    :enabled、:disabled 控制表單控件的禁用狀態。
    :checked,單選框或複選框被選中。

  32. 如何居中div,如何居中一個浮動元素?
    給div設置一個寬度,而後添加margin:0 auto屬性
    div{

    width:200px;
      margin:0 auto;

    }
    居中一個浮動元素

    肯定容器的寬高 寬500 高 300 的層
    設置層的外邊距

    .div {

    Width:500px ; height:300px;//高度能夠不設
    Margin: -150px 0 0 -250px;
    position:relative;相對定位
    background-color:pink;//方便看效果
    left:50%;
    top:50%;

    }

  33. 瀏覽器的內核分別是什麼?常常遇到的瀏覽器的兼容性有哪些?緣由,解決方法是什麼,經常使用hack的技巧 ?

    • IE瀏覽器的內核Trident、 Mozilla的Gecko、google的WebKit、Opera內核Presto;

    • 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已經獨立識別。
      css

      .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 {}

  34. 列出display的值,說明他們的做用。position的值, relative和absolute定位原點是?

  35. block 象塊類型元素同樣顯示。
    none 缺省值。向行內元素類型同樣顯示。

inline-block 象行內元素同樣顯示,但其內容象塊類型元素同樣顯示。
list-item 象塊類型元素同樣顯示,並添加樣式列表標記。

  1. position的值

    *absolute 
       生成絕對定位的元素,相對於 static 定位之外的第一個父元素進行定位。 
     *fixed (老IE不支持)
       生成絕對定位的元素,相對於瀏覽器窗口進行定位。
  2. relative

    生成相對定位的元素,相對於其正常位置進行定位。
  3. static 默認值。沒有定位,元素出如今正常的流中
    *(忽略 top, bottom, left, right z-index 聲明)。

  4. inherit 規定從父元素繼承 position 屬性的值。

相關文章
相關標籤/搜索