免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
CSS面試要點!看完你還覺得你已經(jīng)學(xué)好CSS了嗎?

一、px,em,rem、vw、vh

1.px (pixel,像素):

是一個虛擬長度單位,是計算機系統(tǒng)的數(shù)字化圖像長度單位,如果px要換算成物理長度,需要指定精度DPI(Dots Per Inch,每英寸像素數(shù)),在掃描打印時一般都有DPI可選。Windows系統(tǒng)默認(rèn)是96dpi,Apple系統(tǒng)默認(rèn)是72dpi。

2.em(相對長度單位,相對于當(dāng)前對象內(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)在有兩個目標(biāo):

rem單位所代表的尺寸大小和屏幕寬度成正比,

也就是設(shè)置html元素的font-size和屏幕寬度成正比rem單位和px單位很容易進(jìn)行換算,方便我們按照標(biāo)注稿寫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代碼

<div class="container">   <div class="main">main</div>   <div class="left">left</div>   <div class="right">right</div></div>

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ù)屏幕的寬度來進(jìn)
行伸縮,不受固定像素的限制,內(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 來完成一部分工作,當(dāng)然也 可以自己寫響應(yīng)式。

四、CSS優(yōu)先級算法

元素選擇符: 1
class選擇符: 10
id選擇符:100
元素標(biāo)簽:1000

!important聲明的樣式優(yōu)先級最高,如果沖突再進(jìn)行計算。
如果優(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,當(dāng)瀏覽器的尺寸變化時會采用不同的屬性

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

1.避免過度約束

2.避免后代選擇符

3.避免鏈?zhǔn)竭x擇符

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 隨著時間推進(jìn),動畫變化軌跡的計算方式,常見的有: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)到達(dá)另外一個狀態(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)鍵詞后跟動畫的名字,然后是一個塊,塊中有動畫進(jìn)度的各個選擇器,選擇器后的塊則依舊是我們常見的各個 CSS 樣式屬性。

animation 屬性:

animation-name 你需要的動畫效果的 @keyframes 的名字。

animation-delay 和 transition-delay 一樣,動畫延遲的時間。

animtaion-duration 和 transition-duration 一樣,動畫持續(xù)的時間。animation-direction 動畫的一個方向控制。

