欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

CSS有哪些經(jīng)典面試題

CSS有哪些經(jīng)典面試題?很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)建站公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元??谧鼍W(wǎng)站,已為上家服務(wù),為??诟鞯仄髽I(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

1. 介紹一下標(biāo)準(zhǔn)的CSS的盒子模型?與低版本IE的盒子模型有什么不同的?

盒子模型就是 元素在網(wǎng)頁中的實(shí)際占位,有兩種:標(biāo)準(zhǔn)盒子模型和IE盒子模型

 標(biāo)準(zhǔn)(W3C)盒子模型:內(nèi)容content+填充padding+邊框border+邊界margin

寬高指的是 content 的寬高

低版本IE盒子模型:內(nèi)容(content+padding+border)+ 邊界margin,

寬高指的是 content+padding+border 部分的寬高

問題的拓展:

CSS 如何設(shè)置這兩種模型?

box-sizing : content-box  
box-sizing : border-box復(fù)制代碼

 JS 如何設(shè)置獲取盒模型對應(yīng)的寬和高?

dom.style.width/height;//設(shè)置獲取的是內(nèi)聯(lián)樣式
dom.currentStyle.width/height;//只有IE支持
window.getComputedStyle(dom).width/height;//兼容性好
dom.getBoundingClientRect().width/height;//適用場所:計(jì)算一個(gè)元素的絕對位置復(fù)制代碼

 實(shí)例題(根據(jù)盒模型解釋邊距重疊)?

該例子是父子邊距重疊,還有兄弟元素的邊距重疊

<style>        
    html *{            
        padding: 0;            
        margin: 0;        
    }        
    #sec{            
        background: #f00;            
        overflow: hidden; //創(chuàng)建了一個(gè)BFC,塊級格式化上下文   
    }        
    .child{            
        height: 100px;            
        margin-top: 10px;            
        background: yellow;        
    }    
</style>
<section id="sec">        
    <article class="child"></article>    
</section>復(fù)制代碼

 BFC(邊距重疊解決方案)?

2. box-sizing屬性?

用來控制元素的盒子模型的解析模式,默認(rèn)為content-box
context-box:W3C的標(biāo)準(zhǔn)盒子模型,設(shè)置元素的 height/width 屬性指的是 content 部分的高/寬
border-box:IE 傳統(tǒng)盒子模型。設(shè)置元素的 height/width 屬性指的是 content + border + padding 部分的高/寬

3. 對 BFC 規(guī)范(塊級格式化上下文:block formatting context)的理解?

(W3C CSS 2.1 規(guī)范中的一個(gè)概念,它是一個(gè)獨(dú)立容器,決定了元素如何對其內(nèi)容進(jìn)行定位,以及與其他元素的關(guān)系和相互作用。)

一個(gè)頁面是由很多個(gè) Box 組成的,元素的類型和 display 屬性,決定了這個(gè) Box 的類型。

不同類型的 Box,會參與不同的 Formatting Context(決定如何渲染文檔的容器),因此Box內(nèi)的元素會以不同的方式渲染,也就是說BFC內(nèi)部的元素和外部的元素不會互相影響。

BFC 規(guī)定了內(nèi)部的 Block Box 如何布局。

定位方案:

  1. 內(nèi)部的 Box 會在垂直方向上一個(gè)接一個(gè)放置。
  2. Box 垂直方向的距離由 margin 決定,屬于同一個(gè) BFC 的兩個(gè)相鄰 Box 的 margin 會發(fā)生重疊。
  3. 每個(gè)元素的 margin box 的左邊,與包含塊 border box 的左邊相接觸。
  4. BFC 的區(qū)域不會與 float box 重疊。
  5. BFC 是頁面上的一個(gè)隔離的獨(dú)立容器,容器里面的子元素不會影響到外面的元素。
  6. 計(jì)算 BFC 的高度時(shí),浮動元素也會參與計(jì)算。

滿足下列條件之一就可觸發(fā) BFC

  1. 根元素,即 html
  2. float 的值不為none(默認(rèn))
  3. overflow 的值不為 visible(默認(rèn))
  4. display 的值為 inline-block、table-cell、table-caption
  5. position 的值為 absolute 或 fixed

更多關(guān)于 BFC 的介紹,請看我的文章 BFC 是什么?有什么用?

4. CSS選擇器有哪些?哪些屬性可以繼承?CSS優(yōu)先級算法如何計(jì)算?

CSS選擇符:

1. id選擇器( # myid)

2. 類選擇器(.myclassname)

3. 標(biāo)簽(元素)選擇器(p, h2, p)

4. 相鄰選擇器(h2 + p)

5. 子選擇器(ul > li)

6. 后代選擇器(li a)

7. 通配符選擇器( * )

8. 屬性選擇器(a[rel = "external"])

9. 偽類選擇器(a:hover, li:nth-child)

偽元素選擇器、分組選擇器。

繼承性:

可繼承的樣式:font-size, font-family, color,ul,li,dl,dt,dd;

不可繼承的樣式:border, padding, margin, width, height

優(yōu)先級(就近原則):!important > [ id > class > tag ]
!important 比內(nèi)聯(lián)優(yōu)先級高

優(yōu)先級算法計(jì)算

優(yōu)先級就近原則,同權(quán)重情況下樣式定義最近者為準(zhǔn)

!important>id >class>tag

important比內(nèi)聯(lián)優(yōu)先級高

元素選擇符的權(quán)值:元素標(biāo)簽(派生選擇器):1,class選擇符:10,id選擇符:100,內(nèi)聯(lián)樣式權(quán)值最大,為1000

  1. !important聲明的樣式優(yōu)先級最高,如果沖突再進(jìn)行計(jì)算。
  2. 如果優(yōu)先級相同,則選擇最后出現(xiàn)的樣式。
  3. 繼承得到的樣式的優(yōu)先級最低。

5. CSS3新增偽類有那些?

p:first-of-type 選擇屬于其父元素的首個(gè) <p> 元素的每個(gè) <p> 元素。

p:last-of-type 選擇屬于其父元素的最后 <p> 元素的每個(gè) <p> 元素。

p:only-of-type 選擇屬于其父元素唯一的 <p> 元素的每個(gè) <p> 元素。

p:only-child 選擇屬于其父元素的唯一子元素的每個(gè) <p> 元素。

p:nth-child(2) 選擇屬于其父元素的第二個(gè)子元素的每個(gè) <p> 元素。

:enabled

:disabled 控制表單控件的禁用狀態(tài)。

:checked,單選框或復(fù)選框被選中。

:before在元素之前添加內(nèi)容,也可以用來做清除浮動

:after在元素之后添加內(nèi)容

6. 如何居中p?如何居中一個(gè)浮動元素?如何讓絕對定位的p居中?如何居中一個(gè)img(position定位)

水平居中p:

border: 1px solid red;
margin: 0 auto; 
height: 50px;
width: 80px;復(fù)制代碼

水平垂直居中一個(gè)浮動元素(position定位)

第一種:未知元素寬高

<p class="outer">
    <span>我想居中顯示</span>
</p>
<style>
    .outer{
        width:300px;
        height:300px;
        position:relative;
        background-color:#ccc;
    }
    span{        float:left;
        position:absolute;
        backgroond-color:red;
        top:50%;
        left:50%;
        transform:translate(-50%,-50%);
    }
</style>復(fù)制代碼

第二種:已知元素寬高的

<p class="outer">
    <span>我想居中顯示</span>
</p>
<style>
    .outer{
        width:300px;
        height:300px;
        position:relative;
        background-color:#ccc;
    }
    span{        float:left;
        position:absolute;
        backgroond-color:red;
        width:150px;
        height:50px;
        top:50%;
        left:50%;
        margin:-25px 0px 0px -75px;
    }
</style>復(fù)制代碼

如何垂直居中一個(gè)img(display : table-cell 或者 position定位)

<p class="outer">        
    <img src="nz.jpg" alt="">    
</p>
<style>        
    .outer{            
        width: 300px;           
        height: 300px;            
        border: 1px solid #cccccc;            
        display: table-cell;            
        text-align: center;            
        vertical-align: middle;        
    }        
    img{            
        width: 150px;            
        height: 150px;        
    }    
</style>復(fù)制代碼

絕對定位的p水平垂直居中:

border: 1px solid black;
position: absolute;
width: 200px;
height: 100px;
margin: auto;
left: 0;
right: 0; 
top:0;
bottom:0;復(fù)制代碼

還有更加優(yōu)雅的居中方式就是用 flex布局,點(diǎn)擊查看我的文章 掌握flex布局,這篇文章就夠了

更多的居中問題,點(diǎn)擊查看我的文章 p居中的幾種方法

7. display 有哪些值?說明他們的作用?

描述
inline默認(rèn)。此元素會被顯示為內(nèi)聯(lián)元素,元素前后沒有換行符。
block此元素將顯示為塊級元素,此元素前后會帶有換行符。
none此元素不會被顯示(隱藏)。
inline-block行內(nèi)塊元素。(CSS2.1 新增的值)
list-item此元素會作為列表顯示。
table此元素會作為塊級表格來顯示(類似table),表格前后帶有換行符

8. position 的值?

描述
absolute

生成絕對定位的元素,相對于 static 定位以外的第一個(gè)父元素進(jìn)行定位。

元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定。

fixed

生成固定定位的元素,相對于瀏覽器窗口進(jìn)行定位。(老IE不支持)

元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定。

relative

生成相對定位的元素,相對于其正常位置進(jìn)行定位,不脫離文檔流。

因此,"left:20" 會向元素的 LEFT 位置添加 20 像素。

static默認(rèn)值。沒有定位,元素出現(xiàn)在正常的文檔流中(忽略 top, bottom, left, right 或者 z-index 聲明)。
inherit規(guī)定應(yīng)該從父元素繼承 position 屬性的值。

css 定位還有一個(gè)新增屬性,粘性定位 sticky,它主要用在對 scroll 事件的監(jiān)聽上;

粘性定位可以被認(rèn)為是相對定位和固定定位的混合。元素在跨越特定閾值前為相對定位,之后為固定定位。例如:

#one { position: sticky; top: 10px; }復(fù)制代碼

在 viewport 視口滾動到元素 top 距離小于 10px 之前,元素為相對定位。之后,元素將固定在與頂部距離 10px 的位置,直到 viewport 視口回滾到閾值以下。

更多關(guān)于 sticky 的介紹,請點(diǎn)擊查看 粘性定位介紹

9. CSS3有哪些新特性?

  1. 新增各種 CSS 選擇器 :not(p) 選擇每個(gè)非p的元素; p:empty 選擇每個(gè)沒有任何子級的p元素(包括文本節(jié)點(diǎn))
  2. 邊框(Borders):
    p{ 
        border:2px solid; 
        border-radius:25px; //用于設(shè)置圓角
        box-shadow: 10px 10px 5px #888888; //水平陰影 垂直陰影 模糊距離 陰影顏色
        border-image:url(border.png) 30 30 round;// 設(shè)置所有邊框圖像的速記屬性。
    }復(fù)制代碼
  3. 背景 background-clip(規(guī)定背景圖的繪制區(qū)域),background-origin,background-size
    p{ 
        background:url(img_flwr.gif); 
        background-repeat:no-repeat; 
        background-size:100% 100%; //規(guī)定背景圖的尺寸
        background-origin:content-box;//規(guī)定背景圖的定位區(qū)域
    } 
    多背景 
    body{ 
        background-image:url(img_flwr.gif),url(img_tree.gif); 
    }復(fù)制代碼
  4. 線性漸變 (Linear Gradients) 向下/向上/向左/向右/對角方向
    background: linear-gradient(direction, color-stop1, color-stop2, ...);復(fù)制代碼
  5. 文本效果 陰影text-shadow,textwrap,word-break,word-wrap;
  6. 2D 轉(zhuǎn)換transform:scale(0.85,0.90) | translate(0px,-30px) | skew(-9deg,0deg) |rotate()  3D轉(zhuǎn)換perspective();transform是向元素應(yīng)用 2D 或者 3D 轉(zhuǎn)換;
  7. 過渡transition
  8. 動畫
  9. 多列布局(multi-column layout)
  10. 盒模型
  11. flex 布局
  12. 多媒體查詢定義兩套css,當(dāng)瀏覽器的尺寸變化時(shí)會采用不同的屬性

更多 CSS3 和 HTML5的新特性,請點(diǎn)擊 CSS3 和 HTML5 新特性一覽

10. 請解釋一下 CSS3 的 flexbox(彈性盒布局模型),以及適用場景?

該布局模型的目的是提供一種更加高效的方式來對容器中的條目進(jìn)行布局、對齊和分配空間。在傳統(tǒng)的布局方式中,block 布局是把塊在垂直方向從上到下依次排列的;而 inline 布局則是在水平方向來排列。彈性盒布局并沒有這樣內(nèi)在的方向限制,可以由開發(fā)人員自由操作。
試用場景:彈性布局適合于移動前端開發(fā),在Android和ios上也完美支持。

更多關(guān)于flex 布局,請點(diǎn)擊查看我的文章 你真的了解 flex 布局嗎?

11. 用純CSS創(chuàng)建一個(gè)三角形的原理是什么?

首先,需要把元素的寬度、高度設(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;復(fù)制代碼

12. 一個(gè)滿屏 品 字布局如何設(shè)計(jì)?

第一種真正的品字:

  1. 三塊高寬是確定的;
  2. 上面那塊用margin: 0 auto;居中;
  3. 下面兩塊用float或者inline-block不換行;
  4. 用margin調(diào)整位置使他們居中。

第二種全屏的品字布局:
上面的p設(shè)置成100%,下面的p分別寬50%,然后使用float或者inline使其不換行。

13. 常見的兼容性問題?

  1. 不同瀏覽器的標(biāo)簽?zāi)J(rèn)的margin和padding不一樣。解決辦法是加一個(gè)全局的

    *{margin:0;padding:0;}  來統(tǒng)一;

  2. IE6雙邊距bug:塊屬性標(biāo)簽float后,又有橫行的margin情況下,在IE6顯示margin比設(shè)置的大。hack:display:inline; 將其轉(zhuǎn)化為行內(nèi)屬性。漸進(jìn)識別的方式,從總體中逐漸排除局部。首先,巧妙的使用“9”這一標(biāo)記,將IE瀏覽器從所有情況中分離出來。接著,再次使用“+”將IE8和IE7、IE6分離開來,這樣IE8已經(jīng)獨(dú)立識別。 漸進(jìn)識別的方式,從總體中逐漸排除局部。首先,巧妙的使用“9”這一標(biāo)記,將IE瀏覽器從所有情況中分離出來。接著,再次使用“+”將IE8和IE7、IE6分離開來,這樣IE8已經(jīng)獨(dú)立識別。
    {
    background-color:#f1ee18;/*所有識別*/.background-color:#00deff\9; /*IE6、7、8識別*/+background-color:#a200ff;/*IE6、7識別*/_background-color:#1e0bd1;/*IE6識別*/}復(fù)制代碼
  3. 設(shè)置較小高度標(biāo)簽(一般小于10px),在IE6,IE7中高度超出自己設(shè)置高度。hack:給超出高度的標(biāo)簽設(shè)置overflow:hidden;或者設(shè)置行高line-height 小于你設(shè)置的高度。
  4. IE下,可以使用獲取常規(guī)屬性的方法來獲取自定義屬性,也可以使用getAttribute()獲取自定義屬性;Firefox下,只能使用getAttribute()獲取自定義屬性。解決方法:統(tǒng)一通過getAttribute()獲取自定義屬性。
  5. Chrome 中文界面下默認(rèn)會將小于 12px 的文本強(qiáng)制按照 12px 顯示,可通過加入 CSS 屬性 -webkit-text-size-adjust: none; 解決。
  6. 超鏈接訪問過后hover樣式就不出現(xiàn)了,因?yàn)楸稽c(diǎn)擊訪問過的超鏈接樣式不再具有hover和active了。解決方法是改變CSS屬性的排列順序:L-V-H-A :
    a:link {} 
    a:visited {} 
    a:hover {} 
    a:active {}復(fù)制代碼
  7. IE下,even對象有x,y屬性,但是沒有pageX,pageY屬性;

    Firefox下,event對象有pageX,pageY屬性,但是沒有x,y屬性。

    解決方法:(條件注釋)缺點(diǎn)是在IE瀏覽器下可能會增加額外的HTTP請求數(shù)。

  8. png24位的圖片在iE6瀏覽器上出現(xiàn)背景,解決方案是做成PNG8.

14. 寫出幾種IE6 BUG的解決方法

1. 雙邊距BUG float引起的 使用display

2. 3像素問題 使用float引起的 使用dislpay:inline -3px

3. 超鏈接hover 點(diǎn)擊后失效 使用正確的書寫順序 link visited hover active

4. Ie z-index問題 給父級添加position:relative

5. Png 透明 使用js代碼 改

6. Min-height 最小高度 !Important 解決’

7. select 在ie6下遮蓋 使用iframe嵌套

8. 為什么沒有辦法定義1px左右的寬度容器(IE6默認(rèn)的行高造成的,使用over:hidden,zoom:0.08 line-height:1px)

9. ie 6 不支持!important

15. 為什么要初始化 CSS 樣式

因?yàn)闉g覽器的兼容問題,不同瀏覽器對有些標(biāo)簽的默認(rèn)值是不同的,如果沒對CSS初始化往往會出現(xiàn)瀏覽器之間的頁面顯示差異。當(dāng)然,初始化樣式會對SEO有一定的影響,但魚和熊掌不可兼得,但力求影響最小的情況下初始化。

