Html篇:

1.你做的頁面在哪些流覽器測試過?這些瀏覽器的內(nèi)核分別是什么?

  • IE: trident內(nèi)核
  • Firefox:gecko內(nèi)核
  • Safari:webkit內(nèi)核
  • Opera:以前是presto內(nèi)核,Opera現(xiàn)已改用Google Chrome的Blink內(nèi)核
  • Chrome:Blink(基于webkit,Google與Opera Software共同開發(fā))

2.每個HTML文件里開頭都有個很重要的東西,Doctype,知道這是干什么的嗎?

答案:<!DOCTYPE> 聲明位于文檔中的最前面的位置,處于 <html> 標(biāo)簽之前。此標(biāo)簽可告知瀏覽器文檔使用哪種 HTML 或 XHTML 規(guī)范。(重點(diǎn):告訴瀏覽器按照何種規(guī)范解析頁面)

3.Quirks模式是什么?它和Standards模式有什么區(qū)別

答案:

從IE6開始,引入了Standards模式,標(biāo)準(zhǔn)模式中,瀏覽器嘗試給符合標(biāo)準(zhǔn)的文檔在規(guī)范上的正確處理達(dá)到在指定瀏覽器中的程度。

在IE6之前CSS還不夠成熟,所以IE5等之前的瀏覽器對CSS的支持很差, IE6將對CSS提供更好的支持,然而這時(shí)的問題就來了,因?yàn)橛泻芏囗撁媸腔谂f的布局方式寫的,而如果IE6 支持CSS則將令這些頁面顯示不正常,如何在即保證不破壞現(xiàn)有頁面,又提供新的渲染機(jī)制呢?

在寫程序時(shí)我們也會經(jīng)常遇到這樣的問題,如何保證原來的接口不變,又提供更強(qiáng)大的功能,尤其是新功能不兼容舊功能時(shí)。遇到這種問題時(shí)的一個常見做法是增加參數(shù)和分支,即當(dāng)某個參數(shù)為真時(shí),我們就使用新功能,而如果這個參數(shù) 不為真時(shí),就使用舊功能,這樣就能不破壞原有的程序,又提供新功能。IE6也是類似這樣做的,它將DTD當(dāng)成了這個“參數(shù)”,因?yàn)橐郧暗捻撁娲蠹叶疾粫慏TD,所以IE6就假定 如果寫了DTD,就意味著這個頁面將采用對CSS支持更好的布局,而如果沒有,則采用兼容之前的布局方式。這就是Quirks模式(怪癖模式,詭異模式,怪異模式)。

區(qū)別:

總體會有布局、樣式解析和腳本執(zhí)行三個方面的區(qū)別。

盒模型:在W3C標(biāo)準(zhǔn)中,如果設(shè)置一個元素的寬度和高度,指的是元素內(nèi)容的寬度和高度,而在Quirks 模式下,IE的寬度和高度還包含了padding和border。

設(shè)置行內(nèi)元素的高寬:在Standards模式下,給<span>等行內(nèi)元素設(shè)置wdith和height都不會生效,而在quirks模式下,則會生效。

設(shè)置百分比的高度:在standards模式下,一個元素的高度是由其包含的內(nèi)容來決定的,如果父元素沒有設(shè)置百分比的高度,子元素設(shè)置一個百分比的高度是無效的用margin:0 auto設(shè)置水平居中:使用margin:0 auto在standards模式下可以使元素水平居中,但在quirks模式下卻會失效。

(還有很多,答出什么不重要,關(guān)鍵是看他答出的這些是不是自己經(jīng)驗(yàn)遇到的,還是說都是看文章看的,甚至完全不知道。)

4.div+css的布局較table布局有什么優(yōu)點(diǎn)?

  • 改版的時(shí)候更方便 只要改css文件。
  • 頁面加載速度更快、結(jié)構(gòu)化清晰、頁面顯示簡潔。
  • 表現(xiàn)與結(jié)構(gòu)相分離。
  • 易于優(yōu)化(seo)搜索引擎更友好,排名更容易靠前。

