各大互聯網公司前端面試題(HTML/CSS)

来源:http://www.cnblogs.com/klsw/archive/2016/08/18/5784310.html
-Advertisement-
Play Games

Html篇: 1.你做的頁面在哪些流覽器測試過?這些瀏覽器的內核分別是什麼? IE: trident內核 Firefox:gecko內核 Safari:webkit內核 Opera:以前是presto內核,Opera現已改用Google Chrome的Blink內核 Chrome:Blink(基於w ...


 Html篇:

  1.你做的頁面在哪些流覽器測試過?這些瀏覽器的內核分別是什麼?

  •  IE: trident內核 
  •  Firefox:gecko內核 
  •  Safari:webkit內核
  •  Opera:以前是presto內核,Opera現已改用Google Chrome的Blink內核
  •  Chrome:Blink(基於webkit,Google與Opera Software共同開發

  

  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。

      

  設置行內元素的高寬:在Standards模式下,給<span>等行內元素設置wdith和height都不會生效,而在quirks模式下,則會生效。

  設置百分比的高度:在standards模式下,一個元素的高度是由其包含的內容來決定的,如果父元素沒有設置百分比的高度,子元素設置一個百分比的高度是無效的用margin:0 auto設置水平居中:使用margin:0 auto在standards模式下可以使元素水平居中,但在quirks模式下卻會失效。

  (還有很多,答出什麼不重要,關鍵是看他答出的這些是不是自己經驗遇到的,還是說都是看文章看的,甚至完全不知道。)

 

  4.div+css的佈局較table佈局有什麼優點?

  • 改版的時候更方便 只要改css文件。
  • 頁面載入速度更快、結構化清晰、頁面顯示簡潔。
  • 表現與結構相分離。
  • 易於優化(seo)搜索引擎更友好,排名更容易靠前。

 

  5.a:img的alt與title有何異同?b:strong與em的異同?

  答案:

  a:

  • alt(alt text):為不能顯示圖像、窗體或applets的用戶代理(UA),alt屬性用來指定替換文字。替換文字的語言由lang屬性指定。(在IE瀏覽器下會在沒有title時把alt當成 tool tip顯示)
  • title(tool tip):該屬性為設置該屬性的元素提供建議性的信息。

  b:

  • strong:粗體強調標簽,強調,表示內容的重要性
  • em:斜體強調標簽,更強烈強調,表示內容的強調點

  

  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,Apng。(是否有關註新技術,新鮮事物)

  科普一下Webp:WebP格式,谷歌(google)開發的一種旨在加快圖片載入速度的圖片格式。圖片壓縮體積大約只有JPEG的2/3,並能節省大量的伺服器帶寬資源和數據空間。Facebook Ebay等知名網站已經開始測試並使用WebP格式。

  在質量相同的情況下,WebP格式圖像的體積要比JPEG格式圖像小40%。

  Apng:全稱是“Animated Portable Network Graphics”, 是PNG的點陣圖動畫擴展,可以實現png格式的動態圖片效果。04年誕生,但一直得不到各大瀏覽器廠商的支持,直到日前得到 iOS safari 8的支持,有望代替GIF成為下一代動態圖標準。

 

  12.知道什麼是微格式嗎?談談理解。在前端構建中應該考慮微格式嗎?

  答案:

  微格式(Microformats)是一種讓機器可讀的語義化XHTML辭彙的集合,是結構化數據的開放標準。是為特殊應用而制定的特殊格式。

  優點:將智能數據添加到網頁上,讓網站內容在搜索引擎結果界面可以顯示額外的提示。(應用範例:豆瓣,有興趣自行google)

  

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

  答案:dns緩存,cdn緩存,瀏覽器緩存,伺服器緩存。

 

  14.一個頁面上有大量的圖片(大型電商網站),載入很慢,你有哪些方法優化這些圖片的載入,給用戶更好的體驗。

  • 圖片懶載入,在頁面上的未可視區域可以添加一個滾動條事件,判斷圖片位置與瀏覽器頂端的距離與頁面的距離,如果前者小於後者,優先載入。
  • 如果為幻燈片、相冊等,可以使用圖片預載入技術,將當前展示圖片的前一張和後一張優先下載。
  • 如果圖片為css圖片,可以使用CSSsprite,SVGsprite,Iconfont、Base64等技術。
  • 如果圖片過大,可以使用特殊編碼的圖片,載入時會先載入一張壓縮的特別厲害的縮略圖,以提高用戶體驗。
  • 如果圖片展示區域小於圖片的真實大小,則因在伺服器端根據業務需要先行進行圖片壓縮,圖片壓縮後大小與展示一致。 

  

  15.你如何理解HTML結構的語義化?  

  • 去掉或樣式丟失的時候能讓頁面呈現清晰的結構:

html本身是沒有表現的,我們看到例如<h1>是粗體,字體大小2em,加粗;<strong>是加粗的,不要認為這是html的表現,這些其實html預設的css樣式在起作用,所以去掉或樣式丟失的時候能讓頁面呈現清晰的結構不是語義化的HTML結構的優點,但是瀏覽器都有有預設樣式,預設樣式的目的也是為了更好的表達html的語義,可以說瀏覽器的預設樣式和語義化的HTML結構是不可分割的。

  • 屏幕閱讀器(如果訪客有視障)會完全根據你的標記來“讀”你的網頁.

  例如,如果你使用的含語義的標記,屏幕閱讀器就會“逐個拼出”你的單詞,而不是試著去對它完整發音.

  • PDA、手機等設備可能無法像普通電腦的瀏覽器一樣來渲染網頁(通常是因為這些設備對CSS的支持較弱)

  使用語義標記可以確保這些設備以一種有意義的方式來渲染網頁.理想情況下,觀看設備的任務是符合設備本身的條件來渲染網頁.

  語義標記為設備提供了所需的相關信息,就省去了你自己去考慮所有可能的顯示情況(包括現有的或者將來新的設備).例如,一部手機可以選擇使一段標記了標題的文字以粗體顯示.而掌上電腦可能會以比較大的字體來顯示.無論哪種方式一旦你對文本標記為標題,您就可以確信讀取設備將根據其自身的條件來合適地顯示頁面.

  • 搜索引擎的爬蟲也依賴於標記來確定上下文和各個關鍵字的權重

  過去你可能還沒有考慮搜索引擎的爬蟲也是網站的“訪客”,但現在它們他們實際上是極其寶貴的用戶.沒有他們的話,搜索引擎將無法索引你的網站,然後一般用戶將很難過來訪問.

  • 你的頁面是否對爬蟲容易理解非常重要,因為爬蟲很大程度上會忽略用於表現的標記,而只註重語義標記.

  因此,如果頁面文件的標題被標記,而不是,那麼這個頁面在搜索結果的位置可能會比較靠後.除了提升易用性外,語義標記有利於正確使用CSS和JavaScript,因為其本身提供了許多“鉤鉤”來應用頁面的樣式與行為.
SEO主要還是靠你網站的內容和外部鏈接的。

  • 便於團隊開發和維護

  W3C給我們定了一個很好的標準,在團隊中大家都遵循這個標準,可以減少很多差異化的東西,方便開發和維護,提高開發效率,甚至實現模塊化開發

 

  16.談談以前端角度出發做好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(“衝浪”)。其它網站到你的網站的鏈接越多,你也就會獲得更多的訪問量。更重要的是,你的網站的外部鏈接數越多,會被搜索引擎認為它的重要性越大,從而給你更高的排名。

  • 合理的標簽使用 

 

 

  Css篇:

  1.有哪項方式可以對一個DOM設置它的CSS樣式?  

  • 外部樣式表,引入一個外部css文件
  • 內部樣式表,將css代碼放在 <head> 標簽內部
  • 內聯樣式,將css樣式直接定義在 HTML 元素內部

  

  2.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>標簽內的文字是什麼顏色的?。

複製代碼
 1 <style>
 2 .classA{ color:blue;}
 3 
 4 .classB{ color:red;}
 5 </style>
 6 
 7 <body>
 8 
 9 <p class='classB classA'> 123 </p>
10 
11 </body>
複製代碼

  答案:red。與樣式定義在文件中的先後順序有關,即是後面的覆蓋前面的,與在<p class='classB classA'>中的先後關係無關。 

  

  3.CSS中可以通過哪些屬性定義,使得一個DOM元素不顯示在瀏覽器可視範圍內?  

  最基本的:

  設置display屬性為none,或者設置visibility屬性為hidden

  技巧性:

  設置寬高為0,設置透明度為0,設置z-index位置在-1000

 

  4.超鏈接訪問過後hover樣式就不出現的問題是什麼?如何解決?

  答案:被點擊訪問過的超鏈接樣式不在具有hover和active了,解決方法是改變CSS屬性的排列順序: L-V-H-A(link,visited,hover,active)

 

  5.什麼是Css Hack?ie6,7,8的hack分別是什麼?

  答案:針對不同的瀏覽器寫不同的CSS code的過程,就是CSS hack。

  示例如下:

複製代碼
 1  #test       {   
 2         width:300px;   
 3         height:300px;   
 4           
 5         background-color:blue;      /*firefox*/
 6         background-color:red\9;      /*all ie*/
 7         background-color:yellow\0;    /*ie8*/
 8         +background-color:pink;        /*ie7*/
 9         _background-color:orange;       /*ie6*/    }  
10         :root #test { background-color:purple\9; }  /*ie9*/
11     @media all and (min-width:0px){ #test {background-color:black\0;} }  /*opera*/
12     @media screen and (-webkit-min-device-pixel-ratio:0){ #test {background-color:gray;} }       /*chrome and safari*/
複製代碼

 

  6.請用Css寫一個簡單的幻燈片效果頁面

  答案:知道是要用css3。使用animation動畫實現一個簡單的幻燈片效果。

複製代碼
 1         /**HTML**/
 2         div.ani
 3 
 4         /**css**/
 5         .ani{
 6           width:480px;
 7           height:320px;
 8           margin:50px auto;
 9           overflow: hidden;
10           box-shadow:0 0 5px rgba(0,0,0,1);
11           background-size: cover;
12           background-position: center;
13           -webkit-animation-name: "loops";
14           -webkit-animation-duration: 20s;
15           -webkit-animation-iteration-count: infinite;
16         }
17         @-webkit-keyframes "loops" {
18             0% {
19                 background:url(http://d.hiphotos.baidu.com/image/w%3D400/sign=c01e6adca964034f0fcdc3069fc27980/e824b899a9014c08e5e38ca4087b02087af4f4d3.jpg) no-repeat;             
20             }
21             25% {
22                 background:url(http://b.hiphotos.baidu.com/image/w%3D400/sign=edee1572e9f81a4c2632edc9e72b6029/30adcbef76094b364d72bceba1cc7cd98c109dd0.jpg) no-repeat;
23             }
24             50% {
25                 background:url(http://b.hiphotos.baidu.com/image/w%3D400/sign=937dace2552c11dfded1be2353266255/d8f9d72a6059252d258e7605369b033b5bb5b912.jpg) no-repeat;
26             }
27             75% {
28                 background:url(http://g.hiphotos.baidu.com/image/w%3D400/sign=7d37500b8544ebf86d71653fe9f9d736/0df431adcbef76095d61f0972cdda3cc7cd99e4b.jpg) no-repeat;
29             }
30             100% {
31                 background:url(http://c.hiphotos.baidu.com/image/w%3D400/sign=cfb239ceb0fb43161a1f7b7a10a54642/3b87e950352ac65ce2e73f76f9f2b21192138ad1.jpg) no-repeat;
32             }
33         }
複製代碼

 

  7.行內元素和塊級元素的具體區別是什麼?行內元素的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> 、<textarea> 、<label>。

 

  8.什麼是外邊距重疊?重疊的結果是什麼?

  答案:

  外邊距重疊就是margin-collapse。

  在CSS當中,相鄰的兩個盒子(可能是兄弟關係也可能是祖先關係)的外邊距可以結合成一個單獨的外邊距。這種合併外邊距的方式被稱為摺疊,並且因而所結合成的外邊距稱為摺疊外邊距。

  摺疊結果遵循下列計算規則:

  1. 兩個相鄰的外邊距都是正數時,摺疊結果是它們兩者之間較大的值。
  2. 兩個相鄰的外邊距都是負數時,摺疊結果是兩者絕對值的較大值。
  3. 兩個外邊距一正一負時,摺疊結果是兩者的相加的和。

  

  9.rgba()和opacity的透明效果有什麼不同?

  答案:

  rgba()和opacity都能實現透明效果,但最大的不同是opacity作用於元素,以及元素內的所有內容的透明度,

  而rgba()只作用於元素的顏色或其背景色。(設置rgba透明的元素的子元素不會繼承透明效果!)

 

  10.css中可以讓文字在垂直和水平方向上重疊的兩個屬性是什麼?

  答案:

  垂直方向:line-height

  水平方向:letter-spacing

 

  那麼問題來了,關於letter-spacing的妙用知道有哪些麽?

  答案:可以用於消除inline-block元素間的換行符空格間隙問題。

 

  11.如何垂直居中一個浮動元素?

複製代碼
 1 // 方法一:已知元素的高寬
 2 
 3 #div1{
 4     background-color:#6699FF;
 5     width:200px;
 6     height:200px;
 7 
 8     position: absolute;        //父元素需要相對定位
 9     top: 50%;
10     left: 50%;
11     margin-top:-100px ;   //二分之一的height,width
12     margin-left: -100px;
13     }
14 
15 //方法二:
16 
17   #div1{
18     width: 200px;
19     height: 200px;
20     background-color: #6699FF;
21 
22     margin:auto;
23     position: absolute;        //父元素需要相對定位
24     left: 0;
25     top: 0;
26     right: 0;
27     bottom: 0;
28     }
複製代碼

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

複製代碼
1 #container     //<img>的容器設置如下
2 {
3     display:table-cell;
4     text-align:center;
5     vertical-align:middle;
6 }
複製代碼

 

  12.px和em的區別。

  px和em都是長度單位,區別是,px的值是固定的,指定是多少就是多少,計算比較容易。em得值不是固定的,並且em會繼承父級元素的字體大小。

  瀏覽器的預設字體高都是16px。所以未經調整的瀏覽器都符合: 1em=16px。那麼12px=0.75em, 10px=0.625em。

 

  13.描述一個"reset"的CSS文件並如何使用它。知道normalize.css嗎?你瞭解他們的不同之處? 

  重置樣式非常多,凡是一個前端開發人員肯定有一個常用的重置CSS文件並知道如何使用它們。他們是盲目的在做還是知道為什麼這麼做呢?原因是不同的瀏覽器對一些元素有不同的預設樣式,如果你不處理,在不同的瀏覽器下會存在必要的風險,或者更有戲劇性的性發生。

  你可能會用Normalize來代替你的重置樣式文件。它沒有重置所有的樣式風格,但僅提供了一套合理的預設樣式值。既能讓眾多瀏覽器達到一致和合理,但又不擾亂其他的東西(如粗體的標題)。

  在這一方面,無法做每一個複位重置。它也確實有些超過一個重置,它處理了你永遠都不用考慮的怪癖,像HTML的audio元素不一致或line-height不一致。

 

  14.Sass、LESS是什麼?大家為什麼要使用他們?

  他們是CSS預處理器。他是CSS上的一種抽象層。他們是一種特殊的語法/語言編譯成CSS。

  例如Less是一種動態樣式語言. 將CSS賦予了動態語言的特性,如變數,繼承,運算, 函數. LESS 既可以在客戶端上運行 (支持IE 6+, Webkit, Firefox),也可一在服務端運行 (藉助 Node.js)。

  為什麼要使用它們?

  • 結構清晰,便於擴展。
  • 可以方便地屏蔽瀏覽器私有語法差異。這個不用多說,封裝對瀏覽器語法差異的重覆處理,減少無意義的機械勞動。
  • 可以輕鬆實現多重繼承。
  • 完全相容 CSS 代碼,可以方便地應用到老項目中。LESS 只是在 CSS 語法上做了擴展,所以老的 CSS 代碼也可以與 LESS 代碼一同編譯。

  

  15.display:none與visibility:hidden的區別是什麼?

  • display 隱藏對應的元素但不擠占該元素原來的空間。
  • visibility隱藏對應的元素並且擠占該元素原來的空間。

   即是,使用CSS display:none屬性後,HTML元素(對象)的寬度、高度等各種屬性值都將“丟失”;而使用visibility:hidden屬性後,HTML元素(對象)僅僅是在視覺上看不見(完全透明),而它所占據的空間位置仍然存在。

  

  16.知道css有個content屬性嗎?有什麼作用?有什麼應用?

  答案:

  知道。css的content屬性專門應用在 before/after 偽元素上,用於來插入生成內容。

  最常見的應用是利用偽類清除浮動。

複製代碼
 1 //一種常見利用偽類清除浮動的代碼
 2  .clearfix:after {
 3     content:".";       //這裡利用到了content屬性
 4     display:block; 
 5     height:0;
 6     visibility:hidden; 
 7     clear:both; }
 8 
 9 .clearfix { 
10     *zoom:1; 
11 }
複製代碼

  after偽元素通過 content 在元素的後面生成了內容為一個點的塊級元素,再利用clear:both清除浮動。

  那麼問題繼續還有,知道css計數器(序列數字字元自動遞增)嗎?如何通過css content屬性實現css計數器?

  答案:css計數器是通過設置counter-reset 、counter-increment 兩個屬性 、及 counter()/counters()一個方法配合after / before 偽類實現。 

  具體實現方案:請戳張鑫旭大大的博文CSS計數器(序列數字字元自動遞增)詳解 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ...
  • 0.快速入門 border-radius:50px; 1.border-radius詳解 border-radius:50px; 上右下左,水平和垂直距離都是50px border-radius:50%; 這裡的%號是已應用該css樣式元素的長度和寬度為基數的 border-radius:50% 3 ...
  • 1. 準備向伺服器發送數據 Ajax 最常見的一大用途是向伺服器發送數據。最典型的情況是從 客戶端發送表單數據,即用戶在form元素所含的各個 input 元素里輸入的值。下麵代碼展示了一張簡單的表單: 這個例子中的表單包含三個input元素和一個提交button 。這些input元素讓用戶可以指定 ...
  • 這幾天做一個項目有用到表格顯示數據的地方,客戶要求重覆的數據列需要合併,就總結了一下GridView 和 Repeater 關於重覆數據合併的方法。 效果圖如下 : GridView : 前臺代碼 : 1 <div> 2 <asp:GridView ID="gvIncome" runat="serv ...
  • 最近在學習使用angular,慢慢從jquery ui轉型到用ng開發,發現了很多不同點,繼續學習吧; 首先創建一個服務,以便在項目中的controller中引用,服務有幾種存在形式,factory();service();constant();value();provider();其中provid ...
  • 首先,還是來看一下炫酷的頁面: 今天就邊做邊說了: 一。準備工作 新建css,js,img文件夾存放相應文件,併在demo.html文件中引入外部文件(註意要把jquery文件引入),這裡就不過多描述了。 二。圖片展示 一個大div包裹全局,小的div包裹圖片,這裡為什麼要這麼多圖片呢,是因為剛開始 ...
  • 1.這個函數返回的是8 2.這個函數返回是3 3.這個函數返回的也是3 4.這個函數返回的是bar is not a function ps:從上面四個函數裡面我得到兩個知識點 1.return後面的代碼不執行 2.function函數體會被提升,提升到當前作用域頂部 over~~~~~歡迎補充 ...
  • 測試demo的github地址: https://github.com/lily1010/html5_geolocation HTML5 Geolocation API 用於獲得用戶的地理位置。鑒於該特性可能侵犯用戶的隱私,除非用戶同意,否則用戶位置信息是不可用的。 一 基於瀏覽器的HTML5查找地 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...