1. 程式人生 > >前端開發面試題總結之—CSS3(附上答案)

前端開發面試題總結之—CSS3(附上答案)

相關知識點
佈局、 浮動、 盒子模型、 彈性和模型、 選擇器優先順序、 居中定位、 相容性、 hack寫法

這裡寫圖片描述

題目以及答案

如何理解CSS的盒子模型?

每個HTML元素都是長方形盒子。
(1)盒子模型有兩種:IE盒子模型、標準W3C盒子模型;IE的content部分包含了border和pading。
(2)標準W3C盒模型包含:內容(content)、填充(padding)、邊界(margin)、邊框(border)。

link和@import的區別?

(1)link屬於XHTML標籤,而@import是CSS提供的。
(2)頁面被載入時,link會同時被載入,而@import引用的CSS會等到頁面被載入完再載入。
(3)import只在IE 5以上才能識別,而link是XHTML標籤,無相容問題。
(4)link方式的樣式權重高於@import的權重。
(5)使用dom控制樣式時的差別。當使用javascript控制dom去改變樣式的時候,只能使用link標籤,因為@import不是dom可以控制的。

CSS 選擇符有哪些?哪些屬性可以繼承?優先順序演算法如何計算?CSS 3新增偽類有哪些?

id選擇器(# myid)
類選擇器(.myclassname)
標籤選擇器(div、h1、p)
相鄰選擇器(h1 + p)
子選擇器(ul < li)
後代選擇器(li a)
萬用字元選擇器( * )
屬性選擇器(a[rel = “external”])
偽類選擇器(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 單選框或複選框被選中。

如何居中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%;
    }

經常遇到的瀏覽器的相容性有哪些?原因、解決方法是什麼?

(1)png24為的圖片在IE6瀏覽器上出現背景,解決方案是做成PNG8。
(2)瀏覽器預設的marginpadding不同,解決方案是加一個全域性的*{margin:0;padding:0;}來統一。
(3)IE6雙邊距bug:塊屬性標籤float後,又有橫行的margin情況下,在IE 6顯示margin比設定的大。
(4)浮動ie產生的雙邊距問題:塊級元素就加displayinline;行內元素轉塊級元素displayinline後面再加displaytable.bb{
           background-color:#f1ee18;        /*所有識別*/
          .background-color:#00deff\9;      /*IE6、7、8識別*/
          +background-color:#a200ff;        /*IE6、7識別*/
          _background-color:#1e0bd1;        /*IE6識別*/
          }

常用Hack的技巧:

1)IE下,可以使用獲取常規屬性的方法來獲取自定義屬性,也可以使用getAttribute()獲取自定義屬性;
(2)Firefox下,只能使用getAttribute()獲取自定義屬性。解決方法:統一通過getAttribute()獲取自定義屬性。
(3)IE下,even物件有x,y屬性,但是沒有pageX,pageY屬性;
(4)Firefox下,event物件有pageX,pageY屬性,但是沒有x,y屬性。解決方法是條件註釋,缺點是在IE瀏覽器下可能會增加額外的HTTP請求數。
(5)Chrome 中文介面下預設會將小於12px的文字強制按照12px顯示,可通過加入 CSS屬性-webkit-text-size-adjust: none;來解決。
(6)超連結訪問過後hover樣式就不出現了 被點選訪問過的超連結樣式不再具有hover和active了,解決方法是改變CSS屬性的排列順序:
L-V-H-A :  a:link {} a:visited {} a:hover {} a:active {}

列出display的值,說明它們的作用。position的值裡,relative和absolute定位原點是?

display的值:
block 像塊型別元素一樣顯示。
none 預設值。像行內元素型別一樣顯示。
inline-block 像行內元素一樣顯示,但其內容像塊型別元素一樣顯示。
list-item 像塊型別元素一樣顯示,並新增樣式列表標記。
relativeabsolute定位原點:
absolute:生成絕對定位的元素,相對於static定位以外的第一個父元素進行定位。
relative:生成相對定位的元素,相對於其正常位置進行定位。

為什麼要初始化CSS樣式?

