前端面試題之css篇(附答案)

css經(jīng)典面試題

  • 介紹一下標(biāo)準(zhǔn)的CSS的盒子模型?與低版本IE的盒子模型有什么不同的?
  • box-sizing屬性?
  • 請(qǐng)列舉一下你所知道的css 隱藏元素的方法?
  • CSS 常見的偽類和偽元素有哪些,他們的區(qū)別?
  • CSS選擇器有哪些?哪些屬性可以繼承?CSS優(yōu)先級(jí)算法如何計(jì)算?
  • 如何居中div?如何居中一個(gè)浮動(dòng)元素?如何讓絕對(duì)定位的div居中?如何居中一個(gè)img(position定位)
  • display 有哪些值?說明他們的作用?
  • position 的值?
  • CSS3有哪些新特性?
  • 用純CSS創(chuàng)建一個(gè)三角形的原理是什么?
  • 為什么要初始化 CSS 樣式
  • position 跟 display、overflow、float 這些特性相互疊加后會(huì)怎么樣?
  • 為什么會(huì)出現(xiàn)浮動(dòng)? 什么時(shí)候需要清除浮動(dòng)?清除浮動(dòng)有哪些方式?
  • 設(shè)置元素浮動(dòng)后,該元素的 display 值是多少?
  • 移動(dòng)端的布局用過媒體查詢嗎?
  • 什么是CSS 預(yù)處理器 / 后處理器?大家為什么要使用他們?
  • CSS優(yōu)化、提高性能的方法有哪些?
  • 在網(wǎng)頁中的應(yīng)該使用奇數(shù)還是偶數(shù)的字體?為什么呢?
  • margin 和 padding 分別適合什么場(chǎng)景使用?
  • 元素豎向的百分比設(shè)定是相對(duì)于容器的高度嗎?
  • 什么是響應(yīng)式設(shè)計(jì)?響應(yīng)式設(shè)計(jì)的基本原理是什么?如何兼容低版本的IE?
  • 怎么讓Chrome支持小于12px 的文字?
  • 讓頁面里的字體變清晰,變細(xì)用CSS怎么做?
  • 有一個(gè)高度自適應(yīng)的div,里面有兩個(gè)div,一個(gè)高度100px,希望另一個(gè)填滿剩下的高度
  • CSS屬性overflow屬性定義溢出元素內(nèi)容區(qū)的內(nèi)容會(huì)如何處理?
  • 有哪項(xiàng)方式可以對(duì)一個(gè) DOM 設(shè)置它的CSS樣式?
  • CSS 中可以通過哪些屬性定義,使得一個(gè) DOM 元素不顯示在瀏覽器可視范圍內(nèi)?
  • 行內(nèi)元素和塊級(jí)元素的具體區(qū)別是什么?行內(nèi)元素的 padding 和 margin 可設(shè)置嗎?
  • px、em、rem的區(qū)別
  • 前端頁面有哪三層構(gòu)成,分別是什么?
  • CSS引入的方式有哪些?使用Link和@import有什么區(qū)別?
  • 介紹一下你對(duì)瀏覽器內(nèi)核的理解
  • 如何水平并且垂直居中一張背景圖
  • 強(qiáng)制換行的css是什么?

css面試題解析