5.a:img的alt與title有何異同?b:strong與em的異同?

答案:

a:

  • alt(alt text):為不能顯示圖像、窗體或applets的用戶代理(UA),alt屬性用來指定替換文字。替換文字的語言由lang屬性指定。(在IE瀏覽器下會在沒有title時(shí)把a(bǔ)lt當(dāng)成 tool tip顯示)
  • title(tool tip):該屬性為設(shè)置該屬性的元素提供建議性的信息。

b:

  • strong:粗體強(qiáng)調(diào)標(biāo)簽,強(qiáng)調(diào),表示內(nèi)容的重要性
  • em:斜體強(qiáng)調(diào)標(biāo)簽,更強(qiáng)烈強(qiáng)調(diào),表示內(nèi)容的強(qiáng)調(diào)點(diǎn)

6.你能描述一下漸進(jìn)增強(qiáng)和優(yōu)雅降級之間的不同嗎?

  • 漸進(jìn)增強(qiáng) progressive enhancement:針對低版本瀏覽器進(jìn)行構(gòu)建頁面,保證最基本的功能,然后再針對高級瀏覽器進(jìn)行效果、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗(yàn)。
  • 優(yōu)雅降級 graceful degradation:一開始就構(gòu)建完整的功能,然后再針對低版本瀏覽器進(jìn)行兼容。

區(qū)別:優(yōu)雅降級是從復(fù)雜的現(xiàn)狀開始,并試圖減少用戶體驗(yàn)的供給,而漸進(jìn)增強(qiáng)則是從一個非常基礎(chǔ)的,能夠起作用的版本開始,并不斷擴(kuò)充,以適應(yīng)未來環(huán)境的需要。降級(功能衰減)意味著往回看;而漸進(jìn)增強(qiáng)則意味著朝前看,同時(shí)保證其根基處于安全地帶。

“優(yōu)雅降級”觀點(diǎn)

“優(yōu)雅降級”觀點(diǎn)認(rèn)為應(yīng)該針對那些最高級、最完善的瀏覽器來設(shè)計(jì)網(wǎng)站。而將那些被認(rèn)為“過時(shí)”或有功能缺失的瀏覽器下的測試工作安排在開發(fā)周期的最后階段,并把測試對象限定為主流瀏覽器(如 IE、Mozilla 等)的前一個版本。

在這種設(shè)計(jì)范例下,舊版的瀏覽器被認(rèn)為僅能提供“簡陋卻無妨 (poor, but passable)” 的瀏覽體驗(yàn)。你可以做一些小的調(diào)整來適應(yīng)某個特定的瀏覽器。但由于它們并非我們所關(guān)注的焦點(diǎn),因此除了修復(fù)較大的錯誤之外,其它的差異將被直接忽略。

“漸進(jìn)增強(qiáng)”觀點(diǎn)

“漸進(jìn)增強(qiáng)”觀點(diǎn)則認(rèn)為應(yīng)關(guān)注于內(nèi)容本身。

內(nèi)容是我們建立網(wǎng)站的誘因。有的網(wǎng)站展示它,有的則收集它,有的尋求,有的操作,還有的網(wǎng)站甚至?xí)陨系姆N種,但相同點(diǎn)是它們?nèi)忌婕暗絻?nèi)容。這使得“漸進(jìn)增強(qiáng)”成為一種更為合理的設(shè)計(jì)范例。這也是它立即被 Yahoo! 所采納并用以構(gòu)建其“分級式瀏覽器支持 (Graded Browser Support)”策略的原因所在。

那么問題了?,F(xiàn)在產(chǎn)品經(jīng)理看到IE6,7,8網(wǎng)頁效果相對高版本現(xiàn)代瀏覽器少了很多圓角,陰影(CSS3),要求兼容(使用圖片背景,放棄CSS3),你會如何說服他?

 ?。ㄗ杂砂l(fā)揮)

