Web前端開發筆試&面試_04_20161019MTBS

1.運用CSS3 ,實現div 沿Y 軸上下循環運動的動畫。javascript

我寫是:-webkit-animation:xz 3s linear 1s infinite //即XZ軸變化,Y軸不變css

正確答案是:html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>菜鳥教程(runoob.com)</title>
<style> 
div
{
    width:100px;
    height:100px;
    background:red;
    position:relative;
    animation-name:myfirst;
    animation-duration:1s;
    animation-timing-function:linear;
    animation-delay:0s;
    animation-iteration-count:infinite;
    animation-direction:alternate;
    animation-play-state:running;
    /* Safari and Chrome: */
    -webkit-animation-name:myfirst;
    -webkit-animation-duration:1s;
    -webkit-animation-timing-function:linear;
    -webkit-animation-delay:0s;
    -webkit-animation-iteration-count:infinite;
    -webkit-animation-direction:alternate;
    -webkit-animation-play-state:running;
}

@keyframes myfirst
{
    0%   {background:red; left:100px; top:0px;}
    50% {background:green; left:100px; top:200px;}
    100%   {background:red; left:100px; top:0px;}
}
</style>
</head>
<body>

<p><b>注意:</b> 該實例在 Internet Explorer 9 及更早 IE 版本是無效的。</p>
<div></div>
</body>
</html>

原來的這樣是實現上右下左-左下右上循環的:前端

@keyframes myfirst
{
    0%   {background:red; left:0px; top:0px;}
    25%  {background:yellow; left:200px; top:0px;}
    50%  {background:blue; left:200px; top:200px;}
    75%  {background:green; left:0px; top:200px;}
    100% {background:red; left:0px; top:0px;}
}

@-webkit-keyframes myfirst /* Safari and Chrome */
{
    0%   {background:red; left:0px; top:0px;}
    25%  {background:yellow; left:200px; top:0px;}
    50%  {background:blue; left:200px; top:200px;}
    75%  {background:green; left:0px; top:200px;}
    100% {background:red; left:0px; top:0px;}
}

2. 書寫高效CSS時會有哪些問題須要考慮? (ref:CSS 在工程中改變——面向對象的CSS (OO CSS)java

(一)不要直接定義子節點,應把共性聲明放到父類。web

.mod .inner {...}    // .mod 下面的 inner數據庫

.inner {...}    // 不是很建議的聲明canvas

(二)結構與皮膚相分離。緩存

<div class="container simpleExt"></div>  //html 結構服務器

    .container {...}  //控制結構的class

    .simpleExt {...}  //控制皮膚的class

(三)容器與內容相分離。

<div class="container"><ul><li>排行</li></ul></div> //html 結構

   .container ul{...}  //ul依賴了容器

<div class="container"><ul class="rankList"><li>排行</li></ul></div> //html 結構

   .rankList ul{...}  //解除與容器的依賴,能夠從一個容器轉移到其餘容器

(四)抽象出可重用的元素,建好組件庫,在組件庫內尋找可用的元素組裝頁面。

(五)往你想要擴展的對象自己增長 class 而不是其父節點。

(六)對象應該保持獨立性

<div class="container"><div class="mod"></div></div> //html 結構

      .container {...} 

      .container .mod {...} //控制結構的class

   //應該寫成以下:

   <div class="container mod"> </div> //html 結構

(七)避免使用ID選擇器,權重過高,沒法重用。

(八)避免位置相關的樣式

#header .container {...}

 #footer .container {...}

//可直接寫成 .container {...}

  

   #header h1 {...}

   #footer h1 {...}

   h1,.h1 { }

   h2,.h2 { }

   <h1 class="h6"></h1>

 

(九)保證選擇器相同的權重。

(八)類名應該剪短、清晰、語義化,OO CSS 的名字並不影響html 語義化。

 

3. 如下代碼:

var a=1;
function test() {
    alert(a);
    a=2;
    alert(this.a);
    this.a=4;
    var a=3;
    alert(a);
}
test();
alert(a);

//按順序輸出alert 的值。

我答的是:undefined,1,3,1

答案是:undefined,1,3,4

 

4. jQuery 中 $(document).ready()和window.onload有什麼區別。

(ref: http://www.jb51.net/article/21628.htm

1)執行時間 

  window.onload必須等到頁面內包括圖片的全部元素加載完畢後才能執行。
  $(document).ready()是DOM結構繪製完畢後就執行,沒必要等到加載完畢。 

2)編寫個數不一樣

   window.onload不能同時編寫多個,若是有多個window.onload方法,只會執行一個
  $(document).ready()能夠同時編寫多個,而且均可以獲得執行 。

3)簡化寫法

      window.onload沒有簡化寫法。
    $(document).ready(function(){})能夠簡寫成$(function(){});

 

5. 列舉5種以上減小網頁加載時間的方法。

(1)  重複的HTTP請求數量應儘可能減小,減小調用其餘頁面、文件的數量。

(2)  壓縮Javascript、CSS代碼。

(3)  在文件頭部放置css樣式的定義。

(4)  在文件末尾放Javascript腳本。

(5)  css、javascript改由外部調用。

(6)  儘量減小DCOM元素。儘量減小網頁中各類<>元素數量,例如<table>的冗餘很嚴重,而咱們徹底能夠用<div>取代之。

(7)  避免使用CSS腳本(CSS Expressions)。

(8)  添加文件過時或緩存頭。對於同一用戶頻繁訪問的圖片、Js腳本文件等能夠在Apache或Nginx設置其緩衝時間,例如設置24小時過時時間,這樣用戶在訪問過該頁面以後再次訪問時,同一組圖片或JS不會再重複下載,從而減小了HTTP請求,用戶訪問速度明顯有所提高,同時服務器負載也會降低。

(9)  使用CDN(Content Delivery Network)網絡加速。

(10)服務器啓用gzip壓縮功能。

(11)Ajax採用緩存調用。

Ajax調用都採用緩存調用方式,通常採用附加特徵參數方式實現,注意其中的:<script src=」xxx.js?{VERHASH}」,{VERHASH}就是特徵參數,這個參數不變化就使用緩存文件,若是發生變化則從新下載新文件或更新信息。

(12)Ajax調用盡可能採用GET方法調用。

 實際使用XMLHttpRequest時,若是使用POST方法實現,會發生2次HTTP請求,而使用GET方法只會發生1次HTTP請求。若是改用GET方法,HTTP請求減小50%!

(13)縮減iframe的使用,如無必要,儘可能不要使用。

 

6. 列舉幾個你擅長的前端技術棧,並重點說一下掌握和應用狀況。

My :

1)    bootatrap:本身曾經作過的「網上便利店」,有使用到此技術,可以熟練使用柵格(grid)來製做表格等應用。

2)    AngularJS:是彌補HTML在構建應用的不足。

3)    jQuery:能使用其進行後臺數據庫的交互。

 

 

 

須要注意的題目:

1)    CSS3增長了哪些新特性(模塊)?

CSS3 被劃分爲模塊。其中最重要的 CSS3 模塊包括:

  • 選擇器
  • 框模型
  • 背景和邊框
  • 文本效果
  • 2D/3D 轉換
  • 動畫
  • 多列布局
  • 用戶界面

2)    HTML5有哪些新特性(可包括CSS3)?

HTML5 中的一些有趣的新特性:

  • 用於繪畫的 canvas 元素
  • 用於媒介回放的 video 和 audio 元素
  • 對本地離線存儲的更好的支持
  • 新的特殊內容元素,好比 article、footer、header、nav、section
  • 新的表單控件,好比 calendar、date、time、email、url、search
相關文章
相關標籤/搜索