摘要:而名作為標(biāo)簽的身份則是唯一的,在頁(yè)面中只能出現(xiàn)一次。會(huì)導(dǎo)致父容器高度塌陷。堆疊順序由元素在文檔中的先后位置決定,后出現(xiàn)的會(huì)在上面。之后的內(nèi)聯(lián)對(duì)象會(huì)被排列在同一行內(nèi)。的作用是允許瀏覽器渲染它,但是不顯示出來(lái),這樣才能實(shí)現(xiàn)清除浮動(dòng)。
CSS 中類 (classes) 和 ID 的區(qū)別。
書寫上的差別:class名用“.”號(hào)開頭來(lái)定義,id名用“#”號(hào)開頭來(lái)定義;
優(yōu)先級(jí)不同(權(quán)重不同)
調(diào)用上的區(qū)別:在同一個(gè)html網(wǎng)頁(yè)頁(yè)面中class是可以被多次調(diào)用的(在不同的地方)。而id名作為標(biāo)簽的身份則是唯一的,id在頁(yè)面中只能出現(xiàn)一次。在js腳本中經(jīng)常會(huì)用到id來(lái)修改一個(gè)標(biāo)簽的屬性
id作為元素的標(biāo)簽,用于區(qū)分不同結(jié)構(gòu)和內(nèi)容,而class作為一個(gè)樣式,它可以應(yīng)用到任何結(jié)構(gòu)和內(nèi)容上。
在布局思路上,一般堅(jiān)持這樣的原則:id是先確定頁(yè)面的結(jié)構(gòu)和內(nèi)容,然后再為它定義樣式:而class相反,它先定義好一類樣式,然后再頁(yè)面中根據(jù)需要把類樣式應(yīng)用到不同的元素和內(nèi)容上面。
在實(shí)際應(yīng)用時(shí),class更多的被應(yīng)用到文字版塊以及頁(yè)面修飾等方面,而id更多地被用來(lái)實(shí)現(xiàn)宏偉布局和設(shè)計(jì)包含塊,或包含框的樣式。
一般原則: 類應(yīng)該應(yīng)用于概念上相似的元素,這些元素可以出現(xiàn)在同一頁(yè)面上的多個(gè)位置,而ID 應(yīng)該應(yīng)用于不同的唯一的元素
“resetting” 和 “normalizing” CSS 之間的區(qū)別?你會(huì)如何選擇,為什么?Normalize 相對(duì)「平和」,注重通用的方案,重置掉該重置的樣式,保留有用的 user agent 樣式,同時(shí)進(jìn)行一些 bug 的修復(fù),這點(diǎn)是 reset 所缺乏的。
Reset 相對(duì)「暴力」,不管你有沒(méi)有用,統(tǒng)統(tǒng)重置成一樣的效果,且影響的范圍很大,講求跨瀏覽器的一致性。
http://jerryzou.com/posts/abo...
Normalize.css是一種CSS reset的替代方案。它們的區(qū)別有:
Normalize.css 保護(hù)了有價(jià)值的默認(rèn)值,Reset通過(guò)為幾乎所有的元素施加默認(rèn)樣式,強(qiáng)行使得元素有相同的視覺(jué)效果。相比之下,Normalize.css保持了許多默認(rèn)的瀏覽器樣式。這就意味著你不用再為所有公共的排版元素重新設(shè)置樣式。當(dāng)一個(gè)元素在不同的瀏覽器中有不同的默認(rèn)值時(shí),Normalize.css會(huì)力求讓這些樣式保持一致并盡可能與現(xiàn)代標(biāo)準(zhǔn)相符合。
Normalize.css 修復(fù)了瀏覽器的bug,它修復(fù)了常見(jiàn)的桌面端和移動(dòng)端瀏覽器的bug。這往往超出了Reset所能做到的范疇。關(guān)于這一點(diǎn),Normalize.css修復(fù)的問(wèn)題包含了HTML5元素的顯示設(shè)置、預(yù)格式化文字的font-size問(wèn)題、在IE9中SVG的溢出、許多出現(xiàn)在各瀏覽器和操作系統(tǒng)中的與表單相關(guān)的bug。
Normalize.css 不會(huì)讓你的調(diào)試工具變的雜亂
Normalize.css 是模塊化的
Normalize.css 擁有詳細(xì)的文檔
選擇Normalize.css ,主要是reset.css為幾乎所有的元素施加默認(rèn)樣式,所以需要對(duì)所有公共的排版元素重新設(shè)置樣式,這是一件很麻煩的工作。
請(qǐng)解釋浮動(dòng) (Floats) 及其工作原理浮動(dòng)出現(xiàn)的最開始出現(xiàn)的意義是用來(lái)讓文字環(huán)繞圖片而已。
float可以自動(dòng)包裹元素。
float會(huì)導(dǎo)致父容器高度塌陷。float為什么會(huì)導(dǎo)致高度塌陷:元素含有浮動(dòng)屬性 –> 破壞inline box –> 破壞line box高度 –> 沒(méi)有高度 –> 塌陷。什么時(shí)候會(huì)塌陷:當(dāng)標(biāo)簽里面的元素只要樣子沒(méi)有實(shí)際高度時(shí)會(huì)塌陷。
浮動(dòng)會(huì)脫離文檔流。產(chǎn)生自己的塊級(jí)格式化上下文。
首先來(lái)看在CSS中疊加上下文形成的原因:
負(fù)邊距:margin為負(fù)值時(shí)元素會(huì)依參考線向外偏移。margin-left/margin-top的參考線為左邊的元素/上面的元素(如無(wú)兄弟元素則為父元素的左內(nèi)側(cè)/上內(nèi)側(cè)),margin-right和margin-bottom的參考線為元素本身的border右側(cè)/border下側(cè)。一般可以利用負(fù)邊距來(lái)就行布局,但沒(méi)有計(jì)算好的話就可能造成元素重疊。堆疊順序由元素在文檔中的先后位置決定,后出現(xiàn)的會(huì)在上面。
position的relative/absolute/fixed定位:當(dāng)為元素設(shè)置position值為relative/absolute/fixed后,元素發(fā)生的偏移可能產(chǎn)生重疊,且z-index屬性被激活。z-index值可以控制定位元素在垂直于顯示屏方向(Z 軸)上的堆疊順序(stack order),值大的元素發(fā)生重疊時(shí)會(huì)在值小的元素上面。
z-index屬性 :z-index只能在position屬性值為relative或absolute或fixed的元素上有效。
基本原理:z-index值可以控制定位元素在垂直于顯示屏方向(Z 軸)上的堆疊順序(stack order),值大的元素發(fā)生重疊時(shí)會(huì)在值小的元素上面。
使用相對(duì)性:z-index值只決定同一父元素中的同級(jí)子元素的堆疊順序。父元素的z-index值(如果有)為子元素定義了堆疊順序(css版堆疊“拼爹”)。向上追溯找不到含有z-index值的父元素的情況下,則可以視為自由的z-index元素,它可以與父元素的同級(jí)兄弟定位元素或其他自由的定位元素來(lái)比較z-index的值,決定其堆疊順序。同級(jí)元素的z-index值如果相同,則堆疊順序由元素在文檔中的先后位置決定,后出現(xiàn)的會(huì)在上面。所以如果當(dāng)你發(fā)現(xiàn)一個(gè)z-index值較大的元素被值較小的元素遮擋了,請(qǐng)先檢查它們之間的dom結(jié)點(diǎn)關(guān)系,多半是因?yàn)槠涓附Y(jié)點(diǎn)含有激活并設(shè)置了z-index值的position定位元素
BFC:塊級(jí)格式上下文。定義:
浮動(dòng)元素和絕對(duì)定位元素,非塊級(jí)盒子的塊級(jí)容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不為“visiable”的塊級(jí)盒子,都會(huì)為他們的內(nèi)容創(chuàng)建新的塊級(jí)格式化上下文。
在一個(gè)塊級(jí)格式化上下文里,盒子從包含塊的頂端開始垂直地一個(gè)接一個(gè)地排列,兩個(gè)盒子之間的垂直的間隙是由他們的margin 值所決定的。兩個(gè)相鄰的塊級(jí)盒子的垂直外邊距會(huì)發(fā)生疊加。
在塊級(jí)格式化上下文中,每一個(gè)盒子的左外邊緣(margin-left)會(huì)觸碰到容器的左邊緣(border-left)(對(duì)于從右到左的格式來(lái)說(shuō),則觸碰到右邊緣),即使存在浮動(dòng)也是如此,除非這個(gè)盒子創(chuàng)建一個(gè)新的塊級(jí)格式化上下文。
BFC詳解: http://www.cnblogs.com/lhb25/...
block,inline和inline-block的概念以及區(qū)別display:block
block元素會(huì)獨(dú)占一行,多個(gè)block元素會(huì)各自新起一行。默認(rèn)情況下,block元素寬度自動(dòng)填滿其父元素寬度。
block元素可以設(shè)置width,height屬性。塊級(jí)元素即使設(shè)置了寬度,仍然是獨(dú)占一行。
block元素可以設(shè)置margin和padding屬性。
display:inline
inline元素不會(huì)獨(dú)占一行,多個(gè)相鄰的行內(nèi)元素會(huì)排列在同一行里,直到一行排列不下,才會(huì)新?lián)Q一行,其寬度隨元素的內(nèi)容而變化。
inline元素設(shè)置width,height屬性無(wú)效。
inline元素的margin和padding屬性,水平方向的padding-left, padding-right, margin-left, margin-right都產(chǎn)生邊距效果;但豎直方向的padding-top,
padding-bottom, margin-top, margin-bottom不會(huì)產(chǎn)生邊距效果。
display:inline-block
就是將對(duì)象呈現(xiàn)為inline對(duì)象,但是對(duì)象的內(nèi)容作為block對(duì)象呈現(xiàn)。之后的內(nèi)聯(lián)對(duì)象會(huì)被排列在同一行內(nèi)。
備注:屬性為inline-block元素之間的空格或者換行在瀏覽器上會(huì)是一個(gè)空白的間隙。且IE6和7是不支持這個(gè)屬性的,需要通過(guò)display:inline;zoom:1做hack處理。
列舉不同的清除浮動(dòng)的技巧,并指出它們各自適用的使用場(chǎng)景添加新的元素、應(yīng)用 clear:both
.clear{clear:both; height: 0; line-height: 0; font-size: 0}123
優(yōu)點(diǎn):簡(jiǎn)單,代碼少,瀏覽器支持好,不容易出現(xiàn)怪問(wèn)題
缺點(diǎn):要增加很多無(wú)效布局,但這是清除浮動(dòng)用的比較多的一種方法。
父級(jí)div定義overflow:auto或者h(yuǎn)idden
//這里添加了一個(gè)class.over-flow{ overflow: auto; zoom: 1; //zoom: 1; 是在處理兼容性問(wèn)題 }123
原理:必須定義width或zoom:1,同時(shí)不能定義height,使用overflow屬性來(lái)清除浮動(dòng)有一點(diǎn)需要注意,overflow屬性共有三個(gè)屬性值:hidden,auto,visible。我們可以使用hiddent和auto值來(lái)清除浮動(dòng),但切記不能使用visible值,如果使用這個(gè)值將無(wú)法達(dá)到清除浮動(dòng)效果。
優(yōu)點(diǎn):簡(jiǎn)單,代碼少,瀏覽器支持好
缺點(diǎn):使用auto時(shí)內(nèi)部寬高超過(guò)父級(jí)div時(shí),會(huì)出現(xiàn)滾動(dòng)條,使用hidden時(shí)會(huì)被隱藏
after 方法
.outer {zoom:1;} /==for IE6/7 Maxthon2==/ .outer :after {clear:both;content:’.’;display:block;width: 0;height: 0;visibility:hidden;}123
其中clear:both;指清除所有浮動(dòng);content: ‘.’; display:block;對(duì)于FF/chrome/opera/IE8不能缺少,其中content()可以取值也可以為空。visibility:hidden;的作用是允許瀏覽器渲染它,但是不顯示出來(lái),這樣才能實(shí)現(xiàn)清除浮動(dòng)。
所以總的來(lái)說(shuō),推薦使用偽類的辦法。
CSS Sprites就是把網(wǎng)頁(yè)中一些背景圖片整合到一張圖片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的組合進(jìn)行背景定位,background-position可以用數(shù)字能精確的定位出背景圖片的位置。
優(yōu)點(diǎn): 當(dāng)頁(yè)面加載時(shí),不是加載每個(gè)多帶帶圖片,而是一次加載整個(gè)組合圖片。這是一個(gè)了不起的改進(jìn),它大大減少了HTTP請(qǐng)求的次數(shù),減輕服務(wù)器壓力,同時(shí)縮短了懸停加載圖片所需要的時(shí)間延遲,使效果更流暢,不會(huì)停頓。
缺點(diǎn):做圖像拼合的時(shí)候很麻煩
解決方案:
主張向前兼容,不考慮向后兼容,
根據(jù)產(chǎn)品的用戶群中各大瀏覽器,來(lái)考慮需要兼容的瀏覽器
把瀏覽器分兩類,一類歷史遺留瀏覽器,一類是現(xiàn)代瀏覽器,然后根據(jù)這個(gè)分類開發(fā)兩個(gè)版本的網(wǎng)站,然后自己定義哪些瀏覽器是歷史遺留版本,歷史遺留版本瀏覽器,是用歷史遺留界面,通過(guò)通告欄告知用戶使用現(xiàn)代瀏覽器,功能更全面,提供好的用戶體驗(yàn)
直接在用戶的瀏覽器不能兼容的時(shí)候,提示用戶至少什么版本的IE和火狐谷歌瀏覽器才能支持(以上方案都失效)
項(xiàng)目開始前就得需要確認(rèn)兼容支持的最低按本是什么,設(shè)計(jì)一個(gè)對(duì)應(yīng)的兼容方案
有哪些的隱藏內(nèi)容的方法 (如果同時(shí)還要保證屏幕閱讀器可用呢)?display:none 文本圖片的隱藏:
缺陷:搜索引擎可能認(rèn)為被隱藏的文字屬于垃圾信息而被忽略
屏幕閱讀器(是為視覺(jué)上有障礙的人設(shè)計(jì)的讀取屏幕內(nèi)容的程序)會(huì)忽略被隱藏的文字,同時(shí)不利于搜索引擎。
visibility: hidden:隱藏內(nèi)容或圖片
缺陷:隱藏的內(nèi)容會(huì)占據(jù)他所應(yīng)該占據(jù)物理空間
Bootstrap中的流式布局;Bootstrap提供了兩種布局方式,固定式布局和流式布局(用em表示的叫做彈性布局,用百分比表示的叫做流體布局)方式,Bootstrap的布局實(shí)際上是在柵格外加個(gè)容器 (Container)
因此兩種布局方式的唯一區(qū)別是:
固定布局加的是固定寬度(width)的容器,
流式布局加的是自適應(yīng)(或叫可變)寬度的容器。
媒體查詢規(guī)則是開發(fā)者能夠在相同的樣式中,針對(duì)不同的媒介來(lái)使用不同的樣式規(guī)則。在CSS2的時(shí)候有media Type的規(guī)則,通過(guò)不同的媒介來(lái)切換不同的CSS樣式。通過(guò)媒體查詢的技術(shù)可以實(shí)現(xiàn)響應(yīng)式布局,適應(yīng)不同終端的開發(fā)。媒體查詢的具體知識(shí)請(qǐng)見(jiàn) CSS3新屬性應(yīng)用文檔。
如何優(yōu)化網(wǎng)頁(yè)的打印樣式?添加打印樣式,為屏幕顯示和打印分別準(zhǔn)備一個(gè)css文件,如下所示:
用于屏幕顯示的css:
用于打印的css:
import方式:
直接把屏幕顯示樣式和打印樣式寫在一個(gè)css文件中:
@media print {}{ h1 { color: black; } h2 {}{ color: gray; } }
@media print里面的內(nèi)容只對(duì)打印出來(lái)的內(nèi)容有效,之外的內(nèi)容就是屏幕顯示的樣式。
其他:
創(chuàng)建一個(gè)不指定媒體類型的樣式表通常很有用(或者利用media=”all”)。當(dāng)你準(zhǔn)備好定義一些特別用
于打印的規(guī)則時(shí),可以只創(chuàng)建一個(gè)多帶帶的樣式表,使任何在打印時(shí)看起來(lái)不好的樣式都失效。使用這種方法的一個(gè)問(wèn)題是必須確保打印機(jī)樣式實(shí)際上確實(shí)覆蓋了主樣式表。可以使用!important.
打印樣式表也應(yīng)有些注意事項(xiàng):
打印樣式表中最好不要用背景圖片,因?yàn)榇蛴C(jī)不能打印CSS中的背景。如要顯示圖片,請(qǐng)使用html插入到頁(yè)面中。
最好不要使用像素作為單位,因?yàn)榇蛴邮奖硪蛴〕鰜?lái)的會(huì)是實(shí)物,所以建議使用pt和cm。
隱藏掉不必要的內(nèi)容。(@print div{display:none;})
打印樣式表中最好少用浮動(dòng)屬性,因?yàn)樗鼈儠?huì)消失。
如果想要知道打印樣式表的效果如何,直接在瀏覽器上選擇打印預(yù)覽就可以了。
備注: 參考: http://blog.csdn.net/pangni/a...
在書寫高效 CSS 時(shí)會(huì)有哪些問(wèn)題需要考慮?樣式是:從右向左的解析一個(gè)選擇器
ID最快,Universal最慢 有四種類型的key selector,解析速度由快到慢依次是:ID、class、tag和universal
不要tag-qualify (永遠(yuǎn)不要這樣做 ul#main-navigation { } ID已經(jīng)是唯一的,不需要Tag來(lái)標(biāo)識(shí),這樣做會(huì)讓選擇器變慢。)
后代選擇器最糟糕(換句話說(shuō),下面這個(gè)選擇器是很低效的: html body ul li a { })
想清楚你為什么這樣寫
CSS3的效率問(wèn)題(CSS3選擇器(比如 :nth-child)能夠漂亮的定位我們想要的元素,又能保證我們的CSS整潔易讀。但是這些神奇的選擇器會(huì)浪費(fèi)很多的瀏覽器資源。)
我們知道#ID速度是最快的,那么我們都用ID,是不是很快。但是我們不應(yīng)該為了效率而犧牲可讀性和可維護(hù)性
使用 CSS 預(yù)處理器的優(yōu)缺點(diǎn)有哪些?缺點(diǎn):簡(jiǎn)單來(lái)說(shuō)CSS預(yù)處理器語(yǔ)言較CSS玩法變得更高級(jí)了,但同時(shí)降低了自己對(duì)最終代碼的控制力。更致命的是提高了門檻,首先是上手門檻,其次是維護(hù)門檻,再來(lái)是團(tuán)隊(duì)整體水平和規(guī)范的門檻。這也造成了初學(xué)學(xué)習(xí)成本的昂貴。
優(yōu)點(diǎn):用一種專門的編程語(yǔ)言,為CSS增加了一些編程的特性,將CSS作為目標(biāo)生成文件,然后開發(fā)者就只要使用這種語(yǔ)言進(jìn)行編碼工作。通俗的說(shuō),CSS預(yù)處理器用一種專門的編程語(yǔ)言,進(jìn)行Web頁(yè)面樣式設(shè)計(jì),然后再編譯成正常的CSS文件,以供項(xiàng)目使用。CSS預(yù)處理器為CSS增加一些編程的特性,無(wú)需考慮瀏覽器的兼容性問(wèn)題,例如你可以在CSS中使用變量、簡(jiǎn)單的邏輯程序、函數(shù)等等在編程語(yǔ)言中的一些基本特性,可以讓你的CSS更加簡(jiǎn)潔、適應(yīng)性更強(qiáng)、可讀性更佳,更易于代碼的維護(hù)等諸多好處。
Webfonts (字體服務(wù)例如:Google Webfonts,Typekit 等等。)
請(qǐng)解釋瀏覽器是如何判斷元素是否匹配某個(gè) CSS 選擇器?瀏覽器先產(chǎn)生一個(gè)元素集合,這個(gè)集合往往由最后一個(gè)部分的索引產(chǎn)生(如果沒(méi)有索引就是所有元素的集合)。然后向上匹配,如果不符合上一個(gè)部分,就把元素從集合中刪除,直到真?zhèn)€選擇器都匹配完,還在集合中的元素就匹配這個(gè)選擇器了。
請(qǐng)描述偽元素 (pseudo-elements) 及其用途偽類用于當(dāng)已有元素處于的某個(gè)狀態(tài)時(shí),為其添加對(duì)應(yīng)的樣式,這個(gè)狀態(tài)是根據(jù)用戶行為而動(dòng)態(tài)變化的。
偽元素用于創(chuàng)建一些不在文檔樹中的元素,并為其添加樣式。
區(qū)別:偽類的操作對(duì)象是文檔樹中已有的元素,而偽元素則創(chuàng)建了一個(gè)文檔數(shù)外的元素。因此,偽類與偽元素的區(qū)別在于:有沒(méi)有創(chuàng)建一個(gè)文檔樹之外的元素
參考: http://www.alloyteam.com/2016...
請(qǐng)解釋你對(duì)盒模型的理解,以及如何在 CSS 中告訴瀏覽器使用不同的盒模型來(lái)渲染你的布局?盒子模型分為兩類:W3C標(biāo)準(zhǔn)盒子模型和IE盒子模型
這兩者的關(guān)鍵區(qū)別就在于:
寬高的計(jì)算:W3C盒子模型——屬性高(height)和屬性寬(width)這兩個(gè)值不包含 填充(padding)和邊框(border)
IE盒子模型——屬性高(height)和屬性寬(width)這兩個(gè)值包含 填充(padding)和邊框(border)
各瀏覽器盒模型的組成結(jié)構(gòu)是一致的,區(qū)別只是在”怪異模式”下寬度和高度的計(jì)算方式,而“標(biāo)準(zhǔn)模式”下則沒(méi)有區(qū)別。
組成結(jié)構(gòu)以寬度為例:總寬度=marginLeft+borderLeft+paddingLeft+contentWidth+paddingRight+borderRight+marginRight(W3C標(biāo)準(zhǔn)盒子模型)。頁(yè)面在“怪異模式”下,css中為元素的width和height設(shè)置的值在標(biāo)準(zhǔn)瀏覽器和ie系列(ie9除外)里的代表的含義是不同的(IE盒子模型)。
因而解決兼容型為題最簡(jiǎn)潔和值得推薦的方式是:下述的第一條。
將頁(yè)面設(shè)為“標(biāo)準(zhǔn)模式”。 添加對(duì)應(yīng)的dtd標(biāo)識(shí),如:
使用hack或者在外面套上一層wrapper。 前提是頁(yè)面處于“怪異模式”,“標(biāo)準(zhǔn)模式”不存在兼容性問(wèn)題。
1、hack的方式
#box { width:100px !important; // ie9,ff,chrome,opera這樣的標(biāo)準(zhǔn)瀏覽器 width:160px; //所有的瀏覽器;它的本意是只對(duì)不認(rèn)識(shí)!important的設(shè)置。可是ie7、ie8也認(rèn)識(shí) +width:160px!important;//ie7 width:160px/0!important;//ie8 padding:0 10px;border:20px solid blue;margin:70px; }
2、wrapper
#box { width:100px; margin:70px; float:left; } .wrapper { padding:0 10px;border:20px solid blue; }
總結(jié):使用“標(biāo)準(zhǔn)模式”即可實(shí)現(xiàn)兼容,不兼容只發(fā)生在“怪異模式”下。而且正常的頁(yè)面基本上都選擇前者,如果選擇后者,麻煩不止于此,一些css技巧也將失靈,如將div居中:div {margin:0 auto;}
請(qǐng)解釋 * { box-sizing: border-box; } 的作用, 并且說(shuō)明使用它有什么好處?設(shè)置以后,相當(dāng)于以怪異模式解析,border和padding全會(huì)在你設(shè)置的寬度內(nèi)部,比如手機(jī)端設(shè)置兩行并且的布局,寬度各為50%,如果不用這個(gè)屬性,設(shè)置border后右邊的div會(huì)下來(lái)錯(cuò)位,設(shè)置這個(gè)屬性,寬度還是50%而不是50%+*px,兩行可以并列顯示
說(shuō)到 IE 的 bug,在 IE6以前的版本中,IE對(duì)盒模型的解析出現(xiàn)一些問(wèn)題,跟其它瀏覽器不同,將 border 與 padding 都包含在 width 之內(nèi)。而另外一些瀏覽器則與它相反,是不包括border和padding的。對(duì)于IE瀏覽器,當(dāng)我們?cè)O(shè)置 box-sizing: content-box; 時(shí),瀏覽器對(duì)盒模型的解釋遵從我們之前認(rèn)識(shí)到的 W3C 標(biāo)準(zhǔn),當(dāng)它定義width和height時(shí),它的寬度不包括border和padding;對(duì)于非IE瀏覽器,當(dāng)我們?cè)O(shè)置box-sizing: border-box; 時(shí),瀏覽器對(duì)盒模型的解釋與 IE6之前的版本相同,當(dāng)它定義width和height時(shí),border和padding則是被包含在寬高之內(nèi)的。內(nèi)容的寬和高可以通過(guò)定義的“width”和 “height”減去相應(yīng)方向的“padding”和“border”的寬度得到。內(nèi)容的寬和高必須保證不能為負(fù),必要時(shí)將自動(dòng)增大該元素border box的尺寸以使其內(nèi)容的寬或高最小為0。
好處:
使用 * { box-sizing: border-box; }能夠統(tǒng)一IE和非IE瀏覽器之間的差異。
解決排版的問(wèn)題,每個(gè)盒子之間排版時(shí)不用考慮padding和border的寬度計(jì)算
請(qǐng)羅列出你所知道的 display 屬性的全部值?display 屬性規(guī)定元素應(yīng)該生成的框的類型。
請(qǐng)解釋 inline 和 inline-block 的區(qū)別?都是display 屬性規(guī)定元素應(yīng)該生成的框的類型。但是block代表塊級(jí)元素,元素前后都有換行符;inline是默認(rèn)的樣式,表示該元素被顯示為內(nèi)聯(lián)元素,元素前后沒(méi)有換行符號(hào)。也就是說(shuō),block元素通常被現(xiàn)實(shí)為獨(dú)立的一塊,會(huì)多帶帶換一行;inline元素則前后不會(huì)產(chǎn)生換行,一系列inline元素都在一行內(nèi)顯示,直到該行排滿。而inline-block代表行內(nèi)塊元素(css2.0新增)。
display:block:
block元素會(huì)獨(dú)占一行,多個(gè)block元素會(huì)各自新起一行。默認(rèn)情況下,block元素寬度自動(dòng)填滿其父元素寬度。
block元素可以設(shè)置width,height屬性。塊級(jí)元素即使設(shè)置了寬度,仍然是獨(dú)占一行。
block元素可以設(shè)置margin和padding屬性。
display:inline:
inline元素不會(huì)獨(dú)占一行,多個(gè)相鄰的行內(nèi)元素會(huì)排列在同一行里,直到一行排列不下,才會(huì)新?lián)Q一行,其寬度隨元素的內(nèi)容而變化。
inline元素設(shè)置width,height屬性無(wú)效。
inline元素的margin和padding屬性,水平方向的padding-left, padding-right, margin-left, margin-right都產(chǎn)生邊距效果;但豎直方向的padding-top, padding-bottom, margin-top, margin-bottom不會(huì)產(chǎn)生邊距效果。
display:inline-block:
簡(jiǎn)單來(lái)說(shuō)就是將對(duì)象呈現(xiàn)為inline對(duì)象,但是對(duì)象的內(nèi)容作為block對(duì)象呈現(xiàn)。之后的內(nèi)聯(lián)對(duì)象會(huì)被排列在同一行內(nèi)。比如我們可以給一個(gè)link(a元素)inline-block屬性值,使其既具有block的寬度高度特性又具有inline的同行特性
各個(gè)屬性的值:
static:默認(rèn)值。沒(méi)有定位,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)。
relative:生成相對(duì)定位的元素,通過(guò)top,bottom,left,right的設(shè)置相對(duì)于其正常位置進(jìn)行定位。可通過(guò)z-index進(jìn)行層次分級(jí)。
absolute:生成絕對(duì)定位的元素,相對(duì)于 static 定位以外的第一個(gè)父元素進(jìn)行定位。元素的位置通過(guò) “l(fā)eft”, “top”, “right” 以及 “bottom” 屬性進(jìn)行規(guī)定。可通過(guò)z-index進(jìn)行層次分級(jí)。
fixed:生成絕對(duì)定位的元素,相對(duì)于瀏覽器窗口進(jìn)行定位。元素的位置通過(guò) “l(fā)eft”, “top”, “right” 以及 “bottom” 屬性進(jìn)行規(guī)定。可通過(guò)z-index進(jìn)行層次分級(jí)。
relative和absolute進(jìn)行對(duì)比分析:
relative。定位為relative的元素脫離正常的文本流中,但其在文本流中的位置依然存在。
absolute。定位為absolute的層脫離正常文本流,但與relative的區(qū)別是其在正常流中的位置不在存在。
fixed:定位為絕對(duì)定位,脫離正常文本流,相對(duì)于瀏覽器窗口進(jìn)行定位
relative和absolute與fixed進(jìn)行對(duì)比分析:
relative定位的層總是相對(duì)于其最近的父元素,無(wú)論其父元素是何種定位方式。
absolute定位的層總是相對(duì)于其最近的定義為absolute或relative的父層,而這個(gè)父層并不一定是其直接父層。如果其父層中都未定義absolute或relative,則其將相對(duì)body進(jìn)行定位,
fixed:生成絕對(duì)定位的元素,相對(duì)于瀏覽器窗口進(jìn)行定位。
CSS中字母 ‘C’ 的意思是疊層 (Cascading)。請(qǐng)問(wèn)在確定樣式的過(guò)程中優(yōu)先級(jí)是如何決定的 (請(qǐng)舉例)?如何有效使用此系統(tǒng)? 請(qǐng)寫出一些塊級(jí)元素、行內(nèi)元素、行內(nèi)塊元素?塊級(jí):div、p、ul、ol、body、from
行內(nèi):?title ?lable ?span a
行內(nèi)塊: ?img ?input ?td
解釋一下盒子模型?盒子模型的三維立體結(jié)構(gòu):?第一層:border ? 第二層:內(nèi)容+padding ? ?第三層:背景圖片 ? ? 第四層:背景顏色 ? ? ?第五層:外邊距
什么是語(yǔ)義化的html標(biāo)簽?語(yǔ)義化的HTML就是寫出的HTML代碼,符合內(nèi)容的結(jié)構(gòu)化(內(nèi)容語(yǔ)義化),選擇合適的標(biāo)簽(代碼語(yǔ)義化),能夠便于開發(fā)者閱讀和寫出更優(yōu)雅的代碼的同時(shí)讓瀏覽器的爬蟲和機(jī)器很好地解析。
語(yǔ)義化有利于SEO,有利于搜索引擎爬蟲更好的理解我們的網(wǎng)頁(yè),從而獲取更多的有效信息,提升網(wǎng)頁(yè)的權(quán)重。
在沒(méi)有CSS的時(shí)候能夠清晰的看出網(wǎng)頁(yè)的結(jié)構(gòu),增強(qiáng)可讀性。
便于團(tuán)隊(duì)開發(fā)和維護(hù),語(yǔ)義化的HTML可以讓開發(fā)者更容易的看明白,從而提高團(tuán)隊(duì)的效率和協(xié)調(diào)能力。
支持多終端設(shè)備的瀏覽器渲染。
CSS 有哪些選擇器?權(quán)重計(jì)算及優(yōu)先級(jí)?id選擇器、類選擇器、元素選擇器、全局選擇器、組合選擇器、繼承選擇器、偽類選擇器
權(quán)重計(jì)算:
第一等級(jí):代表內(nèi)聯(lián)樣式,如style="",權(quán)值為 1000
第二等級(jí):代表id選擇器,如#content,權(quán)值為100
第三等級(jí):代表類,偽類和屬性選擇器,如.content,權(quán)值為10
第四等級(jí):代表標(biāo)簽選擇器和偽元素選擇器,如div p,權(quán)值為1
Css 語(yǔ)句權(quán)重由選擇器的權(quán)值相加可得。
樣式優(yōu)先級(jí):!important>行內(nèi)樣式>內(nèi)部樣式>外部樣式
!important聲明的樣式優(yōu)先級(jí)最高,如果沖突再進(jìn)行計(jì)算。
如果優(yōu)先級(jí)相同,則選擇最后出現(xiàn)的樣式。
繼承得到的樣式的優(yōu)先級(jí)最低。
CSS 引入方式有哪些?link和 @important的區(qū)別?CSS的引入方式共有三種:
行內(nèi)樣式(使用style屬性引入CSS樣式)
內(nèi)部樣式表(在style標(biāo)簽中書寫CSS代碼。style標(biāo)簽寫在head標(biāo)簽中)
外部樣式表(鏈接式、導(dǎo)入式)
鏈接:
導(dǎo)入:
鏈接和道路的區(qū)別:
:
屬于XHTML
優(yōu)先加載CSS文件到頁(yè)面
@import:
屬于CSS2.1
先加載HTML結(jié)構(gòu)在加載CSS文件
CSS選擇器有哪些?哪些屬性可以繼承?CSS選擇符:id選擇器(#myid)、類選擇器(.myclassname)、標(biāo)簽選擇器(div, h1, p)、相鄰選擇器(h1 + p)、子選擇器(ul > li)、后代選擇器(li a)、通配符選擇器(*)、屬性選擇器(a[rel=”external”])、偽類選擇器(a:hover, li:nth-child)
可繼承的屬性:font-size, font-family, color
不可繼承的樣式:border, padding, margin, width, height
優(yōu)先級(jí)(就近原則):!important > [ id > class > tag ]
!important 比內(nèi)聯(lián)優(yōu)先級(jí)高
RGBA和透明度
background-image background-origin(content-box/padding-box/border-box) background-size background-repeat
word-wrap(對(duì)長(zhǎng)的不可分割單詞換行)word-wrap:break-word
文字陰影:text-shadow: 5px 5px 5px #FF0000;(水平陰影,垂直陰影,模糊距離,陰影顏色)
font-face屬性:定義自己的字體
圓角(邊框半徑):border-radius 屬性用于創(chuàng)建圓角
邊框圖片:border-image: url(border.png) 30 30 round
盒陰影:box-shadow: 10px 10px 5px #888888
媒體查詢:定義兩套css,當(dāng)瀏覽器的尺寸變化時(shí)會(huì)采用不同的屬性
請(qǐng)解釋一下CSS3的flexbox(彈性盒布局模型),以及適用場(chǎng)景?該布局模型的目的是提供一種更加高效的方式來(lái)對(duì)容器中的條目進(jìn)行布局、對(duì)齊和分配空間。在傳統(tǒng)的布局方式中,block 布局是把塊在垂直方向從上到下依次排列的;而 inline 布局則是在水平方向來(lái)排列。彈性盒布局并沒(méi)有這樣內(nèi)在的方向限制,可以由開發(fā)人員自由操作。
適用場(chǎng)景:彈性布局適合于移動(dòng)前端開發(fā),在Android和ios上也完美支持。
首先,需要把元素的寬度、高度設(shè)為0。然后設(shè)置邊框樣式。
width: 0; height: 0; border-top: 40px solid transparent; border-left: 40px solid transparent; border-right: 40px solid transparent; border-bottom: 40px solid #ff0000;一個(gè)滿屏品字布局如何設(shè)計(jì)?
第一種真正的品字:
三塊高寬是確定的;
上面那塊用margin: 0 auto;居中;
下面兩塊用float或者inline-block不換行;
用margin調(diào)整位置使他們居中。
第二種全屏的品字布局:
上面的div設(shè)置成100%,下面的div分別寬50%,然后使用float或者inline使其不換行。
不同瀏覽器的標(biāo)簽?zāi)J(rèn)的margin和padding不一樣。*{margin:0;padding:0;}
IE6雙邊距bug:塊屬性標(biāo)簽float后,又有橫行的margin情況下,在IE6顯示margin比設(shè)置的大。hack:display:inline;將其轉(zhuǎn)化為行內(nèi)屬性。
漸進(jìn)識(shí)別的方式,從總體中逐漸排除局部。首先,巧妙的使用“9”這一標(biāo)記,將IE瀏覽器從所有情況中分離出來(lái)。接著,再次使用“+”將IE8和IE7、IE6分離開來(lái),這樣IE8已經(jīng)獨(dú)立識(shí)別。
{ background-color:#f1ee18;/*所有識(shí)別*/ .background-color:#00deff9; /*IE6、7、8識(shí)別*/ +background-color:#a200ff;/*IE6、7識(shí)別*/ _background-color:#1e0bd1;/*IE6識(shí)別*/ }
設(shè)置較小高度標(biāo)簽(一般小于10px),在IE6,IE7中高度超出自己設(shè)置高度。hack:給超出高度的標(biāo)簽設(shè)置overflow:hidden;或者設(shè)置行高line-height 小于你設(shè)置的高度。
IE下,可以使用獲取常規(guī)屬性的方法來(lái)獲取自定義屬性,也可以使用getAttribute()獲取自定義屬性;Firefox下,只能使用getAttribute()獲取自定義屬性。解決方法:統(tǒng)一通過(guò)getAttribute()獲取自定義屬性。
Chrome 中文界面下默認(rèn)會(huì)將小于 12px 的文本強(qiáng)制按照 12px 顯示,可通過(guò)加入 CSS 屬性 -webkit-text-size-adjust: none; 解決。
超鏈接訪問(wèn)過(guò)后hover樣式就不出現(xiàn)了,被點(diǎn)擊訪問(wèn)過(guò)的超鏈接樣式不再具有hover和active了。解決方法是改變CSS屬性的排列順序:L-V-H-A ( love hate ): a:link {} a:visited {} a:hover {} a:active {}
為什么要初始化CSS樣式?因?yàn)闉g覽器的兼容問(wèn)題,不同瀏覽器對(duì)有些標(biāo)簽的默認(rèn)值是不同的,如果沒(méi)對(duì)CSS初始化往往會(huì)出現(xiàn)瀏覽器之間的頁(yè)面顯示差異。
absolute的containing block計(jì)算方式跟正常流有什么不同?無(wú)論屬于哪種,都要先找到其祖先元素中最近的 position 值不為 static 的元素,然后再判斷:
若此元素為 inline 元素,則 containing block 為能夠包含這個(gè)元素生成的第一個(gè)和最后一個(gè) inline box 的 padding box (除 margin, border 外的區(qū)域) 的最小矩形;
否則,則由這個(gè)祖先元素的 padding box 構(gòu)成。
如果都找不到,則為 initial containing block。
補(bǔ)充:
static(默認(rèn)的)/relative:簡(jiǎn)單說(shuō)就是它的父元素的內(nèi)容框(即去掉padding的部分)
absolute: 向上找最近的定位為absolute/relative的元素
fixed: 它的containing block一律為根元素(html/body)
CSS里的visibility屬性有個(gè)collapse屬性值?在不同瀏覽器下以后什么區(qū)別?當(dāng)一個(gè)元素的visibility屬性被設(shè)置成collapse值后,對(duì)于一般的元素,它的表現(xiàn)跟hidden是一樣的。
chrome中,使用collapse值和使用hidden沒(méi)有區(qū)別。
firefox,opera和IE,使用collapse值和使用display:none沒(méi)有什么區(qū)別。
display:none與visibility:hidden的區(qū)別?display:none 不顯示對(duì)應(yīng)的元素,在文檔布局中不再分配空間(回流+重繪)
visibility:hidden 隱藏對(duì)應(yīng)元素,在文檔布局中仍保留原來(lái)的空間(重繪)
position跟display、overflow、float這些特性相互疊加后會(huì)怎么樣?display屬性規(guī)定元素應(yīng)該生成的框的類型;position屬性規(guī)定元素的定位類型;float屬性是一種布局方式,定義元素在哪個(gè)方向浮動(dòng)。
類似于優(yōu)先級(jí)機(jī)制:position:absolute/fixed優(yōu)先級(jí)最高,有他們?cè)跁r(shí),float不起作用,display值需要調(diào)整。float 或者absolute定位的元素,只能是塊元素或表格。
BFC規(guī)定了內(nèi)部的Block Box如何布局。
定位方案:
內(nèi)部的Box會(huì)在垂直方向上一個(gè)接一個(gè)放置。
Box垂直方向的距離由margin決定,屬于同一個(gè)BFC的兩個(gè)相鄰Box的margin會(huì)發(fā)生重疊。
每個(gè)元素的margin box 的左邊,與包含塊border box的左邊相接觸。
BFC的區(qū)域不會(huì)與float box重疊。
BFC是頁(yè)面上的一個(gè)隔離的獨(dú)立容器,容器里面的子元素不會(huì)影響到外面的元素。
計(jì)算BFC的高度時(shí),浮動(dòng)元素也會(huì)參與計(jì)算。
滿足下列條件之一就可觸發(fā)BFC:
根元素,即html
float的值不為none(默認(rèn))
overflow的值不為visible(默認(rèn))
display的值為inline-block、table-cell、table-caption
position的值為absolute或fixed
為什么會(huì)出現(xiàn)浮動(dòng)和什么時(shí)候需要清除浮動(dòng)?清除浮動(dòng)的方式?浮動(dòng)元素碰到包含它的邊框或者浮動(dòng)元素的邊框停留。由于浮動(dòng)元素不在文檔流中,所以文檔流的塊框表現(xiàn)得就像浮動(dòng)框不存在一樣。浮動(dòng)元素會(huì)漂浮在文檔流的塊框上。
浮動(dòng)帶來(lái)的問(wèn)題:
父元素的高度無(wú)法被撐開,影響與父元素同級(jí)的元素
與浮動(dòng)元素同級(jí)的非浮動(dòng)元素(內(nèi)聯(lián)元素)會(huì)跟隨其后
若非第一個(gè)元素浮動(dòng),則該元素之前的元素也需要浮動(dòng),否則會(huì)影響頁(yè)面顯示的結(jié)構(gòu)。
清除浮動(dòng)的方式:
父級(jí)div定義height
最后一個(gè)浮動(dòng)元素后加空div標(biāo)簽 并添加樣式clear:both。
包含浮動(dòng)元素的父標(biāo)簽添加樣式overflow為hidden或auto。
父級(jí)div定義zoom
上下margin重合的問(wèn)題在重合元素外包裹一層容器,并觸發(fā)該容器生成一個(gè)BFC。
例子:
設(shè)置元素浮動(dòng)后,該元素的display值是多少?.aside { margin-bottom: 100px; width: 100px; height: 150px; background: #f66; } .main { margin-top: 100px; height: 200px; background: #fcc; } .text{ /*盒子main的外面包一個(gè)div,通過(guò)改變此div的屬性使兩個(gè)盒子分屬于兩個(gè)不同的BFC,以此來(lái)阻止margin重疊*/ overflow: hidden; //此時(shí)已經(jīng)觸發(fā)了BFC屬性。 }
自動(dòng)變成display:block
移動(dòng)端的布局用過(guò)媒體查詢嗎?通過(guò)媒體查詢可以為不同大小和尺寸的媒體定義不同的css,適應(yīng)相應(yīng)的設(shè)備的顯示。
里邊CSS : @media only screen and (max-device-width:480px) {/css樣式/}
CSS優(yōu)化、提高性能的方法有哪些?避免過(guò)度約束
避免后代選擇符
避免鏈?zhǔn)竭x擇符
使用緊湊的語(yǔ)法
避免不必要的命名空間
避免不必要的重復(fù)
最好使用表示語(yǔ)義的名字。一個(gè)好的類名應(yīng)該是描述他是什么而不是像什么
避免!important,可以選擇其他選擇器
盡可能的精簡(jiǎn)規(guī)則,你可以合并不同類里的重復(fù)規(guī)則
瀏覽器是怎樣解析CSS選擇器的?CSS選擇器的解析是從右向左解析的。若從左向右的匹配,發(fā)現(xiàn)不符合規(guī)則,需要進(jìn)行回溯,會(huì)損失很多性能。若從右向左匹配,先找到所有的最右節(jié)點(diǎn),對(duì)于每一個(gè)節(jié)點(diǎn),向上尋找其父節(jié)點(diǎn)直到找到根元素或滿足條件的匹配規(guī)則,則結(jié)束這個(gè)分支的遍歷。兩種匹配規(guī)則的性能差別很大,是因?yàn)閺挠蚁蜃蟮钠ヅ湓诘谝徊骄秃Y選掉了大量的不符合條件的最右節(jié)點(diǎn)(葉子節(jié)點(diǎn)),而從左向右的匹配規(guī)則的性能都浪費(fèi)在了失敗的查找上面。
而在 CSS 解析完畢后,需要將解析的結(jié)果與 DOM Tree 的內(nèi)容一起進(jìn)行分析建立一棵 Render Tree,最終用來(lái)進(jìn)行繪圖。在建立 Render Tree 時(shí)(WebKit 中的「Attachment」過(guò)程),瀏覽器就要為每個(gè) DOM Tree 中的元素根據(jù) CSS 的解析結(jié)果(Style Rules)來(lái)確定生成怎樣的 Render Tree。
使用偶數(shù)字體。偶數(shù)字號(hào)相對(duì)更容易和 web 設(shè)計(jì)的其他部分構(gòu)成比例關(guān)系。Windows 自帶的點(diǎn)陣宋體(中易宋體)從 Vista 開始只提供 12、14、16 px 這三個(gè)大小的點(diǎn)陣,而 13、15、17 px時(shí)用的是小一號(hào)的點(diǎn)。(即每個(gè)字占的空間大了 1 px,但點(diǎn)陣沒(méi)變),于是略顯稀疏。
margin和padding分別適合什么場(chǎng)景使用?何時(shí)使用margin:
需要在border外側(cè)添加空白
空白處不需要背景色
上下相連的兩個(gè)盒子之間的空白,需要相互抵消時(shí)。
何時(shí)使用padding:
需要在border內(nèi)側(cè)添加空白
空白處需要背景顏色
上下相連的兩個(gè)盒子的空白,希望為兩者之和。
兼容性的問(wèn)題:在IE5 IE6中,為float的盒子指定margin時(shí),左側(cè)的margin可能會(huì)變成兩倍的寬度。通過(guò)改變padding或者指定盒子的display:inline解決。
元素豎向的百分比設(shè)定是相對(duì)于容器的高度嗎?當(dāng)按百分比設(shè)定一個(gè)元素的寬度時(shí),它是相對(duì)于父容器的寬度計(jì)算的,但是,對(duì)于一些表示豎向距離的屬性,例如 padding-top , padding-bottom , margin-top , margin-bottom 等,當(dāng)按百分比設(shè)定它們時(shí),依據(jù)的也是父容器的寬度,而不是高度。
全屏滾動(dòng)的原理是什么?用到了CSS的哪些屬性?原理:有點(diǎn)類似于輪播,整體的元素一直排列下去,假設(shè)有5個(gè)需要展示的全屏頁(yè)面,那么高度是500%,只是展示100%,剩下的可以通過(guò)transform進(jìn)行y軸定位,也可以通過(guò)margin-top實(shí)現(xiàn)
overflow:hidden;transition:all 1000ms ease;什么是響應(yīng)式設(shè)計(jì)?響應(yīng)式設(shè)計(jì)的基本原理是什么?如何兼容低版本的IE?
響應(yīng)式網(wǎng)站設(shè)計(jì)(Responsive Web design)是一個(gè)網(wǎng)站能夠兼容多個(gè)終端,而不是為每一個(gè)終端做一個(gè)特定的版本。
基本原理是通過(guò)媒體查詢檢測(cè)不同的設(shè)備屏幕尺寸做處理。
頁(yè)面頭部必須有meta聲明的viewport。
視差滾動(dòng)效果?
視差滾動(dòng)(Parallax Scrolling)通過(guò)在網(wǎng)頁(yè)向下滾動(dòng)的時(shí)候,控制背景的移動(dòng)速度比前景的移動(dòng)速度慢來(lái)創(chuàng)建出令人驚嘆的3D效果。
CSS3實(shí)現(xiàn): 優(yōu)點(diǎn):開發(fā)時(shí)間短、性能和開發(fā)效率比較好,缺點(diǎn)是不能兼容到低版本的瀏覽器
jQuery實(shí)現(xiàn): 通過(guò)控制不同層滾動(dòng)速度,計(jì)算每一層的時(shí)間,控制滾動(dòng)效果。
優(yōu)點(diǎn):能兼容到各個(gè)版本的,效果可控性好
缺點(diǎn):開發(fā)起來(lái)對(duì)制作者要求高
插件實(shí)現(xiàn)方式: 例如:parallax-scrolling,兼容性十分好
::before 和 :after中雙冒號(hào)和單冒號(hào)有什么區(qū)別?解釋一下這2個(gè)偽元素的作用單冒號(hào)(:)用于CSS3偽類,雙冒號(hào)(::)用于CSS3偽元素。
::before就是以一個(gè)子元素的存在,定義在元素主體內(nèi)容之前的一個(gè)偽元素。并不存在于dom之中,只存在在頁(yè)面之中。
:before 和 :after 這兩個(gè)偽元素,是在CSS2.1里新出現(xiàn)的。起初,偽元素的前綴使用的是單冒號(hào)語(yǔ)法,但隨著Web的進(jìn)化,在CSS3的規(guī)范里,偽元素的語(yǔ)法被修改成使用雙冒號(hào),成為::before ::after
你對(duì)line-height是如何理解的?行高是指一行文字的高度,具體說(shuō)是兩行文字間基線的距離。CSS中起高度作用的是height和line-height,沒(méi)有定義height屬性,最終其表現(xiàn)作用一定是line-height。
單行文本垂直居中:把line-height值設(shè)置為height一樣大小的值可以實(shí)現(xiàn)單行文字的垂直居中,其實(shí)也可以把height刪除。
多行文本垂直居中:需要設(shè)置display屬性為inline-block。
怎么讓Chrome支持小于12px 的文字?p{font-size:10px;-webkit-transform:scale(0.8);} //0.8是縮放比例讓頁(yè)面里的字體變清晰,變細(xì)用CSS怎么做?
-webkit-font-smoothing在window系統(tǒng)下沒(méi)有起作用,但是在IOS設(shè)備上起作用-webkit-font-smoothing:antialiased是最佳的,灰度平滑。
position:fixed;在android下無(wú)效怎么處理?如果需要手動(dòng)寫動(dòng)畫,你認(rèn)為最小時(shí)間間隔是多久,為什么?
多數(shù)顯示器默認(rèn)頻率是60Hz,即1秒刷新60次,所以理論上最小間隔為1/60*1000ms = 16.7ms
li與li之間有看不見(jiàn)的空白間隔是什么原因引起的?有什么解決辦法?行框的排列會(huì)受到中間空白(回車空格)等的影響,因?yàn)榭崭褚矊儆谧址?這些空白也會(huì)被應(yīng)用樣式,占據(jù)空間,所以會(huì)有間隔,把字符大小設(shè)為0,就沒(méi)有空格了。
解決方法:
可以將
浮動(dòng)li中float:left
在ul中用font-size:0(谷歌不支持);可以使用letter-space:-3px
display:inline-block 什么時(shí)候會(huì)顯示間隙?有空格時(shí)候會(huì)有間隙 解決:移除空格
margin正值的時(shí)候 解決:margin使用負(fù)值
使用font-size時(shí)候 解決:font-size:0、letter-spacing、word-spacing
有一個(gè)高度自適應(yīng)的div,里面有兩個(gè)div,一個(gè)高度100px,希望另一個(gè)填滿剩下的高度外層div使用position:relative;高度要求自適應(yīng)的div使用position: absolute; top: 100px; bottom: 0; left: 0
png、jpg、gif 這些圖片格式解釋一下,分別什么時(shí)候用。有沒(méi)有了解過(guò)webp?png是便攜式網(wǎng)絡(luò)圖片(Portable Network Graphics)是一種無(wú)損數(shù)據(jù)壓縮位圖文件格式.優(yōu)點(diǎn)是:壓縮比高,色彩好。 大多數(shù)地方都可以用。
jpg是一種針對(duì)相片使用的一種失真壓縮方法,是一種破壞性的壓縮,在色調(diào)及顏色平滑變化做的不錯(cuò)。在www上,被用來(lái)儲(chǔ)存和傳輸照片的格式。
gif是一種位圖文件格式,以8位色重現(xiàn)真色彩的圖像。可以實(shí)現(xiàn)動(dòng)畫效果.
webp格式是谷歌在2010年推出的圖片格式,壓縮率只有jpg的2/3,大小比png小了45%。缺點(diǎn)是壓縮的時(shí)間更久了,兼容性不好,目前谷歌和opera支持。
style標(biāo)簽寫在body后與body前有什么區(qū)別?頁(yè)面加載自上而下 當(dāng)然是先加載樣式。
寫在body標(biāo)簽后由于瀏覽器以逐行方式對(duì)HTML文檔進(jìn)行解析,當(dāng)解析到寫在尾部的樣式表(外聯(lián)或?qū)懺趕tyle標(biāo)簽)會(huì)導(dǎo)致瀏覽器停止之前的渲染,等待加載且解析樣式表完成之后重新渲染,在windows的IE下可能會(huì)出現(xiàn)FOUC現(xiàn)象(即樣式失效導(dǎo)致的頁(yè)面閃爍問(wèn)題)
將一個(gè)頁(yè)面涉及到的所有圖片都包含到一張大圖中去,然后利用CSS的 background-image,background- repeat,background-position 的組合進(jìn)行背景定位。利用CSS Sprites能很好地減少網(wǎng)頁(yè)的http請(qǐng)求,從而大大的提高頁(yè)面的性能;CSS Sprites能減少圖片的字節(jié)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/113098.html
摘要:獲取的對(duì)象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對(duì)象即使沒(méi)有代碼,也會(huì)把默認(rèn)的祖宗八代都顯示出來(lái)而只能獲取元素屬性中的樣式。因此對(duì)于一個(gè)光禿禿的元素,方法返回對(duì)象中屬性值如果有就是據(jù)我測(cè)試不同環(huán)境結(jié)果可能有差異而就是。 花了很長(zhǎng)時(shí)間整理的前端面試資源,喜歡請(qǐng)大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...
摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒(méi)想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...
摘要:室友同為前端開發(fā),最近在他找工作的時(shí)候,討論到了常見(jiàn)的前端筆試題和面試題,今天就來(lái)總結(jié)一下之前校招和社招時(shí)頻繁遇到的面試題。合并后的外邊距的高度取外邊距高度中的較大者。 室友同為前端開發(fā),最近在他找工作的時(shí)候,討論到了常見(jiàn)的前端筆試題和面試題,今天就來(lái)總結(jié)一下之前校招和社招時(shí)頻繁遇到的面試題。 iframe 有哪些缺點(diǎn)? 頁(yè)面看起來(lái)較雜亂,不易管理,布局不佳,易分散用戶注意力 搜索引...
摘要:室友同為前端開發(fā),最近在他找工作的時(shí)候,討論到了常見(jiàn)的前端筆試題和面試題,今天就來(lái)總結(jié)一下之前校招和社招時(shí)頻繁遇到的面試題。合并后的外邊距的高度取外邊距高度中的較大者。 室友同為前端開發(fā),最近在他找工作的時(shí)候,討論到了常見(jiàn)的前端筆試題和面試題,今天就來(lái)總結(jié)一下之前校招和社招時(shí)頻繁遇到的面試題。 iframe 有哪些缺點(diǎn)? 頁(yè)面看起來(lái)較雜亂,不易管理,布局不佳,易分散用戶注意力 搜索引...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快速搭建項(xiàng)目。 本文是關(guān)注微信小程序的開發(fā)和面試問(wèn)題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快...
閱讀 1707·2021-11-12 10:36
閱讀 1623·2021-11-12 10:36
閱讀 3448·2021-11-02 14:46
閱讀 3813·2019-08-30 15:56
閱讀 3565·2019-08-30 15:55
閱讀 1468·2019-08-30 15:44
閱讀 1050·2019-08-30 14:00
閱讀 2744·2019-08-29 18:41