16. absolute 的 containing block(容器塊)計(jì)算方式跟正常流有什么不同?

無論屬于哪種,都要先找到其祖先元素中最近的 position 值不為 static 的元素,然后再判斷:

  1. 若此元素為 inline 元素,則 containing block 為能夠包含這個(gè)元素生成的第一個(gè)和最后一個(gè) inline box 的 padding box (除 margin, border 外的區(qū)域) 的最小矩形;
  2. 否則,則由這個(gè)祖先元素的 padding box 構(gòu)成。

如果都找不到,則為 initial containing block。

補(bǔ)充:

1. static(默認(rèn)的)/relative:簡單說就是它的父元素的內(nèi)容框(即去掉padding的部分)

2. absolute: 向上找最近的定位為absolute/relative的元素

3. fixed: 它的containing block一律為根元素(html/body),根元素也是initial containing block

17. CSS里的 visibility 屬性有個(gè) collapse 屬性值是干嗎用的?在不同瀏覽器下以后什么區(qū)別?

當(dāng)一個(gè)元素的 visibility 屬性被設(shè)置成 collapse 值后,對于一般的元素,它的表現(xiàn)跟 hidden 是一樣的。但例外的是,如果這個(gè)元素是table相關(guān)的元素,例如table行,table group,table列,table column group,它的表現(xiàn)卻跟 display: none 一樣,也就是說,它們占用的空間也會釋放。

在谷歌瀏覽器里,使用 collapse 值和使用 hidden 值沒有什么區(qū)別。

在火狐瀏覽器、Opera和IE11里,使用 collapse 值的效果就如它的字面意思:table的行會消失,它的下面一行會補(bǔ)充它的位置。

18. display:none 與 visibility:hidden 的區(qū)別是什么?

display : none隱藏對應(yīng)的元素,在文檔布局中不再分配空間(回流+重繪)

visibility:hideen隱藏對應(yīng)的元素,在文檔布局中仍保留原來的空間(重繪)

使用 CSS display:none 屬性后,HTML 元素(對象)的寬度、高度等各種屬性值都將“丟失”;而使用 visibility:hidden 屬性后,HTML元素(對象)僅僅是在視覺上看不見(完全透明),而它所占據(jù)的空間位置仍然存在。

19. position 跟 display、overflow、float 這些特性相互疊加后會怎么樣?

display 屬性規(guī)定元素應(yīng)該生成的框的類型;position屬性規(guī)定元素的定位類型;float屬性是一種布局方式,定義元素在哪個(gè)方向浮動。
類似于優(yōu)先級機(jī)制:position:absolute/fixed優(yōu)先級最高,有他們在時(shí),float不起作用,display值需要調(diào)整。float 或者absolute定位的元素,只能是塊元素或表格。

20. 為什么會出現(xiàn)浮動? 什么時(shí)候需要清除浮動?清除浮動有哪些方式?優(yōu)缺點(diǎn)是什么?你認(rèn)為最好的是哪一種?為什么?

出現(xiàn)浮動的原因:

浮動元素碰到包含它的邊框或者浮動元素的邊框停留。在CSS規(guī)范中,浮動定位不屬于正常的頁面流,而是獨(dú)立定位的,所以文檔流的塊框表現(xiàn)得就像浮動框不存在一樣。浮動元素會漂浮在文檔流的塊框上。

關(guān)于css的定位機(jī)制:普通流,浮動,絕對定位(position:fixed是position:absolute的一個(gè)子類)。浮動的框可以左右移動,直到它的外邊緣遇到包含框或者另一個(gè)浮動框的邊緣,所以才說浮動定位不屬于正常的頁面流。文檔中的普通流就會表現(xiàn)得和浮動框不存在一樣,當(dāng)浮動框高度超出包含框的時(shí)候,就會出現(xiàn)包含框不會自動伸縮高度類筆盒浮動元素。所以,只含有浮動元素的父容器在顯示時(shí)不需要考慮子元素的位置,就造成顯示父容器像空容器一樣。

浮動帶來的問題:

  1. 父元素的高度無法被撐開,影響與父元素同級的元素
  2. 與浮動元素同級的非浮動元素(內(nèi)聯(lián)元素)會跟隨其后
  3. 若非第一個(gè)元素浮動,則該元素之前的元素也需要浮動,否則會影響頁面顯示的結(jié)構(gòu)。

清除浮動的方式

  1. 父級p定義height
  2. 最后一個(gè)浮動元素后加空 p 標(biāo)簽 并添加樣式 clear:both。(理論上能清除任何標(biāo)簽,增加無意義的標(biāo)簽)
  3. 包含浮動元素的父標(biāo)簽添加樣式 overflow 為 hidden 或 auto。
  4. 父級 p 定義 zoom(空標(biāo)簽元素清除浮動而不得不增加無意義代碼的弊端,使用zoom:1用于兼容IE)
  5. 用after偽元素清除浮動(用于非IE瀏覽器)

1、父級p定義height

原理:父級p手動定義height,就解決了父級p無法自動獲取到高度的問題

優(yōu)點(diǎn):簡單,代碼少,容易掌握

缺點(diǎn):只適合高度固定的布局,要給出精確的高度,如果高度和父級p不一樣時(shí),會產(chǎn)生問題

建議:不推薦使用,只建議高度固定的布局時(shí)使用

2、結(jié)尾處加空 p 標(biāo)簽 clear:both

原理:添加一個(gè)空p,利用css提高的clear:both清除浮動,讓父級p能自動獲取到高度

優(yōu)點(diǎn):簡單,代碼少,瀏覽器支持好,不容易出現(xiàn)怪問題

缺點(diǎn):不少初學(xué)者不理解原理;如果頁面浮動布局多,就要增加很多空p,讓人感覺很不爽

建議:不推薦使用,但此方法是以前主要使用的一種清除浮動方法

3、父級 p 定義 overflow:hidden

原理:必須定義width或zoom:1,同時(shí)不能定義height,使用overflow:hidden時(shí),瀏覽器會自動檢查浮動區(qū)域的高度

優(yōu)點(diǎn):簡單,代碼少,瀏覽器支持好

缺點(diǎn):不能和position配合使用,因?yàn)槌龅某叽绲臅浑[藏

建議:只推薦沒有使用position或?qū)verflow:hidden理解比較深的朋友使用

4、父級p定義偽類 :after 和 zoom

原理:IE8以上和非IE瀏覽器才支持:after,原理和方法2有點(diǎn)類似,zoom(IE轉(zhuǎn)有屬性)可解決ie6,ie7浮動問題

