五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

2022年Web前端開發(fā)面試題-CSS篇匯總

2022-07-19 11:52 作者:不凡學院  | 我要投稿

常見css面試題

1、標準盒模型和IE盒模型兩者的區(qū)別是什么?

標準的(W3C)盒模型:元素的實際寬度等于設置的寬高 + border + padding (默認方式)

IE盒模型: 元素的實際寬度就等于設置的寬高,即使定義有 border 和 padding 也不會改變元素的實際寬度,即 ( Element width = width )

2、怎么設置這兩種模型呢?

很簡單,通過設置 box-sizing就可以達到自由切換的效果。

box-sizing:content-box;(標準)box-sizing:border-box;(IE)

3、描述一下下面盒子的大小,顏色什么的(content-box模型)

考查點:

整個盒子的大小

padding的顏色

border的顏色

height為0了,看得見盒子嗎?

整個盒子的大小(內(nèi)容區(qū)) = 0 (因為height為0)

padding的顏色 = pink(默認背景色蔓延到padding和border區(qū)域)

border的顏色 = blue(會繼承color字體的顏色,默認為black)

height為0了,看得見盒子嗎?(雖然height為0,但是看得見盒子,因為有border和padding)

這里需要注意:

如果沒有寫border-style,那么邊框的寬度不管設置成多少,都是無效的。

border-color的顏色默認跟字體顏色相同

padding顏色跟背景顏色相同

4、當元素設置成inline-block會出現(xiàn)什么問題?怎么消除?

inline-block元素水平呈現(xiàn)的元素間,換行顯示或空格分隔的情況下會有間距,很簡單的個例子:

去除inline-block元素間間距的N種方法

元素間留白間距出現(xiàn)的原因就是標簽段之間的空格,因此,去掉HTML中的空格,自然間距就木有了。考慮到代碼可讀性,顯然連成一行的寫法是不可取的,我們可以:

或者使用font-size:0

5、行內(nèi)元素可以設置padding,margin嗎?

行內(nèi)元素的margin左右有效,上下無效。

行內(nèi)元素的padding左右有效 ,但是由于設置padding上下不占頁面空間,無法顯示效果,所以無效。

6、什么是邊距重疊?什么情況下會發(fā)生邊距重疊?如何解決邊距重疊?

邊距重疊:兩個box如果都設置了邊距,那么在垂直方向上,兩個box的邊距會發(fā)生重疊,以絕對值大的那個為最終結(jié)果顯示在頁面上。

邊距重疊分為兩種:

同級關系的重疊:

同級元素在垂直方向上外邊距會出現(xiàn)重疊情況,最后外邊距的大小取兩者絕對值大的那個

父子關系的邊距重疊:

嵌套崩塌

父子關系,如果子元素設置了外邊距,在沒有把父元素變成BFC的情況下,父元素也會產(chǎn)生外邊距。

給父元素添加overflow:hidden 這樣父元素就變?yōu)?BFC,不會隨子元素產(chǎn)生外邊距。

7、什么是BFC?

BFC的基本概念–BFC就是“塊級格式化上下文”的意思,也有譯作“塊級格式化范圍”。

它是 W3C CSS 2.1 規(guī)范中的一個概念,它決定了元素如何對其內(nèi)容進行定位,以及與其他元素的關系和相互作用。

通俗的講,就是一個特殊的塊,內(nèi)部有自己的布局方式,不受外邊元素的影響。

8、那么BFC的原理(規(guī)則)是什么呢?

內(nèi)部的Box會在垂直方向上一個接一個的放置

垂直方向上的距離由margin決定。(完整的說法是:屬于同一個BFC的兩個相鄰Box的margin會發(fā)生重疊(塌陷),與方向無關。)

每個元素的左外邊距與包含塊的左邊界相接觸(從左向右),即使浮動元素也是如此。(這說明BFC中子元素不會超出他的包含塊,而position為absolute的元素可以超出他的包含塊邊界)

BFC的區(qū)域不會與float的元素區(qū)域重疊

計算BFC的高度時,浮動子元素也參與計算

BFC就是頁面上的一個隔離的獨立容器,容器里面的子元素不會影響到外面元素,反之亦然

