前端面試集錦——CSS篇

3、CSS篇

3.一、談談你對CSS佈局的理解

 

3.二、請列舉幾種能夠清除浮動的方法(至少兩種)

浮動會漂浮於普通流之上,像浮雲同樣,可是隻能左右浮動。正是這種特性,致使框內部因爲不存在其餘普通流元素了,表現出高度爲0(高度塌陷)。php

a. 添加額外標籤,例如<div ></div>css

b. 使用br標籤和其自身的html屬性,例如<br clear="all" />html

c. 父元素設置 overflow:hidden;在IE6中還須要觸發hasLayout,例如zoom:1;git

d. 父元素設置 overflow:auto 屬性;一樣IE6須要觸發hasLayoutgithub

e. 父元素也設置浮動api

f. 父元素設置display:table瀏覽器

g. 使用:after 僞元素;因爲IE6-7不支持:after,使用 zoom:1觸發 hasLayout。ide

在CSS2.1裏面有一個很重要的概念,那就是 Block formatting contexts (塊級格式化上下文),簡稱 BFC工具

建立了BFC的元素就是一個獨立的盒子,裏面的子元素不會在佈局上影響外面的元素,同時BFC仍然屬於文檔中的普通流。佈局

IE6-7的顯示引擎使用的是一個稱爲佈局(layout)的內部概念。

參考《那些年咱們一塊兒清除過的浮動

 

3.三、請列舉幾種隱藏元素的方法

a. visibility: hidden;這個屬性只是簡單的隱藏某個元素,可是元素佔用的空間任然存在。

b. opacity: 0;一個CSS3屬性,設置0可使一個元素徹底透明,製做出和visibility同樣的效果。與visibility相比,它能夠被transition和animate

c. position: absolute;使元素脫離文檔流,處於普通文檔之上,給它設置一個很大的left負值定位,使元素定位在可見區域以外。

d. display: none;元素會變得不可見,而且不會再佔用文檔的空間。

e. transform: scale(0);將一個元素設置爲無限小,這個元素將不可見。這個元素原來所在的位置將被保留。

f. HTML5 hidden attribute;hidden屬性的效果和display:none;相同,這個屬性用於記錄一個元素的狀態

g. height: 0; overflow: hidden;將元素在垂直方向上收縮爲0,使元素消失。只要元素沒有可見的邊框,該技術就能夠正常工做。

h. filter: blur(0);將一個元素的模糊度設置爲0,從而使這個元素「消失」在頁面中。

參考《使用CSS隱藏HTML元素的4種經常使用方法》《經過HTML和CSS隱藏和顯示元素的4種方法

 

3.四、如何讓一段文本中的全部英文單詞的首字母大寫

text-transform

none| capitalize(將每一個單詞的第一個字母轉換成大寫) | uppercase(將每一個單詞轉換成大寫 ) | lowercase(將每一個單詞轉換成小寫 )

 

3.五、請簡述CSS樣式表繼承

CSS樣式表繼承指的是,特定的CSS屬性向下傳遞到子孫元素。會被繼承下去的屬性以下:參考《CSS樣式表繼承詳解

文本相關:font-family,font-size, font-style,font-variant,font-weight, font,letter-spacing,line-height,color 

列表相關:list-style-image,list-style-position,list-style-type, list-style

 

3.六、請簡述CSS的選擇器

元素選擇器:* 、E、 E#id、 E.class

關係選擇器:E、F、E>F、E+F、E~F

屬性選擇器:E[att]、E[att="val"]、E[att~="val"]、E[att^="val"]、E[att$="val"]、E[att*="val"]、E[att|="val"]

僞類選擇器:E:link、E:visited、E:hover、E:active、E:focus、E:lang(fr)、E:not(s)、E:root、E:first-child、E:last-chil等

僞對象選擇器:E:first-letter/E::first-letter、E:first-line/E::first-line、E:before/E::before、E:after/E::after、E::selection

參考《選擇符列表

 

3.七、CSS僞類與CSS僞對象的區別

CSS 引入僞類和僞元素的概念是爲了描述一些現有CSS沒法描述的東西

根本區別在於:它們是否創造了新的元素(抽象)

僞類:一開始用來表示一些元素的動態狀態,隨後CSS2標準擴展了其概念範圍,使其成爲了全部邏輯上存在但在文檔樹中卻無須標識的「幽靈」分類

