前端開發(fā)面試題(CSS)

timg.jpg

題目&答案

  1. 如何理解CSS的盒子模型靶累?
每個HTML元素都是長方形盒子敏释。
(1)盒子模型有兩種:IE盒子模型、標準W3C盒子模型晤硕;IE的content部分包含了border和pading悼潭。
(2)標準W3C盒模型包含:內(nèi)容(content)、填充(padding)舞箍、邊界(margin)舰褪、邊框(border)。
  1. link和@import的區(qū)別疏橄?
(1)link屬于XHTML標簽占拍,而@import是CSS提供的。
(2)頁面被加載時捎迫,link會同時被加載晃酒,而@import引用的CSS會等到頁面被加載完再加載。
(3)import只在IE 5以上才能識別立砸,而link是XHTML標簽掖疮,無兼容問題。
(4)link方式的樣式權(quán)重高于@import的權(quán)重颗祝。
(5)使用dom控制樣式時的差別浊闪。當使用javascript控制dom去改變樣式的時候,只能使用link標簽螺戳,因為@import不是dom可以控制的搁宾。
  1. CSS 選擇符有哪些?哪些屬性可以繼承倔幼?優(yōu)先級算法如何計算盖腿?CSS 3新增偽類有哪些?
id選擇器(# myid)
類選擇器(.myclassname)
標簽選擇器(div、h1翩腐、p)
相鄰選擇器(h1 + p)
子選擇器(ul < li)
后代選擇器(li a)
通配符選擇器( * )
屬性選擇器(a[rel = "external"])
偽類選擇器(a: hover, li: nth - child)
可繼承: font-size font-family color, UL LI DL DD DT;
不可繼承 :border padding margin width height ;
優(yōu)先級就近原則鸟款,樣式定義最近者為準,載入樣式以最后載入的定位為準茂卦。
優(yōu)先級為:
     !important >  id > class > tag  
     important 比 內(nèi)聯(lián)優(yōu)先級高
CSS3新增偽類舉例:
p:first-of-type 選擇屬于其父元素的首個<p>元素的每個<p>元素何什。
p:last-of-type  選擇屬于其父元素的最后<p>元素的每個<p>元素。
p:only-of-type  選擇屬于其父元素唯一的<p>元素的每個<p>元素等龙。
p:only-child    選擇屬于其父元素的唯一子元素的每個<p>元素处渣。
p:nth-child(2)  選擇屬于其父元素的第二個子元素的每個<p>元素。
:enabled蛛砰、:disabled 控制表單控件的禁用狀態(tài)罐栈。
:checked  單選框或復選框被選中。
  1. 如何居中div泥畅,如何居中一個浮動元素荠诬?
    給div設(shè)置一個寬度,然后添加margin:0 auto屬性
  div{
      width:200px;
      margin:0 auto;
   }
  1. 如何居中一個浮動元素
    確定容器的寬高涯捻,如寬500浅妆、高 300的層,設(shè)置層的外邊距
.div { 
    Width:500px ; height:300px;//高度可以不設(shè)
    Margin: -150px 0 0 -250px;
    position:relative;相對定位
    background-color:pink;//方便看效果
    left:50%;
    top:50%;
  }
  1. 經(jīng)常遇到的瀏覽器的兼容性有哪些障癌?原因凌外、解決方法是什么?
(1)png24為的圖片在IE6瀏覽器上出現(xiàn)背景涛浙,解決方案是做成PNG8康辑。
(2)瀏覽器默認的margin和padding不同,解決方案是加一個全局的*{margin:0;padding:0;}來統(tǒng)一轿亮。
(3)IE6雙邊距bug:塊屬性標簽float后疮薇,又有橫行的margin情況下,在IE 6顯示margin比設(shè)置的大我注。
(4)浮動ie產(chǎn)生的雙邊距問題:塊級元素就加display:inline按咒;行內(nèi)元素轉(zhuǎn)塊級元素display:inline后面再加display:table。
        .bb{
         background-color:#f1ee18;        /*所有識別*/
        .background-color:#00deff\9;        /*IE6但骨、7励七、8識別*/
        +background-color:#a200ff;        /*IE6、7識別*/
        _background-color:#1e0bd1;        /*IE6識別*/
        }
  1. 常用Hack的技巧:
(1)IE下奔缠,可以使用獲取常規(guī)屬性的方法來獲取自定義屬性掠抬,也可以使用getAttribute()獲取自定義屬性;
(2)Firefox下校哎,只能使用getAttribute()獲取自定義屬性两波。解決方法:統(tǒng)一通過getAttribute()獲取自定義屬性瞳步。
(3)IE下,even對象有x,y屬性腰奋,但是沒有pageX,pageY屬性单起;
(4)Firefox下,event對象有pageX,pageY屬性氛堕,但是沒有x,y屬性馏臭。解決方法是條件注釋,缺點是在IE瀏覽器下可能會增加額外的HTTP請求數(shù)讼稚。
(5)Chrome 中文界面下默認會將小于12px的文本強制按照12px顯示,可通過加入 CSS屬性-webkit-text-size-adjust: none;來解決绕沈。
(6)超鏈接訪問過后hover樣式就不出現(xiàn)了 被點擊訪問過的超鏈接樣式不再具有hover和active了锐想,解決方法是改變CSS屬性的排列順序:
L-V-H-A :  a:link {} a:visited {} a:hover {} a:active {}
  1. 列出display的值,說明它們的作用乍狐。position的值里赠摇,relative和absolute定位原點是?
display的值:
block 像塊類型元素一樣顯示浅蚪。
none 缺省值藕帜。像行內(nèi)元素類型一樣顯示。
inline-block 像行內(nèi)元素一樣顯示惜傲,但其內(nèi)容像塊類型元素一樣顯示洽故。
list-item 像塊類型元素一樣顯示,并添加樣式列表標記盗誊。
relative和absolute定位原點:
absolute:生成絕對定位的元素时甚,相對于static定位以外的第一個父元素進行定位。
relative:生成相對定位的元素哈踱,相對于其正常位置進行定位荒适。
  1. 為什么要初始化CSS樣式?
因為瀏覽器的兼容問題开镣,不同瀏覽器對有些標簽的默認值是不同的刀诬,如果沒對CSS初始化往往會出現(xiàn)瀏覽器之間的頁面顯示差異。當然邪财,初始化樣式會對SEO有一定的影響陕壹,但魚和熊掌不可兼得,但力求影響最小的情況下初始化卧蜓。
最簡單的初始化方法就是:* {padding: 0; margin: 0;} (筆者不建議這樣)
淘寶的樣式初始化: 
  body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
  body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; }
  h1, h2, h3, h4, h5, h6{ font-size:100%; }
  address, cite, dfn, em, var { font-style:normal; }
  code, kbd, pre, samp { font-family:couriernew, courier, monospace; }
  small{ font-size:12px; }