9、BFC由什么條件創(chuàng)立?

float屬性不為none

position屬性為absolute或fixed

display屬性為inline-block、table-cell、table-caption、flex、inline-flex

overflow屬性不為visible(overflow: auto/ hidden;)

10、BFC的使用場景

(1) 清除元素內(nèi)部浮動

只要把父元素設為BFC就可以清理子元素的浮動了,最常見的用法就是在父元素上設置overflow: hidden樣式,對于IE6加上zoom:1就可以了。

主要用到

計算BFC的高度時,自然也會檢測浮動或者定位的盒子高度。

(2) 解決外邊距合并問題(嵌套崩塌)

外邊距合并的問題。

主要用到

盒子垂直方向的距離由margin決定。屬于同一個BFC的兩個相鄰盒子的margin會發(fā)生重疊

屬于同一個BFC的兩個相鄰盒子的margin會發(fā)生重疊,那么我們創(chuàng)建不屬于同一個BFC,就不會發(fā)生margin重疊了。

(3) 制作右側(cè)自適應的盒子問題

主要用到

普通流體元素BFC后,為了和浮動元素不產(chǎn)生任何交集,順著浮動邊緣形成自己的封閉上下文

11、清除浮動影響的方法?

11.1額外標簽法(在最后一個浮動標簽后,新加一個塊標簽,給其設置clear:both;)

11.2 父級添加overflow屬性(父元素添加overflow:hidden)

通過觸發(fā)BFC方式,實現(xiàn)清除浮動

11.3 使用after偽元素清除浮動(推薦使用)

12、塊元素居中

一般常見的幾種居中的方法有:

對于寬高固定的元素

(1)我們可以利用margin:0 auto來實現(xiàn)元素的水平居中。

(2)利用絕對定位,設置四個方向的值都為0,并將margin設置為auto,由于寬高固定,因此對應方向?qū)崿F(xiàn)平分,可以實現(xiàn)水

平和垂直方向上的居中。

(3)利用絕對定位,先將元素的左上角通過top:50%和left:50%定位到頁面的中心,然后再通過margin負值來調(diào)整元素

的中心點到頁面的中心。

(4)利用絕對定位,先將元素的左上角通過top:50%和left:50%定位到頁面的中心,然后再通過translate來調(diào)整元素

的中心點到頁面的中心。

(5)使用flex布局,通過align-items:center和justify-content:center設置容器的垂直和水平方向上為居中對

齊,然后它的子元素也可以實現(xiàn)垂直和水平的居中。

對于寬高不定的元素,后面兩種方法,可以實現(xiàn)元素的垂直和水平的居中。

13、CSS 選擇器有哪些?

14、CSS 優(yōu)先級算法如何計算?

當設置樣式?jīng)_突時,選擇器優(yōu)先級高的設置的樣式生效!

從高往低: !important > 行內(nèi)樣式 > id選擇器 > class選擇器 > 標簽選擇器 > 通配符和繼承屬性

組合選擇器的權(quán)重是累加

!important的使用

p{

? ? font-size:24px !important;

}

/* 對于選中的p元素,字號強制設置為24px,比行內(nèi)樣式優(yōu)先級要高 */

15、position的屬性有哪些,區(qū)別是什么?

position有以下屬性值:

position屬性

16、對 sticky 定位的理解

sticky 英文字面意思是粘貼,所以可以把它稱之為粘性定位。語法:position: sticky; 基于用戶的滾動位置來定位。

粘性定位的元素是依賴于用戶的滾動,在 position:relative 與 position:fixed 定位之間切換。它的行為就像 position:relative;

而當頁面滾動超出目標區(qū)域時,它的表現(xiàn)就像 position:fixed;它會固定在目標位置。

元素定位表現(xiàn)為在跨越特定閾值前為相對定位,之后為固定定位。這個特定閾值指的是 top, right, bottom, left 之一,換言之,指定 top, right, bottom, left 四個閾值其中之一,才可使粘性定位生效。否則其行為與相對定位相同。

17、CSS 優(yōu)化、提高性能的方法有哪些?

加載性能:

css壓縮:將寫好的css進行打包壓縮,可以減小文件體積。

