這篇文章主要介紹“CSS面試要點有哪些”,在日常操作中,相信很多人在CSS面試要點有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”CSS面試要點有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站制作、高陵網(wǎng)絡(luò)推廣、微信小程序開發(fā)、高陵網(wǎng)絡(luò)營銷、高陵企業(yè)策劃、高陵品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供高陵建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com一、px,em,rem、vw、vh
1.px (pixel,像素):
是一個虛擬長度單位,是計算機系統(tǒng)的數(shù)字化圖像長度單位,如果px要換算成物理長度,需要指定精度DPI(Dots Per Inch,每英寸像素數(shù)),在掃描打印時一般都有DPI可選。Windows系統(tǒng)默認是96dpi,Apple系統(tǒng)默認是72dpi。
2.em(相對長度單位,相對于當前對象內(nèi)文本的字體尺寸):
是一個相對長度單位,最初是指字母M的寬度,故名em?,F(xiàn)指的是字符寬度的倍數(shù),用法類似百分比,如:0.8em, 1.2em,2em等。通常1em=16px。
3.rem(root em,根em):
rem是一個相對單位,1rem等于html元素上字體設(shè)置的大小。我們只要設(shè)置html上font-size的大小,就可以改變rem所代表的大小。這樣我們就有了一個可控的統(tǒng)一參考系。我們現(xiàn)在有兩個目標:
rem單位所代表的尺寸大小和屏幕寬度成正比,
也就是設(shè)置html元素的font-size和屏幕寬度成正比rem單位和px單位很容易進行換算,方便我們按照標注稿寫cssrem與em的區(qū)別:
rem是相對于根元素(html)的字體大小,而em是相對于其父元素的字體大小
em最多取到小數(shù)點的后三位
4.vw、vh:
css3中引入了一個新的單位vw/vh,與視圖窗口有關(guān),vw表示相對于視圖窗口的寬度,vh表示相對于視圖窗口高度,除了vw和vh外,還有vmin和vmax兩個相關(guān)的單位。各個單位具體的含義如下:
這里我們發(fā)現(xiàn)視窗寬高都是100vw/100vh,那么vw或者vh,下簡稱vw,很類似百分比單位。
vw和%的區(qū)別為:
二、圣杯布局-雙飛翼布局
圣杯布局與雙飛翼布局針對的都是三列左右欄固定中間欄邊框自適應(yīng)的網(wǎng)頁布局
三列布局,中間寬度自適應(yīng),兩邊定寬
中間欄要在瀏覽器中優(yōu)先展示渲染
允許任意列的高度高
提醒:圣杯布局中相對布局中,main元素必須是container的第一個元素
html代碼
mainleftright
1.相對布局:
.container { width: 100%; min-height: 300px; padding: 0 60px; box-sizing: border-box; } .container > div { position: relative; float: left; } .left, .right { width: 60px; height: 100%; } .left { left: -60px; margin-left: -100%; } .right { right: 0; margin-right: -100%; } .main { width: 100%; height: 100%; }
2.flex布局:
.container { width: 100%; min-height: 300px; display: flex; } .main { flex-grow: 1; } .left { order: -1; flex-basis: 60px; } .right { flex-basis: 60px; }
3.絕對布局:
.container { width: 100%; min-height: 300px; position: relative; } .container > div { position: absolute; } .left, .right { width: 60px; height: 100%; } .main { width: calc(100% - 120px); height: 100%; left: 60px; } .left { left: 0; } .right { right: 0; }
三、流式布局與響應(yīng)式布局
流式布局
使用非固定像素來定義網(wǎng)頁內(nèi)容,也就是百分比布局,通過盒子的寬度設(shè)置成百分比來根據(jù)屏幕的寬度來進
行伸縮,不受固定像素的限制,內(nèi)容向兩側(cè)填充。
響應(yīng)式開發(fā)
利用CSS3 中的 Media Query(媒介查詢),通過查詢 screen 的寬度來指定某個寬度區(qū)間的網(wǎng)頁布局。
超小屏幕(移動設(shè)備) 768px 以下
小屏設(shè)備 768px-992px
中等屏幕 992px-1200px
寬屏設(shè)備 1200px 以上
由于響應(yīng)式開發(fā)顯得繁瑣些,一般使用第三方響應(yīng)式框架來完成,比如 bootstrap 來完成一部分工作,當然也 可以自己寫響應(yīng)式。
四、CSS優(yōu)先級算法
元素選擇符: 1
class選擇符: 10
id選擇符:100
元素標簽:1000
!important聲明的樣式優(yōu)先級高,如果沖突再進行計算。
如果優(yōu)先級相同,則選擇最后出現(xiàn)的樣式。
繼承得到的樣式的優(yōu)先級最低。
五、CSS3新增偽類有那些?
p:first-of-type 選擇屬于其父元素的首個元素
p:last-of-type 選擇屬于其父元素的最后元素
p:only-of-type 選擇屬于其父元素的元素
p:only-child 選擇屬于其父元素的子元素
p:nth-child(2) 選擇屬于其父元素的第二個子元素
:enabled :disabled 表單控件的禁用狀態(tài)。
:checked 單選框或復(fù)選框被選中。
六、CSS3新特性
1.RGBA和透明度
2.background-image background-origin(content-box/padding-box/border-box) background-size background-repeatword-wrap(對長的不可分割單詞換行)
3.word-wrap:break-word
4.文字陰影:text-shadow: 5px 5px 5px #FF0000;(水平陰影,垂直陰影,模糊距離,陰影顏色)
5.font-face屬性:定義自己的字體
6.圓角(邊框半徑):border-radius 屬性用于創(chuàng)建圓角
7.邊框圖片:border-image: url(border.png) 30 30 round
8.盒陰影:box-shadow: 10px 10px 5px #888888
9.媒體查詢:定義兩套css,當瀏覽器的尺寸變化時會采用不同的屬性
七、CSS優(yōu)化、提高性能的方法有哪些?
1.避免過度約束
2.避免后代選擇符
3.避免鏈式選擇符
4.使用緊湊的語法
5.避免不必要的命名空間
6.避免不必要的重復(fù)
7.好使用表示語義的名字。一個好的類名應(yīng)該是描述他是什么而不是像
8.避免!important,可以選擇其他選擇器
9.盡可能的精簡規(guī)則,你可以合并不同類里的重復(fù)規(guī)則
八、CSS動畫
CSS 中的 transform,transition 和 animation 是分開的三部分內(nèi)容,其中 transfrom 主要是控制元素變形,并沒有一個時間控制的概念,而 transition 和 animation 才是動畫的部分,它們可以控制在一個時間段里,元素在兩個或以上的狀態(tài)切換的效果。
1.transition
transition屬性:transition-delay 延遲多久后開始動畫
transition-duration 過渡動畫的一個持續(xù)時間
transition-property 執(zhí)行動畫對應(yīng)的屬性,例如 color,background 等,可以使用 all 來指定所有的屬性
transition-timing-function 隨著時間推進,動畫變化軌跡的計算方式,常見的有:linear,ease,ease-in,ease-out,cubic-bezier(...) 等。
transition 相關(guān)的事件
transitionend 事件會在 transition 動畫結(jié)束的時候觸發(fā)。
通常我們會在動畫結(jié)束后執(zhí)行一些方法,例如繼續(xù)下一個動畫效果或者其他。
Zepto.js 中的動畫方法都是使用 CSS 動畫屬性來處理,而其中動畫運行后的回調(diào)便應(yīng)該是使用這個事件來處理。
2.animation
雖然 transition已經(jīng)提供了很棒的動畫效果了,但是我們只能夠控制從一個狀態(tài)到達另外一個狀態(tài),沒法來控制多個狀態(tài)的不斷變化,而 animation 而幫助我們實現(xiàn)了這一點。使用 animation 的前提是我們需要先使用 @keyframes 來定義一個動畫效果,@keyframes 定義的規(guī)則可以用來控制動畫過程中的各個狀態(tài)的情況,語法大抵是這個樣子:
@keyframes W { from { left: 0; top: 0; } to { left: 100%; top: 100%; } }
@keyframes 關(guān)鍵詞后跟動畫的名字,然后是一個塊,塊中有動畫進度的各個選擇器,選擇器后的塊則依舊是我們常見的各個 CSS 樣式屬性。
animation 屬性:
animation-name 你需要的動畫效果的 @keyframes 的名字。
animation-delay 和 transition-delay 一樣,動畫延遲的時間。
animtaion-duration 和 transition-duration 一樣,動畫持續(xù)的時間。animation-direction 動畫的一個方向控制。
默認是 normal,如果是上述的 left 從 0% 到 100%,那么默認是從左到右。如果這個值是 reverse,那么便是從右到左
由于 animation 提供了循環(huán)的控制,所以還有兩個值是 alternate 和 alternate-reverse,這兩個值會在每次循環(huán)開始的時候調(diào)轉(zhuǎn)動畫方向,只不過是起始的方向不同。
由于 animation 提供了循環(huán)的控制,所以還有兩個值是 alternate 和 alternate-reverse,這兩個值會在每次循環(huán)開始的時候調(diào)轉(zhuǎn)動畫方向,只不過是起始的方向不同。
animation 相關(guān)事件
可以通過綁定事件來監(jiān)聽 animation 的幾個狀態(tài),這些事件分別是:
animationstart 動畫開始事件,如果有 delay 屬性的話,那么等到動畫真正開始再觸發(fā),如果是沒有 delay,那么當動畫效果應(yīng)用到元素時,這個事件會被觸發(fā)。
animationend 動畫結(jié)束的事件,和 transitionend 類似。如果有多個動畫,那么這個事件會觸發(fā)多次,像上邊的例子,這個事件會觸發(fā)三次。如果 animation-iteration-count 設(shè)置為 infinite,那么這個事件則不會被觸發(fā)。
animationiteration 動畫循環(huán)一個生命周期結(jié)束的事件,和上一個事件不一樣的是,這個在每次循環(huán)結(jié)束一段動畫時會觸發(fā),而不是整個動畫結(jié)束時觸發(fā)。無限循環(huán)時,除非 duration 為 0,否則這個事件會無限觸發(fā)
九、BFC
BFC全稱是Block Formatting Context,即塊格式化上下文。它是CSS2.1規(guī)范定義的,關(guān)于CSS渲染定位的一個概念。要明白BFC到底是什么,首先來看看什么是視覺格式化模型。
視覺格式化模型
視覺格式化模型(visual formatting model)是用來處理文檔并將它顯示在視覺媒體上的機制,它也是CSS中的一個概念。
視覺格式化模型定義了盒(Box)的生成,盒主要包括了塊盒、行內(nèi)盒、匿名盒(沒有名字不能被選擇器選中的盒)以及一些實驗性的盒(未來可能添加到規(guī)范中)。盒的類型由display屬性決定。
根元素或其它包含它的元素;* 浮動 (元素的float
不為none
);* 絕對定位元素 (元素的position
為absolute
或fixed
);* 行內(nèi)塊inline-blocks
(元素的 display: inline-block
);* 表格單元格(元素的display: table-cell
,HTML表格單元格默認屬性);* overflow
的值不為visible
的元素;* 彈性盒 flex boxes (元素的display: flex
或inline-flex
);
但其中,最常見的就是overflow:hidden
、float:left/right
、position:absolute
。也就是說,每次看到這些屬性的時候,就代表了該元素以及創(chuàng)建了一個BFC了。
瀏覽器對BFC區(qū)域的約束規(guī)則:
生成BFC元素的子元素會一個接一個的放置。
垂直方向上他們的起點是一個包含塊的頂部,兩個相鄰子元素之間的垂直距離取決于元素的margin特性。在BFC中相鄰的塊級元素的 外邊距會折疊(Mastering margin collapsing) 。
生成BFC元素的子元素中,每一個子元素左外邊距與包含塊的左邊界相接觸(對于從右到左的格式化,右外邊距接觸右邊界),即使浮動元素也是如此(盡管子元素的內(nèi)容區(qū)域會由于浮動而壓縮),除非這個子元素也創(chuàng)建了一個新的BFC(如它自身也是一個浮動元素)。
BFC是頁面上的一個隔離的獨立容器,容器里面的子元素不會影響到外面元素,反之亦然。我們可以利用BFC的這個特性來做很多事。
十、flex 布局
基本概念
采用 Flex 布局的元素,稱為 Flex 容器(flex container),簡稱"容器"。它的所有子元素自動成為容器成員,稱為 Flex 項目(flex item),簡稱"項目"。
容器默認存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。主軸的開始位置(與邊框的交叉點)叫做main start,結(jié)束位置叫做main end;交叉軸的開始位置叫做cross start,結(jié)束位置叫做cross end。
項目默認沿主軸排列。單個項目占據(jù)的主軸空間叫做main size,占據(jù)的交叉軸空間叫做cross size。
容器的屬性:
1.flex-direction: 屬性決定主軸的方向(即項目的排列方向)
row(默認值):主軸為水平方向,起點在左端。
row-reverse:主軸為水平方向,起點在右端。
column:主軸為垂直方向,起點在上沿。
column-reverse:主軸為垂直方向,起點在下沿。
2.flex-wrap :默認情況下,項目都排在一條線(又稱"軸線")上
nowrap(默認):不換行。
wrap:換行,第一行在上方。
wrap-reverse:換行,第一行在下方。
3.flex-flow:是flex-direction屬性和flex-wrap屬性的簡寫形式
4.justify-content:定義了項目在主軸上的對齊方式
flex-start(默認值):左對齊
flex-end:右對齊
center: 居中
space-between:兩端對齊,項目之間的間隔都相等。
space-around:每個項目兩側(cè)的間隔相等。
所以,項目之間的間隔比項目與邊框的間隔大一倍。
5.align-items:定義項目在交叉軸上如何對齊
flex-start:交叉軸的起點對齊。
flex-end:交叉軸的終點對齊。
center:交叉軸的中點對齊。
baseline: 項目的第一行文字的基線對齊。
stretch(默認值):如果項目未設(shè)置高度或設(shè)為auto,將占滿整個容器的高度。
6.align-content:定義了多根軸線的對齊方式。
如果項目只有一根軸線,該屬性不起作用flex-start:與交叉軸的起點對齊。
flex-end:與交叉軸的終點對齊。
center:與交叉軸的中點對齊。
space-between:與交叉軸兩端對齊,軸線之間的間隔平均分布。
space-around:每根軸線兩側(cè)的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。
stretch(默認值):軸線占滿整個交叉軸。
項目的屬性order屬性定義項目的排列順序。
數(shù)值越小,排列越靠前,默認為0。
flex-shrink屬性定義了項目的縮小比例,默認為1,即如果空間不足,該項目將縮小。
flex-basis屬性定義了在分配多余空間之前,項目占據(jù)的主軸空間(main size)。
flex屬性是flex-grow, flex-shrink 和 flex-basis的簡寫,默認值為0 1 auto。
align-self屬性允許單個項目有與其他項目不一樣的對齊方式,可覆蓋align-items屬性。
該屬性可能取6個值,除了auto,其他都與align-items屬性完全一致。
十一、Grid 布局總結(jié)
grid 布局是 css 中的一種新的布局方式,對盒子和盒子內(nèi)容的位置及尺寸有很強的控制能力。與 flex 不同,flex 著重于單軸,而 grid 適應(yīng)于多軸,下面就來做個簡單的介紹。
flex 布局示意
grid 布局示意
基本概念
設(shè)置 display: grid; 的元素稱為容器,它的直接子元素稱為項目,但注意子孫元素不是項目。
grid line:網(wǎng)格線,構(gòu)成 grid 布局的結(jié)構(gòu),分為水平和豎直兩種。grid track:兩條相鄰網(wǎng)格線之間的空間,可以認為是一行或者一列。
grid cell:兩條相鄰行和相鄰列之間分割線組成的空間,是 grid 布局中的一個單元。
grid area:四條網(wǎng)格線包裹的全部空間,任意數(shù)量的 grid cell 組成一個 grid area。
容器屬性
grid 容器的屬性還是有點多的,一共有 18 個,但是很多可以通過簡寫完成,所以也不用太緊張。
grid-template 系列
grid-template-columns
grid-template-rows
grid-template-areas
grid-gap 系列
grid-column-gap
grid-row-gap
place-items 系列
justify-items
align-items
place-content 系列
justify-content
align-content
grid 系列
grid-auto-columns
grid-auto-rows
grid-auto-flow
十二、box-sizing
設(shè)置CSS盒模型為標準模型或IE模型。標準模型的寬度只包括content,二IE模型包括border和padding
box-sizing屬性可以為三個值之一:
content-box,默認值,只計算內(nèi)容的寬度,border和padding不計算入width之內(nèi)
padding-box,padding計算入寬度內(nèi)
border-box,border和padding計算入寬度之內(nèi)
十三、硬件加速
有時候動畫可能會導(dǎo)致用戶的電腦卡頓,你可以在特定元素中使用硬件加速來避免這個問題:
.block { transform: translateZ(0); }
到此,關(guān)于“CSS面試要點有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
本文標題:CSS面試要點有哪些-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://weahome.cn/article/deishh.html