html css相關(guān)面試題

1、H5 的新特性有哪些?C3 的新特性有哪些?

    一、H5新特性:
      1、語(yǔ)義化更好的標(biāo)簽(header、nav、aside、footer、article、section);
      2、表單控件,新增search、number、date、color、image、file、time、email;
      3、自定義屬性data-id;
      4、本地存儲(chǔ):sessionStorage(瀏覽器關(guān)閉后自動(dòng)刪除)、localStorage(長(zhǎng)期存儲(chǔ)數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不清除);
      5、新增媒體標(biāo)簽:audio、video
以上為常用的,此外不經(jīng)常用的還有:canvas、地理API(Geolocation)、webSocket、拖拽Api(ondrop)。
    二、C3新特性:
      1、邊框:border-radius,邊框陰影:box-shadow(水平陰影、垂直陰影、模糊距離、陰影尺寸、陰影顏色、inset(從外層的陰影(開始時(shí))改變陰影內(nèi)側(cè)陰影))
      2、文字陰影:text-shadow(水平陰影、垂直陰影、模糊距離、陰影顏色)
      3、顏色:新增GRBA、HLSA模式
      4、2D轉(zhuǎn)換、3D轉(zhuǎn)換 transform(translate、rotate、scale)
      5、彈性布局(flex布局)
      6、盒子模型: box-sizing
      7、過渡 : transition 可實(shí)現(xiàn)動(dòng)畫
      8、媒體查詢  @media screen and (width:800px){}
      9、字體圖標(biāo)font-face
      10、背景:background-size background-origin(背景原點(diǎn)、背景起始位置) background-clip(背景繪制區(qū)域:border-box|padding-box|content-box)

2、Localstorage、sessionStorage、cookie 的區(qū)別

    相同點(diǎn):
           都是同源的,且存在于瀏覽器端。
    不同點(diǎn):
           1、cookie數(shù)據(jù)始終在同源的http請(qǐng)求中攜帶(即使不需要),即cookie在瀏覽器和服務(wù)器間來(lái)回傳遞,而sessionStorage和localStorage不會(huì)自動(dòng)把數(shù)據(jù)發(fā)往服務(wù)器端,僅在本地保存。此外,cookie還有路徑(path)的概念,可以限制cookie只屬于某一路徑下。
           2、存儲(chǔ)大小限制不同。因?yàn)槊看?http 請(qǐng)求都會(huì)攜帶 cookie、所以 cookie 只適合保存很小的數(shù)據(jù),大小不能超過4K,比如可以存儲(chǔ)會(huì)話標(biāo)識(shí)。而sessionStorage和localStorage雖然也有大小限制,但是卻比cookie大得多,可以達(dá)到5M或者更多。
           3、數(shù)據(jù)有效期不同。sessionStorage僅在當(dāng)前瀏覽器關(guān)閉前有效,localStorage在關(guān)閉瀏覽器后依然存在。cookie則是在設(shè)置的有效期過期前有效。
           4、作用域不同。sessionStorage不在不同的瀏覽器窗口中共享,即使是同一頁(yè)面,而localStorage和cookie則是在所有同源窗口中都是共享的。

3、如何使一個(gè)盒子水平垂直居中?

方法一、定位:
<!DOCTYPE html>
<html lang="en">
  <head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
  .parent { 
      width: 500px;
      height: 500px;
      border: 1px solid #000;
      position: relative;
  }

  .child { 
    width: 100px;
    height: 100px;
    border: 1px solid #999;
    position: absolute;
    top: 50%;
    left: 50%; 
    margin-top: -50px; 
    margin-left: -50px;
  }
  </style>
  </head>
  <body>
    <div class="parent">
      <div class="child">我是子元素</div>
    </div>
  </body>
</html>
方法二、利用 margin:auto
<!DOCTYPE html>
<html lang="en">
  <head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
  .parent { 
    width: 500px;
    height: 500px;
    border: 1px solid #000;
    position: relative;
  }
  .child { 
    width: 100px;
    height: 100px;
    border: 1px solid #999;
    position: absolute; 
    margin: auto;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }
  </style>
  </head>
  <body>
    <div class="parent">
      <div class="child">我是子元素</div>
    </div>
  </body>
</html>

方法三、利用 display:flex;設(shè)置垂直水平都居中

  .parent { 
      width: 500px;
      height: 500px;
      border: 1px solid #000;
      display: flex; //父元素設(shè)置display:flex;
      justify-content: center;
      align-items: center;
  }
  .child { 
      width: 100px;
      height: 100px;
      border: 1px solid #999;
  }