ul, ol { list-style:none; }
  a { text-decoration:none; }
  a:hover { text-decoration:underline; }
  sup { vertical-align:text-top; }
  sub{ vertical-align:text-bottom; }
  legend { color:#000; }
  fieldset, img { border:0; }
  button, input, select, textarea { font-size:100%; }
  table { border-collapse:collapse; border-spacing:0; }
  1. CSS是怎樣定義權(quán)重規(guī)則的帐要?
以下是權(quán)重的規(guī)則:標簽的權(quán)重為1,class的權(quán)重為10弥奸,id的權(quán)重為100榨惠,以下例子是演示各種定義的權(quán)重值:
/*權(quán)重為1*/
div{
}
/*權(quán)重為10*/
.class1{
}
/*權(quán)重為100*/
#id1{
}
/*權(quán)重為100+1=101*/
#id1 div{
}
/*權(quán)重為10+1=11*/
.class1 div{
}
/*權(quán)重為10+10+1=21*/
.class1 .class2 div{
} 
如果權(quán)重相同,則最后定義的樣式會起作用,但是應(yīng)該避免這種情況出現(xiàn)赠橙。
  1. 如何理解表現(xiàn)與內(nèi)容相分離耽装?
表現(xiàn)與結(jié)構(gòu)相分離簡單的說就是HTML中只有標簽元素 表現(xiàn)完全是由CSS文件控制的。
  1. 如何定義高度為1px的容器期揪?