7.為什么利用多個域名來存儲網(wǎng)站資源會更有效?

  • CDN緩存更方便
  • 突破瀏覽器并發(fā)限制
  • 節(jié)約cookie帶寬
  • 節(jié)約主域名的連接數(shù),優(yōu)化頁面響應(yīng)速度
  • 防止不必要的安全問題

8.請談一下你對網(wǎng)頁標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機(jī)構(gòu)重要性的理解。

(無標(biāo)準(zhǔn)答案)網(wǎng)頁標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機(jī)構(gòu)都是為了能讓web發(fā)展的更‘健康’,開發(fā)者遵循統(tǒng)一的標(biāo)準(zhǔn),降低開發(fā)難度,開發(fā)成本,SEO也會更好做,也不會因?yàn)闉E用代碼導(dǎo)致各種BUG、安全問題,最終提高網(wǎng)站易用性。

9.請描述一下cookies,sessionStorage和localStorage的區(qū)別?

sessionStorage用于本地存儲一個會話(session)中的數(shù)據(jù),這些數(shù)據(jù)只有在同一個會話中的頁面才能訪問并且當(dāng)會話結(jié)束后數(shù)據(jù)也隨之銷毀。因此sessionStorage不是一種持久化的本地存儲,僅僅是會話級別的存儲。而localStorage用于持久化的本地存儲,除非主動刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會過期的。

web storage和cookie的區(qū)別

  • Web Storage的概念和cookie相似,區(qū)別是它是為了更大容量存儲設(shè)計(jì)的。Cookie的大小是受限的,并且每次你請求一個新的頁面的時(shí)候Cookie都會被發(fā)送過去,這樣無形中浪費(fèi)了帶寬,另外cookie還需要指定作用域,不可以跨域調(diào)用。
  • 除此之外,Web Storage擁有setItem,getItem,removeItem,clear等方法,不像cookie需要前端開發(fā)者自己封裝setCookie,getCookie。但是Cookie也是不可以或缺的:Cookie的作用是與服務(wù)器進(jìn)行交互,作為HTTP規(guī)范的一部分而存在 ,而Web Storage僅僅是為了在本地“存儲”數(shù)據(jù)而生。

10.簡述一下src與href的區(qū)別。

答案:

src用于替換當(dāng)前元素,href用于在當(dāng)前文檔和引用資源之間確立聯(lián)系。

src是source的縮寫,指向外部資源的位置,指向的內(nèi)容將會嵌入到文檔中當(dāng)前標(biāo)簽所在位置;在請求src資源時(shí)會將其指向的資源下載并應(yīng)用到文檔內(nèi),例如js腳本,img圖片和frame等元素。

<script src =”js.js”></script>

當(dāng)瀏覽器解析到該元素時(shí),會暫停其他資源的下載和處理,直到將該資源加載、編譯、執(zhí)行完畢,圖片和框架等元素也如此,類似于將所指向資源嵌入當(dāng)前標(biāo)簽內(nèi)。這也是為什么將js腳本放在底部而不是頭部。

href是Hypertext Reference的縮寫,指向網(wǎng)絡(luò)資源所在位置,建立和當(dāng)前元素(錨點(diǎn))或當(dāng)前文檔(鏈接)之間的鏈接,如果我們在文檔中添加

<link href=”common.css” rel=”stylesheet”/>

那么瀏覽器會識別該文檔為css文件,就會并行下載資源并且不會停止對當(dāng)前文檔的處理。這也是為什么建議使用link方式來加載css,而不是使用@import方式。

11.知道的網(wǎng)頁制作會用到的圖片格式有哪些?

答案:

png-8,png-24,jpeg,gif,svg。

但是上面的那些都不是面試官想要的最后答案。面試官希望聽到是Webp,Apng。(是否有關(guān)注新技術(shù),新鮮事物)