方法四、transform

    .parent { 
        width: 500px;
        height: 500px;
        border: 1px solid #000;
        position: relative;
    }
    .child { 
        width: 100px;
        height: 100px;
        border: 1px solid #999;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }

4、如何垂直居中一個(gè) img?

    #container  { 
        display:table-cell; //會(huì)使元素表現(xiàn)的類似一個(gè)表格中的單元格td,利用這個(gè)特性可以實(shí)現(xiàn)文字的垂直居中效果。
//同時(shí)它也會(huì)破壞一些CSS屬性,使用table-cell時(shí)最好不要與float以及position: absolute一起使用,設(shè)置了table-cell的元素對(duì)高度和寬度高度敏感,對(duì)margin值無(wú)反應(yīng),可以響應(yīng)padding的設(shè)置,表現(xiàn)幾乎類似一個(gè)td元素。
        text-align:center; 
        vertical-align:middle; 
    }

5、CSS 的盒模型

box-sizing:content-box; // border 和 padding 不算到 width 范圍內(nèi),可以理解為是 W3c 的標(biāo)準(zhǔn)模型(default)。總寬=width+padding+border+margin
box-sizing:border-box;//border 和 padding 劃歸到 width 范圍內(nèi),可以理解為是 IE 的怪異盒 模型,總寬=width+margin

6、哪些是塊級(jí)元素那些是行內(nèi)元素,各有什么特點(diǎn)?

行內(nèi)元素: a、span、b、img、strong、input、select、lable、em、button、textarea
塊級(jí)元素:div、ul、li、dl、dt、dd、p、h1-h6、blockquote、form

7、CSS 選擇器有哪些?哪些屬性可以繼承?

CSS 選擇器:
1、id 選擇器( # myid)
2、類選擇器(.myclassname)
3、標(biāo)簽選擇器(div, h1, p)
4、相鄰選擇器(h1 + 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 DD DT;
不可繼承的樣式:border padding margin width height

8、CSS 中哪些屬性可繼承,哪些不可以?

能繼承的屬性

  1. 字體系列屬性:font、font-family、font-weight、font-size、font-style;
  2. 文本系列屬性:
    2.1)內(nèi)聯(lián)元素:color、line-height、word-spacing、letter-spacing、
    text-transform;
    2.2)塊級(jí)元素:text-indent、text-align;
  3. 元素可見性:visibility
  4. 表格布局屬性:caption-side、border-collapse、border-spacing、empty-cells、
    table-layout;
  5. 列表布局屬性:list-style
    不能繼承的屬性
  6. display:規(guī)定元素應(yīng)該生成的框的類型;
  7. 文本屬性:vertical-align、text-decoration;
  8. 盒子模型的屬性:width、height、margin 、border、padding;
  9. 背景屬性:background、background-color、background-image;
  10. 定位屬性:float、clear、position、top、right、bottom、left、min-width、
    min-height、max-width、max-height、overflow、clip

9、CSS 單位中 px、em 和 rem 的區(qū)別?

1、px 像素(Pixel)。絕對(duì)單位。像素 px 是相對(duì)于顯示器屏幕分辨率而言的,是一
個(gè)虛擬長(zhǎng)度單位,是計(jì)算機(jī)系統(tǒng)的數(shù)字化圖像長(zhǎng)度單位
2、em 是相對(duì)長(zhǎng)度單位,相對(duì)于當(dāng)前對(duì)象內(nèi)文本的字體尺寸。如當(dāng)前對(duì)行內(nèi)文本的字
體尺寸未被人為設(shè)置,則相對(duì)于瀏覽器的默認(rèn)字體尺寸。它會(huì)繼承父級(jí)元素的字體大
小,因此并不是一個(gè)固定的值
3、rem 是 CSS3 新增的一個(gè)相對(duì)單位(root em,根 em),使用 rem 為元素設(shè)定字
體大小時(shí),仍然是相對(duì)大小,但相對(duì)的只是 HTML 根元素
4、區(qū)別:
IE 無(wú)法調(diào)整那些使用 px 作為單位的字體大小,而 em 和 rem 可以縮放,rem相對(duì)的只是 HTML 根元素。這個(gè)單位可謂集相對(duì)大小和絕對(duì)大小的優(yōu)點(diǎn)于一身,通過它既可以做到只修改根元素就成比例地調(diào)整所有字體大小,又可以避免字體大小逐層復(fù)合的連鎖反應(yīng)。目前,除了 IE8 及更早版本外,所有瀏覽器均已支持 rem

10、rem 適配方法如何計(jì)算 HTML 跟字號(hào)及適配方案?