因為瀏覽器的相容問題,不同瀏覽器對有些標籤的預設值是不同的,如果沒對CSS初始化往往會出現瀏覽器之間的頁面顯示差異。當然,初始化樣式會對SEO有一定的影響,但魚和熊掌不可兼得,但力求影響最小的情況下初始化。
最簡單的初始化方法就是:* {padding: 0; margin: 0;} (筆者不建議這樣)
淘寶的樣式初始化: 
    body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
    body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; }
    h1, h2, h3, h4, h5, h6{ font-size:100%; }
    address, cite, dfn, em, var { font-style:normal; }
    code, kbd, pre, samp { font-family:couriernew, courier, monospace; }
    small{ font-size:12px; }
 ul, ol { list-style:none; }
    a { text-decoration:none; }
    a:hover { text-decoration:underline; }
    sup { vertical-align:text-top; }
    sub{ vertical-align:text-bottom; }
    legend { color:#000; }
    fieldset, img { border:0; }
    button, input, select, textarea { font-size:100%; }
    table { border-collapse:collapse; border-spacing:0; }

CSS是怎樣定義權重規則的?

以下是權重的規則:標籤的權重為1,class的權重為10,id的權重為100,以下例子是演示各種定義的權重值:
/*權重為1*/
div{
}
/*權重為10*/
.class1{
}
/*權重為100*/
#id1{
}
/*權重為100+1=101*/
#id1 div{
}
/*權重為10+1=11*/
.class1 div{
}
/*權重為10+10+1=21*/
.class1 .class2 div{
} 

如何理解表現與內容相分離?

表現與結構相分離簡單的說就是HTML中只有標籤元素 表現完全是由CSS檔案控制的。

如何定義高度為1px的容器?

div{
heigh:1px; 
width:10px; 
background:#000; 
overflow:hidden
} 
IE 6下這個問題是預設行高造成的,overflow:hidden | zoom:0.08 | line- height:1px這樣也可以解決。

如何解決IE 6的3px問題?

_zoom:1;  margin-left: value; _margin-left: value-3px;

Firefox下文字無法撐開容器的高度,如何解決?

清除浮動 .clear{ clear:both; height:0px; overflow:hidden;}

怎麼樣才能讓層顯示在Flash之上呢?

解決的辦法是給Flash設定透明屬性

<param name="wmode" value="transparent" />或者<param name="wmode" value="opaque" />

cursor:hand在FF下不顯示小手,如何解決?

cursor; pointer; 

在IE中內容會自適應高度,而FF不會自適應高度,怎麼辦?

在要自適應高度的層中加一個層,樣式為
.clear{clear:both;font-size:0px;height:1px},
這樣解決有一個小小的問題,高度會多一個畫素。還有一種解決方法,給當前層加上一個偽類。
#test:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

用純 CSS 建立一個三角形的原理是什麼?

把上、左、右三條邊隱藏掉(顏色設為 transparent#demo {
  width:0;
  height: 0;
  border-width: 20px;
  border-style: solid;
  border-color: transparent transparent red transparent;
}

如何設計一個滿屏“品”字佈局?

簡單的方式:
上面的div寬100%,
下面的兩個div分別寬50%,
用float或inline使其不換行。

怎麼讓Chrome支援小於12px 的文字?

body{-webkit-text-size-adjust:none} 

前端頁面有哪三層構成,分別是什麼?作用是什麼?

最準確的網頁設計思路是把網頁分成三個層次,即:結構層、表示層、行為層。
網頁的結構層(structural layer)由HTML或XHTML之類的標記語言負責建立。標籤,也就是那些出現在尖括號裡的單詞,對網頁內容的語義含義做出了描述,但這些標籤不包含任何關於如何顯示有關內容的資訊。例如,P 標籤表達了這樣一種語義:“這是一個文字段。”
網頁的表示層(presentation layer)由CSS負責建立。 CSS對“如何顯示有關內容”的問題做出了回答。
網頁的行為層(behavior layer)負責回答“內容應該如何對事件做出反應”這一問題。這是JavaScript語言和DOM主宰的領域。

::before 和 :after中雙冒號和單冒號 有什麼區別?解釋一下這2個偽元素的作用。

單冒號(:)用於CSS3偽類,雙冒號(::)用於CSS3偽元素。
偽元素由雙冒號和偽元素名稱組成。雙冒號是在css3規範中引入的,用於區分偽類和偽元素。但是偽類相容現存樣式,瀏覽器需要同時支援舊的偽類,比如:first-line:first-letter:before:after等。
對於CSS2之前已有的偽元素,比如:before,單冒號和雙冒號的寫法::before作用是一樣的。
提醒,如果你的網站只需要相容webkit、firefox、opera等瀏覽器,建議對於偽元素採用雙冒號的寫法,如果不得不相容IE瀏覽器,還是用CSS2的單冒號寫法比較安全。

現在HTML5中css3可以寫出一個旋轉的立方體,請寫出要用到的CSS屬性。

-webkit-transform-style: preserve-3d;
-webkit-transform: rotateY(30deg) rotateX(10deg);
-webkit-animation:  rot 4s linear infinite;

介紹一下 Sass 和 Less 是什麼?它們有何區別?