科普一下Webp:WebP格式,谷歌(google)開發(fā)的一種旨在加快圖片加載速度的圖片格式。圖片壓縮體積大約只有JPEG的2/3,并能節(jié)省大量的服務(wù)器帶寬資源和數(shù)據(jù)空間。Facebook Ebay等知名網(wǎng)站已經(jīng)開始測試并使用WebP格式。

在質(zhì)量相同的情況下,WebP格式圖像的體積要比JPEG格式圖像小40%。

Apng:全稱是“Animated Portable Network Graphics”, 是PNG的位圖動畫擴(kuò)展,可以實(shí)現(xiàn)png格式的動態(tài)圖片效果。04年誕生,但一直得不到各大瀏覽器廠商的支持,直到日前得到 iOS safari 8的支持,有望代替GIF成為下一代動態(tài)圖標(biāo)準(zhǔn)。

12.知道什么是微格式嗎?談?wù)劺斫?。在前端?gòu)建中應(yīng)該考慮微格式嗎?

答案:

微格式(Microformats)是一種讓機(jī)器可讀的語義化XHTML詞匯的集合,是結(jié)構(gòu)化數(shù)據(jù)的開放標(biāo)準(zhǔn)。是為特殊應(yīng)用而制定的特殊格式。

優(yōu)點(diǎn):將智能數(shù)據(jù)添加到網(wǎng)頁上,讓網(wǎng)站內(nèi)容在搜索引擎結(jié)果界面可以顯示額外的提示。(應(yīng)用范例:豆瓣,有興趣自行g(shù)oogle)

13.在css/js代碼上線之后開發(fā)人員經(jīng)常會優(yōu)化性能,從用戶刷新網(wǎng)頁開始,一次js請求一般情況下有哪些地方會有緩存處理?

答案:dns緩存,cdn緩存,瀏覽器緩存,服務(wù)器緩存。

14.一個頁面上有大量的圖片(大型電商網(wǎng)站),加載很慢,你有哪些方法優(yōu)化這些圖片的加載,給用戶更好的體驗(yàn)。

  • 圖片懶加載,在頁面上的未可視區(qū)域可以添加一個滾動條事件,判斷圖片位置與瀏覽器頂端的距離與頁面的距離,如果前者小于后者,優(yōu)先加載。
  • 如果為幻燈片、相冊等,可以使用圖片預(yù)加載技術(shù),將當(dāng)前展示圖片的前一張和后一張優(yōu)先下載。
  • 如果圖片為css圖片,可以使用CSSsprite,SVGsprite,Iconfont、Base64等技術(shù)。
  • 如果圖片過大,可以使用特殊編碼的圖片,加載時(shí)會先加載一張壓縮的特別厲害的縮略圖,以提高用戶體驗(yàn)。
  • 如果圖片展示區(qū)域小于圖片的真實(shí)大小,則因在服務(wù)器端根據(jù)業(yè)務(wù)需要先行進(jìn)行圖片壓縮,圖片壓縮后大小與展示一致。

15.你如何理解HTML結(jié)構(gòu)的語義化? 

  • 去掉或樣式丟失的時(shí)候能讓頁面呈現(xiàn)清晰的結(jié)構(gòu):

html本身是沒有表現(xiàn)的,我們看到例如<h1>是粗體,字體大小2em,加粗;<strong>是加粗的,不要認(rèn)為這是html的表現(xiàn),這些其實(shí)html默認(rèn)的css樣式在起作用,所以去掉或樣式丟失的時(shí)候能讓頁面呈現(xiàn)清晰的結(jié)構(gòu)不是語義化的HTML結(jié)構(gòu)的優(yōu)點(diǎn),但是瀏覽器都有有默認(rèn)樣式,默認(rèn)樣式的目的也是為了更好的表達(dá)html的語義,可以說瀏覽器的默認(rèn)樣式和語義化的HTML結(jié)構(gòu)是不可分割的。

  • 屏幕閱讀器(如果訪客有視障)會完全根據(jù)你的標(biāo)記來“讀”你的網(wǎng)頁.

