關(guān)于別人前端面試的問題的回答(CSS篇)

問:什么是CSS reset

在不同瀏覽器之間,默認樣式有著諸多差異和問題,而為了在不同瀏覽器之間具備相同的視覺效果阅束,開發(fā)人員往往會在樣式表文件中引入一段CSS代碼,如http://meyerweb.com/eric/tools/css/reset/reset200802.css茄唐,我們把這個過程叫做CSS reset息裸。

當然,好處就和他的作用一樣沪编。但是我們應(yīng)該認識其缺點呼盆,很多如排版標簽,列表標簽等這樣的語義元素就失去了他的意義蚁廓,在沒有為其設(shè)置其他樣式時访圃,視覺上和其他內(nèi)容也沒了區(qū)別;如果頁面內(nèi)有第三方內(nèi)容嵌入相嵌,則會影響第三方內(nèi)容的視覺效果腿时;而很多開發(fā)人員更是直接百度一段代碼,復制到自己的項目中饭宾,我認為這樣的開發(fā)是不負責任的批糟。

個人認為在項目中可根據(jù)需求對一些全局樣式進行設(shè)置,如字體看铆,字號等徽鼎,而對于元素的樣式設(shè)置應(yīng)該通過選擇器精確的設(shè)置。在項目中,本人一般都會建立一個基礎(chǔ)的樣式文件否淤,里面編寫通用的類選擇器满败,在需要的元素上添加類名達到重置的效果。如

  .no-padding {padding: 0;}
  .only-content {padding: 0;margin: 0;border: 0}
<body class="only-content user-difined-className"></body>

問:CSS性能優(yōu)化

在看到這個問題的時候叹括,捫心自問算墨,還真沒在項目中考慮太多CSS性能優(yōu)化。以下內(nèi)容由網(wǎng)絡(luò)信息總結(jié)汁雷。

作為一名前端净嘀,在開始學習時就會知道一句話——樣式放在文檔頭部,腳本放在文檔底部侠讯。根據(jù)瀏覽器工作過程挖藏,我們知道渲染是在加載完樣式文件后開始的,所以樣式文件放在頭部可減少頁面空白的時間厢漩,而放在底部膜眠,頁面需要等待HTML內(nèi)容加載完成才會加載樣式文件,就會導致頁面有段時間看上去沒有樣式(的確沒有)溜嗜。

在CSS優(yōu)化中宵膨,眾所周知的估計就是加載優(yōu)化吧。在實際項目中炸宵,一般通過減少使用import或者不使用import辟躏,壓縮文件體積等方式來減少網(wǎng)絡(luò)請求,減少傳輸內(nèi)容來提高加載性能土全。

我們可以從以下方面進行調(diào)優(yōu):

  • 盡量避免使用: expression表達式[IE]以及filter屬性[IE]捎琐。expression表達式在文檔的很多交互事件中都會執(zhí)行,如頁面滾動裹匙,鼠標滾動瑞凑,改變窗口大小等;而filter屬性比較消耗內(nèi)存(非常),不僅如此概页,所以用到該filter的元素渲染時都會重新分析該樣式籽御,而且下載filter里的圖片會導致瀏覽器停止渲染。

  • css縮寫:在css中很多屬性可設(shè)置多個值绰沥,如margin篱蝇,paddingborder徽曲,font零截,background等,盡量直接對該屬性設(shè)置多個值秃臣,避免多個值分開設(shè)置涧衙,如

no:
padding-left: 0;
padding-right: 1px;
padding-top: 2px;
padding-bottom: 3px;
do: 
padding: 2px 1px 3px 0
  • 減少使用不必要的并行規(guī)則哪工,如button#oneBtn{...},button.btn{...}。對于瀏覽器來講弧哎,定位一個oneBtn.btn比同時定位button#oneBtn,button.btn更快雁比。

  • 盡量減少規(guī)則層數(shù),層數(shù)越多撤嫩,定位越慢(非常慢)偎捎,使用一個有語義的選擇器往往能夠取得更好的效率。

  • 利用好繼承機制序攘。

  • 減少重布局以及重繪茴她。改變元素大小,位置的css屬性將會導致相關(guān)圖層重新布局程奠,不改變節(jié)點的大小和位置的屬性改變不會觸發(fā)重布局丈牢,如果改變了渲染效果會觸發(fā)重繪。

問:CSS預(yù)處理

什么是CSS預(yù)處理呢瞄沙?CSS預(yù)處理是一種技術(shù)己沛,可以很好的提升CSS的編程性,開發(fā)效率以及可維護性距境,就是像編寫其他程序一樣申尼,可以通過定義變量,調(diào)用函數(shù)等方式編寫程序肮疗,最后通過特殊的處理器輸出CSS代碼晶姊。

該技術(shù)發(fā)展到今天,已經(jīng)有很多成熟的CSS預(yù)處理器語言伪货,如Sass,LESS等钾怔,并在很多大型項目中使用碱呼。

問:浮動的原理和工作方式,會產(chǎn)生什么影響呢宗侦,要怎么處理愚臀?

工作方式:浮動元素脫離文檔流,不占據(jù)空間矾利。浮動元素碰到包含它的邊框或者浮動元素的邊框停留姑裂。

