❶ Web前端面試的常見面試題匯總
今天小編要跟大家分享的文章是關於參加Web前端面試的常見面試題匯總。准備參加Web前端面試的小夥伴們來和小編一起看一看吧,希望則寬本篇文章能夠對大家有所幫助。1.漸進增強與優雅降級
漸進增強
並不是一種技術,而是一種設計思想。各個瀏覽器的渲染能力各不相同,要做一個每個人都能看到的網頁、感受到的體驗都一致的網站幾乎不可能。但還是得網站的可訪問性,保證用戶在任何環境下都能正常訪問網頁得核心內容或能使用基本功能(避免網頁打不開、排版錯誤等),並為他們提供當前條件下最好的體驗,這就是漸進增強得核心思想。
優雅降級也是一種設計思想,為了保證在高版本瀏覽器中提供最好的體驗,碰到低版本瀏覽器再降級進行兼容處理,使其能正常瀏覽。
這兩種思想的區別在於:
1.漸進增強是向上兼容,優雅降級是向下兼容;
2.漸進增強是從簡單到復雜,優雅降級是從復雜到簡單;
3.漸進增強關注的是內容(保證核心內容),優雅降級關注的是瀏覽體驗(為了兼容低版本瀏覽器)
2.DOCTYPE
作用
DTD(DocumentTypeDefinition,文檔類型定義)是一系列的語法規則,用來定義XML或(X)HTML
的文檔類型。瀏覽器會使用它來判斷文檔類型,決定何種協議來解析,以及切換瀏覽模式。
DOCTYPE是用來聲明文檔類型和DTD
規范的,一個主要的用途便是文件的合法性驗證。如果文檔代碼不合法,那麼瀏覽器解析時便會出現一些差錯。
HTML5的文檔類型聲明:
HTML4.01Strict(HTML4.01嚴格模式)的DTD包含所有HTML
元素和屬性,但不包括展示性的和棄用的元素(如font),它的文檔類型聲明:
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
標准模式與怪異模式
怪異模式(Quirks
Mode)用於模擬舊瀏覽器的行為。早期的網站並不會遵循完整的規好卜范,隨著瀏覽器支持越來越多的規范,在那些舊的瀏覽器中開發的頁面在顯示時會友盯穗被破壞。為了向後兼容,瀏覽器發明了怪異模式,一行錯誤或無效的
DOCTYPE都會觸發怪異模式。
瀏覽器使用文件開頭的DOCTYPE來決定用怪異模式處理或標准模式處理。DOCTYPE
可以確保不同瀏覽器以相同的方式解析文檔,以及執行相同的渲染模式。
怪異模式與標准模式的主要區別:
1.怪異模式的寬度和高度會包含padding和border。標准模式不包含,標准模式下可以通過設置box-sizing:
border-box將標准盒模型轉化成怪異模式下的盒模型。
2.怪異模式下,當內容超出容器高度時,會將容器拉伸,而不是溢出。
3.怪異模式下,在表格中的字體樣式(如font-size)不會繼承。
4.怪異模式下顏色值必須使用十六進制標記法。
3.語義化
HTML5
中的語義化就是讓元素、屬性或屬性值有含義,更准確地標記特定類型的內容。對元素語義化的目的是為了讓元素的語義和呈現分離,元素只負責文檔內容的結構與含義,而CSS
樣式控制內容的呈現,像元素,沒有語義但卻能將字體變粗,這類元素違背了語義化的目的,將會被廢棄。
優點
·使得HTML文檔結構清晰、布局合理、主體突出、可讀性更強。
·有利於SEO,搜索引擎根據標簽來確定上下文和各個關鍵字的權重。
·方便其他設備解析,如盲人閱讀器根據語義渲染網頁。
·有利於開發和維護,語義化更具可讀性,代碼更好維護,與CSS3關系更和諧。
語義化標簽
·
·footer內容的頁腳,通常包含該章節作者、版權數據或者與文檔相關的鏈接等信息;
·article
文檔、頁面、應用或網站中的獨立結構,是可獨立分配的、可復用的結構,如在發布中,它可能是論壇帖子、雜志或新聞文章、博客、用戶提交的評論、互動式組件,或者其他獨立的內容項目;
·nav描述一個含有多個超鏈接的區域,該區域包含跳轉到其他頁面或頁面內部其他部分的鏈接列表;
·section表示文檔中的一個區域(或節),比如,內容中的一個專題組;
·main定義文檔的主要內容,該內容在文檔中應當是獨一無二的,不包含任何在文檔中重復的內容,比如側邊欄,導航欄鏈接,版權信息,網站
logo,搜索框(搜索框作為文檔的主要內容);
·aside
表示一個和其餘頁面內容幾乎無關的部分,被認為是獨立於該內容的一部分且可以被單獨的拆分出來而不會影響整體。通常表現為側邊欄或嵌入內容。
4.超鏈接偽類
:link、:visited、:active和:hover的聲明順序是怎樣的?
:link表示未訪問的鏈接狀態;
:visited表示已訪問狀態;:active表示激活狀態(滑鼠按下);:hover表示懸停狀態。
推薦順序是LVHA,即:link:visited:hover:active。理由如下:
·當滑鼠懸停在未訪問的鏈接上時,:link和:hover都會命中,如果:hover在:link
之前聲明,那麼(:hover)就會被覆蓋;
·當滑鼠懸停在已訪問的連接上時,:visited和:hover都會命中,如果:hover在:visited
之前聲明,那麼(:hover)就會被覆蓋;
·當滑鼠單擊鏈接時,:active和:hover都會命中,我們大多是想讓:hover只在懸停時展示樣式,按下滑鼠時使用:active
樣式,因此:active在:hover之後聲明;
·綜上,:hover應在:link和:visited之後,在:active之前,因此active在最後。而:link和
:visited兩者的順序無所謂,互不影響。
5.CSS常見的長度單位
CSS中除了px長度單位之外,還有下面幾個長度單位:
·pc六分之一英寸,1pc=12pt=1/6*1in=16px;
·pt一磅,72分之一英寸。1pt=1/12_1pc=1/72_1in≈1.33px;
·in一英寸,1in=2.54cm=96px;
·ex在含有「X」字母的字體中,它是該字體的小寫字母的高度。對於很多字體來說,1ex≈0.5em;
·em1em等於父級元素的字體大小,2em就是父級元素字體大小的二倍;
·rem當用在根元素()的font-size上面時,它代表了它的初始值;
·ch代表元素所用字體font中「0」這一字形的寬度;
·vh1vh相當於視口高度的1%,100vh就是視口的高度;
·vw1vw相當於視口寬度的1%,100vw就是視口的寬度;
·vmax視口高度vw和寬度vh兩者中的最小值
·vmin視口高度vw和寬度vh兩種中的最大值;
·%相對於父級元素的大小來確定;
參考:CSS
CSSpercentage[2]
6.事件對象
冒泡與捕獲
事件冒泡與捕獲是事件處理的兩種機制,主要描述當在一個元素上有兩個相同類型的事件處理器被激活會發生什麼。
在點擊子元素時,瀏覽器運行了兩種不同的階段:捕獲階段和冒泡階段。捕獲階段的行為:
·瀏覽器檢查元素的最外層祖先,是否在捕獲階段中注冊了一個onclick事件處理程序,如果是,則運行它;
·
然後,它移動到中單擊元素的下一個祖先元素,並執行相同的操作,然後是單擊元素再下一個祖先元素,依此類推,直到到達實際點擊的元素;
而冒泡與捕獲恰恰相反:
·瀏覽器檢查實際點擊的元素是否在冒泡階段中注冊了一個onclick事件處理程序,如果是,則運行它;
·然後它移動到下一個直接的祖先元素,並做同樣的事情,然後是下一個,等等,直到它到達元素;
而現代瀏覽器在默認情況下,所有事件處理程序都在冒泡階段進行注冊。因此上面代碼在點擊子元素時會先執行子元素綁定的事件,然後向上冒泡,觸發父元素綁定的事件。
addEventListener函數的第三個參數是個布爾值。含義:
·當布爾值是false時(這也是默認值),表示向上冒泡觸發事件;
·當布爾值是true時,表示向下捕獲觸發事件;
不能冒泡的事件
有些事件是不會冒泡的。比如:
·blur元素失去焦點時觸發,focusout事件也是失去焦點時觸發,但可以冒泡;
·focus元素獲取焦點時觸發;
·mouseenter滑鼠移動到元素上時會觸發該事件,與之對應的是mouseover事件,但會冒泡;
·mouseleave滑鼠離開元素時觸發,與之對應的是mouseout,但會冒泡;
事件冒泡可以讓我們利用事件委託,尤其是處理大量子元素時,如果給每個子元素都綁定事件,這是不優雅的,可以將事件綁定到父元素上,並讓子節點上發生的事件冒泡到父節點上,利用
e.target屬性可以獲取到當前觸發事件的子元素。
事件對象中的方法
·stopPropagation()阻止事件冒泡,當設置後,點擊該元素時父元素綁定的事件就不會再觸發;
·preventDefault()阻止默認事件的發生;
·stopImmediatePropagation()它用來阻止監聽同一事件的其他事件監聽器被調用以及阻止事件冒泡,比如給同一個div
元素綁定多個click事件(使用addEventListener方法可以注冊多個),當在第二個事件函數中調用
stopImmediatePropagation方法時,點擊div元素時,後面注冊的click將不會被觸發,而且還會阻止事件冒泡;
比如下面的例子,給p綁定多個click事件,在第二個事件函數中調用stopImmediatePropagation,第三個click
事件就不會觸發,因為也阻止了冒泡,因此父元素的click事件也不會觸發。
paragraph
❷ 前端面試題系列之-CSS及頁面布局篇
CSS3 彈性盒( Flexible Box 或 flexbox),是一種當頁面需要適應不同的屏幕大小以及設備類型時確保元素擁有恰當的行為的布局方式。引入彈性盒布局模型的目的是提供一種更加有效的方式來對一個容器中的子元素進行排列、對齊和分配空白空間。可以用簡單的方式滿足很多常見的復雜的布局需求。它的優勢在於開發人員只是聲明布局應該具有的行為,而不需要給出具體的實現方式。瀏覽器會負責完成實際的布局。該布局模型在主流瀏覽器中都得到了支持。
採用flex布局的元素,成為flex容器。它的所有子元素自動成為容器成員,稱為flex項目。常用的,設置到容器上的屬性有:
設置到項目上的屬性:
(Block Formatting Context)塊級格式化上下文。BFC就是頁面上的一個隔離的獨立容器,容器裡面的子元素不會影響到外面的元素,反之也如此.並且在一個BFC中,塊盒與行盒(行盒由一行中所有的內聯元素所組成)都會垂直的沿著其父元素的邊框排列。
上述方法都可以創建BFC,但是會帶來一些負面影響:
::before是css3的寫法,:before是css2的寫法,用來設置對象前的內容
:before的兼容性要比::before好
更准確的說法
1、transition 是過渡,是樣式值的變化的過程,只有開始和結束;animation 其實也叫關鍵幀,通過和 keyframe 結合可以設置中間幀的一個狀態;
2、animation 配合 @keyframe 可以不觸發時間就觸發這個過程,而 transition 需要通過 hover 或者 js 事件來配合觸發;
3、animation 可以設置很多的屬性,比如循環次數,動畫結束的狀態等等,transition 只能觸發一次;
4、animation 可以結合 keyframe 設置每一幀,但是 transition 只有兩幀;
常規方法
不需要使用transform屬性時
webkit內核
參考鏈接:
CSS實現不換行/自動換行/文本超出隱藏顯示省略號
object-fit CSS 屬性指定可替換元素的內容應該如何適應到其使用的高度和寬度確定的框。這個CSS屬性可以達到最佳最完美的居中自動剪裁圖片的功能
@import規則一定要先於除了@charset的其他任何CSS規則。
不推薦使用@import:
因為瀏覽器的兼容的問題,不同瀏覽器有些標簽的默認值是不同的,如果沒有CSS初始化往往會出現瀏覽器之間的頁面顯示差異。
偽元素和偽類的區別總結
css繼承指的是被包在內部的標簽將擁有外部標簽的樣式性,即子元素可以繼承父元素的屬性。
相關鏈接:
CSS 繼承,哪些屬性能繼承,哪些不能
z-index可以改變元素層疊順序,z-index較大的會疊加在z-index較小的元素上方。z-index值相同時,則按照文檔流順序,後面的覆蓋前邊的。
px就是pixel的縮寫,意為像素。px就是一張圖片最小的一個點,一張點陣圖就是千千萬萬的這樣的點構成的,比如常常聽到的電腦像素是1024x768的,表示的是水平方向是1024個像素點,垂直方向是768個像素點。注意css中的1px並不一定是物理像素的一個像素塊,需要根據DPR計算,對應多少物理像素塊
設備像素比:dpr = 物理像素 / 邏輯像素(px),例如,iPhone6的dpr為2,物理像素750(x軸),則它的邏輯像素為375
參考物是父元素的font-size,具有繼承的特點。如果自身定義了font-size按自身來計算(瀏覽器默認字體是16px),整個頁面內1em不是一個固定的值。
css3新單位,相對於根元素html(網頁)的font-size,不會像em那樣,依賴於父元素的字體大小,而造成混亂。
css3新單位,viewpoint width的縮寫,視窗寬度,1vw等於視窗寬度的1%。舉個例子:瀏覽器寬度1200px, 1 vw = 1200px/100 = 12 px。
1英寸(inch)=2.54厘米(cm)
手機對角線的長度換算成英寸
屏幕橫向和縱向的像素點
1px即代表一個物理像素點/像素塊
PPI,是每英寸可以顯示的像素點的英文縮寫。如果說上面解析度是一個質量總量的概念,那麼,ppi就是密度的概念。我們可以通過屏幕的像素總量除以屏幕大小來計算屏幕的PPI,公式如下: a:橫向像素數量,b:縱向像素數量,c:屏幕尺寸(英寸)
1px與多少厘米之間是不能直接劃等號的,需要看解析度。
一般電腦的像素解析度是72ppi,計算公式: (((1**2 + 1**2)**0.5)/72)*2.54 ,此時1px=0.0498cm,1cm=25px;
很多手機是300ppi,計算公式: (((1**2 + 1**2)**0.5)/300)*2.54 ,此時1px=0.0119cm。
參考鏈接:
畫一條0.5px的線
在繼承性上:
一開始針對低版本的瀏覽器構建頁面,滿足最基本的功能,再針對高級瀏 覽器進行效果,交互,追加各種功能以達到更好用戶體驗,換句話說,就是以最低要求,實現最基礎功能為基本,向上兼容。以css為例,以下這種寫法就是漸進增強。
一開始針對一個高版本的瀏覽器構建頁面,先完善所有的功能。然後針對各個不同的瀏覽器進行測試,修復,保證低級瀏覽器也有基本功能 就好,低級瀏覽器被認為「簡陋卻無妨 (poor, but passable)」 可以做一些小的調整來適應某個特定的瀏覽器。但由於它們並非我們所關注的焦點,因此除了修復較 大的錯誤之外,其它的差異將被直接忽略。也就是以高要求,高版本為基準,向下兼容。同樣以css為例,優雅降級的寫法如下。
漸進增強,開發時間長,成本高,優雅降級,節約成本,開發周期短。
❸ 2022年前端React的100道面試題的第12題:區分props和state
對 props 和 state 設計理解正常的是?
A. 它們都是純 JS 對象。
B. props 只能來自父級,組件本身始終無法設置。
C. 只有在 state 變化觸發時,才會觸發組件更新渲染。
D. props 是一種將數據從父級傳遞給子級的方式, state 僅用於交互性,即隨時間變化的數據。
A、D
糾錯
B. 如果選項是 」 props 只能來自父級,組件本身無法更新。「,那麼就是正確的,是不能修改,而非不能設置。一個組件可以有默認的 props,也可以通過 defaultProps 設置默認值。
C. props 和 state 的變化都會觸發組件更新渲染 。
它們都是用來保存信息的,這些信息可以控制組件的渲染輸出。
而它們的一個重要的不同點就是: props 是傳遞 給 組件的(類似於函數的形參),而 state 是在組件 內 被組件自己管理的(類似於在一個函數內聲明的變數)。
props
默認情況下,組件沒有狀態。下面是以函數組件為例,最簡單的參數:
props 由父組件設置的信息,盡管可以設置默認值,並且不能改變它。
state
主要用於用戶的事件狀態的管理,它應是一個可序列化的數據。它允許組件進行初始化、更改和使用的「私有」信息。
默認值
從父級組件傳入的 props 值,和 state 初始值都會覆蓋組件內定義的默認值。
下面是 props 的初始化示例:
下面是 state 的初始化示例:
https://github.com/uberVU/react-guide/blob/master/props-vs-state.md
https://lucyn.com/blog/2016/react-state-vs-pros
搜索《考試競技》微信小程序
❹ Web前端崗位面試題有哪些
前端面試題匯總,基本上會有四大類問題,具體如下:
一、HTML
1、Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?
2、HTML5 為什麼只需要寫 <!DOCTYPE HTML>?
3、行內元素有哪些?塊級元素有哪些? 空(void)元素有那些?
4、頁面導入樣式時,使用link和@import有什麼區別?
5、介紹一下你對瀏覽器內核的理解?
6、常見的瀏覽器內核有哪些?
7、html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分 HTML 和 HTML5?
8、簡述一下你對HTML語義化的理解?
9、HTML5的離線儲存怎麼使用,工作原理能不能解釋一下?
10、瀏覽器是怎麼對HTML5的離線儲存資源進行管理和載入的呢?
11、請描述一下 cookies,sessionStorage 和 localStorage 的區別?
12、iframe有那些缺點?
13、Label的作用是什麼?是怎麼用的?(加 for 或 包裹)
14、HTML5的form如何關閉自動完成功能?
15、如何實現瀏覽器內多個標簽頁之間的通信? (阿里)
16、webSocket如何兼容低瀏覽器?(阿里)
17、頁面可見性(Page Visibility)API 可以有哪些用途?
18、如何在頁面上實現一個圓形的可點擊區域?
19、實現不使用 border 畫出1px高的線,在不同瀏覽器的Quirksmode和CSSCompat模式下都能保持同一效果。
20、網頁驗證碼是幹嘛的,是為了解決什麼安全問題?
21、tite與h1的區別、b與strong的區別、i與em的區別?
二、css
1、介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?
2、CSS選擇符有哪些?哪些屬性可以繼承?
3、CSS優先順序演算法如何計算?
4、CSS3新增偽類有那些?
5、如何居中div?如何居中一個浮動元素?如何讓絕對定位的div居中?
6、display有哪些值?說明他們的作用。
7、position的值relative和absolute定位原點是?
8、CSS3有哪些新特性?
9、請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?
10、用純CSS創建一個三角形的原理是什麼?
11、一個滿屏 品 字布局 如何設計?
三、常見兼容性問題?
1、li與li之間有看不見的空白間隔是什麼原因引起的?有什麼解決辦法?
2、經常遇到的瀏覽器的兼容性有哪些?原因,解決方法是什麼,常用hack的技巧 ?
3、為什麼要初始化CSS樣式。
4、absolute的containing block計算方式跟正常流有什麼不同?
5、CSS里的visibility屬性有個collapse屬性值是幹嘛用的?在不同瀏覽器下以後什麼區別?
6、position跟display、margin collapse、overflow、float這些特性相互疊加後會怎麼樣?
7、對BFC規范(塊級格式化上下文:block formatting context)的理解?
8、CSS權重優先順序是如何計算的?
9、請解釋一下為什麼會出現浮動和什麼時候需要清除浮動?清除浮動的方式
10、移動端的布局用過媒體查詢嗎?
11、使用 CSS 預處理器嗎?喜歡那個?
12、CSS優化、提高性能的方法有哪些?
13、瀏覽器是怎樣解析CSS選擇器的?
14、在網頁中的應該使用奇數還是偶數的字體?為什麼呢?
15、margin和padding分別適合什麼場景使用?
16、抽離樣式模塊怎麼寫,說出思路,有無實踐經驗?[阿里航旅的面試題]
17、元素豎向的百分比設定是相對於容器的高度嗎?
18、全屏滾動的原理是什麼?用到了CSS的那些屬性?
19、什麼是響應式設計?響應式設計的基本原理是什麼?如何兼容低版本的IE?
20、視差滾動效果,如何給每頁做不同的動畫?(回到頂部,向下滑動要再次出現,和只出現一次分別怎麼做?)
21、::before 和 :after中雙冒號和單冒號 有什麼區別?解釋一下這2個偽元素的作用。
22、如何修改chrome記住密碼後自動填充表單的黃色背景 ?
23、你對line-height是如何理解的?
24、設置元素浮動後,該元素的display值是多少?(自動變成display:block)
25、怎麼讓Chrome支持小於12px 的文字?
26、讓頁面里的字體變清晰,變細用CSS怎麼做?(-webkit-font-smoothing: antialiased;)
27、font-style屬性可以讓它賦值為「oblique」 oblique是什麼意思?
28、position:fixed;在android下無效怎麼處理?
29、如果需要手動寫動畫,你認為最小時間間隔是多久,為什麼?(阿里)
30、display:inline-block 什麼時候會顯示間隙?(攜程)
31、overflow: scroll時不能平滑滾動的問題怎麼處理?
32、有一個高度自適應的div,裡面有兩個div,一個高度100px,希望另一個填滿剩下的高度。
33、png、jpg、gif 這些圖片格式解釋一下,分別什麼時候用。有沒有了解過webp?
34、什麼是Cookie 隔離?(或者說:請求資源的時候不要讓它帶cookie怎麼做)
35、style標簽寫在body後與body前有什麼區別?
四、JavaScript
1、介紹JavaScript的基本數據類型。
2、說說寫JavaScript的基本規范?
3、JavaScript原型,原型鏈 ? 有什麼特點?
4、JavaScript有幾種類型的值?(堆:原始數據類型和 棧:引用數據類型),你能畫一下他們的內存圖嗎?
5、Javascript如何實現繼承?
6、Javascript創建對象的幾種方式?
7、Javascript作用鏈域?
8、談談This對象的理解。
9、eval是做什麼的?
10、什麼是window對象? 什麼是document對象?
11、null,undefined的區別?
12、寫一個通用的事件偵聽器函數(機試題)。
13、[「1」, 「2」, 「3」].map(parseInt) 答案是多少?
14、關於事件,IE與火狐的事件機制有什麼區別? 如何阻止冒泡?
15、什麼是閉包(closure),為什麼要用它?
16、javascript 代碼中的」use strict」;是什麼意思 ? 使用它區別是什麼?
17、如何判斷一個對象是否屬於某個類?
18、new操作符具體幹了什麼呢?
19、用原生JavaScript的實現過什麼功能嗎?
20、Javascript中,有一個函數,執行時對象查找時,永遠不會去查找原型,這個函數是?
21、對JSON的了解?
22、[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16) }) 能解釋一下這段代碼的意思嗎?
23、js延遲載入的方式有哪些?
24、Ajax 是什麼? 如何創建一個Ajax?
25、同步和非同步的區別?
26、如何解決跨域問題?
27、頁面編碼和被請求的資源編碼如果不一致如何處理?
28、模塊化開發怎麼做?
29、AMD(Moles/Asynchronous-Definition)、CMD(Common MoleDefinition)規范區別?
30、requireJS的核心原理是什麼?(如何動態載入的?如何避免多次載入的?如何 緩存的?)
31、讓你自己設計實現一個requireJS,你會怎麼做?
32、談一談你對ECMAScript6的了解?
33、ECMAScript6 怎麼寫class么,為什麼會出現class這種東西?
34、非同步載入的方式有哪些?
35、documen.write和 innerHTML的區別?
36、DOM操作——怎樣添加、移除、移動、復制、創建和查找節點?
37、.call() 和 .apply() 的含義和區別?
38、數組和對象有哪些原生方法,列舉一下?
39、JS 怎麼實現一個類。怎麼實例化這個類
40、JavaScript中的作用域與變數聲明提升?
41、如何編寫高性能的Javascript?
42、那些操作會造成內存泄漏?
43、JQuery的源碼看過嗎?能不能簡單概況一下它的實現原理?
44、jQuery.fn的init方法返回的this指的是什麼對象?為什麼要返回this?
45、jquery中如何將數組轉化為json字元串,然後再轉化回來?
46、jQuery 的屬性拷貝(extend)的實現原理是什麼,如何實現深拷貝?
47、jquery.extend 與 jquery.fn.extend的區別?
48、jQuery 的隊列是如何實現的?隊列可以用在哪些地方?
49、談一下Jquery中的bind(),live(),delegate(),on()的區別?
50、JQuery一個對象可以同時綁定多個事件,這是如何實現的?
51、是否知道自定義事件。jQuery里的fire函數是什麼意思,什麼時候用?
52、jQuery 是通過哪個方法和 Sizzle 選擇器結合的?(jQuery.fn.find()進入Sizzle)
53、針對 jQuery性能的優化方法?
54、Jquery與jQuery UI有啥區別?
55、JQuery的源碼看過嗎?能不能簡單說一下它的實現原理?
56、jquery 中如何將數組轉化為json字元串,然後再轉化回來?
57、jQuery和Zepto的區別?各自的使用場景?
58、針對 jQuery 的優化方法?
59、Zepto的點透問題如何解決?
60、jQueryUI如何自定義組件?
61、需求:實現一個頁面操作不會整頁刷新的網站,並且能在瀏覽器前進、後退時正確響應。給出你的技術實現方案?
62、如何判斷當前腳本運行在瀏覽器還是node環境中?(阿里)
63、移動端最小觸控區域是多大?
64、jQuery 的 slideUp動畫 ,如果目標元素是被外部事件驅動, 當滑鼠快速地連續觸發外部元素事件, 動畫會滯後的反復執行,該如何處理呢?
65、把 Script 標簽 放在頁面的最底部的body封閉之前 和封閉之後有什麼區別?瀏覽器會如何解析它們?
66、移動端的點擊事件的有延遲,時間是多久,為什麼會有? 怎麼解決這個延時?(click 有 300ms 延遲,為了實現safari的雙擊事件的設計,瀏覽器要知道你是不是要雙擊操作。)
67、知道各種JS框架(Angular, Backbone, Ember, React, Meteor, Knockout…)么? 能講出他們各自的優點和缺點么?
68、Underscore 對哪些 JS 原生對象進行了擴展以及提供了哪些好用的函數方法?
69、解釋JavaScript中的作用域與變數聲明提升?
70、那些操作會造成內存泄漏?
71、JQuery一個對象可以同時綁定多個事件,這是如何實現的?
72、Node.js的適用場景?
(如果會用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?
73、解釋一下 Backbone 的 MVC 實現方式?
74、什麼是「前端路由」?什麼時候適合使用「前端路由」? 「前端路由」有哪些優點和缺點?
75、知道什麼是webkit么? 知道怎麼用瀏覽器的各種工具來調試和debug代碼么?
76、如何測試前端代碼么? 知道BDD, TDD, Unit Test么? 知道怎麼測試你的前端工程么(mocha, sinon, jasmin, qUnit..)?
77、前端templating(Mustache, underscore, handlebars)是幹嘛的, 怎麼用?
78、簡述一下 Handlebars 的基本用法?
79、簡述一下 Handlerbars 的對模板的基本處理流程, 如何編譯的?如何緩存的?
80、用js實現千位分隔符?(來源:前端農民工,提示:正則+replace)
檢測瀏覽器版本版本有哪些方式?
81、我們給一個dom同時綁定兩個點擊事件,一個用捕獲,一個用冒泡,你來說下會執行幾次事件,然後會先執行冒泡還是捕獲
❺ 2022前端開發面試記錄(深圳篇)
2022年來到深圳,感覺到了與之前所在城市的差異,心裡多少有點落差。雖然時機不太對吧,但是相信一切都會好起來的,給自己加油呀!
整理了一些面試被問到的問題,雖然很多是無效面試,但是我也強行問了面試官,從他們的回答中猜測了一下他們關注的面試點,所以也算是有點收獲吧,只是浪費了很多簡歷和路費,哭唧唧。
——1、區塊鏈——
1-1、vue生命周期;
1-2、vuex屬性;
1-3、用戶開始登錄到登錄成功都發生了什麼;
1-4、git常用的命令;
——2、金融:vue——
筆試:
2-1、深淺拷貝的區別,為什麼會出現深淺拷貝,淺拷貝的優勢;
2-2、強制中斷 foreach 遍歷;
2-3、多處組件復用;
2-4、你對前端是什麼概念,前端在整個軟體生態內是什麼角色;
2-5、Vue2 中數據變化但視圖沒有發生同步更新,描述一下出現的場景,解決方式,以及該問題發生的可能原因;
2-6、nextTick 是如何確保開發者能夠獲取到最新的 DOM 狀態的;
2-7、如何使用 mixins,有何利弊;
2-8、使用 Hooks 模式開發時,useMemo,useCallback 常用來作為優化的手段。描述一下它們各自的適用場景,以及背後的原理實現?;
2-9、前端從 Jquery 時代演變至如今的三大框架,這種演變的根源是什麼,jquery 解決了什麼問題,如今的三大框架又是為了解決什麼問題出現的?
視頻面試:
2-10、js遍歷樹形結構,每個節點都有一個唯一ID,只能遍歷一次;
2-11、組件封裝的意義;
——3、知識產權:vue2、vue3、ts、react——
3-1、說一說面向對象的理解,包括繼承、封裝、多態等;
3-2、說一說promise;
3-3、webpack優化;
3-4、vuex使用場景;
3-5、描述一下對vue響應式原理的理解;
3-6、vue生命周期;
3-7、父子組件鉤子函數執行順序;
3-8、v-if和v-show;
3-9、js數據類型;
3-10、實現深拷貝;
——4、物流——
4-1、vue生命周期;
4-2、生命周期-修改元素樣式在生命周期的哪個階段;
4-3、生命周期-修改數據在哪個階段;
4-4、生命周期-destroy裡面會做哪些操作;
4-5、怎麼修改title的內容;
4-6、父子組件傳參的具體寫法;
4-7、v-model的多種寫法;
4-8、js數據類型;
4-9、判斷數組的方法;
4-10、實現左邊固定右邊自適應的布局;
4-11、實現div垂直水平居中;
4-12、flex:1;
4-13、flex詳解;
4-14、call,apply,bind是干什麼的;
——5、新興產業——
5-1、封裝路由,怎麼攔截路由;
5-2、瀏覽器緩存有哪些,又問localStorage和sessionStrorage的區別和應用場景;
5-3、瀏覽器強緩存和協商緩存;
5-4、webpack打包機制,構建過程和配置;
5-5、性能優化方法;
5-6、前端的業務和後端的API是怎麼做到數據實時請求的(問的其實是前端對後端API介面的封裝和管理);
5-7、computed和watch;
5-8、說了幾個關於大屏的應用場景,有沒有做過,怎麼做的;
——6、某水果:vue2、vue3、ts、各種前沿技術都用——
6-1、怎麼封裝一個組件庫/工具類庫,比如vue封裝過什麼復雜組件,jquery封裝過什麼類庫;
6-2、get和post的區別,傳參格式等;
6-3、promise怎麼用的;
6-4、原型鏈,test()的原型鏈;
6-5、websocket;
6-6、es6中的generator;
6-7、es6中的set和map有啥區別,set為什麼能去重;
6-8、項目難點;
——7、醫療健康:vue——
7-1、vue自定義指令配置;
7-2、webpack的理解;
7-3、對node的了解,用過express嗎;
7-4、項目中的拖拽是怎麼做的;
7-5、websocket和socket的區別;
7-6、聽過mqtt嗎,因為沒聽過所以解釋了一下activemq的用法;
7-7、二維地圖的聚合,如果有十萬個點,會做什麼優化;
7-8、地圖實現多個點連成一條線會怎麼做;
7-9、地圖實現一條曲線;
7-10、內網下git怎麼用的;
7-11、openlayers渲染機制;
7-12、父子組件通信方法;
7-13、router中實現攔截;
7-14、對象合並的方法;
7-15、父子組件的生命周期執行順序,渲染階段為什麼會先執行父組件再執行子組件;
7-16、vue生命周期;
7-17、npm run dev, run build可以在項目中的什麼位置找到;
7-18、vue中跳轉頁面的方法;
7-19、mixins用過嗎;
7-20、判斷引用類型的方法;
7-21、js數據類型;
7-22、判斷基本數據類型的方法;
7-23、for in和for of的用法和區別,兩者遍歷的是索引還是屬性值,兩者都可以遍歷對象嗎;
7-24、foreach和map的區別,兩者會不會改變原數組;
7-25、主要用什麼技術棧;
7-26、行內元素和塊級元素的區別,分別都有哪些,行塊級元素有哪些;
7-27、div垂直水平居中,grid知不知道怎麼用;
7-28、splice和slice;
——8、智慧園區:vue2、vue3、ts、uniapp——
8-1、flex了解嗎,flex布局方向,flex:1 0的頁面效果是怎樣的;
8-2、做過移動端嗎,了解uniapp嗎;
8-3、keep-alive;問了一個沒聽明白的,可能和keep-alive有關系;
8-4、vuex中的action;不用vuex,怎麼代替vuex;
8-5、promise.all和promise.on;
8-6、防止表單重復提交;
8-7、async,await的使用;
8-8、vue3和ts的了解;
8-9、防抖怎麼控制時間;
8-10、vue中的data為什麼要設計成一個函數;
——9、智慧工地:vue、uniapp、小程序——
9-1、Vuex是干什麼的;
9-2、openlayers怎麼用的;
9-3、性能優化;
9-4、spa首屏載入優化;
9-5、bundler.js太大,打包怎麼優化;
9-6、加密方式了解多少,比如md5,base64等,一大堆沒聽過的;
9-7、冒泡排序的實現原理;
9-8、js設計模式;
——10、某快遞公司外包——
10-1、一棵樹的數據,給的是列表格式,轉換成樹形結構;
10-2、項目相關的,聊天怎麼做的,拖拽怎麼做的,拖拽的數據怎麼渲染的,拖拽重疊怎麼處理的;
10-3、js設計模式;
——11、三維:vue、cesium——
11-1、一棵樹的數據,給的是列表格式,轉換成樹形結構;
11-2、openlayers怎麼用的,發布過wms嗎,發布流程是怎樣的;
11-3、openlayers轉換經緯度的方法名是什麼;
11-4、cesium常用的函數;
11-5、vue數據雙向綁定原理;
11-6、Vue中data屬性如果改變一個數組的下標,會不會馬上發生變化,不變化可以怎麼解決
11-7、數組常用方法有哪些;
11-8、 map和filter的區別;
11-9、es6常用的方法;
11-10、父子組件通信,兄弟組件通信;
11-11、new具體進行了什麼操作;
——12、醫療:vue、angular——
12-1、js渲染機制和運行機制;
12-2、vue數據綁定原理;
——13、建設行業:vue、uniapp——
筆試:
13-1、||與&運算符;
13-2、垂直居中方案;
13-3、let a=arr, b=a, c=arr.concat(), a[0]=3,列印b和c,應該是深淺拷貝;
13-4、實現font-size:12;
13-5、介面路徑,給一個地址 http://localhost/projectname/resource/index(http://localhost/projectname/resource/index).html ,根據url請求介面路徑寫出完整路徑,』/ geturl.do 』,』 geturl.do 』,』../ geturl.do 』;
13-6、微信小程序流程和主要文件;
13-7、獲取url參數及內容;
13-8、$(function(){}) / (function(){}) / (function(){})()的區別;
13-9、前端優化方案;
面試:
13-10、項目難點;
13-11、git工作流;
13-12、jquery項目會不會用webpack打包;
13-13、webpack優化;
13-14、web優化;
——14、文化:uniapp——
14-1、ssr渲染;
14-2、ajax和axios的區別;
14-3、cookie和session的區別;
14-4、vue生命周期;
14-5、數據請求寫在哪個生命周期中;
14-6、router的history模式和hash模式;
14-7、工作中的開發流程;
14-8、uniapp的開發流程和坑;
14-9、uniapp滑動問題,下滑切換視頻不生效,一般是什麼原因;
14-10、uniapp載入速度慢,點擊載入圖片速度太慢,一般是什麼原因;
——15、企業平台某外包:vue,node,性能優化——
15-1、說一說websocket;
15-2、vue數據雙向綁定原理;
15-3、項目難點;
15-4、對mvvm、mvc、mvp等的理解;
15-5、vue的常見指令;
15-6、computed和watch;
15-7、class和style怎麼綁定;
15-8、ajax和axios的區別;
15-9、axios攔截器,axios的post請求;
15-10、對前端渲染,服務端渲染的理解;
——16、智慧城市:vue,node,three.js——
16-1、vue生命周期;
16-2、vue組件通信方法;
16-3、js的繼承;
16-4、oracle、mysql、sqllite的區別;
16-5、oracle連表查詢;
16-6、openlayers項目場景;
16-7、cesium項目場景;
——17、租房:jquery+layui,vue2——
17-1、筆試:
17-2、foo列印題;
17-3、this列印題;
17-4、變數提升列印題;
17-5、let arr=[1,2,[5,8,[9,[3,5,]7,]20,37]] 把數組扁平化成一個數組,並進行去重升序;
17-6、let a=[1,2,3,4,5,6,7]; let b=[4,5,6]; 求b在a中第一次出現的位置;
17-7、面試:主要問項目
——18、跑腿:vue2,vue3+ts——
18-1、對html5語義化的理解;
18-2、css實現一個三角形;
18-3、css怎麼實現0.5px的線,為什麼有這種需求,涉及到兼容性問題;
18-4、怎麼解決變數提升的問題;
18-5、es6新增了哪些定義變數的方式;
18-6、const定義的變數可以被修改嗎;
18-7、map和filter的區別,會改變原數組嗎;
18-8、es6去重的方法;
18-9、談一談對promise的理解;
18-10、除了鏈式調用,promise還可以怎麼處理同步請求(async/await);
18-11、對vue響應式原理的理解,核心是什麼;
18-12、對vue生命周期每個階段的理解;
18-13、為什麼要用key,key有什麼作用;
18-14、v-if和v-show;
18-15、Vue中data為什麼是一個函數;
18-16、vue各場景下的傳值方式有哪些,比如父子組件,兄弟組件,祖孫組件;
18-17、對vuex的理解和使用場景;
18-18、vue常見修飾符;
18-19、Vue3用過嗎(因為沒用過,所以就只針對響應式原理說了一下vue3和vue2的區別);
——19、實業:jquery,vue2,vue3——
筆試:需要解釋
19-1、html5新標簽,css3新特性;
19-2、js+css3實現某元素以50px每秒的速度左移100px;
19-3、css實現左中右布局,不改變文檔流;
19-4、js兼容性有哪些,以及常見的解決方案;
19-5、描述一下事件循環機制eventloop,eventloop解決了什麼問題;
19-6、給了一個題,大概是後端返回的介面數據,data的格式有很多,比如null,對象,數組,字元串等,怎麼處理這種問題;
19-7、前端性能優化方法,首屏頁面怎麼優化;
19-8、用js寫一個方法實現數據去重並排序(用es5和es6+實現);
19-9、給定一個數組,把數組中為0的往後排,其他值按順序排序; (示例:[1,0,4,0,5,3]轉換結果為[1,3,4,5,0,0])
19-10、用0,1,2代表紅黃藍三種顏色,實現以下排序,不能用array.sort實現;(示例:[0,1,0,2,0,1,2]轉換結果為[0,0,0,1,1,2,2])
面試:
19-11、flex布局;flex:1對應的屬性;
19-12、講一下原型鏈; proto 和prototype有什麼區別;字元串有沒有原型;給定一個str,str.test()調用的誰的test方法;
19-13、講一下閉包;什麼情況下才能算是閉包;形成閉包的條件;列了三個題讓你判斷是不是閉包;
19-14、v-if和v-show是干什麼的;應用場景有哪些;給定一對父子組件,默認值是false,另外有一個ajax請求,值發生了以下變化(false true false true true),在v-show和v-if中,父子組件的哪個階段里會請求ajax;
19-15、computed的實現原理,怎麼實現一個computed;
19-16、css中,transform,margin,position的都是怎麼渲染的,渲染機制是什麼;amd,cmd,commonjs了解嗎;
❻ 在面試前端開發的時候遇到一個面試題,求解 var a =10; (function(){ console.log(a); var a=100; })
vara=10;
(function(){
console.log(a);
vara=100;
})();
結果:輸出undefined
解釋:
function中有var a = 100;
聲明會提升到function最開頭,但賦值發生在最後。
上面的代碼等價於:
vara=10;
(function(){
vara;
console.log(a);
a=100;
})();
列印a的時候,a並沒有在function內賦值,所以是undefined
❼ web前端筆試題(HTML/CSS篇)
web前端筆試題集錦(HTML/CSS篇)
導讀:網頁不再只是承載單一的文字和圖片,各種富媒體讓網頁的內容更加生動,網頁上軟體化的交互形式為用戶提供了更好的使用體驗,這些都是基於前端技術實現的。以下是由我J.L為您整理推薦的前端開發筆試題目,歡迎參考閱讀。
一、HTML/CSS
1,讓一個input的背景顏色變成紅色
2,div的高寬等於瀏覽器可見區域的高寬,瀏覽器滾動,div始終覆蓋瀏覽器的整個可見區域
思路:
(1)先放置一個div1,浮動:position:absolute;top:0px;left:0px;
(2)再放置一個div2,浮動:position:absolute;top:0px;left:0px;width:100%;height:100%;
(3)在div2中放置一個div3,令其高度超過瀏覽器高度,使div2產生滾動條
(4)對html,body進行樣式設置:width:100%;height:100%;overflow:hidden->不讓瀏覽器產生滾動條,避免頁面出現兩個滾動條
(5)編寫JavaScript,另div2的高度等於頁面可見高度,寬度等於頁面可見寬度,注意,在計算完可見高度height和可見寬度width後,要對這兩個值做處理,可見寬度-div2的滾動條的寬度,滾動條的寬度我這里假設是20px
這樣題目基本就完成了,不過瀏覽器的兼容性還不是很好。
3,IE、FF下面CSS的解釋區別
(1) 讓頁面元素居中
ff{margin-left:0px;margin-right:0px;width:***}
ie上面的設置+text-align:center
(2) ff:不支持濾鏡
ie:支持濾鏡
(3) ff:支持!important
ie支持*,ie6支持_
(4) min-width,min-height
FF支持,IE不支持,IE可以用css expression來替代
(5) Css Expression
FF不支持,IE支持
(6) cursor:hand
IE下可以顯示手指狀,FF下不行
(7) UL的默認padding和margin
IE下ul默認有margin,FF下ul默認有padding
(8) FORM的默認margin
IE下FORM有默認margin,FF下margin默認為0
4,一個定寬元素在瀏覽器(IE6,IE7,Firefox)中橫向居中對齊的布局,請寫出主要的.HTML標簽及CSS
思路:
IE6/7:text-align:center
Firefox:margin:0 auto(margin-top和margin-bottom也可以為其他數字,關鍵是margin-left,margin-right為auto)
5,CSS中margin和padding的區別
margin是元素的外邊框,是元素邊框和相鄰元素的距離
Padding是元素的內邊框,是元素邊框和子元素的距離
6,最後一個問題是,如何製作一個combo選項,就是可以輸入可以下拉菜單選擇。
思路:
(1)布局select和input,讓input覆蓋select,除了select的下拉圖標,以方便select選擇
(2)編寫JS,為select添加onchange事件,onchange時將input的value置成select選中的指
7,
中alt和tittle的區別
alt:圖片顯示不出來了就提示alt
title:滑鼠劃過圖片顯示的提示
8,用css、html編寫一個兩列布局的網頁,要求右側寬度為200px,左側自動擴展。
在這里我使用了兩種方式:
(1)使用position
HTML:
left
right
(2) 使用float
HTML:
固定寬度
自適應
二者的CSS公用,如下:
html,body{width:100%;height:100%;margin:0px;padding:0px;}
.container {width:100%;height:400px;position:relative;}
.fl1 {float:left;}
.left {width:100%;height:400px;background:#AFFFD0;position:absolute;}
.right {width:200px;height:400px;background:#F9AFFF;position:absolute;right:0px;top:0px;}
.clear {clear:both;overflow:hidden;height:0px;}
.container2 {width:100%;height:400px;margin-top:100px;}
.left2 {background:#afffd0;height:400px;width:200px;margin-right:-3px;}
.right2 {height:400px;background:#f9afff;}
9,解釋document.getElementByIdx_x_x_x("ElementID").style.fontSize="1.5em"
em是相對長度單位,相當於當前對象內文本的字體尺寸,如果當前行內文本的字體尺寸未被指定,則相對於瀏覽器的默認字體尺寸。
該語句將id為ElementID的元素的字體設置為當前對象內文本的字體尺寸的1.5倍
10,Doctype? 嚴格模式與混雜模式-如何觸發這兩種模式,區分它們有何意義? 行內元素有哪些?塊級元素有哪些?CSS的盒模型?
DOCTYPE是文檔類型,用來說明使用的HTML或者XHTML是什麼版本,其中的DTD叫文檔類型定義,裡麵包含了文檔規則,瀏覽器根據定義的DTD來解析頁面的標識並展現出來
DOCTYPE有兩種用途:一個可以進行頁面的有效性驗證,另一個可以區分瀏覽器使用嚴格模式還是混雜模式來解析CSS。
嚴格模式和混雜模式是瀏覽器解析CSS的兩種模式,目前使用的大部分瀏覽器對這兩種模式都支持,但是IE5隻支持混雜模式。
可那個過DOCTYPE聲明來判斷哪種模式被觸發
(1) 沒有DOCTYPE聲明的網頁採用混雜模式解析
(2) 對使用DOCTYPE聲明的網頁視不同瀏覽器進行解析
(3) 對於瀏覽器不能識別的DOCTYPE聲明,瀏覽器採用嚴格模式解析
(4) 在ie6下,如果在DOCTYPE聲明之前有一個xml聲明比如
,採用混雜模式解析,在IE7,IE8中這條規則不生效。
(5) 在ie下,如果DOCTYPE之前有任何字元,都會導致它進入混雜模式,如:
區分這兩種模式可以理解瀏覽器解析CSS的區別,主要是在盒模式的解釋上。
常見的塊級元素有:DIV,FORM,TABLE,P,PRE,H1~H6,DL,OL,UL等
常見的內聯元素:SPAN,A,STRONG,EM,LABEL,INPUT,SELECT,TEXTAREA,IMG,BR等
CSS盒模型用於描述為一個HTML元素形成的矩形盒子,盒模型還涉及元素的外邊距,內邊距,邊框和內容,具體來講最裡面的內容是元素內容,直接包圍元素內容的是內邊距,包圍內邊距的是邊框,包圍邊框的是外邊距。內邊距,外邊距,邊框默認為0。
11,CSS引入的方式有哪些? link和@import的區別?
引入css的方式有下面四種
(1) 使用style屬性
(2) 使用style標簽
(3) 使用link標簽
(4) 使用@import引入
Link和@import區別:
(1) link屬於XHTML標簽,@import是CSS提供的一種方式。Link除了載入CSS外,還可以做很多事情,如定義RSS,rel連接屬性等;@import只能載入CSS
(2)載入順序不同,當頁面被載入的時候,link載入的CSS隨之載入,而@import引用的CSS會等到頁面完全下載完之後才會載入
(3)兼容性差別,由於@import是CSS2.1提出的,所以老的瀏覽器不支持,IE系列的瀏覽器IE5以上才能識別,而link沒有這個問題
使用DOM控制樣式的差別,使用JavaScript控制DOM去改變樣式的時候,只能操作link,@import不可以被DOM操作。
12,如何居中一個浮動元素?
一個浮動元素裡麵包含的元素可以水平居中,原理如下:
讓浮動元素left相對於父元素container右移50%,浮動元素left的子元素left-child相對於left左移50%就可以實現left-child相對於container水平居中
垂直居中類似,不過操作的不是left而是top
13,HTML5和CSS3的了解情況
有所了解
HTML5和CSS3分別是新推出的HTML和CSS規范,前世是XHTML2和CSS2,目前還在草案階段,不過得到了Apple,Opera,Mozilla,Google,Microsoft不同程度的支持,也開發出了不少基於他們的應用。
HTML5相對於原來的HTML規范有一些變化:
(1)DOCTYPE更簡潔
(2)新增了一些語義化標簽,如article,header,footer,dialog等
(3)新增了一些高級標簽,如,,
CSS3相對於CSS2也新增了不少功能
(1) 選擇器更加豐富
(2) 支持為元素設置陰影
(3) 無需圖片能提供圓角
14,你怎麼來實現下面這個設計圖
(1) 切圖
(2) 布局,採用兩欄布局,分別左浮動
(3) 編寫css代碼
15,css 中id和class如何定義,哪個定義的優先順序別高?
id:#***,***為HTML中定義的id屬性
class:.***,***為HTML中定義的class屬性
id比class的優先順序高
16,用html實現如下表格(不如嵌套實用表格)
三行三列,其中第一行第一列和第二行第一列合並; 第二行第二列和第二行第三列合並(現場畫表)
運行結果如下:
17,web標准網站有那些優點
(1) Web標准網站結構和布局分離,使網站的訪問和維護更加容易
(2) Web標准網站結構,布局以及頁面訪問都標准化,使網站能在更多的web標准設備中訪問,兼容性更好
(3) Web標准網站語義化更好,語義化的XHTML不僅對用戶友好,對搜索引擎也友好。
;