例如,如果你使用的含語義的標(biāo)記,屏幕閱讀器就會“逐個拼出”你的單詞,而不是試著去對它完整發(fā)音.

  • PDA、手機(jī)等設(shè)備可能無法像普通電腦的瀏覽器一樣來渲染網(wǎng)頁(通常是因?yàn)檫@些設(shè)備對CSS的支持較弱)

使用語義標(biāo)記可以確保這些設(shè)備以一種有意義的方式來渲染網(wǎng)頁.理想情況下,觀看設(shè)備的任務(wù)是符合設(shè)備本身的條件來渲染網(wǎng)頁.

語義標(biāo)記為設(shè)備提供了所需的相關(guān)信息,就省去了你自己去考慮所有可能的顯示情況(包括現(xiàn)有的或者將來新的設(shè)備).例如,一部手機(jī)可以選擇使一段標(biāo)記了標(biāo)題的文字以粗體顯示.而掌上電腦可能會以比較大的字體來顯示.無論哪種方式一旦你對文本標(biāo)記為標(biāo)題,您就可以確信讀取設(shè)備將根據(jù)其自身的條件來合適地顯示頁面.

  • 搜索引擎的爬蟲也依賴于標(biāo)記來確定上下文和各個關(guān)鍵字的權(quán)重

過去你可能還沒有考慮搜索引擎的爬蟲也是網(wǎng)站的“訪客”,但現(xiàn)在它們他們實(shí)際上是極其寶貴的用戶.沒有他們的話,搜索引擎將無法索引你的網(wǎng)站,然后一般用戶將很難過來訪問.

  • 你的頁面是否對爬蟲容易理解非常重要,因?yàn)榕老x很大程度上會忽略用于表現(xiàn)的標(biāo)記,而只注重語義標(biāo)記.

因此,如果頁面文件的標(biāo)題被標(biāo)記,而不是,那么這個頁面在搜索結(jié)果的位置可能會比較靠后.除了提升易用性外,語義標(biāo)記有利于正確使用CSS和JavaScript,因?yàn)槠浔旧硖峁┝嗽S多“鉤鉤”來應(yīng)用頁面的樣式與行為.
SEO主要還是靠你網(wǎng)站的內(nèi)容和外部鏈接的。

  • 便于團(tuán)隊(duì)開發(fā)和維護(hù)

W3C給我們定了一個很好的標(biāo)準(zhǔn),在團(tuán)隊(duì)中大家都遵循這個標(biāo)準(zhǔn),可以減少很多差異化的東西,方便開發(fā)和維護(hù),提高開發(fā)效率,甚至實(shí)現(xiàn)模塊化開發(fā)。

16.談?wù)勔郧岸私嵌瘸霭l(fā)做好SEO需要考慮什么?

  • 了解搜索引擎如何抓取網(wǎng)頁和如何索引網(wǎng)頁

你需要知道一些搜索引擎的基本工作原理,各個搜索引擎之間的區(qū)別,搜索機(jī)器人(SE robot 或叫 web crawler)如何進(jìn)行工作,搜索引擎如何對搜索結(jié)果進(jìn)行排序等等。

  • Meta標(biāo)簽優(yōu)化

主要包括主題(Title),網(wǎng)站描述(Description),和關(guān)鍵詞(Keywords)。還有一些其它的隱藏文字比如Author(作者),Category(目錄),Language(編碼語種)等。

  • 如何選取關(guān)鍵詞并在網(wǎng)頁中放置關(guān)鍵詞

搜索就得用關(guān)鍵詞。關(guān)鍵詞分析和選擇是SEO最重要的工作之一。首先要給網(wǎng)站確定主關(guān)鍵詞(一般在5個上下),然后針對這些關(guān)鍵詞進(jìn)行優(yōu)化,包括關(guān)鍵詞密度(Density),相關(guān)度(Relavancy),突出性(Prominency)等等。

  • 了解主要的搜索引擎