默認(rèn)是 normal,如果是上述的 left 從 0% 到 100%,那么默認(rèn)是從左到右。如果這個值是 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,那么當(dāng)動畫效果應(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屬性決定。

怎樣才能形成BFC

  • 根元素或其它包含它的元素;* 浮動 (元素的float不為none);* 絕對定位元素 (元素的positionabsolutefixed);* 行內(nèi)塊inline-blocks(元素的 display: inline-block);* 表格單元格(元素的display: table-cell,HTML表格單元格默認(rèn)屬性);*overflow的值不為visible的元素;* 彈性盒 flex boxes (元素的display: flexinline-flex);

但其中,最常見的就是overflow:hidden、float:left/right、position:absolute。也就是說,每次看到這些屬性的時候,就代表了該元素以及創(chuàng)建了一個BFC了。

瀏覽器對BFC區(qū)域的約束規(guī)則:

  1. 生成BFC元素的子元素會一個接一個的放置。

  2. 垂直方向上他們的起點是一個包含塊的頂部,兩個相鄰子元素之間的垂直距離取決于元素的margin特性。在BFC中相鄰的塊級元素的外邊距會折疊(Mastering margin collapsing)。

  3. 生成BFC元素的子元素中,每一個子元素左外邊距與包含塊的左邊界相接觸(對于從右到左的格式化,右外邊距接觸右邊界),即使浮動元素也是如此(盡管子元素的內(nèi)容區(qū)域會由于浮動而壓縮),除非這個子元素也創(chuàng)建了一個新的BFC(如它自身也是一個浮動元素)。

BFC是頁面上的一個隔離的獨立容器,容器里面的子元素不會影響到外面元素,反之亦然。我們可以利用BFC的這個特性來做很多事。

十、flex 布局

基本概念

采用 Flex 布局的元素,稱為 Flex 容器(flex container),簡稱"容器"。它的所有子元素自動成為容器成員,稱為 Flex 項目(flex item),簡稱"項目"。

容器默認(rèn)存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。主軸的開始位置(與邊框的交叉點)叫做main start,結(jié)束位置叫做main end;交叉軸的開始位置叫做cross start,結(jié)束位置叫做cross end。

項目默認(rèn)沿主軸排列。單個項目占據(jù)的主軸空間叫做main size,占據(jù)的交叉軸空間叫做cross size。

容器的屬性:

1.flex-direction: 屬性決定主軸的方向(即項目的排列方向)

row(默認(rèn)值):主軸為水平方向,起點在左端。
row-reverse:主軸為水平方向,起點在右端。
column:主軸為垂直方向,起點在上沿。
column-reverse:主軸為垂直方向,起點在下沿。

2.flex-wrap :默認(rèn)情況下,項目都排在一條線(又稱"軸線")上

nowrap(默認(rèn)):不換行。
wrap:換行,第一行在上方。
wrap-reverse:換行,第一行在下方。

3.flex-flow:是flex-direction屬性和flex-wrap屬性的簡寫形式

4.justify-content:定義了項目在主軸上的對齊方式

flex-start(默認(rèn)值):左對齊
flex-end:右對齊
center: 居中
space-between:兩端對齊,項目之間的間隔都相等。
space-around:每個項目兩側(cè)的間隔相等。

所以,項目之間的間隔比項目與邊框的間隔大一倍。

5.align-items:定義項目在交叉軸上如何對齊

flex-start:交叉軸的起點對齊。
flex-end:交叉軸的終點對齊。
center:交叉軸的中點對齊。
baseline: 項目的第一行文字的基線對齊。
stretch(默認(rèn)值):如果項目未設(shè)置高度或設(shè)為auto,將占滿整個容器的高度。

6.align-content:定義了多根軸線的對齊方式。

如果項目只有一根軸線,該屬性不起作用flex-start:與交叉軸的起點對齊。
flex-end:與交叉軸的終點對齊。
center:與交叉軸的中點對齊。
space-between:與交叉軸兩端對齊,軸線之間的間隔平均分布。
space-around:每根軸線兩側(cè)的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。
stretch(默認(rèn)值):軸線占滿整個交叉軸。

項目的屬性order屬性定義項目的排列順序。

數(shù)值越小,排列越靠前,默認(rèn)為0。

flex-shrink屬性定義了項目的縮小比例,默認(rèn)為1,即如果空間不足,該項目將縮小。
flex-basis屬性定義了在分配多余空間之前,項目占據(jù)的主軸空間(main size)。
flex屬性是flex-grow, flex-shrink 和 flex-basis的簡寫,默認(rèn)值為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)格線之間的空間,可以認(rèn)為是一行或者一列。
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盒模型為標(biāo)準(zhǔn)模型或IE模型。標(biāo)準(zhǔn)模型的寬度只包括content,二IE模型包括border和padding

box-sizing屬性可以為三個值之一:

content-box,默認(rèn)值,只計算內(nèi)容的寬度,border和padding不計算入width之內(nèi)
padding-box,padding計算入寬度內(nèi)
border-box,border和padding計算入寬度之內(nèi)

十三、硬件加速

有時候動畫可能會導(dǎo)致用戶的電腦卡頓,你可以在特定元素中使用硬件加速來避免這個問題:

.block {    transform: translateZ(0);}

你并不會察覺有什么不同,但瀏覽器會為這個元素進(jìn)行3D硬件加速,在will-change這個特殊屬性未被全面支持之前,這個方法還是很有用的。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
移動端 h5開發(fā)相關(guān)內(nèi)容總結(jié)
你可能不知道的10個CSS新功能(2021版)
移動端 h5開發(fā)相關(guān)內(nèi)容總結(jié)——CSS篇
全棧工程師必須要掌握的前端CSS技能
display 的 32 種寫法
CSS 中你需要知道 auto 的一切!
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服