優(yōu)點(diǎn):瀏覽器支持好,不容易出現(xiàn)怪問題(目前:大型網(wǎng)站都有使用,如:騰迅,網(wǎng)易,新浪等等)

缺點(diǎn):代碼多,不少初學(xué)者不理解原理,要兩句代碼結(jié)合使用,才能讓主流瀏覽器都支持

建議:推薦使用,建議定義公共類,以減少CSS代碼

(1) 在子元素后添加一個(gè)空p  p{clear:both;}

(2) 在父元素中{overflow:hidden|auto;zoom:1}

(3) :after偽選擇符,在父容器的尾部自動創(chuàng)建一個(gè)子元素

.clearfix:after {
    content: "\0020";display: block;height: 0;clear: both;
}
.clearfix {
    zoom: 1;
}復(fù)制代碼

"clearfix"是父容器的class名稱,"content:"020";"是在父容器的結(jié)尾處放一個(gè)空白符,

"height: 0;"是讓這個(gè)這個(gè)空白字符不顯示出來,"display: block; clear: both;"是確保這個(gè)空白字符是非浮動的獨(dú)立區(qū)塊。:after選擇符IE 6不支持,添加一條IE 6的獨(dú)有命令"zoom:1;"就行了.

21. 上下 margin 重合的問題

在重合元素外包裹一層容器,并觸發(fā)該容器生成一個(gè)BFC。例子:

<p class="aside"></p>
<p class="text">
    <p class="main"></p>
</p>
<!--下面是css代碼-->
 .aside {
            margin-bottom: 100px;  
            width: 100px;
            height: 150px;
            background: #f66;
        }
        .main {
            margin-top: 100px;
            height: 200px;
            background: #fcc;
        }
         .text{
/*盒子main的外面包一個(gè)p,通過改變此p的屬性使兩個(gè)盒子分屬于兩個(gè)不同的BFC,以此來阻止margin重疊*/
            overflow: hidden;  //此時(shí)已經(jīng)觸發(fā)了BFC屬性。
        }復(fù)制代碼

22. 設(shè)置元素浮動后,該元素的 display 值是多少?

自動變成display:block

23. 移動端的布局用過媒體查詢嗎?

通過媒體查詢可以為不同大小和尺寸的媒體定義不同的css,適應(yīng)相應(yīng)的設(shè)備的顯示。

  1. <head>里邊
    <link rel="stylesheet" type="text/css" href="xxx.css" media="only screen and (max-device-width:480px)">復(fù)制代碼
  2. CSS :
  3. @media only screen and (max-device-width:480px) {
        /css樣式/}復(fù)制代碼

24. 什么是CSS 預(yù)處理器 / 后處理器?大家為什么要使用他們?

預(yù)處理器例如:LESS、Sass、Stylus,用來預(yù)編譯Sass或less,增強(qiáng)了css代碼的復(fù)用性,還有層級、mixin、變量、循環(huán)、函數(shù)等,具有很方便的UI組件模塊化開發(fā)能力,極大的提高工作效率。

后處理器例如:PostCSS,通常被視為在完成的樣式表中根據(jù)CSS規(guī)范處理CSS,讓其更有效;目前最常做的是給CSS屬性添加瀏覽器私有前綴,實(shí)現(xiàn)跨瀏覽器兼容性的問題。

CSS 預(yù)處理器為 CSS 增加一些編程的特性,無需考慮瀏覽器的兼容性問題”,例如你可以在 CSS 中使用變量、簡單的邏輯程序、函數(shù)(如右側(cè)代碼編輯器中就使用了變量$color)等等在編程語言中的一些基本特性,可以讓你的 CSS 更加簡潔、適應(yīng)性更強(qiáng)、可讀性更佳,更易于代碼的維護(hù)等諸多好處。

其它 CSS 預(yù)處理器語言:

  • Sass(SCSS)
  • LESS
  • Stylus
  • Turbine
  • Swithch CSS
  • CSS Cacheer
  • DT CSS

為什么要使用它們?

結(jié)構(gòu)清晰,便于擴(kuò)展。

可以方便地屏蔽瀏覽器私有語法差異。這個(gè)不用多說,封裝對瀏覽器語法差異的重復(fù)處理,減少無意義的機(jī)械勞動。

可以輕松實(shí)現(xiàn)多重繼承。

完全兼容 CSS 代碼,可以方便地應(yīng)用到老項(xiàng)目中。LESS 只是在 CSS 語法上做了擴(kuò)展,所以老的 CSS 代碼也可以與 LESS 代碼一同編譯。

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

  1. 避免過度約束
  2. 避免后代選擇符
  3. 避免鏈?zhǔn)竭x擇符
  4. 使用緊湊的語法
  5. 避免不必要的命名空間
  6. 避免不必要的重復(fù)
  7. 最好使用表示語義的名字。一個(gè)好的類名應(yīng)該是描述他是什么而不是像什么
  8. 避免!important,可以選擇其他選擇器
  9. 盡可能的精簡規(guī)則,你可以合并不同類里的重復(fù)規(guī)則
  10. 修復(fù)解析錯(cuò)誤
  11. 避免使用多類選擇符
  12. 移除空的css規(guī)則
  13. 正確使用display的屬性:由于display的作用,某些樣式組合會無效,徒增樣式體積的同時(shí)也影響解析性能。

    display:inline后不應(yīng)該再使用width、height、margin、padding以及float。

    display:inline-block后不應(yīng)該再使用float。

    display:block后不應(yīng)該再使用vertical-align。

    display:table-*后不應(yīng)該再使用margin或者float。

  14. 不濫用浮動:雖然浮動不可避免,但不可否認(rèn)很多css bug是由于浮動而引起。
  15. 不濫用web字體

    對于中文網(wǎng)站來說Web Fonts可能很陌生,國外卻很流行。web fonts通常體積龐大,而且一些瀏覽器在下載web fonts時(shí)會阻塞頁面渲染損傷性能。

  16. 不聲明過多的font-size:這是設(shè)計(jì)層面的問題,設(shè)計(jì)精良的頁面不會有過多的font-size聲明。
  17. 不在選擇符中使用ID標(biāo)識符,主要考慮到樣式重用性以及與頁面的耦合性。
  18. 不給h2~h7元素定義過多的樣式
  19. 全站統(tǒng)一定義一遍heading元素即可,若需額外定制樣式,可使用其他選擇符作為代替。
  20. 不重復(fù)定義h2~h7元素
  21. 值為0時(shí)不需要任何單位
  22. 標(biāo)準(zhǔn)化各種瀏覽器前綴:通常將瀏覽器前綴置于前面,將標(biāo)準(zhǔn)樣式屬性置于最后,類似:.foo{
        -moz-border-radius: 5px;
        border-radius: 5px; 
    }復(fù)制代碼
  23. 使用CSS漸變等高級特性,需指定所有瀏覽器的前綴
  24. 避免讓選擇符看起來像正則表達(dá)式
  25. CSS3添加了一些類似~=等復(fù)雜屬性,也不是所有瀏覽器都支持,需謹(jǐn)慎使用。
  26. 遵守盒模型規(guī)則(Beware of broken box models)

26. 瀏覽器是怎樣解析CSS選擇器的?