雖然搜索引擎有很多,但是對網(wǎng)站流量起決定作用的就那么幾個。比如英文的主要有Google,Yahoo,Bing等;中文的有百度,搜狗,有道等。不同的搜索引擎對頁面的抓取和索引、排序的規(guī)則都不一樣。還要了解各搜索門戶和搜索引擎之間的關(guān)系,比如AOL網(wǎng)頁搜索用的是Google的搜索技術(shù),MSN用的是Bing的技術(shù)。

  • 主要的互聯(lián)網(wǎng)目錄

Open Directory自身不是搜索引擎,而是一個大型的網(wǎng)站目錄,他和搜索引擎的主要區(qū)別是網(wǎng)站內(nèi)容的收集方式不同。目錄是人工編輯的,主要收錄網(wǎng)站主頁;搜索引擎是自動收集的,除了主頁外還抓取大量的內(nèi)容頁面。

  • 按點(diǎn)擊付費(fèi)的搜索引擎

搜索引擎也需要生存,隨著互聯(lián)網(wǎng)商務(wù)的越來越成熟,收費(fèi)的搜索引擎也開始大行其道。最典型的有Overture和百度,當(dāng)然也包括Google的廣告項(xiàng)目Google Adwords。越來越多的人通過搜索引擎的點(diǎn)擊廣告來定位商業(yè)網(wǎng)站,這里面也大有優(yōu)化和排名的學(xué)問,你得學(xué)會用最少的廣告投入獲得最多的點(diǎn)擊。

  • 搜索引擎登錄

網(wǎng)站做完了以后,別躺在那里等著客人從天而降。要讓別人找到你,最簡單的辦法就是將網(wǎng)站提交(submit)到搜索引擎。如果你的是商業(yè)網(wǎng)站,主要的搜索引擎和目錄都會要求你付費(fèi)來獲得收錄(比如Yahoo要299美元),但是好消息是(至少到目前為止)最大的搜索引擎Google目前還是免費(fèi),而且它主宰著60%以上的搜索市場。

  • 鏈接交換和鏈接廣泛度(Link Popularity)

網(wǎng)頁內(nèi)容都是以超文本(Hypertext)的方式來互相鏈接的,網(wǎng)站之間也是如此。除了搜索引擎以外,人們也每天通過不同網(wǎng)站之間的鏈接來Surfing(“沖浪”)。其它網(wǎng)站到你的網(wǎng)站的鏈接越多,你也就會獲得更多的訪問量。更重要的是,你的網(wǎng)站的外部鏈接數(shù)越多,會被搜索引擎認(rèn)為它的重要性越大,從而給你更高的排名。

  • 合理的標(biāo)簽使用

Css篇:

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

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

2.CSS都有哪些選擇器?

  • 派生選擇器(用HTML標(biāo)簽申明)
  • id選擇器(用DOM的ID申明)
  • 類選擇器(用一個樣式類名申明)
  • 屬性選擇器(用DOM的屬性申明,屬于CSS2,IE6不支持,不常用,不知道就算了)