介紹一下標(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

JS 如何設(shè)置獲取盒模型對(duì)應(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;//適用場(chǎng)所:計(jì)算一個(gè)元素的絕對(duì)位置

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 部分的高/寬

請(qǐng)列舉一下你所知道的css 隱藏元素的方法?

  • display:none 不顯示對(duì)應(yīng)的元素,在文檔布局中不再分配空間(回流+重繪)
  • visibility:hidden 隱藏對(duì)應(yīng)元素,在文檔布局中仍保留原來的空間(重繪)

CSS 常見的偽類和偽元素有哪些,他們的區(qū)別?

  • 偽元素主要是用來創(chuàng)建一些不存在原有dom結(jié)構(gòu)樹種的元素
  • 偽類表示已存在的某個(gè)元素處于某種狀態(tài),但是通過dom樹又無法表示這種狀態(tài),就可以通過偽類來為其添加樣式
  • 偽元素的操作對(duì)象是新生成的dom元素,而不是原來dom結(jié)構(gòu)里就存在的;而偽類恰好相反,偽類的操作對(duì)象是原來的dom結(jié)構(gòu)里就存在的元素。
    偽元素與偽類的根本區(qū)別在于:操作的對(duì)象元素是否存在于原來的dom結(jié)構(gòu)里
  • 常見的偽類:
    :link 應(yīng)用于未被訪問過的鏈接
    :visited 應(yīng)用于被訪問過的鏈接
    :hover 應(yīng)用于鼠標(biāo)懸停到的元素
    :first-child 選擇某元素第一個(gè)子元素
    :last-child 選擇最后一個(gè)。。。。。
    :disabled 表單元素禁用
    :enabled 匹配沒有被禁用的元素
  • 常見的偽元素:
    ::first-letter 選擇元素文本的第一個(gè)字
    ::first-line 選擇元素文本的第一行
    ::before 在元素內(nèi)容的最前面添加新內(nèi)容。
    ::after 在元素內(nèi)容的最后面添加新內(nèi)容。

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

  • 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,dt,dd;
    不可繼承的樣式:border, padding, margin, width, height
    優(yōu)先級(jí)(就近原則):!important > [ id > class > tag ]
    !important 比內(nèi)聯(lián)優(yōu)先級(jí)高
  • 優(yōu)先級(jí)算法計(jì)算
    優(yōu)先級(jí)就近原則,同權(quán)重情況下樣式定義最近者為準(zhǔn)
    !important>id >class>tag
    important比內(nèi)聯(lián)優(yōu)先級(jí)高
    元素選擇符的權(quán)值:元素標(biāo)簽(派生選擇器):1,class選擇符:10,id選擇符:100,內(nèi)聯(lián)樣式權(quán)值最大,為1000
    !important聲明的樣式優(yōu)先級(jí)最高,如果沖突再進(jìn)行計(jì)算。
    如果優(yōu)先級(jí)相同,則選擇最后出現(xiàn)的樣式。
    繼承得到的樣式的優(yōu)先級(jí)最低。

如何居中div?如何居中一個(gè)浮動(dòng)元素?如何讓絕對(duì)定位的div居中?如何居中一個(gè)img(position定位)

  • 水平居中div:
border: 1px solid red;
margin: 0 auto; 
height: 50px;
width: 80px;
  • 水平垂直居中一個(gè)浮動(dòng)元素(position定位)
    第一種:未知元素寬高
<div class="outer">
    <span>我想居中顯示</span>
</div>
<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>

第二種:已知元素寬高的

<div class="outer">
    <span>我想居中顯示</span>
</div>
<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>
  • 絕對(duì)定位的div水平垂直居中:
border: 1px solid black;
position: absolute;
width: 200px;
height: 100px;
margin: auto;
left: 0;
right: 0; 
top:0;
bottom:0;
  • 如何垂直居中一個(gè)img(display : table-cell 或者 position定位)
<div class="outer">        
    <img src="nz.jpg" alt="">    
</div>
<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>

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

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

position 的值?

  • absolute
    生成絕對(duì)定位的元素,相對(duì)于 static 定位以外的第一個(gè)父元素進(jìn)行定位。
    元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定。
  • fixed
    生成固定定位的元素,相對(duì)于瀏覽器窗口進(jìn)行定位。(老IE不支持)
    元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定。
  • relative
    生成相對(duì)定位的元素,相對(duì)于其正常位置進(jìn)行定位,不脫離文檔流。
    因此,"left:20" 會(huì)向元素的 LEFT 位置添加 20 像素。
  • static
    默認(rèn)值。沒有定位,元素出現(xiàn)在正常的文檔流中(忽略 top, bottom, left, right 或者 z-index 聲明)。
  • inherit: 規(guī)定應(yīng)該從父元素繼承 position 屬性的值。

CSS3有哪些新特性?

  • 新增各種 CSS 選擇器 :not(p) 選擇每個(gè)非p的元素; p:empty 選擇每個(gè)沒有任何子級(jí)的p元素(包括文本節(jié)點(diǎn))
  • border-radius //用于設(shè)置圓角
  • 背景 background-clip(規(guī)定背景圖的繪制區(qū)域),background-origin,background-size
  • 線性漸變 (Linear Gradients) 向下/向上/向左/向右/對(duì)角方向
  • 文本效果 陰影text-shadow,textwrap,word-break,word-wrap;
  • 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)換;
  • 過渡 transition
  • 動(dòng)畫
  • 多列布局 (multi-column layout)
  • 盒模型
  • flex 布局
  • 多媒體查詢 定義兩套css,當(dāng)瀏覽器的尺寸變化時(shí)會(huì)采用不同的屬性

用純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;

為什么要初始化 CSS 樣式

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

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定位的元素,只能是塊元素或表格。

為什么會(huì)出現(xiàn)浮動(dòng)? 什么時(shí)候需要清除浮動(dòng)?清除浮動(dòng)有哪些方式?

  • 出現(xiàn)浮動(dòng)的原因:
    浮動(dòng)元素碰到包含它的邊框或者浮動(dòng)元素的邊框停留。在CSS規(guī)范中,浮動(dòng)定位不屬于正常的頁面流,而是獨(dú)立定位的,所以文檔流的塊框表現(xiàn)得就像浮動(dòng)框不存在一樣。浮動(dòng)元素會(huì)漂浮在文檔流的塊框上。
  • 關(guān)于css的定位機(jī)制:普通流,浮動(dòng),絕對(duì)定位(position:fixed是position:absolute的一個(gè)子類)。浮動(dòng)的框可以左右移動(dòng),直到它的外邊緣遇到包含框或者另一個(gè)浮動(dòng)框的邊緣,所以才說浮動(dòng)定位不屬于正常的頁面流。文檔中的普通流就會(huì)表現(xiàn)得和浮動(dòng)框不存在一樣,當(dāng)浮動(dòng)框高度超出包含框的時(shí)候,就會(huì)出現(xiàn)包含框不會(huì)自動(dòng)伸縮高度類筆盒浮動(dòng)元素。所以,只含有浮動(dòng)元素的父容器在顯示時(shí)不需要考慮子元素的位置,就造成顯示父容器像空容器一樣。
  • 浮動(dòng)帶來的問題:
    父元素的高度無法被撐開,影響與父元素同級(jí)的元素
    與浮動(dòng)元素同級(jí)的非浮動(dòng)元素(內(nèi)聯(lián)元素)會(huì)跟隨其后
    若非第一個(gè)元素浮動(dòng),則該元素之前的元素也需要浮動(dòng),否則會(huì)影響頁面顯示的結(jié)構(gòu)。
  • 清除浮動(dòng)的方式:
    1.父級(jí)div定義height
    2.最后一個(gè)浮動(dòng)元素后加空 div 標(biāo)簽 并添加樣式 clear:both。(理論上能清除任何標(biāo)簽,增加無意義的標(biāo)簽)
    3.包含浮動(dòng)元素的父標(biāo)簽添加樣式 overflow 為 hidden 或 auto。

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

自動(dòng)變成display:block

移動(dòng)端的布局用過媒體查詢嗎?

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

  • <head>里邊
<link rel="stylesheet" type="text/css" href="xxx.css" media="only screen and (max-device-width:480px)">
  • CSS :
@media only screen and (max-device-width:480px) {
    /css樣式/}

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

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

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

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

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

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

為什么要使用它們?

  • 結(jié)構(gòu)清晰,便于擴(kuò)展。
  • 可以方便地屏蔽瀏覽器私有語法差異。這個(gè)不用多說,封裝對(duì)瀏覽器語法差異的重復(fù)處理,減少無意義的機(jī)械勞動(dòng)。
  • 可以輕松實(shí)現(xiàn)多重繼承。
  • 完全兼容 CSS 代碼,可以方便地應(yīng)用到老項(xiàng)目中。LESS 只是在 CSS 語法上做了擴(kuò)展,所以老的 CSS 代碼也可以與 LESS 代碼一同編譯。

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

  • 避免過度約束

  • 避免后代選擇符

  • 避免鏈?zhǔn)竭x擇符

  • 使用緊湊的語法

  • 避免不必要的命名空間

  • 避免不必要的重復(fù)

  • 最好使用表示語義的名字。一個(gè)好的類名應(yīng)該是描述他是什么而不是像什么

  • 避免!important,可以選擇其他選擇器

  • 盡可能的精簡(jiǎn)規(guī)則,你可以合并不同類里的重復(fù)規(guī)則

  • 修復(fù)解析錯(cuò)誤

  • 避免使用多類選擇符

  • 移除空的css規(guī)則

  • 正確使用display的屬性:由于display的作用,某些樣式組合會(huì)無效,徒增樣式體積的同時(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。

  • 不濫用浮動(dòng):雖然浮動(dòng)不可避免,但不可否認(rèn)很多css bug是由于浮動(dòng)而引起。

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

  • 不聲明過多的font-size:這是設(shè)計(jì)層面的問題,設(shè)計(jì)精良的頁面不會(huì)有過多的font-size聲明。

  • 不在選擇符中使用ID標(biāo)識(shí)符,主要考慮到樣式重用性以及與頁面的耦合性。

  • 不給h1~h6元素定義過多的樣式

  • 全站統(tǒng)一定義一遍heading元素即可,若需額外定制樣式,可使用其他選擇符作為代替。

  • 不重復(fù)定義h1~h6元素

  • 值為0時(shí)不需要任何單位

  • 標(biāo)準(zhǔn)化各種瀏覽器前綴:通常將瀏覽器前綴置于前面,將標(biāo)準(zhǔn)樣式屬性置于最后,類似:

.foo{
    -moz-border-radius: 5px;
    border-radius: 5px; 
}
  • 使用CSS漸變等高級(jí)特性,需指定所有瀏覽器的前綴
  • 避免讓選擇符看起來像正則表達(dá)式
  • CSS3添加了一些類似~=等復(fù)雜屬性,也不是所有瀏覽器都支持,需謹(jǐn)慎使用。
  • 遵守盒模型規(guī)則(Beware of broken box models)

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

使用偶數(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)陣沒變),于是略顯稀疏。