css單一樣式:當需要下邊距和左邊距的時候,很多時候會選擇使用margin-left:20px;margin-bottom:30px;

減少使用@import,建議使用link,因為后者在頁面加載時一起加載,前者是等待頁面加載完成之后再進行加載。

選擇器性能:

關鍵選擇器(key selector)。選擇器的最后面的部分為關鍵選擇器(即用來匹配目標元素的部分)。CSS選擇符是從右到左進行匹配的。當使用后代選擇器的時候,瀏覽器會遍歷所有子元素來確定是否是指定的元素等等;

如果規(guī)則擁有ID選擇器作為其關鍵選擇器,則不要為規(guī)則增加標簽。過濾掉無關的規(guī)則(這樣樣式系統(tǒng)就不會浪費時間去匹配它們了)。

盡量少的去對標簽進行選擇,而是用class。

盡量少的去使用后代選擇器,降低選擇器的權(quán)重值。后代選擇器的開銷是最高的,盡量將選擇器的深度降到最低,最高不要超過三層,更多的使用類來關聯(lián)每一個標簽元素。

了解哪些屬性是可以通過繼承而來的,然后避免對這些屬性重復指定規(guī)則。

渲染性能:

屬性值為0時,不加單位。

可以省略小數(shù)點之前的0。

標準化各種瀏覽器前綴:帶瀏覽器前綴的在前。標準屬性在后。

選擇器優(yōu)化嵌套,盡量避免層級過深。

css雪碧圖,同一頁面相近部分的小圖標,方便使用,減少頁面的請求次數(shù),但是同時圖片本身會變大,使用時,優(yōu)劣考慮清楚,再使用。

不濫用web字體。對于中文網(wǎng)站來說WebFonts可能很陌生,國外卻很流行。web fonts通常體積龐大,而且一些瀏覽器在下載web fonts時會阻塞頁面渲染損傷性能。

可維護性、健壯性:

將具有相同屬性的樣式抽離出來,整合并通過class在頁面中進行使用,提高css的可維護性。

樣式與內(nèi)容分離:將css代碼定義到外部css中。

18、元素的層疊順序?

層疊順序,英文稱作 stacking order,表示元素發(fā)生層疊時有著特定的垂直顯示順序。下面是盒模型的層疊規(guī)則:

對于上圖,由上到下分別是:

背景和邊框:建立當前層疊上下文元素的背景和邊框。

負的z-index:當前層疊上下文中,z-index屬性值為負的元素。

塊級盒:文檔流內(nèi)非行內(nèi)級非定位后代元素。

浮動盒:非定位浮動元素。

行內(nèi)盒:文檔流內(nèi)行內(nèi)級非定位后代元素。

z-index:0:層疊級數(shù)為0的定位元素。

正z-index:z-index屬性值為正的定位元素。

注意: 當定位元素z-index:auto,生成盒在當前層疊上下文中的層級為 0,不會建立新的層疊上下文,除非是根元素。

19、兩欄布局的實現(xiàn)?

一般兩欄布局指的是左邊一欄寬度固定,右邊一欄寬度自適應,兩欄布局的具體實現(xiàn):

利用浮動,將左邊元素寬度設置為200px,并且設置向左浮動。將右邊元素的margin-left設置為200px,寬度設置為auto(默認為auto,撐滿整個父元素)。

<style>

? ? .container {

? ? ? height: 100px;

? ? }

? ? .left {

? ? ? float: left;

? ? ? width: 200px;

? ? ? background: red;

? ? ? height: 100px;

? ? }

? ? .right {

? ? ? margin-left: 200px;

? ? ? width: auto;

? ? ? background: green;

? ? ? height: 100px;

? ? }

</style>

<body>

? ? <div class="container">

? ? ? ? <div class="left"></div>

? ? ? ? <div class="right"></div>

? ? </div>

</body>

利用浮動,左側(cè)元素設置固定大小,并左浮動,右側(cè)元素設置overflow: hidden; 這樣右邊就觸發(fā)了BFC,BFC的區(qū)域不會與浮動元素發(fā)生重疊,所以兩側(cè)就不會發(fā)生重疊。