通用方案
1、設(shè)置根 font-size:625%(或其它自定的值,但換算規(guī)則 1rem 不能小于 12px)
2、通過媒體查詢分別設(shè)置每個(gè)屏幕的根 font-size
3、CSS 直接除以 2 再除以 100 即可換算為 rem
優(yōu):有一定適用性,換算也較為簡(jiǎn)單
劣:有兼容性的坑,對(duì)不同手機(jī)適配不是非常精準(zhǔn);需要設(shè)置多個(gè)媒體查詢來(lái)適應(yīng)不同
手機(jī),單某款手機(jī)尺寸不在設(shè)置范圍之內(nèi),會(huì)導(dǎo)致無(wú)法適配
網(wǎng)易方案
1、拿到設(shè)計(jì)稿除以 100,得到寬度 rem 值
2、通過給 html 的 style 設(shè)置 font-size,把 1 里面得到的寬度 rem 值代入
x document.documentElement.style.fontSize =
document.documentElement.clientWidth / x + ‘px‘;
3、設(shè)計(jì)稿 px/100 即可換算為 rem
優(yōu):通過動(dòng)態(tài)根 font-size 來(lái)做適配,基本無(wú)兼容性問題,適配較為精準(zhǔn),換算簡(jiǎn)便
劣:無(wú) viewport 縮放,且針對(duì) iPhone 的 Retina 屏沒有做適配,導(dǎo)致對(duì)一些手機(jī)的適
配不是很到位
手淘方案
1、拿到設(shè)計(jì)稿除以 10,得到 font-size 基準(zhǔn)值
2、引入 flexible
3、不要設(shè)置 meta 的 viewport 縮放值
4、設(shè)計(jì)稿 px/ font-size 基準(zhǔn)值,即可換算為 rem
優(yōu):通過動(dòng)態(tài)根 font-size、viewpor、dpr 來(lái)做適配,無(wú)兼容性問題,適配精準(zhǔn)。
劣:需要根據(jù)設(shè)計(jì)稿進(jìn)行基準(zhǔn)值換算,在不使用 sublime text 編輯器插件開發(fā)時(shí),單
位計(jì)算復(fù)雜

11、CSS 中 link 和@import 的區(qū)別?

適用范圍不同 :@import 可以在網(wǎng)頁(yè)頁(yè)面中使用,也可以在 CSS 文件中使用,用來(lái)將多個(gè) CSS 文件引入到一個(gè) CSS 文件中;而 link 只能將 CSS 文件引入到網(wǎng)頁(yè)頁(yè)面中。

功能范圍不同: link 屬于XHTML 標(biāo)簽,而@import 是 CSS 提供的一種方式,link 標(biāo)簽除了可以加載 CSS 外,還可以定義 RSS,定義 rel 連接屬性等,@import 就只能加載 CSS。

加載順序不同: 當(dāng)一個(gè)頁(yè)面被加載的時(shí)候,link 引用的 CSS 會(huì)同時(shí)被加載,@import引用CSS 會(huì)等到頁(yè)面全部被下載完再被加載。所以有時(shí)候?yàn)g覽@import 加載 CSS 的頁(yè)面時(shí)開始會(huì)沒有樣式(就是閃爍),網(wǎng)速慢的時(shí)候還挺明顯。

兼容性:由于@import 是 css2.1 提出的,所以老的瀏覽器不支持,@import 只有在 IE5以上的才能識(shí)別,而 link 標(biāo)簽無(wú)此問題控制樣式時(shí)的差別 使用 link 方式可以讓用戶切換 CSS 樣式.現(xiàn)代瀏覽器Firefox,Opera,Safari 都支持 rel=”alternate stylesheet”屬性(即可在瀏覽器上選擇不同 的風(fēng)格), 當(dāng)然你還可以使用 Javascript 使得 IE 也支持用戶更換樣式

權(quán)重區(qū)別 :link 引入的樣式權(quán)重大于@import 引入的樣式

12、Display:none 與 visibility:hidden 的區(qū)別?

最常用的為 display:none 和 visibility:hidden
dispaly:none 設(shè)置該屬性后,該元素下的元素都會(huì)隱藏,占據(jù)的空間消失
visibility:hidden 設(shè)置該元素后,元素雖然不可見了,但是依然占據(jù)空間的位置
區(qū)別
1.visibility 具有繼承性,其子元素也會(huì)繼承此屬性,若設(shè)置 visibility:visible,則子元
素會(huì)顯示
2.visibility 不會(huì)影響計(jì)數(shù)器的計(jì)算,雖然隱藏掉了,但是計(jì)數(shù)器依然繼續(xù)運(yùn)行著。
3.在 CSS3 的 transition 中支持 visibility 屬性,但是不支持 display,因?yàn)?transition 可
以延遲執(zhí)行,因此配合 visibility 使用純 CSS 實(shí)現(xiàn) hover 延時(shí)顯示效果可以提高用戶 體
驗(yàn)
4.display:none 會(huì)引起回流(重排)和重繪 visibility:hidden 會(huì)引起重繪

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容