影響:

  • 浮動會導致父元素無法被撐開,影響與父元素同級的元素男旗。

  • 與該浮動元素同級的非浮動元素舶斧,如果是塊級元素,會移動到該元素下方察皇,而塊級元素內(nèi)部的行內(nèi)元素會環(huán)繞浮動元素茴厉;而如果是內(nèi)聯(lián)元素則會環(huán)繞該浮動元素泽台。

  • 與該元素同級的浮動元素,對于同一方向的浮動元素(同級)矾缓,兩個元素將會跟在碰到的浮動元素后怀酷;而對于不同方向的浮動元素,在寬度足夠時嗜闻,將分別浮動向不同方向蜕依,在寬度不同是將導致一方換行(換行與HTML書寫順序有關(guān),后邊的將會浮動到下一行)

  • 浮動元素將被視作為塊元素

  • 而浮動元素對于其父元素之外的元素琉雳,如果是非浮動元素笔横,則相當于忽視該浮動元素,如果是浮動元素咐吼,則相當于同級的浮動元素吹缔。

  • 而常用的清除浮動的方法,則如使用空標簽锯茄,overflow厢塘,偽元素等。在使用基于浮動設(shè)計的CSS框架時肌幽,自會提供清除的方法晚碾,個人并不習慣使用浮動進行布局。

問:CSS有哪些選擇器喂急?它們的權(quán)重怎么計算的格嘁?

CSS選擇器分基本選擇器(元素選擇器,類選擇器廊移,通配符選擇器糕簿,ID選擇器,關(guān)系選擇器),屬性選擇器狡孔,偽類選擇器懂诗,偽元素選擇器,以及一些特殊選擇器,如has苗膝,not等殃恒。

在CSS中,權(quán)重決定了哪些CSS規(guī)則生效辱揭,瀏覽器按如下規(guī)則進行CSS權(quán)重計算

  • 1000:內(nèi)聯(lián)樣式

  • 0100:ID選擇器

  • 0010:類离唐,偽類,屬性選擇器

  • 0001:元素问窃,偽元素亥鬓,通配符,子選擇器泡躯,相鄰選擇器等

  • 無:繼承樣式

?瀏覽器通過對元素上的CSS規(guī)則進行權(quán)重計算贮竟,權(quán)重高的規(guī)則將生效丽焊,如果權(quán)重相同則最后的規(guī)則生效,而使用的咕别!important的規(guī)則將具備最高權(quán)重技健,如果多條規(guī)則有!important惰拱,同樣是最后的規(guī)則生效雌贱。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市偿短,隨后出現(xiàn)的幾起案子欣孤,更是在濱河造成了極大的恐慌,老刑警劉巖昔逗,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件降传,死亡現(xiàn)場離奇詭異,居然都是意外死亡勾怒,警方通過查閱死者的電腦和手機婆排,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笔链,“玉大人段只,你說我怎么就攤上這事〖ǎ” “怎么了赞枕?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坪创。 經(jīng)常有香客問我炕婶,道長,這世上最難降的妖魔是什么误堡? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任古话,我火速辦了婚禮,結(jié)果婚禮上锁施,老公的妹妹穿的比我還像新娘。我一直安慰自己杖们,他們只是感情好悉抵,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伞鲫。 梳的紋絲不亂的頭發(fā)上省咨,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天,我揣著相機與錄音薇宠,去河邊找鬼购对。 笑死卢未,一個胖子當著我的面吹牛岂座,可吹牛的內(nèi)容都是我干的态蒂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼费什,長吁一口氣:“原來是場噩夢啊……” “哼钾恢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鸳址,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瘩蚪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后稿黍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疹瘦,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年巡球,在試婚紗的時候發(fā)現(xiàn)自己被綠了言沐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡辕漂,死狀恐怖呢灶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钉嘹,我是刑警寧澤鸯乃,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站跋涣,受9級特大地震影響缨睡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜陈辱,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一奖年、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沛贪,春花似錦陋守、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至媚送,卻和暖如春中燥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背塘偎。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工疗涉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拿霉,地道東北人。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓咱扣,卻偏偏與公主長得像绽淘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子偏窝,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案收恢? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽?zāi)J的外補...
    _Yfling閱讀 13,759評論 1 92
  • <a name='html'>HTML</a> Doctype作用?標準模式與兼容模式各有什么區(qū)別? (1)祭往、<...
    clark124閱讀 3,497評論 1 19
  • 七月半不宜出門伦意,這是我今天得出的結(jié)論。不要問我為什么硼补,因為驮肉。。已骇。离钝。。褪储。 跑步÷芽剩現(xiàn)在我的內(nèi)心是拒絕的,還是那種極...
    左岸啊閱讀 195評論 0 1
  • 對于想象力豐富的人來說,他們總會想到解決孤獨無聊的辦法辛藻。不知從什么起我漸漸地相信了那種感覺:縱然我能看到的最遠的地...
    高山磊磊閱讀 352評論 0 0
  • CommonJS是在推行Node.js時建立的一個模塊化的規(guī)范制度碘橘,他的模塊就指對象,輸入時必須查找對象的屬性吱肌,就...
    _花閱讀 422評論 0 1