CSS選擇器的解析是從右向左解析的,為了避免對所有元素進(jìn)行遍歷。若從左向右的匹配,發(fā)現(xiàn)不符合規(guī)則,需要進(jìn)行回溯,會損失很多性能。若從右向左匹配,先找到所有的最右節(jié)點(diǎn),對于每一個(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,最終用來進(jìn)行繪圖。在建立 Render Tree 時(shí)(WebKit 中的「Attachment」過程),瀏覽器就要為每個(gè) DOM Tree 中的元素根據(jù) CSS 的解析結(jié)果(Style Rules)來確定生成怎樣的 Render Tree。

27. 在網(wǎng)頁中的應(yīng)該使用奇數(shù)還是偶數(shù)的字體?為什么呢?

使用偶數(shù)字體。偶數(shù)字號相對更容易和 web 設(shè)計(jì)的其他部分構(gòu)成比例關(guān)系。Windows 自帶的點(diǎn)陣宋體(中易宋體)從 Vista 開始只提供 12、14、16 px 這三個(gè)大小的點(diǎn)陣,而 13、15、17 px時(shí)用的是小一號的點(diǎn)。(即每個(gè)字占的空間大了 1 px,但點(diǎn)陣沒變),于是略顯稀疏。

28. margin 和 padding 分別適合什么場景使用?

◆何時(shí)應(yīng)當(dāng)使用margin

需要在border外側(cè)添加空白時(shí)。

空白處不需要背景(色)時(shí)。

上下相連的兩個(gè)盒子之間的空白,需要相互抵消時(shí)。如15px+20px的margin,將得到20px的空白。

◆何時(shí)應(yīng)當(dāng)時(shí)用padding

需要在border內(nèi)測添加空白時(shí)。

空白處需要背景(色)時(shí)。

上下相連的兩個(gè)盒子之間的空白,希望等于兩者之和時(shí)。如15px+20px的padding,將得到35px的空白。

◆瀏覽器兼容性問題

在IE5.x、IE6中,為float的盒子指定margin時(shí),左側(cè)margin可能會變成兩倍的寬度。通過改用padding或指定盒子為display:inline可以解決。

29. 元素豎向的百分比設(shè)定是相對于容器的高度嗎?

當(dāng)按百分比設(shè)定一個(gè)元素的寬度時(shí),它是相對于父容器的寬度計(jì)算的,但是,對于一些表示豎向距離的屬性,例如 padding-top , padding-bottom , margin-top , margin-bottom 等,當(dāng)按百分比設(shè)定它們時(shí),依據(jù)的也是父容器的寬度,而不是高度。

30. 全屏滾動的原理是什么?用到了CSS的哪些屬性?

  1. 原理:有點(diǎn)類似于輪播,整體的元素一直排列下去,假設(shè)有5個(gè)需要展示的全屏頁面,那么高度是500%,只是展示100%,剩下的可以通過transform進(jìn)行y軸定位,也可以通過margin-top實(shí)現(xiàn)
  2. overflow:hidden;transition:all 1000ms ease;

31. 什么是響應(yīng)式設(shè)計(jì)?響應(yīng)式設(shè)計(jì)的基本原理是什么?如何兼容低版本的IE?

響應(yīng)式網(wǎng)站設(shè)計(jì)(Responsive Web design)是一個(gè)網(wǎng)站能夠兼容多個(gè)終端,而不是為每一個(gè)終端做一個(gè)特定的版本。

基本原理是通過媒體查詢檢測不同的設(shè)備屏幕尺寸做處理。

頁面頭部必須有meta聲明的viewport。

<meta name=’viewport’ content=”width=device-width, initial-scale=1. maximum-scale=1,user-scalable=no”>復(fù)制代碼

32. 視差滾動效果?

視差滾動(Parallax Scrolling)通過在網(wǎng)頁向下滾動的時(shí)候,控制背景的移動速度比前景的移動速度慢來創(chuàng)建出令人驚嘆的3D效果。

  1. CSS3實(shí)現(xiàn)
    優(yōu)點(diǎn):開發(fā)時(shí)間短、性能和開發(fā)效率比較好,缺點(diǎn)是不能兼容到低版本的瀏覽器
  2. jQuery實(shí)現(xiàn)
    通過控制不同層滾動速度,計(jì)算每一層的時(shí)間,控制滾動效果。
    優(yōu)點(diǎn):能兼容到各個(gè)版本的,效果可控性好
    缺點(diǎn):開發(fā)起來對制作者要求高
  3. 插件實(shí)現(xiàn)方式
    例如:parallax-scrolling,兼容性十分好

33. ::before 和 :after中雙冒號和單冒號有什么區(qū)別?解釋一下這2個(gè)偽元素的作用

  1. 單冒號(:)用于CSS3偽類,雙冒號(::)用于CSS3偽元素。
  2. ::before就是以一個(gè)子元素的存在,定義在元素主體內(nèi)容之前的一個(gè)偽元素。并不存在于dom之中,只存在在頁面之中。

:before 和 :after 這兩個(gè)偽元素,是在CSS2.1里新出現(xiàn)的。起初,偽元素的前綴使用的是單冒號語法,但隨著Web的進(jìn)化,在CSS3的規(guī)范里,偽元素的語法被修改成使用雙冒號,成為::before ::after

注意:對于IE6/7/8僅支持單冒號表示法,而現(xiàn)代瀏覽器同時(shí)支持這兩種表示法。另外,在CSS3中單冒號和雙冒號的區(qū)域主要是用來區(qū)分偽類和偽元素的。

34. 你對line-height是如何理解的?

行高是指一行文字的高度,具體說是兩行文字間基線的距離。CSS中起高度作用的是height和line-height,沒有定義height屬性,最終其表現(xiàn)作用一定是line-height。
單行文本垂直居中:把line-height值設(shè)置為height一樣大小的值可以實(shí)現(xiàn)單行文字的垂直居中,其實(shí)也可以把height刪除。
多行文本垂直居中:需要設(shè)置display屬性為inline-block。

35. 怎么讓Chrome支持小于12px 的文字?

p{
    font-size:10px;
    -webkit-transform:scale(0.8);//0.8是縮放比例
} 
復(fù)制代碼

36. 讓頁面里的字體變清晰,變細(xì)用CSS怎么做?

-webkit-font-smoothing 在 window 系統(tǒng)下沒有起作用,但是在 IOS 設(shè)備上起作用 -webkit-font-smoothing:antialiased 是最佳的,灰度平滑。

37. position:fixed; 在 android 下無效怎么處理 ?

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"/>復(fù)制代碼

38. 如果需要手動寫動畫,你認(rèn)為最小時(shí)間間隔是多久,為什么?

多數(shù)顯示器默認(rèn)頻率是60Hz,即1秒刷新60次,所以理論上最小間隔為1/60*1000ms = 16.7ms。

39.  li 與 li 之間有看不見的空白間隔是什么原因引起的?有什么解決辦法?

行框的排列會受到中間空白(回車空格)等的影響,因?yàn)榭崭褚矊儆谧址?這些空白也會被應(yīng)用樣式,占據(jù)空間,所以會有間隔,把字符大小設(shè)為0,就沒有空格了。
解決方法:

  1. 可以將<li>代碼全部寫在一排
  2. 浮動li中float:left
  3. 在ul中用font-size:0(谷歌不支持);
  4. 可以將 ul{letter-spacing: -4px;};li{letter-spacing: normal;}

40. display:inline-block 什么時(shí)候會顯示間隙?

  1. 有空格時(shí)候會有間隙 解決:s除空格
  2. margin正值的時(shí)候 解決:margin使用負(fù)值
  3. 使用font-size時(shí)候 解決:font-size:0、letter-spacing、word-spacing

41. 有一個(gè)高度自適應(yīng)的p,里面有兩個(gè)p,一個(gè)高度100px,希望另一個(gè)填滿剩下的高度

外層p使用position:relative;高度要求自適應(yīng)的p使用position: absolute; top: 100px; bottom: 0; left: 0

42.  png、jpg、gif 這些圖片格式解釋一下,分別什么時(shí)候用。有沒有了解過webp?

  1. png是便攜式網(wǎng)絡(luò)圖片(Portable Network Graphics)是一種無損數(shù)據(jù)壓縮位圖文件格式.優(yōu)點(diǎn)是:壓縮比高,色彩好。 大多數(shù)地方都可以用。
  2. jpg是一種針對相片使用的一種失真壓縮方法,是一種破壞性的壓縮,在色調(diào)及顏色平滑變化做的不錯(cuò)。在www上,被用來儲存和傳輸照片的格式。
  3. gif是一種位圖文件格式,以8位色重現(xiàn)真色彩的圖像??梢詫?shí)現(xiàn)動畫效果.
  4. webp格式是谷歌在2010年推出的圖片格式,壓縮率只有jpg的2/3,大小比png小了45%。缺點(diǎn)是壓縮的時(shí)間更久了,兼容性不好,目前谷歌和opera支持。