Sass (Syntactically Awesome Stylesheets)是一種動態樣式語言,語法跟css一樣(但多了些功能),比css好寫,而且更容易閱讀。Sass語法類似與Haml,屬於縮排語法(makeup),用意就是為了快速寫Html和Css。
Less一種動態樣式語言. 將CSS賦予了動態語言的特性,如變數,繼承,運算, 函式. LESS 既可以在客戶端上執行 (支援IE 6+, Webkit, Firefox),也可一在服務端執行 (藉助 Node.js)。
區別:
(1))Sass是基於Ruby的,是在服務端處理的,而Less是需要引入less.js來處理Less程式碼輸出Css到瀏覽器,也可以在開發環節使用Less,然後編譯成Css檔案,直接放到專案中,也有Less.app、SimpleLess、CodeKit.app這樣的工具,也有線上編譯地址。
(2)變數符不一樣,less是@,而Scss是$,而且變數的作用域也不一樣,後面會講到。
(3)輸出設定,Less沒有輸出設定,Sass提供4中輸出選項:nested, compact, compressed 和 expanded。
(4)Sass支援條件語句,可以使用if{}else{},for{}迴圈等等。而Less不支援。

常見ie6的瀏覽器相容bug(3-5個)?

文字本身的大小不相容。

同樣是font-size:14px的宋體文字,在不同瀏覽器下佔的空間是不一樣的,ie下實際佔高16px,下留白3px,ff 下實際佔高17px,上留白1px,下留白3px,opera下就更不一樣了。解決方案:給文字設定 line-height 。確保所有文字都有預設的 line-height 值。

IE6吞吃現象。

上下兩個div,上面的div設定背景,卻發現下面沒有設定背景的div 也有了背景,這就是吞吃現象。對應上面的背景吞吃現象,還有滾動下邊框缺失的現象。解決方案:使用zoom:1。這個zoom好象是專門為解決ie6 bug而生的。

IE6註釋bug

註釋也能產生bug~~~“多出來的一隻豬。”這是前人總結這個bug使用的文案,ie6的這個bug 下,大家會在頁面看到豬字出現兩遍,重複的內容量因註釋的多少而變。
解決方案:用“

<div>
<img src=“1.jpg” />
</div>
把div的border開啟,你發現圖片底部不是緊貼著容器底部的,是img後面的空白字元造成,要消除必須這樣寫
<div>
<img src=”1.jpg” /></div>
後面兩個標籤要緊挨著。ie7下這個bug 依然存在。解決方案:給img設定 display:block。

失去line-height

<div style=”line-height:20px”><img />文字</div>,很遺憾,在ie6下單行文字 line-height 效果消失了。原因是<img />這個inline-block元素和inline元素寫在一起了。
解決方案:讓img 和文字都 float起來。

clear層應該單獨使用。也許你為了節省程式碼把clear屬性直接放到下面的一個內容層,這樣有問題,不僅僅是ff和op下失去margin效果,ie下某些margin值也會失效。

<div style=”background:red;float:left;”>dd</div>
<div style=”clear:both;margin-top:18px;background:green”>ff</div>

ie 下overflow:hidden對其下的絕對層position:absolute或者相對層 position:relative無效。

解決方案:給overflow:hidden加position:relative或者position: absolute。
另,ie6支援overflow-x或者overflow-y的特性,ie7、ff不支援。

在這裡給大家分享一下,我是一名5年前端工程師,自己根據這幾年從事前端的經驗,整理一套系統的前端教程(基礎+案例+工具),跟大家分享下我的成果,進群:731771211,群裡不停更新最新的教程和學習方法(進群送 2018 web前端程式設計學習教程,詳細的前端技術教學視訊),有想學習web前端的,或是轉行,或是大學生,還有工作中想提升自己能力的,正在學習的小夥伴可以加入學習。

這裡寫圖片描述

相關推薦

前端開發試題總結CSS3附上答案

相關知識點 佈局、 浮動、 盒子模型、 彈性和模型、 選擇器優先順序、 居中定位、 相容性、 hack寫法 題目以及答案 如何理解CSS的盒子模型? 每個HTML元素都是長方形盒子。 (1)盒子模型有兩種:IE盒子模型、標準W3C盒子模型;IE的c

前端開發試題總結——HTML

本文轉載於:猿2048網站➥前端開發面試題總結之——HTML ________________________________

2018年最新JAVA試題總結資料庫3

轉自於:https://zhuanlan.zhihu.com/p/39804394   1、MySQL的delete與truncate區別? 回答:delete語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的刪除操作作為事務記錄在日誌中儲存以便進行回滾操作,不清空AUTO_INCREM

2018年最新JAVA試題總結基礎1

轉自於:https://zhuanlan.zhihu.com/p/39322967   1、JAVA中能建立volatile陣列嗎?volatile能使得一個非原子操作變成原子操作嗎? 回答: 能,Java 中可以建立 volatile 型別陣列,不過只是一個指向陣列的引用,而不是整個陣列。J

2018年最新JAVA試題總結框架4

