前端面试之html+css【一】
html+css面試精選
-
- 一、HTML和CSS
- 二、HTML5 CSS3
整理起來真累,有問題的地方留言。。。
一、HTML和CSS
- 你做的頁面在哪些流覽器測試過?這些瀏覽器的內核分別是什么?
- Trident內核:IE系列 Gecko內核:Firefox Webkit內核:Safari
- Blink內核:是基于Webkit內核的子項目,使用的瀏覽器有:
- Chrome/opera等除IE、Firefox、Safari之外的幾乎所有瀏覽器
- 幾乎所有國產雙內核瀏覽器(Trident/Blink)如360、獵豹、qq、百度等
- 每個HTML文件里開頭都有個很重要的東西,Doctype,知道這是干什么的嗎?
文檔聲明。
聲明位于文檔中的最前面的位置,處于 標簽之前。此標簽可告知瀏覽器文檔使用哪種 HTML 或 XHTML 規(guī)范。(重點:告訴瀏覽器按照何種規(guī)范解析頁面)
IE下如不書寫文檔聲明會使用怪異模式解析網頁導致一系列CSS兼容性問題。
- div+css的布局較table布局有什么優(yōu)點?
正常場景一般都適用div+CSS布局,優(yōu)點:
結構與樣式分離
代碼語義性好
更符合HTML標準規(guī)范
SEO友好
Table布局的適用場景:
某種原因不方便加載外部CSS的場景,例如郵件正文,此時用table布局可以在無css情況下保持頁面布局正常。
4.img的alt與title有何異同? strong與em的異同?
a:alt(alt text):為不能顯示圖像、窗體或applets的用戶代理(UA),alt屬性用來指定替換文字。替換文字的語言由lang屬性指定。(在IE瀏覽器下會在沒有title時把alt當成 tool tip顯示)
title(tool tip):該屬性為設置該屬性的元素提供建議性的信息。
em:表現為斜體,語義表示強調
strong:表現為粗體,語義為強烈語氣,強調程度超過em
5.你能描述一下漸進增強和優(yōu)雅降級之間的不同嗎?
漸進增強 progressive enhancement:針對低版本瀏覽器進行構建頁面,保證最基本的功能,然后再針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗。
優(yōu)雅降級 graceful degradation:一開始就構建完整的功能,然后再針對低版本瀏覽器進行兼容。
區(qū)別:優(yōu)雅降級是從復雜的現狀開始,并試圖減少用戶體驗的供給,而漸進增強則是從一個非常基礎的,能夠起作用的版本開始,并不斷擴充,以適應未來環(huán)境的需要。降級(功能衰減)意味著往回看;而漸進增強則意味著朝前看,同時保證其根基處于安全地帶。
“優(yōu)雅降級”觀點
“優(yōu)雅降級”觀點認為應該針對那些最高級、最完善的瀏覽器來設計網站。而將那些被認為“過時”或有功能缺失的瀏覽器下的測試工作安排在開發(fā)周期的最后階段,并把測試對象限定為主流瀏覽器(如 IE、Mozilla 等)的前一個版本。
在這種設計范例下,舊版的瀏覽器被認為僅能提供“簡陋卻無妨 (poor, but passable)” 的瀏覽體驗。你可以做一些小的調整來適應某個特定的瀏覽器。但由于它們并非我們所關注的焦點,因此除了修復較大的錯誤之外,其它的差異將被直接忽略。
“漸進增強”觀點
“漸進增強”觀點則認為應關注于內容本身。
內容是我們建立網站的誘因。有的網站展示它,有的則收集它,有的尋求,有的操作,還有的網站甚至會包含以上的種種,但相同點是它們全都涉及到內容。這使得“漸進增強”成為一種更為合理的設計范例。這也是它立即被 Yahoo! 所采納并用以構建其“分級式瀏覽器支持 (Graded Browser Support)”策略的原因所在。
6.為什么利用多個域名來存儲網站資源會更有效?
CDN緩存更方便
突破瀏覽器并發(fā)限制
節(jié)約cookie帶寬
節(jié)約主域名的連接數,優(yōu)化頁面響應速度
防止不必要的安全問題
7.請談一下你對網頁標準和標準制定機構重要性的理解。
網頁標準和標準制定機構都是為了能讓web發(fā)展的更‘健康’,開發(fā)者遵循統(tǒng)一的標準,降低開發(fā)難度,開發(fā)成本,SEO也會更好做,也不會因為濫用代碼導致各種BUG、安全問題,最終提高網站易用性。
8.請描述一下cookies,sessionStorage和localStorage的區(qū)別?
sessionStorage用于本地存儲一個會話(session)中的數據,這些數據只有在同一個會話中的頁面才能訪問并且當會話結束后數據也隨之銷毀。因此sessionStorage不是一種持久化的本地存儲,僅僅是會話級別的存儲。而localStorage用于持久化的本地存儲,除非主動刪除數據,否則數據是永遠不會過期的。
web storage和cookie的區(qū)別
Web Storage的概念和cookie相似,區(qū)別是它是為了更大容量存儲設計的。Cookie的大小是受限的,并且每次你請求一個新的頁面的時候Cookie都會被發(fā)送過去,這樣無形中浪費了帶寬,另外cookie還需要指定作用域,不可以跨域調用。
除此之外,Web Storage擁有setItem,getItem,removeItem,clear等方法,不像cookie需要前端開發(fā)者自己封裝setCookie,getCookie。但是Cookie也是不可以或缺的:Cookie的作用是與服務器進行交互,作為HTTP規(guī)范的一部分而存在 ,而Web Storage僅僅是為了在本地“存儲”數據而生。
9.簡述一下src與href的區(qū)別。
src用于替換當前元素,href用于在當前文檔和引用資源之間確立聯(lián)系。
src是source的縮寫,指向外部資源的位置,指向的內容將會嵌入到文檔中當前標簽所在位置;在請求src資源時會將其指向的資源下載并應用到文檔內,例如js腳本,img圖片和frame等元素。
<script src =”js.js”></script>
當瀏覽器解析到該元素時,會暫停其他資源的下載和處理,直到將該資源加載、編譯、執(zhí)行完畢,圖片和框架等元素也如此,類似于將所指向資源嵌入當前標簽內。這也是為什么將js腳本放在底部而不是頭部。
href是Hypertext Reference的縮寫,指向網絡資源所在位置,建立和當前元素(錨點)或當前文檔(鏈接)之間的鏈接,如果我們在文檔中添加
<link href=”common.css” rel=”stylesheet”/>
那么瀏覽器會識別該文檔為css文件,就會并行下載資源并且不會停止對當前文檔的處理。這也是為什么建議使用link方式來加載css,而不是使用@import方式。
10.知道的網頁制作會用到的圖片格式有哪些?
png-8,png-24,jpeg,gif,svg。
但是上面的那些都不是面試官想要的最后答案。面試官希望聽到是Webp。(是否有關注新技術,新鮮事物)
科普一下Webp:WebP格式,谷歌(google)開發(fā)的一種旨在加快圖片加載速度的圖片格式。圖片壓縮體積大約只有JPEG的2/3,并能節(jié)省大量的服務器帶寬資源和數據空間。Facebook Ebay等知名網站已經開始測試并使用WebP格式。
在質量相同的情況下,WebP格式圖像的體積要比JPEG格式圖像小40%
11.在css/js代碼上線之后開發(fā)人員經常會優(yōu)化性能,從用戶刷新網頁開始,一次js請求一般情況下有哪些地方會有緩存處理?
答案:dns緩存,cdn緩存,瀏覽器緩存,服務器緩存。
12.一個頁面上有大量的圖片(大型電商網站),加載很慢,你有哪些方法優(yōu)化這些圖片的加載,給用戶更好的體驗。
圖片懶加載,在頁面上的未可視區(qū)域可以添加一個滾動條事件,判斷圖片位置與瀏覽器頂端的距離與頁面的距離,如果前者小于后者,優(yōu)先加載。
如果為幻燈片、相冊等,可以使用圖片預加載技術,將當前展示圖片的前一張和后一張優(yōu)先下載。
如果圖片為css圖片,可以使用CSSsprite,SVGsprite,Iconfont、Base64等技術。
如果圖片過大,可以使用特殊編碼的圖片,加載時會先加載一張壓縮的特別厲害的縮略圖,以提高用戶體驗。
如果圖片展示區(qū)域小于圖片的真實大小,則因在服務器端根據業(yè)務需要先行進行圖片壓縮,圖片壓縮后大小與展示一致。
13.你如何理解HTML結構的語義化?
HTML結構語義化:
更符合W3C統(tǒng)一的規(guī)范標準,是技術趨勢。
沒有樣式時瀏覽器的默認樣式也能讓頁面結構很清晰。
對功能障礙用戶友好。屏幕閱讀器(如果訪客有視障)會完全根據你的標記來“讀”你的網頁。
對其他非主流終端設備友好。例如機頂盒、PDA、各種移動終端。
對SEO友好。
14.談談以前端角度出發(fā)做好SEO需要考慮什么?
搜索引擎主要以:
外鏈數量和質量
網頁內容和結構
來決定某關鍵字下的網頁搜索排名。
前端應該注意網頁結構和內容方面的情況:
Meta標簽優(yōu)化
主要包括主題(Title),網站描述(Description)。還有一些其它的隱藏文字比如Author(作者),Category(目錄),Language(編碼語種)等。
符合W3C規(guī)范的語義性標簽的使用。
如何選取關鍵詞并在網頁中放置關鍵詞
搜索就得用關鍵詞。關鍵詞分析和選擇是SEO最重要的工作之一。首先要給網站確定主關鍵詞(一般在5個上下),然后針對這些關鍵詞進行優(yōu)化,包括關鍵詞密度(Density),相關度(Relavancy),突出性(Prominency)等等。
15.有哪項方式可以對一個DOM設置它的CSS樣式?
外部樣式表,引入一個外部css文件
內部樣式表,將css代碼放在 標簽內部
內聯(lián)樣式,將css樣式直接定義在 HTML 元素內部
16.CSS都有哪些選擇器?
① 基本選擇器
- 通用元素選擇器,匹配任何元素
E 標簽選擇器,匹配所有使用E標簽的元素
.info class選擇器,匹配所有class屬性中包含info的元素
#footer id選擇器,匹配所有id屬性等于footer的元素
② 多元素的組合選擇器
E,F 多元素選擇器,同時匹配所有E元素或F元素,E和F之間用逗號分隔
E F 后代元素選擇器,匹配所有屬于E元素后代的F元素,E和F之間用空格分隔
E > F 子元素選擇器,匹配所有E元素的子元素F
E + F 毗鄰元素選擇器,匹配所有緊隨E元素之后的同級元素F
③ CSS 2.1 屬性選擇器
E[att] 匹配所有具有att屬性的E元素,不考慮它的值。(注意:E在此處可以省略,比如"[cheacked]"。以下同。)
E[att=val] 匹配所有att屬性等于"val"的E元素
E[att~=val] 匹配所有att屬性具有多個空格分隔的值、其中一個值等于"val"的E元素
E[att|=val] 匹配所有att屬性具有多個連字號分隔(hyphen-separated)的值、其中一個值以"val"開頭的E元素,主要用于lang屬性,比如"en"、“en-us”、"en-gb"等等
④ CSS 2.1中的偽類
E:first-child 匹配父元素的第一個子元素
E:link 匹配所有未被點擊的鏈接
E:visited 匹配所有已被點擊的鏈接
E:active 匹配鼠標已經其上按下、還沒有釋放的E元素
E:hover 匹配鼠標懸停其上的E元素
E:focus 匹配獲得當前焦點的E元素
E:lang? 匹配lang屬性等于c的E元素
⑤ CSS 2.1中的偽元素
E:first-line 匹配E元素的第一行
E:first-letter 匹配E元素的第一個字母
E:before 在E元素之前插入生成的內容
E:after 在E元素之后插入生成的內容
⑥ CSS 3的同級元素通用選擇器
E ~ F 匹配任何在E元素之后的同級F元素
⑦ CSS 3 屬性選擇器
E[att^=“val”] 屬性att的值以"val"開頭的元素
E[att$=“val”] 屬性att的值以"val"結尾的元素
E[att*=“val”] 屬性att的值包含"val"字符串的元素
⑧ CSS 3中與用戶界面有關的偽類
E:enabled 匹配表單中激活的元素
E:disabled 匹配表單中禁用的元素
E:checked 匹配表單中被選中的radio(單選框)或checkbox(復選框)元素
E::selection 匹配用戶當前選中的元素
⑨ CSS 3中的結構性偽類
E:root 匹配文檔的根元素,對于HTML文檔,就是HTML元素
E:nth-child(n) 匹配其父元素的第n個子元素,第一個編號為1
E:nth-last-child(n) 匹配其父元素的倒數第n個子元素,第一個編號為1
E:nth-of-type(n) 與:nth-child()作用類似,但是僅匹配使用同種標簽的元素
E:nth-last-of-type(n) 與:nth-last-child() 作用類似,但是僅匹配使用同種標簽的元素
E:last-child 匹配父元素的最后一個子元素,等同于:nth-last-child(1)
E:first-of-type 匹配父元素下使用同種標簽的第一個子元素,等同于:nth-of-type(1)
E:last-of-type 匹配父元素下使用同種標簽的最后一個子元素,等同于:nth-last-of-type(1)
E:only-child 匹配父元素下僅有的一個子元素,等同于:first-child:last-child或 :nth-child(1):nth-last-child(1)
E:only-of-type 匹配父元素下使用同種標簽的唯一一個子元素,等同于:first-of-type:last-of-type或 :nth-of-type(1):nth-last-of-type(1)
E:empty 匹配一個不包含任何子元素的元素,注意,文本節(jié)點也被看作子元素
⑩ CSS 3的反選偽類
E:not(s) 匹配不符合當前選擇器的任何元素
? CSS 3中的 :target 偽類
E:target 匹配文檔中特定"id"點擊后的效果
17.CSS中可以通過哪些屬性定義,使得一個DOM元素不顯示在瀏覽器可視范圍內?
設置display屬性為none,或者設置visibility屬性為hidden
設置寬高為0,設置透明度為0,設置z-index位置在-1000em
設置text-indent:-9999px;
18.超鏈接訪問過后hover樣式就不出現的問題是什么?如何解決?
答案:被點擊訪問過的超鏈接樣式不再具有hover和active了,解決方法是改變CSS屬性的排列順序: L-V-H-A(link,visited,hover,active)
19.什么是Css Hack?ie6,7,8的hack分別是什么?
答案:針對不同的瀏覽器寫不同的CSS code的過程,就是CSS hack。
示例如下:
#test{
background-color:yellow; /ie8/
+background-color:pink; /ie7/
_background-color:orange; /ie6/ }
更好的方式是使用IE條件判斷語句:
<!–[if lte IE 6]>
內容
<![endif]–>
等
20.行內元素和塊級元素的具體區(qū)別是什么?行內元素的padding和margin可設置嗎?
塊級元素(block)特性:
總是獨占一行,表現為另起一行開始,而且其后的元素也必須另起一行顯示;
寬度(width)、高度(height)、內邊距(padding)、邊框(border)和外邊距(margin)都可控制;
內聯(lián)元素(inline)特性:
和相鄰的內聯(lián)元素在同一行;
寬度(width)、高度(height)、內邊距的top/bottom(padding-top/padding-bottom)和外邊距的top/bottom(margin-top/margin-bottom)還有border top/bottom都不可改變(也就是padding和margin的left和right是可以設置的),就是里面文字或圖片的大小。
瀏覽器還有默認的天生inline-block元素(擁有內在尺寸,可設置高寬,但不會自動換行)
答案: 、 、 、 、
21.什么是外邊距重疊?重疊的結果是什么?
外邊距重疊就是margin-collapse。
在CSS當中,相鄰的兩個盒子(可能是兄弟關系也可能是祖先關系)的外邊距可以結合成一個單獨的外邊距。這種合并外邊距的方式被稱為折疊,并且因而所結合成的外邊距稱為折疊外邊距。
折疊結果遵循下列計算規(guī)則:
兩個相鄰的外邊距都是正數時,折疊結果是它們兩者之間較大的值。
兩個相鄰的外邊距都是負數時,折疊結果是兩者絕對值的較大值。
兩個外邊距一正一負時,折疊結果是兩者的相加的和。
22.rgba()和opacity的透明效果有什么不同?
rgba()和opacity都能實現透明效果,但最大的不同是opacity作用于元素,以及元素內的所有內容的透明度,
而rgba()只作用于元素的顏色或其背景色。(設置rgba透明的元素的子元素不會繼承透明效果!)
23.css中可以讓文字在垂直和水平方向上重疊的兩個屬性是什么?
垂直方向:line-height
水平方向:letter-spacing
那么問題來了,關于letter-spacing的妙用知道有哪些么?
答案:可以用于消除inline-block元素間的換行符空格間隙問題。
24.如何垂直居中一個浮動元素?
方法一:已知元素的高寬
#div1{background-color:#6699FF;width:200px;height:200px;position: absolute; /*父元素需要相對定位*/top: 50%;left: 50%;margin-top:-100px ; /*二分之一的height,width*/margin-left: -100px;}//方法二:未知元素的高寬#div1{width: 200px;height: 200px;background-color: #6699FF;margin:auto;position: absolute; /*父元素需要相對定位*/left: 0;top: 0;right: 0;bottom: 0;}
/*如何垂直居中一個<img>?(用更簡便的方法。)*/#container /*<img>的容器設置如下*/
{display:table-cell;text-align:center;vertical-align:middle;
}
25.px和em的區(qū)別。
px和em都是長度單位,區(qū)別是:
px值固定,容易計算。
em值不固定,是相對單位,其相對應父級元素的字體大小會調整
26.描述一個”reset”的CSS文件并如何使用它。知道normalize.css嗎?你了解他們的不同之處?
Reset樣式的目的是清除瀏覽器某些默認樣式,方便css書寫,例如:
*{margin:0;padding:0;list-style:none;}
Normalize的理念與reset不同,它并不清除瀏覽器默認樣式,而是盡量將所有瀏覽器的默認樣式統(tǒng)一。
27.Sass、LESS是什么?大家為什么要使用他們?
他們是CSS預處理器。他是CSS上的一種抽象層。他們是一種特殊的語法/語言編譯成CSS。
例如Less是一種動態(tài)樣式語言. 將CSS賦予了動態(tài)語言的特性,如變量,繼承,運算, 函數. LESS 既可以在客戶端上運行 (支持IE 6+, Webkit, Firefox),也可一在服務端運行 (借助 Node.js)。
為什么要使用它們?
結構清晰,便于擴展。
可以方便地屏蔽瀏覽器私有語法差異。這個不用多說,封裝對瀏覽器語法差異的重復處理,減少無意義的機械勞動。
可以輕松實現多重繼承。
完全兼容 CSS 代碼,可以方便地應用到老項目中。LESS 只是在 CSS 語法上做了擴展,所以老的 CSS 代碼也可以與 LESS 代碼一同編譯。
28.display:none與visibility:hidden的區(qū)別是什么?
display : 隱藏對應的元素但不擠占該元素原來的空間。
visibility: 隱藏對應的元素并且擠占該元素原來的空間。
即是,使用CSS display:none屬性后,HTML元素(對象)的寬度、高度等各種屬性值都將“丟失”;而使用visibility:hidden屬性后,HTML元素(對象)僅僅是在視覺上看不見(完全透明),而它所占據的空間位置仍然存在。
29.CSS中l(wèi)ink和@import的區(qū)別是:
Link屬于html標簽,而@import是CSS中提供的
@import有執(zhí)行效率問題,它會打破瀏覽器并行加載資源,導致加載頁面速度變慢。盡量不要使用@import。
30.簡介盒子模型:
CSS的盒子模型有兩種:IE盒子模型、標準的W3C盒子模型模型
盒模型:內容、內邊距、外邊距(一般不計入盒子實際寬度)、邊框
31.為什么要初始化樣式?
用于瀏覽器默認css樣式的存在并且不同瀏覽器對相同HTML標簽的默認樣式不同,若不初始化會造成不同瀏覽器之間的顯示差異。
32.BFC是什么?
BFC就是“塊級格式化上下文”的意思,創(chuàng)建了 BFC的元素就是一個獨立的盒子,不過只有Block-level box可以參與創(chuàng)建BFC, 它規(guī)定了內部的Block-level Box如何布局,并且與這個獨立盒子里的布局不受外部影響,當然它也不會影響到外面的元素。
BFC有一下特性:
內部的Box會在垂直方向,從頂部開始一個接一個地放置。
Box垂直方向的距離由margin決定。屬于同一個BFC的兩個相鄰Box的margin會發(fā)生疊加
每個元素的margin box的左邊, 與包含塊border box的左邊相接觸(對于從左往右的格式化,否則相反)。即使存在浮動也是如此。
BFC的區(qū)域不會與float box疊加。
BFC就是頁面上的一個隔離的獨立容器,容器里面的子元素不會影響到外面的元素,反之亦然。
計算BFC的高度時,浮動元素也參與計算。
如何觸發(fā)BFC?
float 除了none以外的值
overflow 除了visible 以外的值(hidden,auto,scroll )
display (table-cell,table-caption,inline-block, flex, inline-flex)
position值為(absolute,fixed)
fieldset元素
33.Doctype的作用?嚴格模式與混雜模式的區(qū)別?
,文檔聲明;用于告知瀏覽器該以何種模式來渲染文檔
嚴格模式下:頁面排版及JS解析是以該瀏覽器支持的最高標準來執(zhí)行
混雜模式:不嚴格按照標準執(zhí)行,主要用來兼容舊的瀏覽器,向后兼容
34.IE的雙邊距BUG:塊級元素float后設置橫向margin,ie6顯示的margin比設置的較大。
解決:加入_display:inline
35.HTML與XHTML——二者有什么區(qū)別?
- 所有的標記都必須要有一個相應的結束標記 所有標簽的元素和屬性的名字都必須使用-小寫 所有的 XML 標記都必須合理嵌套
- 所有的屬性必須用引號 “” 括起來 把所有 < 和 & 特殊符號用編碼表示 給所有屬性賦一個值
- 不要在注釋內容中使用 “–”
- 圖片必須有說明文字
36.html常見兼容性問題?
- 雙邊距BUG float引起的 使用display
- 3像素問題 使用float引起的 使用dislpay:inline -3px
- 超鏈接hover 點擊后失效 使用正確的書寫順序 link visited hover active
- IE z-index問題 給父級添加position:relative
- Png 透明 使用js代碼 改
- Min-height 最小高度 !Important 解決’
- select 在ie6下遮蓋 使用iframe嵌套
- 為什么沒有辦法定義1px左右的寬度容器(IE6默認的行高造成的,使用over:hidden,zoom:0.08 line-height:1px)
- IE5-8不支持opacity,解決辦法:
.opacity {
opacity: 0.4
filter: alpha(opacity=60); /* for IE5-7 /
-ms-filter: “progid:DXImageTransform.Microsoft.Alpha(Opacity=60)”; / for IE 8*/
}
- IE6不支持PNG透明背景,解決辦法: IE6下使用gif圖片
37.對WEB標準以及W3C的理解與認識
標簽閉合、標簽小寫、不亂嵌套、提高搜索機器人搜索幾率、使用外 鏈css和js腳本、結構行為表現的分離、文件下載與頁面速度更快、內容能被更多的用戶所訪問、內容能被更廣泛的設備所訪問、更少的代碼和組件,容易維 護、改版方便,不需要變動頁面內容、提供打印版本而不需要復制內容、提高網站易用性。
38.行內元素有哪些?塊級元素有哪些?
答:塊級元素:div p h1 h2 h3 h4 form ul
行內元素: a b br i span input select
39.前端頁面有哪三層構成,分別是什么?作用是什么?
答:結構層 Html 表示層 CSS 行為層 js。
40.Doctype作用? 嚴格模式與混雜模式-如何觸發(fā)這兩種模式,區(qū)分它們有何意義?
(1)、<!DOCTYPE> 聲明位于文檔中的最前面,處于 標簽之前。告知瀏覽器的解析器,用什么文檔類型 規(guī)范來解析這個文檔。
(2)、嚴格模式的排版和 JS 運作模式是,以該瀏覽器支持的最高標準運行。
(3)、在混雜模式中,頁面以寬松的向后兼容的方式顯示。模擬老式瀏覽器的行為以防止站點無法工作。
(4)、DOCTYPE不存在或格式不正確會導致文檔以混雜模式呈現。
41.行內元素有哪些?塊級元素有哪些? 空(void)元素有那些?
(1)CSS規(guī)范規(guī)定,每個元素都有display屬性,確定該元素的類型,每個元素都有默認的display值,比如div默認display屬性值為“block”,成為“塊級”元素;span默認display屬性值為“inline”,是“行內”元素。
(2)行內元素有:a b span img input select strong(強調的語氣) 塊級元素有:div ul ol li dl dt dd h1 h2 h3 h4…p
(3)知名的空元素:
鮮為人知的是:
42.CSS的盒子模型?
(1)兩種, IE 盒子模型、標準 W3C 盒子模型;IE 的content部分包含了 border 和 pading;
(2)盒模型: 內容(content)、填充(padding)、邊界(margin)、 邊框(border)
43.CSS 選擇符有哪些?哪些屬性可以繼承?優(yōu)先級算法如何計算? CSS3新增偽類有那些?
* 1.id選擇器( # myid)
2.類選擇器(.myclassname)
3.標簽選擇器(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 ;
* 優(yōu)先級就近原則,樣式定義最近者為準;
* 載入樣式以最后載入的定位為準;
優(yōu)先級為:
!important > id > class > tag
important 比 內聯(lián)優(yōu)先級高
43.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,單選框或復選框被選中。
44.瀏覽器的內核分別是什么?經常遇到的瀏覽器的兼容性有哪些?原因,解決方法是什么,常用hack的技巧 ?
- IE瀏覽器的內核Trident、 Mozilla的Gecko、google的WebKit、Opera內核Presto;
- png24為的圖片在iE6瀏覽器上出現背景,解決方案是做成PNG8.
- 瀏覽器默認的margin和padding不同。解決方案是加一個全局的*{margin:0;padding:0;}來統(tǒng)一。
- IE6雙邊距bug:塊屬性標簽float后,又有橫行的margin情況下,在ie6顯示margin比設置的大。
浮動ie產生的雙倍距離 #box{ float:left; width:10px; margin:0 0 0 100px;}
這種情況之下IE會產生20px的距離,解決方案是在float的標簽樣式控制中加入 ——_display:inline;將其轉化為行內屬性。(_這個符號只有ie6會識別)
漸進識別的方式,從總體中逐漸排除局部。
首先,巧妙的使用“\9”這一標記,將IE游覽器從所有情況中分離出來。
接著,再次使用“+”將IE8和IE7、IE6分離開來,這樣IE8已經獨立識別。
css
.bb{
background-color:#f1ee18;/所有識別/
.background-color:#00deff\9; /IE6、7、8識別/
+background-color:#a200ff;/IE6、7識別/
_background-color:#1e0bd1;/IE6識別/
} - IE下,可以使用獲取常規(guī)屬性的方法來獲取自定義屬性,
也可以使用getAttribute()獲取自定義屬性;
Firefox下,只能使用getAttribute()獲取自定義屬性.
解決方法:統(tǒng)一通過getAttribute()獲取自定義屬性. - IE下,even對象有x,y屬性,但是沒有pageX,pageY屬性;
Firefox下,event對象有pageX,pageY屬性,但是沒有x,y屬性. - (條件注釋)缺點是在IE瀏覽器下可能會增加額外的HTTP請求數。
- Chrome 中文界面下默認會將小于 12px 的文本強制按照 12px 顯示, 可通過加入 CSS 屬性 -webkit-text-size-adjust: none; 解決.
超鏈接訪問過后hover樣式就不出現了 被點擊訪問過的超鏈接樣式不在具有hover和active了解決方法是改變CSS屬性的排列順序:
L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}
45.列出display的值,說明他們的作用。position的值, relative和absolute定位原點是?
- block 象塊類型元素一樣顯示。
none 缺省值。向行內元素類型一樣顯示。
inline-block 象行內元素一樣顯示,但其內容象塊類型元素一樣顯示。
list-item 象塊類型元素一樣顯示,并添加樣式列表標記。 - position的值
*absolute
生成絕對定位的元素,相對于 static 定位以外的第一個父元素進行定位。
*fixed (老IE不支持)
生成絕對定位的元素,相對于瀏覽器窗口進行定位。 - relative
生成相對定位的元素,相對于其正常位置進行定位。 - static 默認值。沒有定位,元素出現在正常的流中
*(忽略 top, bottom, left, right z-index 聲明)。 - inherit 規(guī)定從父元素繼承 position 屬性的值。
46.absolute的containing block計算方式跟正常流有什么不同?
lock-level boxes
一個 block-level element (‘display’ 屬性值為 ‘block’, ‘list-item’ 或是 ‘table’) 會生成一個 block-level box,這樣的盒子會參與到 block-formatting context (一種布局的方式) 中。
block formatting context
在這種布局方式下,盒子們自所在的 containing block 頂部起一個接一個垂直排列,水平方向上撐滿整個寬度 (除非內部的盒子自己內部建立了新的 BFC)。
containing block
一般來說,盒子本身就為其子孫建立了 containing block,用來計算內部盒子的位置、大小,而對內部的盒子,具體采用哪個 containing block 來計算,需要分情況來討論:
若此元素為 inline 元素,則 containing block 為能夠包含這個元素生成的第一個和最后一個 inline box 的 padding box (除 margin, border 外的區(qū)域) 的最小矩形;
否則則由這個祖先元素的 padding box 構成。
根元素所在的 containing block 被稱為 initial containing block,在我們常用的瀏覽器環(huán)境下,指的是原點與 canvas 重合,大小和 viewport 相同的矩形;
對于 position 為 static 或 relative 的元素,其 containing block 為祖先元素中最近的 block container box 的 content box (除 margin, border, padding 外的區(qū)域);
對于 position:fixed 的元素,其 containing block 由 viewport 建立;
對于 position:absolute 的元素,則是先找到其祖先元素中最近的 position 屬性非 static 的元素,然后判斷:
如果都找不到,則為 initial containing block。
47.對WEB標準以及W3C的理解與認識
標簽閉合、標簽小寫、不亂嵌套、提高搜索機器人搜索幾率、使用外 鏈css和js腳本、結構行為表現的分離、文件下載與頁面速度更快、內容能被更多的用戶所訪問、內容能被更廣泛的設備所訪問、更少的代碼和組件,容易維 護、改版方便,不需要變動頁面內容、提供打印版本而不需要復制內容、提高網站易用性.
48.css的基本語句構成是?
選擇器{屬性1:值1;屬性2:值2;……}
49.瀏覽器標準模式和怪異模式之間的區(qū)別是什么?
盒子模型 渲染模式的不同
使用 window.top.document.compatMode 可顯示為什么模式
50.CSS中可以通過哪些屬性定義,使得一個DOM元素不顯示在瀏覽器可視范圍內?
最基本的:
設置display屬性為none,或者設置visibility屬性為hidden
技巧性:
設置寬高為0,設置透明度為0,設置z-index位置在-1000
51.行內元素和塊級元素的具體區(qū)別是什么?行內元素的padding和margin可設置嗎?
塊級元素(block)特性:
總是獨占一行,表現為另起一行開始,而且其后的元素也必須另起一行顯示;
寬度(width)、高度(height)、內邊距(padding)和外邊距(margin)都可控制;
內聯(lián)元素(inline)特性:
和相鄰的內聯(lián)元素在同一行;
寬度(width)、高度(height)、內邊距的top/bottom(padding-top/padding-bottom)和外邊距的top/bottom(margin-top/margin-bottom)都不可改變(也就是padding和margin的left和right是可以設置的),就是里面文字或圖片的大小。
那么問題來了,瀏覽器還有默認的天生inline-block元素(擁有內在尺寸,可設置高寬,但不會自動換行),有哪些?
答案: 、 、 、 、
52.什么是外邊距重疊?重疊的結果是什么?
答案:
外邊距重疊就是margin-collapse。
在CSS當中,相鄰的兩個盒子(可能是兄弟關系也可能是祖先關系)的外邊距可以結合成一個單獨的外邊距。這種合并外邊距的方式被稱為折疊,并且因而所結合成的外邊距稱為折疊外邊距。
折疊結果遵循下列計算規(guī)則:
兩個相鄰的外邊距都是正數時,折疊結果是它們兩者之間較大的值。
兩個相鄰的外邊距都是負數時,折疊結果是兩者絕對值的較大值。
兩個外邊距一正一負時,折疊結果是兩者的相加的和。
53.描述一個"reset"的CSS文件并如何使用它。知道normalize.css嗎?你了解他們的不同之處?
重置樣式非常多,凡是一個前端開發(fā)人員肯定有一個常用的重置CSS文件并知道如何使用它們。他們是盲目的在做還是知道為什么這么做呢?原因是不同的瀏覽器對一些元素有不同的默認樣式,如果你不處理,在不同的瀏覽器下會存在必要的風險,或者更有戲劇性的性發(fā)生。
你可能會用Normalize來代替你的重置樣式文件。它沒有重置所有的樣式風格,但僅提供了一套合理的默認樣式值。既能讓眾多瀏覽器達到一致和合理,但又不擾亂其他的東西(如粗體的標題)。
在這一方面,無法做每一個復位重置。它也確實有些超過一個重置,它處理了你永遠都不用考慮的怪癖,像HTML的audio元素不一致或line-height不一致。
54.說display屬性有哪些?可以做什么?
display:block行內元素轉換為塊級元素
display:inline塊級元素轉換為行內元素
display:inline-block轉為內聯(lián)元素
55.哪些css屬性可以繼承?
可繼承: font-size font-family color, ul li dl dd dt;
不可繼承 :border padding margin width height ;
56.css優(yōu)先級算法如何計算?
!important > id > class > 標簽
!important 比 內聯(lián)優(yōu)先級高
*優(yōu)先級就近原則,樣式定義最近者為準;
*以最后載入的樣式為準;
57.b標簽和strong標簽,i標簽和em標簽的區(qū)別?
后者有語義,前者則無。
58.有那些行內元素、有哪些塊級元素、盒模型?
- 內聯(lián)元素(inline element)
a – 錨點
abbr – 縮寫
acronym – 首字
b – 粗體(不推薦)
big – 大字體
br – 換行
em – 強調
font – 字體設定(不推薦)
i – 斜體
img – 圖片
input – 輸入框
label – 表格標簽
s – 中劃線(不推薦)
select – 項目選擇
small – 小字體文本
span – 常用內聯(lián)容器,定義文本內區(qū)塊
strike – 中劃線
strong – 粗體強調
sub – 下標
sup – 上標
textarea – 多行文本輸入框
tt – 電傳文本
u – 下劃線
var – 定義變量 - 塊級元素
address – 地址
blockquote – 塊引用
center – 舉中對齊塊
dir – 目錄列表
div – 常用塊級容易,也是css layout的主要標簽
dl – 定義列表
fieldset – form控制組
form – 交互表單
h1 – 大標題
h2 – 副標題
h3 – 3級標題
h4 – 4級標題
h5 – 5級標題
h6 – 6級標題
hr – 水平分隔線
isindex – input prompt
menu – 菜單列表
noframes – frames可選內容,(對于不支持frame的瀏覽器顯示此區(qū)塊內容)
noscript – )可選腳本內容(對于不支持script的瀏覽器顯示此內容)
ol – 排序表單
p – 段落
pre – 格式化文本
table – 表格
ul – 非排序列表 - CSS盒子模型包含四個部分組成:
內容、填充(padding)、邊框(border)、外邊界(margin)。
59.有哪些選擇符,優(yōu)先級的計算公式是什么?行內樣式和!important哪個優(yōu)先級高?
#ID > .class > 標簽選擇符 !important優(yōu)先級高
60.我想讓行內元素跟上面的元素距離10px,加margin-top和padding-top可以嗎?
margin-top,padding-top無效
61.CSS的盒模型由什么組成?
內容,border ,margin,padding
62.說說display屬性有哪些?可以做什么?
display:block行內元素轉換為塊級元素
display:inline塊級元素轉換為行內元素
display:inline-block轉為內聯(lián)元素
63.哪些css屬性可以繼承?
可繼承: font-size font-family color, ul li dl dd dt;
不可繼承 :border padding margin width height ;
64.css優(yōu)先級算法如何計算?
!important > id > class > 標簽
!important 比 內聯(lián)優(yōu)先級高
- 優(yōu)先級就近原則,樣式定義最近者為準;
- 以最后載入的樣式為準;
二、HTML5 CSS3
- CSS3有哪些新特性?
① CSS3實現圓角(border-radius),陰影(box-shadow),
② 對文字加特效(text-shadow、),線性漸變(gradient),旋轉(transform)
③ transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);// 旋轉,縮放,定位,傾斜
④ 增加了更多的CSS選擇器 多背景 rgba
⑤ 在CSS3中唯一引入的偽元素是 ::selection.
⑥ 媒體查詢,多欄布局
⑦ border-image
- html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區(qū)分 HTML 和 HTML5?
新特性:
- 拖拽釋放(Drag and drop) API
- 語義化更好的內容標簽(header,nav,footer,aside,article,section)
- 音頻、視頻API(audio,video)
- 畫布(Canvas) API
- 地理(Geolocation) API
- 本地離線存儲 localStorage 長期存儲數據,瀏覽器關閉后數據不丟失;
- sessionStorage 的數據在瀏覽器關閉后自動刪除
- 表單控件,calendar、date、time、email、url、search
- 新的技術webworker, websocket, Geolocation
移除的元素:
① 純表現的元素:basefont,big,center,font, s,strike,tt,u;
② 對可用性產生負面影響的元素:frame,frameset,noframes;
③ 支持HTML5新標簽: - IE8/IE7/IE6支持通過 document.createElement 方法產生的標簽,可以利用這一特性讓這些瀏覽器支持 HTML5 新標簽,瀏覽器支持新標簽后,還需要添加標簽默認的樣式(當然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架):
<!--[if lt IE 9]>
<script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>
<![endif]-->
如何區(qū)分:
DOCTYPE聲明新增的結構元素、功能元素
3.本地存儲(Local Storage )和cookies(儲存在用戶本地終端上的數據)之間的區(qū)別是什么?
Cookies:服務器和客戶端都可以訪問;大小只有4KB左右;有有效期,過期后將會刪除;
本地存儲:只有本地瀏覽器端可訪問數據,服務器不能訪問本地存儲直到故意通過POST或者GET的通道發(fā)送到服務器;每個域5MB;沒有過期數據,它將保留直到用戶從瀏覽器清除或者使用Javascript代碼移除
4.如何實現瀏覽器內多個標簽頁之間的通信?
調用 localstorge、cookies 等本地存儲方式
5.你如何對網站的文件和資源進行優(yōu)化?
文件合并
文件最小化/文件壓縮
使用CDN托管
緩存的使用
6.什么是響應式設計?
低成本實現一套代碼一個網頁在多終端多設備下訪問達到一定用戶體驗的開發(fā)方式。其布局會根據終端情況自適應調整達到一定水平的用戶體驗。
7.新的 HTML5 文檔類型和字符集是?
答:HTML5文檔類型:<!doctype html>
HTML5使用的編碼
8.HTML5 Canvas 元素有什么用?
答:Canvas 元素用于在網頁上繪制圖形,該元素標簽強大之處在于可以直接在 HTML 上進行圖形操作。
9.HTML5 存儲類型有什么區(qū)別?
答:Media API、Text Track API、Application Cache API、User Interaction、Data Transfer API、Command API、Constraint Validation API、History API
10.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,單選框或復選框被選中。
11.html5\CSS3有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區(qū)分 HTML 和 HTML5?
HTML5 現在已經不是 SGML 的子集,主要是關于圖像,位置,存儲,地理定位等功能的增加。
- 繪畫 canvas 元素
用于媒介回放的 video 和 audio 元素
本地離線存儲 localStorage 長期存儲數據,瀏覽器關閉后數據不丟失;
sessionStorage 的數據在瀏覽器關閉后自動刪除
語意化更好的內容元素,比如 article、footer、header、nav、section
表單控件,calendar、date、time、email、url、search
CSS3實現圓角,陰影,對文字加特效,增加了更多的CSS選擇器 多背景 rgba
新的技術webworker, websockt, Geolocation
移除的元素
純表現的元素:basefont,big,center,font, s,strike,tt,u;
對可用性產生負面影響的元素:frame,frameset,noframes; - 是IE8/IE7/IE6支持通過document.createElement方法產生的標簽,
可以利用這一特性讓這些瀏覽器支持HTML5新標簽,
瀏覽器支持新標簽后,還需要添加標簽默認的樣式: - 當然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架
12.你怎么來實現頁面設計圖,你認為前端應該如何高質量完成工作? 一個滿屏 品 字布局 如何設計?
- 首先劃分成頭部、body、腳部;。。。。。
- 實現效果圖是最基本的工作,精確到2px;
與設計師,產品經理的溝通和項目的參與
做好的頁面結構,頁面重構和用戶體驗
處理hack,兼容、寫出優(yōu)美的代碼格式
針對服務器的優(yōu)化、擁抱 HTML5。
13.知道css有個content屬性嗎?有什么作用?有什么應用?
知道。css的content屬性專門應用在 before/after 偽元素上,用來插入生成內容。最常見的應用是利用偽類清除浮動。
//一種常見利用偽類清除浮動的代碼
.clearfix:after {
content:"."; //這里利用到了content屬性
display:block;
height:0;
visibility:hidden;
clear:both; }
.clearfix {
*zoom:1;
}
after偽元素通過 content 在元素的后面生成了內容為一個點的塊級素,再利用clear:both清除浮動。
那么問題繼續(xù)還有,知道css計數器(序列數字字符自動遞增)嗎?如何通過css content屬性實現css計數器?
答案:css計數器是通過設置counter-reset 、counter-increment 兩個屬性 、及 counter()/counters()一個方法配合after / before 偽類實現。
14.如何在 HTML5 頁面中嵌入音頻?
HTML 5 包含嵌入音頻文件的標準方式,支持的格式包括 MP3、Wav 和 Ogg:
<audio controls> <source src="jamshed.mp3" type="audio/mpeg"> Your browser does'nt support audio embedding feature.
</audio>
15.如何在 HTML5 頁面中嵌入視頻?
和音頻一樣,HTML5 定義了嵌入視頻的標準方法,支持的格式包括:MP4、WebM 和 Ogg:
<video width="450" height="340" controls> <source src="jamshed.mp4" type="video/mp4"> Your browser does'nt support video embedding feature.
</video>
16.HTML5 引入什么新的表單屬性?
Datalist datetime output keygen date month week time number range emailurl
17 .描述一段語義的html代碼吧。
(HTML5中新增加的很多標簽(如:<article>、<nav>、<header>和<footer>等)
就是基于語義化設計原則)
< div id="header">
< h1>標題< /h1>
< h2>專注Web前端技術< /h2>
< /div>
語義 HTML 具有以下特性:文字包裹在元素中,用以反映內容。例如:
段落包含在 <p> 元素中。
順序表包含在<ol>元素中。
從其他來源引用的大型文字塊包含在<blockquote>元素中。
HTML 元素不能用作語義用途以外的其他目的。例如:
<h1>包含標題,但并非用于放大文本。
<blockquote>包含大段引述,但并非用于文本縮進。
空白段落元素 ( <p></p> ) 并非用于跳行。
文本并不直接包含任何樣式信息。例如:
不使用 <font> 或 <center> 等格式標記。
類或 ID 中不引用顏色或位置。
18.cookie在瀏覽器和服務器間來回傳遞。 sessionStorage和localStorage區(qū)別
sessionStorage和localStorage的存儲空間更大;
sessionStorage和localStorage有更多豐富易用的接口;
sessionStorage和localStorage各自獨立的存儲空間;
總結
以上是生活随笔為你收集整理的前端面试之html+css【一】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸿蒙智行官网上线,成员包括问界、智界汽车
- 下一篇: 老项带你用3G(1)用好诺基亚手机的Ov