43. style 標(biāo)簽寫在 body 后與 body前有什么區(qū)別?

頁面加載自上而下 當(dāng)然是先加載樣式。
寫在 body 標(biāo)簽后由于瀏覽器以逐行方式對HTML文檔進(jìn)行解析,當(dāng)解析到寫在尾部的樣式表(外聯(lián)或?qū)懺?style 標(biāo)簽)會導(dǎo)致瀏覽器停止之前的渲染,等待加載且解析樣式表完成之后重新渲染,在windows的IE下可能會出現(xiàn) FOUC 現(xiàn)象(即樣式失效導(dǎo)致的頁面閃爍問題)

44. CSS屬性overflow屬性定義溢出元素內(nèi)容區(qū)的內(nèi)容會如何處理?

參數(shù)是 scroll 時(shí)候,必會出現(xiàn)滾動條。
參數(shù)是 auto 時(shí)候,子元素內(nèi)容大于父元素時(shí)出現(xiàn)滾動條。
參數(shù)是 visible 時(shí)候,溢出的內(nèi)容出現(xiàn)在父元素之外。
參數(shù)是 hidden 時(shí)候,溢出隱藏。

45. CSS Sprites是什么?它的優(yōu)勢和劣勢?

CSS Sprites小圖片背景共享技術(shù)。它把一堆小的圖片整合到一張大的圖片上。然后利用CSS的 background-image,background- repeat,background-position 的組合進(jìn)行背景定位。利用CSS Sprites能很好地減少網(wǎng)頁的http請求,從而大大的提高頁面的性能;CSS Sprites能減少圖片的字節(jié)。

優(yōu)勢:

1.很好的減少網(wǎng)頁的請求,大大提高頁面的性能;

2.減少圖片的字節(jié);

3.解決了網(wǎng)頁設(shè)計(jì)師在圖片命名上的困擾;

4.更換風(fēng)格方便,維護(hù)方便。

劣勢:

1.圖片合并時(shí)需預(yù)留好足夠空間,寬屏、高分辨率的屏幕下易出現(xiàn)背景斷裂;

2.開發(fā)較麻煩,測量繁瑣;(可使用樣式生成器)

3.維護(hù)麻煩,背景少許改動有可能影響整張圖片,使得字節(jié)增加還要改動css。

46. CSS 偽類和偽元素的區(qū)別?

第一種回答:

偽類: :focus、:hover、:active

偽元素::before、:after

偽類本質(zhì)上是為了彌補(bǔ)常規(guī)CSS選擇器的不足,以便獲取到更多信息;

偽元素本質(zhì)上是創(chuàng)建了一個(gè)有內(nèi)容的虛擬容器;

CSS3中偽類和偽元素的語法不同;

可以同時(shí)使用多個(gè)偽類,而只能同時(shí)使用一個(gè)偽元素;

第二種回答:

偽類:偽類選擇元素基于的是當(dāng)前元素處于的狀態(tài),或者說元素當(dāng)前所具有的特性,而不是元素的id、class、屬性等靜態(tài)的標(biāo)志。由于狀態(tài)是動態(tài)變化的,所以一個(gè)元素達(dá)到一個(gè)特定狀態(tài)時(shí),它可能得到一個(gè)偽類的樣式;當(dāng)狀態(tài)改變時(shí),它又會失去這個(gè)樣式。由此可以看出,它的功能和class有些類似,但它是基于文檔之外的抽象,所以叫偽類。

:first-child    :link:    :visitive    :hover    :active    :focus   :lang

偽元素:與偽類針對特殊狀態(tài)的元素不同的是,偽元素是對元素中的特定內(nèi)容進(jìn)行操作,它所操作的層次比偽類更深了一層,也因此它的動態(tài)性比偽類要低得多。實(shí)際上,設(shè)計(jì)偽元素的目的就是去選取諸如元素內(nèi)容第一個(gè)字(母)、第一行,選取某些內(nèi)容前面或后面這種普通的選擇器無法完成的工作。它控制的內(nèi)容實(shí)際上和元素是相同的,但是它本身只是基于元素的抽象,并不存在于文檔中,所以叫偽元素。

:first-line 
:first-letter 
:before 
:after復(fù)制代碼

47.有哪項(xiàng)方式可以對一個(gè) DOM 設(shè)置它的CSS樣式?  

外部樣式表,引入一個(gè)外部css文件

內(nèi)部樣式表,將css代碼放在 <head> 標(biāo)簽內(nèi)部

內(nèi)聯(lián)樣式,將css樣式直接定義在 HTML 元素內(nèi)部

48. CSS 中可以通過哪些屬性定義,使得一個(gè) DOM 元素不顯示在瀏覽器可視范圍內(nèi)?  

最基本的:設(shè)置 display 屬性為 none,或者設(shè)置 visibility 屬性為 hidden

技巧性:設(shè)置寬高為 0,設(shè)置透明度為 0,設(shè)置 z-index 位置在 -1000

49. 什么是 Css Hack?ie6,7,8 的 hack 分別是什么?

答案:解決各瀏覽器對 CSS 解釋不同所采取的,區(qū)別不同瀏覽器制作不同CSS樣式的設(shè)置就叫作 CSS Hack。

50. 行內(nèi)元素和塊級元素的具體區(qū)別是什么?行內(nèi)元素的 padding 和 margin 可設(shè)置嗎?

塊級元素( block )特性:

總是獨(dú)占一行,表現(xiàn)為另起一行開始,而且其后的元素也必須另起一行顯示;

寬度(width)、高度(height)、內(nèi)邊距(padding)和外邊距(margin)都可控制;

內(nèi)聯(lián)元素(inline)特性:

和相鄰的內(nèi)聯(lián)元素在同一行;

寬度(width)、高度(height)、內(nèi)邊距的top/bottom(padding-top/padding-bottom)和外邊距的top/bottom(margin-top/margin-bottom)都不可改變(也就是padding和margin的left和right是可以設(shè)置的)。

那么問題來了,瀏覽器還有默認(rèn)的天生inline-block元素(擁有內(nèi)在尺寸,可設(shè)置高寬,但不會自動換行),有哪些?

答案:<input> 、<img> 、<button> 、<textarea>。

相關(guān)文章 為何img、input等內(nèi)聯(lián)元素可以設(shè)置寬高

51. 什么是外邊距重疊?重疊的結(jié)果是什么?

外邊距重疊就是 margin-collapse。

在CSS當(dāng)中,相鄰的兩個(gè)盒子的外邊距可以結(jié)合成一個(gè)單獨(dú)的外邊距。這種合并外邊距的方式被稱為折疊,并且因而所結(jié)合成的外邊距稱為折疊外邊距。

折疊結(jié)果遵循下列計(jì)算規(guī)則:

  1. 兩個(gè)相鄰的外邊距都是正數(shù)時(shí),折疊結(jié)果是它們兩者之間較大的值。
  2. 兩個(gè)相鄰的外邊距都是負(fù)數(shù)時(shí),折疊結(jié)果是兩者絕對值的較大值。
  3. 兩個(gè)外邊距一正一負(fù)時(shí),折疊結(jié)果是兩者的相加的和?! ?/li>

52. rgba() 和 opacity 的透明效果有什么不同?

rgba()和opacity都能實(shí)現(xiàn)透明效果,但最大的不同是opacity作用于元素,以及元素內(nèi)的所有內(nèi)容的透明度,