除了前3種基本選擇器,還有一些擴(kuò)展選擇器,包括

  • 后代選擇器(利用空格間隔,比如div .a{ })
  • 群組選擇器(利用逗號間隔,比如p,div,#a{ })

那么問題來了,CSS選擇器的優(yōu)先級是怎么樣定義的?

基本原則:

一般而言,選擇器越特殊,它的優(yōu)先級越高。也就是選擇器指向的越準(zhǔn)確,它的優(yōu)先級就越高。

復(fù)雜的計(jì)算方法:

  • 用1表示派生選擇器的優(yōu)先級
  • 用10表示類選擇器的優(yōu)先級
  • 用100標(biāo)示ID選擇器的優(yōu)先級
    • div.test1 .span var 優(yōu)先級 1+10 +10 +1
    • span#xxx .songs li 優(yōu)先級1+100 + 10 + 1
    • #xxx li 優(yōu)先級 100 +1

那么問題來了,看下列代碼,<p>標(biāo)簽內(nèi)的文字是什么顏色的?。

 1 <style>
 2 .classA{ color:blue;}
 3 
 4 .classB{ color:red;}
 5 </style>
 6 
 7 <body>
 8 
 9 <p class='classB classA'> 123 </p>
10 
11 </body>

答案:red。與樣式定義在文件中的先后順序有關(guān),即是后面的覆蓋前面的,與在<p class=’classB classA’>中的先后關(guān)系無關(guān)。

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

最基本的:

設(shè)置display屬性為none,或者設(shè)置visibility屬性為hidden

技巧性:

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

4.超鏈接訪問過后hover樣式就不出現(xiàn)的問題是什么?如何解決?

答案:被點(diǎn)擊訪問過的超鏈接樣式不在具有hover和active了,解決方法是改變CSS屬性的排列順序: L-V-H-A(link,visited,hover,active)

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

答案:針對不同的瀏覽器寫不同的CSS code的過程,就是CSS hack。

示例如下:

 1  #test       {   
 2         width:300px;   
 3         height:300px;   
 4           
 5         background-color:blue;      /*firefox*/
 6         background-color:red\9;      /*all ie*/
 7         background-color:yellow\0;    /*ie8*/
 8         +background-color:pink;        /*ie7*/
 9         _background-color:orange;       /*ie6*/    }  