div{
heigh:1px; 
width:10px; 
background:#000; 
overflow:hidden
} 
IE 6下這個問題是默認行高造成的掉奄,overflow:hidden | zoom:0.08 | line- height:1px這樣也可以解決。
  1. 如何解決IE 6的3px問題凤薛?
_zoom:1;  margin-left: value; _margin-left: value-3px;
  1. Firefox下文本無法撐開容器的高度姓建,如何解決?
清除浮動 .clear{ clear:both; height:0px; overflow:hidden;}
  1. 怎么樣才能讓層顯示在Flash之上呢?
解決的辦法是給Flash設(shè)置透明屬性
<param name="wmode" value="transparent" />或者<param name="wmode" value="opaque" />
  1. cursor:hand在FF下不顯示小手缤苫,如何解決速兔?
cursor; pointer;
  1. 在IE中內(nèi)容會自適應(yīng)高度,而FF不會自適應(yīng)高度活玲,怎么辦涣狗?
在要自適應(yīng)高度的層中加一個層,樣式為
.clear{clear:both;font-size:0px;height:1px}舒憾,
這樣解決有一個小小的問題镀钓,高度會多一個像素。還有一種解決方法镀迂,給當前層加上一個偽類丁溅。
#test:after {
  content: ".";
  display: block;
  height: 0;
  clear: both;
  visibility: hidden;
}
  1. 用純 CSS 創(chuàng)建一個三角形的原理是什么?
把上招拙、左唧瘾、右三條邊隱藏掉(顏色設(shè)為 transparent)
#demo {
width:0;
height: 0;
border-width: 20px;
border-style: solid;
border-color: transparent transparent red transparent;
}
  1. 如何設(shè)計一個滿屏“品”字布局?
簡單的方式:
上面的div寬100%别凤,
下面的兩個div分別寬50%饰序,
用float或inline使其不換行。
怎么讓Chrome支持小于12px 的文字规哪?
body{-webkit-text-size-adjust:none}
  1. 前端頁面有哪三層構(gòu)成求豫,分別是什么?作用是什么诉稍?
最準確的網(wǎng)頁設(shè)計思路是把網(wǎng)頁分成三個層次蝠嘉,即:結(jié)構(gòu)層、表示層杯巨、行為層蚤告。
網(wǎng)頁的結(jié)構(gòu)層(structural layer)由HTML或XHTML之類的標記語言負責創(chuàng)建。標簽服爷,也就是那些出現(xiàn)在尖括號里的單詞杜恰,對網(wǎng)頁內(nèi)容的語義含義做出了描述获诈,但這些標簽不包含任何關(guān)于如何顯示有關(guān)內(nèi)容的信息。例如心褐,P 標簽表達了這樣一種語義:“這是一個文本段舔涎。”
網(wǎng)頁的表示層(presentation layer)由CSS負責創(chuàng)建逗爹。 CSS對“如何顯示有關(guān)內(nèi)容”的問題做出了回答亡嫌。
網(wǎng)頁的行為層(behavior layer)負責回答“內(nèi)容應(yīng)該如何對事件做出反應(yīng)”這一問題。這是JavaScript語言和DOM主宰的領(lǐng)域掘而。
  1. ::before 和 :after中雙冒號和單冒號 有什么區(qū)別挟冠?解釋一下這2個偽元素的作用。