<style>

? ? .container {

? ? ? height: 100px;

? ? }

? ? .left {

? ? ? float: left;

? ? ? width: 200px;

? ? ? background: red;

? ? ? height: 100px;

? ? }

? ? .right {

? ? ? overflow:hidden;

? ? ? background: green;

? ? ? height: 100px;

? ? }

</style>

<body>

? ? <div class="container">

? ? ? ? <div class="left"></div>

? ? ? ? <div class="right"></div>

? ? </div>

</body>

利用絕對定位,將父級元素設置為相對定位。左邊元素設置為absolute定位,并且寬度設置為200px。將右邊元素的margin-left的值設置為200px。

<style>

? ? .container {

? ? ? position:relative;

? ? ? height: 100px;

? ? }

? ? .left {

? ? ? position:absolute;

? ? ? width: 200px;

? ? ? background: red;

? ? ? height: 100px;

? ? }

? ? .right {

? ? ? margin-left:200px;

? ? ? background: green;

? ? ? height: 100px;

? ? }

</style>

<body>

? ? <div class="container">

? ? ? ? <div class="left"></div>

? ? ? ? <div class="right"></div>

? ? </div>

</body>

利用flex布局,將左邊元素設置為固定寬度200px,將右邊的元素設置為flex:1。

<style>

? ? .container {

? ? ? display:flex;

? ? ? height: 100px;

? ? }

? ? .left {

? ? ? width: 200px;

? ? ? background: red;

? ? ? height: 100px;

? ? }

? ? .right {

? ? ? flex:1;

? ? ? background: green;

? ? ? height: 100px;

? ? }

</style>

<body>

? ? <div class="container">

? ? ? ? <div class="left"></div>

? ? ? ? <div class="right"></div>

? ? </div>

</body>

20、三欄布局實現(xiàn)?

三欄布局一般指的是頁面中一共有三欄,左右兩欄寬度固定,中間自適應的布局,三欄布局的具體實現(xiàn):

利用絕對定位,左右兩欄設置為絕對定位,中間設置對應方向大小的margin的值。

<style>

.container{

? ? position: relative;

? ? height:100px;

}

.left{

? ? position: absolute;

? ? left: 0;

? ? top: 0;

? ? width: 100px;

? ? height: 100px;

? ? background-color: red;

}

.right{

? ? position: absolute;

? ? right: 0;

? ? top: 0;

? ? width: 200px;

? ? height: 100px;

? ? background-color: orange;

}

.center{

? ? margin-left: 100px;

? ? margin-right: 200px;

? ? height: 100px;

? ? background-color: blue;

}

</style>

<body>

? ? <div class="container">

? ? ? ? <div class="left"></div>

? ? ? ? <div class="center"></div>

? ? ? ? <div class="right"></div>

? ? </div>

</body>

利用浮動,左右兩欄設置固定大小,并設置對應方向的浮動。中間一欄設置左右兩個方向的margin值,注意這種方式,中間一欄必須放到最后

<style>

.container{

? ? height:100px;

}

.left{

? ? float:left;

? ? width: 100px;

? ? height: 100px;

? ? background-color: red;

}

.right{

? ? float:right;

? ? width: 200px;

? ? height: 100px;

? ? background-color: orange;

}

.center{

? ? margin-left: 100px;

? ? margin-right: 200px;

? ? height: 100px;

? ? background-color: blue;

}

</style>

<body>

? ? <div class="container">

? ? ? ? <div class="left"></div>

? ? ? ? <div class="right"></div>

? ? ? ? <div class="center"></div>

? ? </div>

</body>

利用flex布局,左右兩欄設置固定大小,中間一欄設置為flex:1。

<style>

.container{

? ? display:flex;

? ? height:100px;

}

.left{

? ? width: 100px;

? ? height: 100px;

? ? background-color: red;

}

.right{

? ? width: 200px;

? ? height: 100px;

? ? background-color: orange;

}

.center{

? ? flex:1;

? ? height: 100px;

? ? background-color: blue;

}

</style>

<body>

? ? <div class="container">

? ? ? ? <div class="left"></div>

? ? ? ? <div class="center"></div>