而rgba()只作用于元素的顏色或其背景色。(設(shè)置rgba透明的元素的子元素不會繼承透明效果?。?/p>

53. css 中可以讓文字在垂直和水平方向上重疊的兩個(gè)屬性是什么?

垂直方向:line-height

水平方向:letter-spacing (letter-spacing 屬性增加或減少字符間的空白)

那么問題來了,關(guān)于letter-spacing的妙用知道有哪些么?

答案:可以用于消除inline-block元素間的換行符空格間隙問題。

54. px 和 em 的區(qū)別。

px和em都是長度單位,區(qū)別是:px的值是固定的,指定是多少就是多少,計(jì)算比較容易。em得值不是固定的,并且em會繼承父級元素的字體大小。

瀏覽器的默認(rèn)字體高都是16px。所以未經(jīng)調(diào)整的瀏覽器都符合: 1em=16px。那么12px=0.75em, 10px=0.625em。

55. 描述一個(gè)"reset"的CSS文件并如何使用它。知道normalize.css嗎?你了解他們的不同之處? 

不同的瀏覽器對一些元素有不同的默認(rèn)樣式,如果不處理,在不同的瀏覽器下會存在必要的風(fēng)險(xiǎn)。

你可能會用Normalize來代替你的重置樣式文件。它沒有重置所有的樣式風(fēng)格,但僅提供了一套合理的默認(rèn)樣式值。既能讓眾多瀏覽器達(dá)到一致和合理,但又不擾亂其他的東西(如粗體的標(biāo)題)。

56. 問:translate()方法能移動一個(gè)元素在z軸上的位置?

不能。它只能移動x,y軸的位置。translate3d可以。

57. CSS3有哪些新特性?

1. CSS3實(shí)現(xiàn)圓角(border-radius),陰影(box-shadow),

2. 對文字加特效(text-shadow、),線性漸變(gradient),旋轉(zhuǎn)(transform)

3. transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);// 旋轉(zhuǎn),縮放,定位,傾斜

4. 增加了更多的CSS選擇器 多背景 rgba

5. 在CSS3中唯一引入的偽元素是 ::selection.

6. 媒體查詢,多欄布局

7. border-image

58. xhtml 和 html 有什么區(qū)別

功能上的差別:HTML是一種基本的WEB網(wǎng)頁設(shè)計(jì)語言;XHTML是一個(gè)基于XML的置標(biāo)語言,XHTML可兼容各大瀏覽器、手機(jī)以及PDA,并且瀏覽器也能快速正確地編譯網(wǎng)頁。

書寫習(xí)慣上:

(1) XHTML 所在標(biāo)簽都必須小寫

(2) XHTML 標(biāo)簽必須成雙成對

(3) XHTML 標(biāo)簽順序必須正確

(4) XHTML 所有屬性都必須使用雙引號

(5) 不XHTML 允許使用target=”_blank”

(6) XHTML 文檔必須擁有根元素。

(7) XHTML 元素必須被正確地嵌套。

59. 前端頁面有哪三層構(gòu)成,分別是什么?

結(jié)構(gòu)層 Html 表示層 CSS 行為層 js

60. css的基本語句構(gòu)成是?

選擇器{屬性1:值1;屬性2:值2;……}

61. 與 HTML4 比較,HTML5 廢棄了哪些元素?

廢棄的元素包括:

· frame

· frameset

· noframe

· applet

· big

· center

· basefront

62. CSS引入的方式有哪些?使用Link和@import有什么區(qū)別?

答:內(nèi)聯(lián),內(nèi)嵌,外鏈,導(dǎo)入

(1)link 屬于 XHTML 標(biāo)簽,除了加載 CSS 外,還能用于定義RSS,定義 rel 連接屬性等作用,無兼容性,支持使用javascript改變樣式;而@import是CSS提供的,只能用于加載CSS,不支持使用 javascript 改變樣式;

(2)頁面被加載的時(shí),link 會被同時(shí)加載,而@import 引用的CSS會等到頁面加載完再加載;

(3)import是CSS2.1 提出的,CSS2.1以下瀏覽器不支持,只在IE5以上才能被識別,而link是XHTML標(biāo)簽,無兼容問題。

63. 介紹一下你對瀏覽器內(nèi)核的理解

主要分成兩部分:渲染引擎(layout engineer或Rendering Engine)和 JS 引擎。

(1)渲染引擎:負(fù)責(zé)取得網(wǎng)頁的內(nèi)容(HTML、XML、圖像等等)、整理訊息(例如加入CSS等),以及計(jì)算網(wǎng)頁的顯示方式,然后會輸出至顯示器或打印機(jī)。瀏覽器的內(nèi)核的不同對于網(wǎng)頁的語法解釋會有不同,所以渲染的效果也不相同。所有網(wǎng)頁瀏覽器、電子郵件客戶以及其他它所需要編輯、顯示網(wǎng)絡(luò)的應(yīng)用程序都需要內(nèi)核。

(2)JS引擎則:解析和執(zhí)行JavaScript 來實(shí)現(xiàn)網(wǎng)頁的動態(tài)效果;

最開始渲染引擎和 JS 并沒有區(qū)分的很明確,后來JS引擎越來越獨(dú)立,內(nèi)核就傾向于只渲染引擎。

64. 常見的瀏覽器內(nèi)核有哪計(jì)算些?

Trident內(nèi)核:IE,MaxThon,TT,The World,360,搜狗瀏覽器等。[又稱MSHTML]

Gecko內(nèi)核:Netscape6及以上版本,F(xiàn)F,MozillaSuite/SeaMonkey等。

Presto內(nèi)核:Opera7及以上。[Opera內(nèi)核原為:Presto,現(xiàn)為:Blink;]

Webkit內(nèi)核:Safari,Chrome等。[ Chrome的:Blink(WebKit的分支)]

EdgeHTML內(nèi)核:Microsoft Edge。[此內(nèi)核其實(shí)是從MSHTML fork而來,刪掉了幾乎所有的IE私有特性]

65. 對WEB標(biāo)準(zhǔn)以及W3C的理解與認(rèn)識

標(biāo)簽閉合、標(biāo)簽小寫、不亂嵌套、提高搜索機(jī)器人搜索幾率、使用外鏈css和js腳本、結(jié)構(gòu)行為表現(xiàn)的分離、文件下載與頁面速度更快、內(nèi)容能被更多的用戶所訪問、內(nèi)容能被更廣泛的設(shè)備所訪問、更少的代碼和組件,容易維護(hù)、改版方便,不需要變動頁面內(nèi)容、提供打印版本而不需要復(fù)制內(nèi)容、提高網(wǎng)站易用性;

66. 為什么HTML5里面我們不需要DTD(Document Type Definition文檔類型定義)?

HTML5沒有使用SGML或者XHTML,他是一個(gè)全新的東西,因此你不需要參考DTD,對于HTML5,你僅需放置下面的文檔類型代碼告訴瀏覽器識別這是HTML5文檔

67. 如果我不放入,HTML5還會工作么?

不會,瀏覽器將不能識別他是HTML文檔,同時(shí)HTML5的標(biāo)簽將不能正常工作

68. HTML5 中的 datalist 是什么?

HTML5中的Datalist元素有助于提供文本框自動完成特性,如下圖所示:

69. CSS中使用列布局是什么?

CSS列布局幫助你分割文本變?yōu)榱校缈紤]下面的雜志新聞在一個(gè)大的文本中,但是我們需要在他們之間使用邊界劃分為3列,這里HTML5的列布局就有所幫助了

70. 如何水平并且垂直居中一張背景圖

設(shè)置 background-position:center;

71. font-style屬性可以讓它賦值為“oblique”是什么意思

讓一種字體標(biāo)識為斜體(oblique),如果沒有這種格式,就使用italic字體

72. 如何理解 CSS 的繼承和重用?

繼承:在一個(gè)屬性應(yīng)用于一個(gè)特定標(biāo)簽之后,該標(biāo)簽的子標(biāo)簽也應(yīng)該應(yīng)用該屬性。這一行為稱為繼承。但并不是所有的屬性都會被繼承。如文字樣式一般都繼承,盒圖的寬高一般不 繼承,總之該繼承的都會繼承,不該繼承的都不繼承。

重用:一個(gè)樣式文件,可以多個(gè)頁面使用,這對于一些公共樣式的重構(gòu)是很有用的。

73. 制作一個(gè)訪問量很高的大型網(wǎng)站,你會如何來管理所有CSS文件,js 與圖片?

答案:涉及到人手、分工、同步

(1)   先期團(tuán)隊(duì)必須確定好全局樣式,編碼模式等

(2)   編寫習(xí)慣必須一致

(3)   標(biāo)注樣式編寫人,各模塊都及時(shí)標(biāo)注(標(biāo)注關(guān)鍵樣式調(diào)用的地方)