margin 和 padding 分別適合什么場(chǎng)景使用?

◆何時(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)測(cè)添加空白時(shí)。
空白處需要背景(色)時(shí)。
上下相連的兩個(gè)盒子之間的空白,希望等于兩者之和時(shí)。如15px+20px的padding,將得到35px的空白。

◆瀏覽器兼容性問題
在IE5.x、IE6中,為float的盒子指定margin時(shí),左側(cè)margin可能會(huì)變成兩倍的寬度。通過改用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ù)的也是父容器的寬度,而不是高度。

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

  • 響應(yīng)式網(wǎng)站設(shè)計(jì)(Responsive Web design)是一個(gè)網(wǎng)站能夠兼容多個(gè)終端,而不是為每一個(gè)終端做一個(gè)特定的版本。
  • 基本原理是通過媒體查詢檢測(cè)不同的設(shè)備屏幕尺寸做處理。
  • 頁面頭部必須有meta聲明的viewport。
<meta name=’viewport’ content=”width=device-width, initial-scale=1. maximum-scale=1,user-scalable=no”>

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

p{
    font-size:10px;
    -webkit-transform:scale(0.8);//0.8是縮放比例
} 

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

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

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

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

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

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

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

外部樣式表,引入一個(gè)外部css文件
內(nèi)部樣式表,將css代碼放在 <head> 標(biāo)簽內(nèi)部
內(nèi)聯(lián)樣式,將css樣式直接定義在 HTML 元素內(nèi)部

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