? ? ? ? <div class="right"></div>

? ? </div>

</body>

21、圣杯布局?

<div class="container">

? ? <div class="content"></div>

? ? <div class="left"></div>

? ? <div class="right"></div>

</div>

圣杯布局,利用浮動和負邊距來實現(xiàn)。父級元素設置左右的 padding,三列均設置向左浮動,中間一列放在最前面,寬度設置為父級元素的寬度,因此后面兩列都被擠到了下一行,通過設置 margin 負值將其移動到上一行,再利用相對定位,定位到兩邊。

.container{

? ? position: relative;

? ? padding-left: 100px;

? ? padding-right: 200px;

? ? height: 100px;

}

.content{

? ? float: left;

? ? width: 100%;

? ? height: 100px;

? ? background-color: blue;

}

.left{

? ? float: left;

? ? width: 100px;

? ? height: 100px;

? ? background-color: red;

? ? margin-left: -100%;

? ? position: relative;

? ? left: -100px;

}

.right{

? ? float: left;

? ? width: 200px;

? ? height: 100px;

? ? background-color: green;

? ? margin-left: -200px;

? ? position: relative;

? ? right: -200px;

}

22、雙飛翼布局?

<div class="container">

? ? <div class="wrap">

? ? ? ? <div class="center"></div>

? ? </div>

? ? <div class="left"></div>

? ? <div class="right"></div>

</div>

雙飛翼布局相對于圣杯布局來說,左右位置的保留是通過中間列的 margin 值來實現(xiàn)的,而不是通過父元素的 padding 來實現(xiàn)的。本質(zhì)上來說,也是通過浮動和外邊距負值來實現(xiàn)的。

.container{

? ? width: 100%;

? ? height: 100px;

}

.wrap{

? ? float: left;

? ? width: 100%;

}

.center{

? ? background-color: blue;

? ? height: 100px;

? ? margin-left: 100px;

? ? margin-right: 200px;

}

.left{

? ? float: left;

? ? margin-left: -100%;

? ? width: 100px;

? ? height: 100px;

? ? background-color: red;

}

.right{

? ? float: left;

? ? margin-left: -200px;

? ? width: 200px;

? ? height: 100px;

? ? background-color: green;

}

flex實現(xiàn)

<div class="container">

? ? <div class="content"></div>

? ? <div class="left"></div>

? ? <div class="right"></div>

</div>

.container{

? ? display: flex;

? ? height: 100px;

}

.content{

? ? flex: 1 1;

? ? height: 100px;

? ? background-color: blue;

? ? order: 2;

}

.left{

? ? flex: 0 0 100px;

? ? height: 100px;

? ? background-color: red;?

? ? order: 1;?

}

.right{

? ? flex: 0 0 200px;

? ? height: 100px;

? ? background-color: green;

? ? order: 3;

}

23、CSS3中有哪些新特性?

新增各種CSS選擇器

圓角

陰影(文本、盒子)

漸變

元素變換(平移、旋轉(zhuǎn)、縮放)

過渡(transition)

背景

動畫(animation)

內(nèi)容有些多,大家可以先點贊收藏,但一定要去看。當你把大廠面試題知識點都看完并且理解了,以后就沒有你過不了的前端面試。資源都幫你整理好了,還不學就有些說不過去了。

更多學習資料以及面試題庫,需要的伙伴點擊下方可以無償獲?。?!

更多優(yōu)質(zhì)視頻



2022年Web前端開發(fā)面試題-CSS篇匯總的評論 (共 條)

分享到微博請遵守國家法律
五原县| 达日县| 民县| 江华| 五大连池市| 库尔勒市| 南通市| 长岛县| 小金县| 蚌埠市| 且末县| 揭东县| 绥滨县| 芒康县| 德惠市| 凤庆县| 四平市| 太和县| 盐城市| 济阳县| 顺昌县| 洪洞县| 黔西| 夏河县| 马关县| 铅山县| 溧阳市| 克拉玛依市| 中江县| 广水市| 崇明县| 渭源县| 东阿县| 大足县| 沂源县| 鸡泽县| 谷城县| 偏关县| 马山县| 繁峙县| 太白县|