僞對象:表明了某個元素的子元素,這個子元素雖然在邏輯上存在,但卻並不實際存在於文檔樹中

參考《CSS僞類與CSS僞元素的區別及由來

 

3.八、請簡述CSS的權重規則

一個行內樣式+1000,一個id+100,一個屬性選擇器/class類/僞類選擇器+10,一個元素名/僞對象選擇器+1。

關係選擇器將拆分爲兩個選擇器再計算。參考《CSS權重

 

3.九、請寫出多種等高佈局

a. 假等高列:使用背景圖片,在列的父元素上使用這個背景圖進行Y軸的鋪放,從而實現一種等高列的假像

b. 給容器div使用單獨的背景色(固定佈局)(流體佈局):用<div>元素中的最大高度撐大其餘的<div>容器高度

c. 建立帶邊框的兩列等高佈局:用border-left來作,只能使用兩列。

d. 使用正padding和負margin對衝實現多列布局方法:在全部列中使用正的上、下padding和負的上、下margin,並在全部列外面加上一個容器,設置overflow:hiden把溢出背景切掉

e. 使用邊框和定位模擬列等高:但不能使用在多列

f. 模仿表格佈局等高列效果:兼容性很差,在ie6-7沒法正常運行

 

3.十、在CSS樣式中常使用px、em,各有什麼優劣,在表現上有什麼區別?

px是相對長度單位,相對於顯示器屏幕分辨率而言的。

em是相對長度單位,相對於當前對象內文本的字體尺寸。

px定義的字體,沒法用瀏覽器字體放大功能。

em的值並非固定的,會繼承父級元素的字體大小,1 ÷ 父元素的font-size × 須要轉換的像素值 = em值。

 

3.十一、CSS中 link 和@import 的區別是什麼?

a. link屬於HTML標籤,而@import是CSS提供的,且只能加載 CSS

b. 頁面被加載時,link會同時被加載,而@import引用的CSS會等到頁面被加載完再加載

c. import只在IE5以上才能識別,而link是HTML標籤,無兼容問題

d. link方式的樣式的權重 高於@import的權重

e. 當使用 Javascript 控制 DOM 去改變樣式的時候,只能使用 link 方式,由於 @import 眼裏只有 CSS ,不是 DOM 能夠控制

 

3.十二、position的absolute與fixed共同點與不一樣點

相同:

a. 改變行內元素的呈現方式,display被置爲block

b. 讓元素脫離普通流,不佔據空間

c. 默認會覆蓋到非定位元素上

區別:

absolute的」根元素「是能夠設置的,而fixed的」根元素「固定爲瀏覽器窗口。

當你滾動網頁,fixed元素與瀏覽器窗口之間的距離是不變的。

 

3.1三、position的值, relative和absolute分別是相對於誰進行定位的?

absolute:生成絕對定位的元素,相對於 static 定位之外的第一個祖先元素進行定位

fixed:生成絕對定位的元素,相對於瀏覽器窗口進行定位。 (IE6不支持)

relative:生成相對定位的元素,相對於其在普通流中的位置進行定位

static:默認值。沒有定位,元素出如今正常的流中

 

3.1四、CSS3有哪些新特性?