(4)   頁面進(jìn)行標(biāo)注

(5)   Css與html分文件夾并行存放,命名都要統(tǒng)一

(6)   Js分文件夾存放,命名以該JS功能為準(zhǔn)英文翻譯

(7)   圖片采用整合的.png格式文件使用,盡量整合在一起,方便將來的管理。

74. 強(qiáng)制換行的css是什么?

Word-break:break-all;

(HTML和CSS)測試題:

1. 簡述的作用。

<!DOCTYPE> 聲明位于文檔中的最前面的位置,處于 <html> 標(biāo)簽之前。

它不是一個(gè) HTML 標(biāo)簽,它是用來告知(聲明) Web 瀏覽器頁面使用了哪種 HTML 版本

2. 行內(nèi)元素和塊級元素的區(qū)別是是什么。

行內(nèi)元素:

(1)行內(nèi)元素不換行

(2)行內(nèi)元素不可以設(shè)置大小

(3)行內(nèi)元素大小由內(nèi)容決定

塊元素

(1)塊元素獨(dú)立成行

(2)塊元素可以設(shè)置大小

(3)塊元素如果不設(shè)置寬度,寬度會自適應(yīng)其父級的寬度

3. 列舉常用行內(nèi)元素和塊元素,并解釋其作用

行元素:

span、img、a、lable、input、abbr(縮寫)、em(強(qiáng)調(diào))、big、cite(引用)、i(斜體)、q(短引用)、textarea、select(下拉列表)、small、sub、sup,strong、u(下劃線)、button(默認(rèn)display:inline-block)

從瀏覽器的顯示結(jié)果可以看出,相鄰的行內(nèi)元素不換行,寬度即為內(nèi)容的寬度、padding的4個(gè)方向都有效(從span標(biāo)簽可以看出,對于行內(nèi)非替換元素,不會影響其行高,不會撐開父元素;而對于替換元素,則會撐開父元素)、margin只有水平方向有效(其中垂直方向的margin對行內(nèi)替換元素(比如img元素)有效,對行內(nèi)非替換元素?zé)o效)、不可以設(shè)置width和height屬性。行內(nèi)塊元素表現(xiàn)其實(shí)和行內(nèi)元素一樣,只是其可以設(shè)置width和height屬性。

塊元素:

p、p、h2~h7、ul、ol、dl、li、dd、table、hr、blockquote、address、table、menu、pre,HTML5新增的header、section、aside、footer等

從瀏覽器的顯示結(jié)果可以看出,塊級元素新開啟一行(即使是設(shè)置了width屬性也是獨(dú)占一行)、盡可能撐滿父級元素的寬度,可以設(shè)置width和height屬性;table元素瀏覽器默認(rèn)的display屬性為table。

4. 讓行內(nèi)元素水平居中的兩種方法

(1) 找到對應(yīng)其標(biāo)簽的父級,給其父級設(shè)置 text-align : center;

(2) 將元素轉(zhuǎn)化成塊元素,設(shè)置margin : 0 auto,(必須是塊元素,而且有寬度)

5. 如何實(shí)現(xiàn)一個(gè)標(biāo)題文字居中?text-align : center

6. 使塊元素在一行顯示。float : left

7. 文字加粗,以及文字字體傾斜

加粗:

CSS:font-weight : bold

HTML :<b></b>,<strong></strong>

斜體:

CSS :font-style : italic | oblique,font-style : normal(正常的字體)

HTML :<i></i> ,<em></em>

?8. 解決 img 圖片自帶邊距的問題

谷歌中這樣是解釋的:

圖片底部的空隙實(shí)際上涉及行內(nèi)元素的布局模型,圖片默認(rèn)的垂直對齊方式是基線,而基線的位置是與字體相關(guān)的。所以在某些時(shí)候,圖片底部的空隙可能是 2px,而有時(shí)可能是 4px 或更多。不同的 font-size 應(yīng)該也會影響到這個(gè)空隙的大小。

解決辦法:

最優(yōu)的解決辦是定義vertical-align,注:定義vertical-align為middle時(shí)在IE6中大概還有一像素的頂邊距,最好為top或bottom。當(dāng)然還有種極端解決辦法大家可以試試就是將 父容器的字體大小為零,font-size:0

(1)轉(zhuǎn)化成(行級)塊元素

 display : block復(fù)制代碼

(2)浮動,浮動后的元素默認(rèn)可以轉(zhuǎn)化為塊元素(可以隨意設(shè)置寬高屬性)

float : left;復(fù)制代碼

(3)給 img 定義 vertical-align(消除底部邊距)

img{    
    border: 0;    
    vertical-align: bottom;
}復(fù)制代碼

(4)將其父容器的font-size 設(shè)為 0;

(5)給父標(biāo)簽設(shè)置與圖片相同的高度

9. 如果使用了 float 的元素,沒有實(shí)現(xiàn)并排效果,可能出現(xiàn)的問題?

父級的寬度不夠,導(dǎo)致元素?zé)o法并排顯示;

10. 設(shè)置css方式有哪些?

行內(nèi)樣式、內(nèi)部樣式(寫一個(gè)style)、外部樣式

11. CSS 內(nèi)邊距和外邊界用什么屬性表示?

padding margin復(fù)制代碼

12. 清除所有的默認(rèn)邊距。

padding : 0;
margin : 0;復(fù)制代碼

13. 單詞間距與字母間距屬性,中文應(yīng)用哪一種?

word-spacing : 單詞

letter-spacing : 字母、中文

14. 文字如何加下劃線,上劃線,刪除線

text-decoration : underline | overline | line-through

15. 清除列表符號,背景改成圖片

list-style:none;
background-image:url()復(fù)制代碼

16. 邊框(boder)得基本屬性都有哪些?

寬度(width)

顏色(color)

線形(solid,dashed,dotted,)實(shí)線,虛線,點(diǎn)畫線

17. 行元素如何轉(zhuǎn)化為塊元素,或者 行級塊元素,行級塊元素有什么特點(diǎn)

diaplay:block | inline-block

18. 標(biāo)簽上 title 屬性與 alt 屬性的區(qū)別是什么?

title :鼠標(biāo)放入時(shí)提示的文字,

alt : 圖片路徑出錯(cuò)時(shí),提示文字

19. 如何防止出現(xiàn)亂碼?

<meta charset="UTF-8">

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

網(wǎng)站名稱:CSS有哪些經(jīng)典面試題
當(dāng)前路徑:http://aaarwkj.com/article42/gpgdhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)頁設(shè)計(jì)公司、品牌網(wǎng)站建設(shè)ChatGPT、搜索引擎優(yōu)化網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
国产情色自拍在线观看| 欧美人妻精品一区二区| 欧美日韩台湾一区二区| 欧美一区日韩二区国产三区| 国产欧洲日本一区二区| 中文字幕成人在线电影| 最新亚洲av熟女播放| 自拍偷拍一区蜜桃视频| 一区二区三区三级视频| 亚洲另类偷拍校园伦理| 国产乱码精品免费一区二区av | 国产成人在线观看av| 高清大片免费看一区二区| 精品一区二区三区毛卡片| 久久精品国产亚洲av麻豆花絮| av天堂中文一区二区三区 | 91国产熟女自拍视频| 国产成人+亚洲欧洲综合| 国产福利午夜一区二区| 日本2区3区视频在线观看| 初爱视频教程完整版韩国| 日本黄色中文字幕网站| 国产日产精品久久婷婷色| 亚洲成人久久久久久久| 国产精品亚洲欧美日韩综合| 国产日韩欧美 一区二区三区| 欧美黄片在线免费观看| 国产真实老熟女无套内| 国产v精品欧美精品v日韩| 国产精品综合av一区二区国产馆 | 三级黄色片免费久久久| 99久久久国产精品蜜臀| 天天免费日日夜夜夜夜| 日本午夜福利视频在线观看| av永久免费观看网站| 亚洲成人久久久av一区| 日韩av在线高清播放| 亚洲二区中文字幕在线观看| 在线观看国产小视频不卡| 亚洲日本在线观看午夜视频| 国产三级精品av在线|