css挺有趣的一門學問,但是好些個自認為「 邏輯清晰,能言善辯 」的後端程式設計師,他就是學不會~
hhh……狂笑。
web前端面試 —— CSS部分
1. css sprite 是什麼,有什麼優缺點
概念:將多個⼩圖⽚拼接到⼀個圖⽚中。通過 background-position 和 元素尺⼨ 調節需要顯示的背景圖案。
優點:
a- 減少 HTTP 請求數,極⼤地提⾼⻚⾯加載速度
b- 增加圖⽚信息重複度,提⾼壓縮⽐,減少圖⽚⼤⼩c- 更換⻛格⽅便,只需在⼀張或⼏張圖⽚上修改顏⾊或樣式即可實現
缺點:
a- 圖⽚合併麻煩b- 維護麻煩,修改⼀個圖⽚可能需要從新布局整個圖⽚,樣式
2. display: none; 與 visibility: hidden; 的區別
聯繫:它們都能讓元素不可⻅
區別:
display:none ;會讓元素完全從渲染樹中消失,渲染的時候不佔據任何空間
visibility: hidden ;不會讓元素從渲染樹消失,渲染時元素繼續佔據空間,只是內容不可⻅
display: none;是⾮繼承屬性,⼦孫節點消失是由於元素從渲染樹消失造成,通過修改⼦孫節點屬性⽆法顯示;
visibility: hidden; 是繼承屬性,⼦孫節點消失是由於繼承了 hidden ,通過設置 visibility: visible; 可以讓⼦孫節點顯式
修改常規流中元素的 display 通常會造成⽂檔重排。
修改 visibility 屬性只會造成本元素的重繪。
讀屏器不會讀取 display: none ;元素內容;會讀取 visibility: hidden; 元素內容
3. link 與 @import 的區別
① link 是 HTML ⽅式, @import 是CSS⽅式
② link 最⼤限度⽀持並⾏下載, @import 過多嵌套導致串⾏下載,出現 FOUC (⽂檔樣式短暫失效)
③ link 可以通過 rel="alternate stylesheet" 指定候選樣式
④ 瀏覽器對 link ⽀持早於 @import ,可以使⽤ @import 對⽼瀏覽器隱藏樣式
⑤ @import 必須在樣式規則之前,可以在css⽂件中引⽤其他⽂件
⑥ 總體來說:link 優於 @import
4. 什麼是FOUC?如何避免
a- Flash Of Unstyled Content :⽤戶定義樣式表加載之前瀏覽器使⽤默認樣式顯示⽂檔,⽤戶樣式加載渲染之後再從新顯示⽂檔,造成⻚⾯閃爍。
b- 解決⽅法:把樣式表放到⽂檔的 <head>
5. 如何創建塊級格式化上下⽂(block formatting context),BFC有什麼用?
作⽤:
可以包含浮動元素不被浮動元素覆蓋
a- 如果 display 取值為 none ,那麼 position 和 float 都不起作⽤,這種情況下元素不產⽣框
b- 如果 position 取值為 absolute 或者 fixed ,框就是絕對定位的, float 的計算值為 none , display 根據下⾯的表格進⾏調整
c- 如果 float 不是 none ,框是浮動的, display 根據下表進⾏調整否則,
d- 如果元素是根元素, display 根據下表進⾏調整
e- 其他情況下 display 的值為指定值
f- 總結起來:絕對定位、浮動、根元素都需要調整 display
① ⽗級 div 定義 height
② 結尾處加空 div 標籤 clear:both
③ ⽗級 div 定義偽類 :after 和 zoom
④ ⽗級 div 定義 overflow:hidden
⑤ ⽗級 div 也浮動,需要定義寬度結尾處加 br 標籤 clear:both
8. 為什麼要初始化CSS樣式?
當然,初始化樣式會對 SEO 有⼀定的影響,但⻥和熊掌不可兼得,但⼒求影響最⼩的情況下初始化
9 css3有哪些新特性
新增各種 css 選擇器圓⻆ border-radius 多列布局陰影和反射線性漸變CSS3新增偽類有那些?
p:first-of-type 選擇屬於其⽗元素的⾸個 <p> 元素的每個 <p> 元素。
10 display有哪些值?說明他們的作⽤
inline-block 象⾏內元素⼀樣顯示,但其內容象塊類型元素⼀樣顯示。list-item 象塊類型元素⼀樣顯示,並添加樣式列表標記。
11. 介紹⼀下標準的CSS的盒⼦模型?低版本IE的盒⼦模型有什麼不同的?
有兩種, IE 盒⼦模型、 W3C 盒⼦模型;
盒模型:內容(content)、填充( padding )、邊界( margin )、 邊框( border );
區 別:IE 的c ontent 部分把 border 和 padding 計算了進去;
12. CSS優先級算法如何計算?
優先級就近原則,同權重情況下樣式定義最近者為準載⼊樣式以最後載⼊的定位為準優先級為: !important > id > class > tag ;
!important ⽐ 內聯優先級⾼
13. 對BFC規範的理解?(配合本篇第5題)
它決定了元素如何對其內容進⾏定位,以及與其他元素的關係和相互作⽤
14. 談談浮動和清除浮動浮動的框可以向左或向右移動,直到他的外邊緣碰到包含框或另⼀個浮動框的邊框為⽌。 由於浮動框不在⽂檔的普通流中,所以⽂檔的普通流的塊框表現得就像浮動框不存在⼀樣。浮動的塊框會漂浮在⽂檔普通流的塊框上。
15. position的值, relative和absolute定位原點是
absolute :⽣成絕對定位的元素,相對於 static 定位以外的第⼀個⽗元素進⾏定位
fixed :⽣成絕對定位的元素,相對於瀏覽器窗⼝進⾏定位
relative :⽣成相對定位的元素,相對於其正常位置進⾏定位
static 默認值。沒有定位,元素出現在正常的流中
inherit 規定從⽗元素繼承 position 屬性的值
16. display:inline-block 什麼時候不會顯示間隙?(攜程)
移除空格使⽤ margin 負值
使⽤ font-size:0
letter-spacing
word-spacing
17. PNG\GIF\JPG的區別及如何選
GIF
8 位像素, 256 ⾊
⽆損壓縮⽀持簡單動畫
⽀持 boolean 透明
適合簡單動畫
JPEG
有損壓縮適合照⽚
PNG
PNG8 類似 GIF 顏⾊上限為 256 ,⽂件⼩,⽀持 alpha 透明度,⽆動畫
18. ⾏內元素 float:left 後是否變為塊級元素?
⾏內元素設置成浮動之後變得更加像是 inline-block
既:⾏內塊級元素,設置成這個屬性的元素會同時擁有⾏內和塊級的特性,最明顯的不同是它的默認寬度不是 100% ,
這時候給⾏內元素設置 padding-top 和 padding-bottom 或者 width 、 height 都是有效果的
19. 在⽹⻚中的應該使⽤奇數還是偶數的字體?為什麼呢?偶數字號相對更容易和 web 設計的其他部分構成⽐例關係
20. ::before 和 :after中雙冒號和單冒號有什麼區別?解釋⼀下這2個偽元素的作⽤。
單冒號( : )⽤於 CSS3 偽類
雙冒號( :: )⽤於 CSS3 偽元素
⽤於區分偽類和偽元素
21. 如果需要⼿動寫動畫,你認為最⼩時間間隔是多久,為什麼?(阿里)
多數顯示器默認頻率是 60Hz ,即 1 秒刷新 60 次,
所以理論上最⼩間隔為:
1/60*1000ms = 16.7ms
22. CSS合併⽅法
避免使⽤ @import 引⼊多個 css ⽂件,可以使⽤ CSS ⼯具將 CSS 合併為⼀個 CSS ⽂件,
例如使⽤ Sass\Compass 等
23. CSS不同選擇器的權重(CSS層疊的規則)
!important 規則最重要,⼤於其它規則
⾏內樣式規則,加 1000
對於選擇器中給定的各個 ID 屬性值,加 100
對於選擇器中給定的各個類屬性、屬性選擇器或者偽類選擇器,加 10對於選擇其中給定的各個元素標籤選擇器,加1
如果權值⼀樣,則按照樣式規則的先後順序來應⽤,順序靠後的覆蓋靠前的規則
position 、
display 、
float 、
width 、
height 、
margin 、
padding 、
top 、
bottom、
left 、
right
25. CSS在性能優化⽅⾯的實踐
css 壓縮與合併、 Gzip 壓縮
css ⽂件放在 head ⾥、不要⽤ @import
儘量⽤縮寫、避免⽤濾鏡、合理使⽤選擇器26. CSS3動畫(簡單動畫的實現,如旋轉等)
依 靠 CSS3 中提出的三 個 屬 性 :transition 、 transform 、 animation
transition :定義了元素在變化過程中是怎麼樣的,包含 transition-property 、transition-duration 、transition-timing-function 、 transition-delay 。
transform :定義元素的變化結果,包含 rotate 、 scale 、 skew 、 translate 。
animation :動畫定義了動作的每⼀幀( @keyframes )有什麼效果,包括 animation-name ,animation-duration 、 animation-timing-function 、 animation-delay 、 animation-iteration-count 、 animation-direction
27 base64的原理及優缺點
優點:可以加密,減少了 HTTTP 請求
缺點:需要消耗 CPU 進⾏編解碼
--請叫我分割線
css這東西搞起來還挺有趣的~
希望面試的時候不要再css上被坑到吧。