CSS3實現圓角(border-radius),陰影(box-shadow),對文字加特效(text-shadow),線性漸變(gradient),變形(transform

增長了更多的CSS選擇器  多背景 rgba,在CSS3中惟一引入的僞元素是::selection,媒體查詢,多欄佈局

參考《CSS3中的動畫效果記錄》、《CSS3中border-radius、box-shadow與gradient那點事兒

 

3.1五、爲何要初始化CSS樣式?

由於瀏覽器的兼容問題,不一樣瀏覽器對有些標籤的默認值是不一樣的,若是沒對CSS初始化每每會出現瀏覽器之間的頁面顯示差別。

固然,初始化樣式會對SEO有必定的影響,但魚和熊掌不可兼得,但力求影響最小的狀況下初始化。

 

3.1六、解釋下 CSS sprites原理,優缺點

CSS Sprites其實就是把網頁中一些背景圖片整合到一張圖片文件中,

再利用CSS的「background-image」,「background- repeat」,「background-position」的組合進行背景定位,

background-position能夠用數字精確的定位出背景圖片的位置。

優勢:

a. 減小網頁的http請求

b. 減小圖片的字節

c. 解決了網頁設計師在圖片命名上的困擾,只需對一張集合的圖片上命名就能夠了,不須要對每個小元素進行命名

d. 更換風格方便,只須要在一張或少張圖片上修改圖片的顏色或樣式,整個網頁的風格就能夠改變。

缺點:

a. 在寬屏,高分辨率的屏幕下的自適應頁面,你的圖片若是不夠寬,很容易出現背景斷裂

b. CSS Sprites在開發的時候,要經過photoshop或其餘工具測量計算每個背景單元的精確位置

c. 在維護的時候比較麻煩,若是頁面背景有少量改動,通常就要改這張合併的圖片

 

3.1七、解釋下浮動和它的工做原理?

a. 浮動元素脫離文檔流,不佔據空間(引發「高度塌陷」現象)

b. 浮動元素碰到包含它的邊框或者浮動元素的邊框停留。

 

3.1八、浮動元素引發的問題

a. 父元素的高度沒法被撐開,影響與父元素同級的元素

b. 與浮動元素同級的非浮動元素會跟隨其後

c. 若非第一個元素浮動,則該元素以前的元素也須要浮動,不然會影響頁面顯示的結構

 

3.1九、什麼是 FOUC(無樣式內容閃爍)?你如何來避免 FOUC?

若是使用import方法對CSS進行導入,會致使某些頁面在Windows下的IE出現一些奇怪的現象:

以無樣式顯示頁面內容的瞬間閃爍,這種現象稱之爲文檔樣式短暫失效(Flash of Unstyled Content),簡稱爲FOUC。

原理:當樣式表晚於結構性html加載,當加載到此樣式表時,頁面將中止以前的渲染。此樣式表被下載和解析後,將從新渲染頁面,也就出現了短暫的花屏現象。

解決方法:使用LINK標籤將樣式表放在文檔HEAD中。

 

3.20、line-height三種賦值方式有何區別?(帶單位、純數字、百分比)

帶單位:px不用計算,em則會使元素以其父元素font-size值爲參考來計算本身的行高

純數字:把比例傳遞給後代,例如父級行高爲1.5,子元素字體爲18px,則子元素行高爲1.5*18=27px

百分比:將計算後的值傳遞給後代

參考《line-height的理解》、《淺析line-height和vertical》,查看在線源碼

 

3.2一、:link、:visited、:hover、:active的執行順序是怎麼樣的?

L-V-H-A,l(link)ov(visited)e h(hover)a(active)te,即用喜歡和討厭兩個詞來歸納

 

3.2二、常常遇到的瀏覽器兼容性有哪些?如何解決?

a. 瀏覽器默認的margin和padding不一樣

b. IE6雙邊距bug

c. 在ie6,ie7中元素高度超出本身設置高度。緣由是IE8之前的瀏覽器中會給元素設置默認的行高的高度致使的

d. min-height在IE6下不起做用

e. 透明性IE用filter:Alpha(Opacity=60),而其餘主流瀏覽器用 opacity:0.6

f. input邊框問題,去掉input邊框通常用border:none;就能夠,但因爲IE6在解析input樣式時的BUG(優先級問題),在IE6下無效

 

3.2三、有哪項方式能夠對一個DOM設置它的CSS樣式?

a. 外部樣式表:經過<link>標籤引入一個外部css文件

b. 內部樣式表:將css代碼放在 <style> 標籤內部

c. 內聯樣式:將css樣式直接定義在 HTML 元素內部

 

3.2四、什麼是外邊距重疊?重疊的結果是什麼?

外邊距重疊就是margin-collapse。

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

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

a. 兩個相鄰的外邊距都是正數時,摺疊結果是它們二者之間較大的值。

b. 兩個相鄰的外邊距都是負數時,摺疊結果是二者絕對值的較大值。

c. 兩個外邊距一正一負時,摺疊結果是二者的相加的和。

 

3.2五、rgba()和opacity的透明效果有什麼不一樣?

a. opacity做用於元素,以及元素內的全部內容的透明度,rgba()只做用於元素的顏色或其背景色。

b. 設置rgba透明的元素的子元素不會繼承透明效果!

 

3.2六、css屬性content有什麼做用?有什麼應用?

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

能夠配合自定義字體顯示特殊符號。

原文連接:http://www.gbtags.com/gb/share/10029.htm

相關文章
相關標籤/搜索