10         :root #test { background-color:purple\9; }  /*ie9*/
11     @media all and (min-width:0px){ #test {background-color:black\0;} }  /*opera*/
12     @media screen and (-webkit-min-device-pixel-ratio:0){ #test {background-color:gray;} }       /*chrome and safari*/

6.請用Css寫一個簡單的幻燈片效果頁面

答案:知道是要用css3。使用animation動畫實(shí)現(xiàn)一個簡單的幻燈片效果。

 1         /**HTML**/
 2         div.ani
 3 
 4         /**css**/
 5         .ani{
 6           width:480px;
 7           height:320px;
 8           margin:50px auto;
 9           overflow: hidden;
10           box-shadow:0 0 5px rgba(0,0,0,1);
11           background-size: cover;
12           background-position: center;
13           -webkit-animation-name: "loops";
14           -webkit-animation-duration: 20s;
15           -webkit-animation-iteration-count: infinite;
16         }
17         @-webkit-keyframes "loops" {
18             0% {
19                 background:url(http://d.hiphotos.baidu.com/image/w%3D400/sign=c01e6adca964034f0fcdc3069fc27980/e824b899a9014c08e5e38ca4087b02087af4f4d3.jpg) no-repeat;             
20             }
21             25% {
22                 background:url(http://b.hiphotos.baidu.com/image/w%3D400/sign=edee1572e9f81a4c2632edc9e72b6029/30adcbef76094b364d72bceba1cc7cd98c109dd0.jpg) no-repeat;
23             }
24             50% {
25                 background:url(http://b.hiphotos.baidu.com/image/w%3D400/sign=937dace2552c11dfded1be2353266255/d8f9d72a6059252d258e7605369b033b5bb5b912.jpg) no-repeat;
26             }
27             75% {
28                 background:url(http://g.hiphotos.baidu.com/image/w%3D400/sign=7d37500b8544ebf86d71653fe9f9d736/0df431adcbef76095d61f0972cdda3cc7cd99e4b.jpg) no-repeat;
29             }
30             100% {
31                 background:url(http://c.hiphotos.baidu.com/image/w%3D400/sign=cfb239ceb0fb43161a1f7b7a10a54642/3b87e950352ac65ce2e73f76f9f2b21192138ad1.jpg) no-repeat;
32             }
33         }

7.行內(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> 、<texterea> 、<label>。

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

答案:

外邊距重疊就是margin-collapse。

在CSS當(dāng)中,相鄰的兩個盒子(可能是兄弟關(guān)系也可能是祖先關(guān)系)的外邊距可以結(jié)合成一個單獨(dú)的外邊距。這種合并外邊距的方式被稱為折疊,并且因而所結(jié)合成的外邊距稱為折疊外邊距。

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

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

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

答案:

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

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

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

答案:

垂直方向:line-height

水平方向:letter-spacing

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

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

11.如何垂直居中一個浮動元素?

 1 // 方法一:已知元素的高寬
 2 
 3 #div1{
 4     background-color:#6699FF;
 5     width:200px;
 6     height:200px;
 7 
 8     position: absolute;        //父元素需要相對定位
 9     top: 50%;
10     left: 50%;
11     margin-top:-100px ;   //二分之一的height,width
12     margin-left: -100px;
13     }
14 
15 //方法二:未知元素的高寬
16 
17   #div1{
18     width: 200px;
19     height: 200px;
20     background-color: #6699FF;
21 
22     margin:auto;
23     position: absolute;        //父元素需要相對定位
24     left: 0;
25     top: 0;
26     right: 0;
27     bottom: 0;
28     }

那么問題來了,如何垂直居中一個<img>?(用更簡便的方法。)

1 #container     //<img>的容器設(shè)置如下
2 {
3     display:table-cell;
4     text-align:center;
5     vertical-align:middle;
6 }

12.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。

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

重置樣式非常多,凡是一個前端開發(fā)人員肯定有一個常用的重置CSS文件并知道如何使用它們。他們是盲目的在做還是知道為什么這么做呢?原因是不同的瀏覽器對一些元素有不同的默認(rèn)樣式,如果你不處理,在不同的瀏覽器下會存在必要的風(fēng)險(xiǎn),或者更有戲劇性的性發(fā)生。

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

在這一方面,無法做每一個復(fù)位重置。它也確實(shí)有些超過一個重置,它處理了你永遠(yuǎn)都不用考慮的怪癖,像HTML的audio元素不一致或line-height不一致。

14.Sass、LESS是什么?大家為什么要使用他們?

他們是CSS預(yù)處理器。他是CSS上的一種抽象層。他們是一種特殊的語法/語言編譯成CSS。

例如Less是一種動態(tài)樣式語言. 將CSS賦予了動態(tài)語言的特性,如變量,繼承,運(yùn)算, 函數(shù). LESS 既可以在客戶端上運(yùn)行 (支持IE 6+, Webkit, Firefox),也可一在服務(wù)端運(yùn)行 (借助 Node.js)。

為什么要使用它們?

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

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

  • display : 隱藏對應(yīng)的元素但不擠占該元素原來的空間。
  • visibility: 隱藏對應(yīng)的元素并且擠占該元素原來的空間。

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

16.知道css有個content屬性嗎?有什么作用?有什么應(yīng)用?

答案:

知道。css的content屬性專門應(yīng)用在 before/after 偽元素上,用于來插入生成內(nèi)容。

最常見的應(yīng)用是利用偽類清除浮動。

 1 //一種常見利用偽類清除浮動的代碼
 2  .clearfix:after {
 3     content:".";       //這里利用到了content屬性
 4     display:block; 
 5     height:0;
 6     visibility:hidden; 
 7     clear:both; }
 8 
 9 .clearfix { 
10     *zoom:1; 
11 }

after偽元素通過 content 在元素的后面生成了內(nèi)容為一個點(diǎn)的塊級元素,再利用clear:both清除浮動。

那么問題繼續(xù)還有,知道css計(jì)數(shù)器(序列數(shù)字字符自動遞增)嗎?如何通過css content屬性實(shí)現(xiàn)css計(jì)數(shù)器?

答案:css計(jì)數(shù)器是通過設(shè)置counter-reset 、counter-increment 兩個屬性 、及 counter()/counters()一個方法配合after / before 偽類實(shí)現(xiàn)。

原文來自:Ico_Coco

  哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無需額外費(fèi)用,即可穩(wěn)步提升排名至首頁。歡迎體驗(yàn)最佳的哈爾濱網(wǎng)站建設(shè)。