單冒號(:)用于CSS3偽類镣屹,雙冒號(::)用于CSS3偽元素圃郊。
偽元素由雙冒號和偽元素名稱組成。雙冒號是在css3規(guī)范中引入的女蜈,用于區(qū)分偽類和偽元素。但是偽類兼容現(xiàn)存樣式色瘩,瀏覽器需要同時支持舊的偽類伪窖,比如:first-line、:first-letter居兆、:before覆山、:after等。
對于CSS2之前已有的偽元素泥栖,比如:before簇宽,單冒號和雙冒號的寫法::before作用是一樣的。
提醒吧享,如果你的網(wǎng)站只需要兼容webkit魏割、firefox、opera等瀏覽器钢颂,建議對于偽元素采用雙冒號的寫法钞它,如果不得不兼容IE瀏覽器,還是用CSS2的單冒號寫法比較安全殊鞭。
  1. 現(xiàn)在HTML5中css3可以寫出一個旋轉(zhuǎn)的立方體遭垛,請寫出要用到的CSS屬性。
-webkit-transform-style: preserve-3d;
-webkit-transform: rotateY(30deg) rotateX(10deg);
-webkit-animation:  rot 4s linear infinite;
  1. 介紹一下 Sass 和 Less 是什么操灿?它們有何區(qū)別锯仪?
Sass (Syntactically Awesome Stylesheets)是一種動態(tài)樣式語言,語法跟css一樣(但多了些功能)趾盐,比css好寫庶喜,而且更容易閱讀小腊。Sass語法類似與Haml,屬于縮排語法(makeup)溃卡,用意就是為了快速寫Html和Css溢豆。
Less一種動態(tài)樣式語言. 將CSS賦予了動態(tài)語言的特性,如變量瘸羡,繼承漩仙,運算, 函數(shù). LESS 既可以在客戶端上運行 (支持IE 6+, Webkit, Firefox)犹赖,也可一在服務(wù)端運行 (借助 Node.js)队他。
區(qū)別:
(1))Sass是基于Ruby的,是在服務(wù)端處理的峻村,而Less是需要引入less.js來處理Less代碼輸出Css到瀏覽器麸折,也可以在開發(fā)環(huán)節(jié)使用Less,然后編譯成Css文件粘昨,直接放到項目中垢啼,也有Less.app、SimpleLess张肾、CodeKit.app這樣的工具芭析,也有在線編譯地址。
(2)變量符不一樣吞瞪,less是@馁启,而Scss是$,而且變量的作用域也不一樣芍秆,后面會講到惯疙。
(3)輸出設(shè)置,Less沒有輸出設(shè)置妖啥,Sass提供4中輸出選項:nested, compact, compressed 和 expanded霉颠。
(4)Sass支持條件語句,可以使用if{}else{},for{}循環(huán)等等迹栓。而Less不支持掉分。
  1. 常見ie6的瀏覽器兼容bug(3-5個)?
文字本身的大小不兼容克伊。
同樣是font-size:14px的宋體文字酥郭,在不同瀏覽器下占的空間是不一樣的,ie下實際占高16px愿吹,下留白3px不从,ff 下實際占高17px,上留白1px犁跪,下留白3px椿息,opera下就更不一樣了歹袁。解決方案:給文字設(shè)定 line-height 劫恒。確保所有文字都有默認的 line-height 值俗孝。
  1. IE6吞吃現(xiàn)象。
上下兩個div怨咪,上面的div設(shè)置背景乏矾,卻發(fā)現(xiàn)下面沒有設(shè)置背景的div 也有了背景孟抗,這就是吞吃現(xiàn)象。對應(yīng)上面的背景吞吃現(xiàn)象钻心,還有滾動下邊框缺失的現(xiàn)象凄硼。解決方案:使用zoom:1。這個zoom好象是專門為解決ie6 bug而生的捷沸。
  1. IE6注釋bug
注釋也能產(chǎn)生bug~~~“多出來的一只豬摊沉。”這是前人總結(jié)這個bug使用的文案痒给,ie6的這個bug 下说墨,大家會在頁面看到豬字出現(xiàn)兩遍,重復的內(nèi)容量因注釋的多少而變苍柏。
解決方案:用“<!–[if !IE]> picRotate start <![endif]–>”方法寫注釋婉刀。
  1. img 下的留白,如下代碼:
<div>
<img src=“1.jpg” />
</div>
把div的border打開序仙,你發(fā)現(xiàn)圖片底部不是緊貼著容器底部的,是img后面的空白字符造成鲁豪,要消除必須這樣寫
<div>
<img src=”1.jpg” /></div>
后面兩個標簽要緊挨著潘悼。ie7下這個bug 依然存在。解決方案:給img設(shè)定 display:block爬橡。
  1. 失去line-height
<div style=”line-height:20px”><img />文字</div>治唤,很遺憾,在ie6下單行文字 line-height 效果消失了糙申。原因是<img />這個inline-block元素和inline元素寫在一起了宾添。
解決方案:讓img 和文字都 float起來。
  1. clear層應(yīng)該單獨使用柜裸。也許你為了節(jié)省代碼把clear屬性直接放到下面的一個內(nèi)容層缕陕,這樣有問題,不僅僅是ff和op下失去margin效果疙挺,ie下某些margin值也會失效扛邑。
<div style=”background:red;float:left;”>dd</div>
<div style=”clear:both;margin-top:18px;background:green”>ff</div>
  1. ie 下overflow:hidden對其下的絕對層position:absolute或者相對層 position:relative無效。
解決方案:給overflow:hidden加position:relative或者position: absolute铐然。
另蔬崩,ie6支持overflow-x或者overflow-y的特性恶座,ie7、ff不支持沥阳。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末跨琳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子桐罕,更是在濱河造成了極大的恐慌脉让,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冈绊,死亡現(xiàn)場離奇詭異侠鳄,居然都是意外死亡,警方通過查閱死者的電腦和手機死宣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門伟恶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人毅该,你說我怎么就攤上這事博秫。” “怎么了眶掌?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵挡育,是天一觀的道長。 經(jīng)常有香客問我朴爬,道長即寒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任召噩,我火速辦了婚禮母赵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘具滴。我一直安慰自己凹嘲,他們只是感情好,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布构韵。 她就那樣靜靜地躺著周蹭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疲恢。 梳的紋絲不亂的頭發(fā)上凶朗,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機與錄音冈闭,去河邊找鬼俱尼。 笑死,一個胖子當著我的面吹牛萎攒,可吹牛的內(nèi)容都是我干的遇八。 我是一名探鬼主播矛绘,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼刃永!你這毒婦竟也來了货矮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤斯够,失蹤者是張志新(化名)和其女友劉穎囚玫,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體读规,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡抓督,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了束亏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铃在。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖碍遍,靈堂內(nèi)的尸體忽然破棺而出定铜,到底是詐尸還是另有隱情,我是刑警寧澤怕敬,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布揣炕,位于F島的核電站,受9級特大地震影響东跪,放射性物質(zhì)發(fā)生泄漏畸陡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一虽填、第九天 我趴在偏房一處隱蔽的房頂上張望罩锐。 院中可真熱鬧,春花似錦卤唉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至跛蛋,卻和暖如春熬的,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赊级。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工押框, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人理逊。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓橡伞,卻偏偏與公主長得像盒揉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子兑徘,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案刚盈? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽?zāi)J的外補...
    _Yfling閱讀 13,737評論 1 92
  • <a name='html'>HTML</a> Doctype作用?標準模式與兼容模式各有什么區(qū)別? (1)挂脑、<...
    clark124閱讀 3,462評論 1 19
  • ?前端面試題匯總 一藕漱、HTML和CSS 21 你做的頁面在哪些流覽器測試過?這些瀏覽器的內(nèi)核分別是什么? ...
    Simon_s閱讀 2,220評論 0 8
  • 本文由我收集總結(jié)了一些前端面試題崭闲,初學者閱后也要用心鉆研其中的原理肋联,重要知識需要系統(tǒng)學習、透徹學習刁俭,形成自己的知識...
    王鈺峰閱讀 485評論 0 2
  • 參考書目:《只需傾聽》【美】馬克·郭士頓關(guān)鍵詞:被尊重薄翅,被理解沙兰,被關(guān)注 真正的溝通,從緩慢聆聽開始翘魄,就是說一句 “...
    獸醫(yī)博士在廣西閱讀 241評論 2 6