轉自於:https://zhuanlan.zhihu.com/p/40098726   1、談談對spring框架的瞭解 ,spring有什麼作用(IOC,AOP),spring的核心是什麼?回答:Spring是一個開源框架,它是為了解決企業應用開發的複雜性而建立的。框架的主要優勢之一就是其分層

Web前端開發試題總結

1、簡單介紹一下什麼是盒模型? 網頁上的每一個標籤都是一個盒子,每個盒子都有四個屬性: 內容(content):盒子裡面裝的東西,網頁中通常是指文字和圖片(盒子中間裝的東西); 填充(padding):內邊距,比如買東西時怕盒子裡面的東西損壞而新增的泡沫或者其它抗震的輔料(盒子裡裝的

web前端開發試題未完待續

tex ora 相對 設置 erl 思路 實現 多列 寬度 一、HTML與XHTML的不同:1)XHTML元素必須被正確地嵌套 2)元素必須被關閉 如:<h1>……&l

前端開發--試題整理JS篇

狀態 state oda 通過 cli 命名空間 script push arguments 1.截取字符串abcdace的acealert(‘abcdace‘.substring(4)); 2.規避javascript多人開發函數重名問題命名空間封閉空間js模塊化mvc(

37道WEB前端開發試題JavaScript篇章!

收集 let 區分 但我 感知 異步編程 firefox 指針 nod ajax, 跨域, jsonp 參考: 《JavaScript》高級程序設計第21章:Ajax和Comet jQuery中Ajax操作 apply和call的用法和區別: 用法: 都能繼承另一個對

Android 試題總結Android 基礎

Android 面試題總結之Android 基礎Activity(一) 轉眼間畢業好久了,寫程式也很久了,從高中就一直寫到現在好多年了啊,學習了很多東西,把之前整理的資料和知識點慢慢分享出來。這裡主要總結Android可能出的面試的題目比較全面\詳細,持

Android 試題總結Android 基礎

Android 面試題總結之Android 基礎Broadcast Receiver(三) 在上一章節Android 面試題總結之Android 基礎ContentProvider(二) 我們講的ContentProvider和Intent基礎知識。本節

前端開發試題綜合篇

小編推薦:Fundebug專注於JavaScript、微信小程式、微信小遊戲,Node.js和Java實時BUG監控。真的是一個很好用的bug監控費服務,眾多大佬公司都在使用。   “每18至24個月,前端都會難一倍” ——赫門 “2015深JS大會《前

前端開發試題 HTML

“每18至24個月,前端都會難一倍” ——赫門 “2015深JS大會《前端服務化之路》主題演講” 知識點 對Web標準的理解、瀏覽器核心差異、相容性、hack、HTML5...... 題目&答案 Doctype作用?標準模式與相容模式各有什麼區別? (1)&

Android 試題總結Android 進階

Android 之美 從0到1 之Android 進階(二) 在上一章節中《Android 之美 從0到1 之Android 進階(一)》中我們已經理解了一些View的基本知識並且知道如何自定義View。那麼本章節將繼續深入理解View,關於View的繪

Android 試題總結Android 基礎

Android 面試題總結之Android 基礎(ListView)(五) 前幾篇面試總結中,主要講了Android 的四大元件的相關知識點,希望在大家日常工作中有所幫助,那麼在本節中主要是Android 必不可少的ListView 的相關知識點。Lis

推介github上前端開發試題

前端開發知識點: HTML&CSS: 對Web標準的理解、瀏覽器核心差異、相容性、hack、CSS基本功:佈局、盒子模型、選擇器優先順序、 HTML5、CSS3、Flexbox JavaScript: 資料型別、運算、物件、Function、繼承、閉包、作用域、原

Android 試題總結Android 基礎

Android 面試題總結之Android 基礎Service(四) 在上一章節Android 面試題總結之Android 基礎Broadcast Receiver(三) 我們講了Broadcast Receiver基礎知識。本節主要講解Service相

Android 試題總結Android 基礎

Android 面試題總結之Android 基礎ContentProvider(二) 在上一章節Android 面試題總結之Android 基礎Activity(一) 我們講的Activity基礎知識。有許多朋友反映看著比較亂,我又回去看了看 ,確實很亂

Java開發試題總結

維護 model ann 多例 操作系統 iter ali 負責 channel 好久沒有來更新我的面試題了,不知道關註我的小夥伴有沒有失聯啊?!呼叫! 好了開始我們今天的正題分享! 1、如何從FutureTask不阻塞獲取結果 get(long timeout,Time

前端開發試題 JavaScript

“每18至24個月,前端都會難一倍” ——赫門 “2015深JS大會《前端服務化之路》主題演講” 知識點 資料型別、運算、物件、function、繼承、閉包、作用域、原型鏈、事件、RegExp、JSON、Ajax、DOM、BOM、記憶體洩漏、跨域、非同步載入、模板引