最基本的:設(shè)置 display 屬性為 none,或者設(shè)置 visibility 屬性為 hidden
技巧性:設(shè)置寬高為 0,設(shè)置透明度為 0,設(shè)置 z-index 位置在 -1000

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

塊級(jí)元素( 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è)置的)。

px、em、rem的區(qū)別

px 像素 固定單位 它的大小是固定的
em 相對(duì)單位 em的值并不是固定的 em會(huì)繼承父元素的字體大小 會(huì)根據(jù)父
元素字體大小的變化而變化 一般1em等于16px
rem 他的值也是不固定的 他會(huì)根據(jù)根元素的大小而變化

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

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

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

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

  • link 屬于 XHTML 標(biāo)簽,除了加載 CSS 外,還能用于定義RSS,定義 rel 連接屬性等作用,無兼容性,支持使用javascript改變樣式;而@import是CSS提供的,只能用于加載CSS,不支持使用 javascript 改變樣式;
  • 頁面被加載的時(shí),link 會(huì)被同時(shí)加載,而@import 引用的CSS會(huì)等到頁面加載完再加載;
  • import是CSS2.1 提出的,CSS2.1以下瀏覽器不支持,只在IE5以上才能被識(shí)別,而link是XHTML標(biāo)簽,無兼容問題。

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

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

  • 渲染引擎:負(fù)責(zé)取得網(wǎng)頁的內(nèi)容(HTML、XML、圖像等等)、整理訊息(例如加入CSS等),以及計(jì)算網(wǎng)頁的顯示方式,然后會(huì)輸出至顯示器或打印機(jī)。瀏覽器的內(nèi)核的不同對(duì)于網(wǎng)頁的語法解釋會(huì)有不同,所以渲染的效果也不相同。所有網(wǎng)頁瀏覽器、電子郵件客戶以及其他它所需要編輯、顯示網(wǎng)絡(luò)的應(yīng)用程序都需要內(nèi)核。
  • JS引擎則:解析和執(zhí)行JavaScript 來實(shí)現(xiàn)網(wǎng)頁的動(dòng)態(tài)效果;
    最開始渲染引擎和 JS 并沒有區(qū)分的很明確,后來JS引擎越來越獨(dú)立,內(nèi)核就傾向于只渲染引擎。

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

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

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

Word-break:break-all;

持續(xù)更新中......

?著作權(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)容