1. 程式人生 > >前端面試題目(二)

前端面試題目(二)

HTML、CSS面試題

1、寫出你知道的一些常用的塊元素和行內元素

塊元素:div,p,h1~h6,ul,li,ol,dl,dt,dd

行內元素:span,em,a,b,img,input,strong

2、請寫出display屬性的值

none此元素不會被顯示。
block此元素將顯示為塊級元素,此元素前後會帶有換行符。
inline預設。此元素會被顯示為內聯元素,元素前後沒有換行符。
inline-block行內塊元素。(CSS2.1 新增的值)
list-item此元素會作為列表顯示。
run-in此元素會根據上下文作為塊級元素或內聯元素顯示。
compactCSS 中有值 compact,不過由於缺乏廣泛支援,已經從 CSS2.1 中刪除。
markerCSS 中有值 marker,不過由於缺乏廣泛支援,已經從 CSS2.1 中刪除。
table此元素會作為塊級表格來顯示(類似 <table>),表格前後帶有換行符。
inline-table此元素會作為內聯表格來顯示(類似 <table>),表格前後沒有換行符。
table-row-group此元素會作為一個或多個行的分組來顯示(類似 <tbody>)。
table-header-group此元素會作為一個或多個行的分組來顯示(類似 <thead>)。
table-footer-group此元素會作為一個或多個行的分組來顯示(類似 <tfoot>)。
table-row此元素會作為一個表格行顯示(類似 <tr>)。
table-column-group此元素會作為一個或多個列的分組來顯示(類似 <colgroup>)。
table-column此元素會作為一個單元格列顯示(類似 <col>)
table-cell此元素會作為一個表格單元格顯示(類似 <td> 和 <th>)
table-caption此元素會作為一個表格標題顯示(類似 <caption>)
inherit規定應該從父元素繼承 display 屬性的值。

3、可以讓元素隱藏且保留的屬性是什麼?

visitility:hidden;隱藏後仍佔位置

4、請寫出透明度相容低版本IE的寫法

opacity:0.8;filter:alpha(opacity=80);

5、請寫出3種定位方法,並說明一下對他們的理解

position:fixed;固定定位,相對於瀏覽器視窗定位
position:absolute;絕對定位,相對於父級定位
position:relative;相對定位,原位置保留
position: static 預設值,沒有定位

position:inherit  繼續父級的屬性

6、請寫出兩種或兩種以上清除浮動的方法

使用overflow屬性來清除浮動  overflow:hidden;
使用額外標籤法   .clear{clear:both;}
使用偽元素來清除浮動
.clearfix.after{content:"";height:0;line-height:0;display:block;visibility:hidden;clear:both;}
.clearfix{zoom:1}
使用雙偽元素清除浮動
.clearfix.before,.clearfix.after{content:"";display:block;clear:both;}

.clearfix{zoom:1}

7、請問css中最高優先順序寫法是什麼?

!important

8、a標籤如何開啟連結?

_blank 新視窗開啟連結
_self 表示“相同視窗”
_top 整頁視窗

_partent 父視窗

9、a標籤如何去掉下劃線

text-decoration:none;

10、請寫出你所知道的css選擇器

1、標籤做選擇器名稱(元素選擇器)
例:div { color:bule;}
2、類名做選擇器名稱
例:
.bule_text { color:bule;}
類名前必須加“點”
類名是自定義的名稱不能和標籤重名
命名時不能以數字開頭字元
3、id名做選擇器名
例:
#header { font-size:30px }
說明:
id名前必須加“#”
id名是自定義的名稱不能和標籤重名
命名時不能以數字開頭字元
在html標籤內,用id屬性來呼叫id名
例:在<div id="id名"></div>
4、後代選擇器
<div class="box">
<a></a>
<a></a>
<a></a>
<a></a>
</div>
.box a{
}
會選擇後代所有的特定的標籤
5、子元素選擇器
<div class="box">
<a></a>
<a></a>
<a></a>
<a></a>
</div>
.box>a{
}
子元素選擇器必須用>號連線,不能空格
只會選擇後代所有的特定的直接標籤
5、交集選擇器
作用:給所有選擇器選中的標籤,相交的那部分標籤設定屬性
<p></p>
<p></p>
<p></p>
<p class="pre1"></p>
<p class="pre1"></p>
<p></p>
p.pre1{color:red;}
6、並集選擇器
分組定義的方式
例:
div,h1,a,p { color:red;}
.text_red,div,.box,p { background-color:green;}
注:逗號意為“和”
派生定義方式
例:
div a { color:red;}
.box a { color:red;}
.box .
注:空格意為“裡”
相鄰兄弟選擇器css2
選擇在一個元素的後一個元素
<h1></h1>
<p></p>
<p></p>
<p></p>
h1+p{color:red}
通用兄弟選擇器css3
給指定選擇器後面的所有選擇器的所有標籤設定屬性
<h1></h1>
<p></p>
<p></p>
<p></p>
h1~p{color:red}
9、序選擇器
同級別的第幾個
:first-child選中同級別中的第一個標籤
:last-child選中同級別中的最後一個標籤
:nth-child(n)選中同級別中的第n個標籤
:nth-last-child(n)選中同級別中的倒數第n個標籤
:only-child選中父元素中唯一的元素
不區分型別
同類型的第幾個
:first-of-type選擇同級別中同類型的第一個標籤
:nth-of-type(n)選中同級別中同類型的第n個標籤
:last-of-type選擇同級別中同類型的最後一個標籤
:nth-last-of-type(n)選中同級別中同類型的倒數第n個標籤
:only-of-type選中父元素中唯一型別的某個元素
區分型別
10、屬性選擇器
[attribute]根據指定的屬性名稱找到對應的標籤,然後設定屬性p[id]
[attribute=value]找到有指定屬性,並且屬性的取值等於value的標籤p[class=cc]
最常用場景,區分input屬性
1、屬性的取值是以什麼開頭的
[attribute|=value]    (css2)
[attribute^=value]
兩者之間的區別:
css2中的只能找到value開頭,並且value是被“-”和其它內容隔開的
css3中只要是value開頭的都可以找到,無論有沒有被-隔開
2、屬性的取值是以什麼結尾的
[attribute$=value]
3、屬性的取值是否包含某個特定的值
[attribute~=value]   css2
[attribute*=value]
兩者之間的區別
css2中的只能找到value開頭,並且value是被“空格”隔開
css3中只要是value開頭的都可以找到,無論有沒有被空格隔開
11、萬用字元選擇器
*
12、偽元素選擇器
:after
:before
:first-letter

:first-line

11、一個寬為100px的盒子如何實現上下水平都居中

div{width:100px;position:absolute;top:50%;margin-top:50px;left:50%;margin-left:50px;}

12、請問標準盒子模型與怪異盒子模型的寬度是如何計算的?

標準盒模型:一個盒子的總寬度=width+padding+border+margin
怪異盒模型:一個盒子的總寬度=width+margin(其中width的值已經包括padding和border)

怪異模式是部分瀏覽器在支援W3C的標準的同時還保留了原來的解析模式,主要表現在IE核心的瀏覽器。

13、文字與圖片垂直居中對齊的屬性與值是什麼?

 vertical-align:middle;

js/jq面試題

1、請寫出用id獲取元素的方法

getElementById

2、請寫出獲取元素屬性值的方法

setAttribute 設定屬性值的方法

getAttribute獲取屬性值的方法

3、請說明$.ajax中url、data、type、dataType、async、cache、success、error分別代表什麼?

url:傳送請求的地址
data:傳送到服務的資料
dataType:預期伺服器返回的資料型別。如果不指定,jQuery 將自動根據 HTTP 包 MIME 資訊來智慧判斷,比如XML MIME型別就被識別為XML。
async:預設設定下,所有請求均為非同步請求(也就是說這是預設設定為 true )。如果需要傳送同步請求,請將此選項設定為 false 。跨域請求和 dataType: "jsonp" 請求不支援同步操作。注意,同步請求將鎖住瀏覽器,使用者其它操作必須等待請求完成才可以執行。
cache:如果設定為false,瀏覽器將不快取此頁面,它的工作原理是在GET請求引數中附加"_={timestamp}"
type:請求方式(get和post),預設為get方式
success:請求成功後的回撥函式

error:請求失敗後的回撥函式

5、請問i會輸出什麼?

<script type="text/javascript">
for (var i = 0; i<6; i++) {
    setTimeout(function(){
        console.log(i);
    },1000)
}
</script>

答案是:6;//輸出的是i的長度

6、寫一個簡單的選項卡效果

<div class="anli-con" id="anlicon">
	<div class="anli" id="anli">
		<a href="#" class="active">選項一</a>
		<a href="#">選項二</a>
		<a href="#">選項三</a>
	</div>
	<p style="display:block;">你是傻逼一你是傻逼一你是傻逼一你是傻逼一你是傻逼一你是傻逼一你是傻逼一</p>
	<p>你是傻逼二你是傻逼二你是傻逼二你是傻逼二你是傻逼二你是傻逼二你是傻逼二你是傻逼二你是傻逼二</p>
	<p>你是傻逼三你是傻逼三你是傻逼三你是傻逼三你是傻逼三你是傻逼三你是傻逼三你是傻逼三你是傻逼三</p>
</div>
$(function(){
    $(".anli a").click(function(){
        $(this).addClass("active").siblings().removeClass("active");
        $(this).parent("div").siblings("p").hide();
        $(this).parent("div").siblings("p").eq($(this).index()).show();
    })
})
var oDiv=document.getElementById('anlicon');
var oAnli=document.getElementById("anli");
var aA=oAnli.getElementsByTagName("a");
var aP=oDiv.getElementsByTagName("p");
for(var i=0;i<aA.length;i++){
 aA[i].index=i;
 aA.onclick=function(){
  for(var i=0;i<aA.length;i++){
    aA[i].className="active";
    aP[i].style.display="none";
  }
  this.ClassName="active";
  aP[this.index].style.display="block";
 }
}

8、請說一下你對ajax同步和非同步的理解

同步是指:傳送方發出資料後,等接收方發回響應以後才發下一個數據包的通訊方式。
使用者填寫所有資訊後,提交給伺服器,等待伺服器的迴應(檢驗資料),是一次性的。資訊錯誤又要重新填寫!
非同步是指:傳送方發出資料後,不等接收方發回響應,接著傳送下個數據包的通訊方式。

當用戶填寫完一條資訊後,該資訊會自動向伺服器提交,然後伺服器響應客戶端,在此過程中,使用者依然在填寫表格的資訊,即向伺服器請求多次,節省了使用者的時間,提高了使用者的體驗。

9、一個按鈕點選一次字型變紅色,在點選字型變藍色,點選來回切換,如何實現?

<input type="button" value="點我點我" id="btn">
<div>字型變色</div>
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
	$(function(){
		$("#btn").toggle(function(){
			$(this).next().css("color","red");
		},function(){
			$(this).next().css("color","blue");
		})
	})
</script>

10、jqueryDOM操作

//刪除操作
 remove();detach();empty();
//複製節點
clone();
//替換節點
replaceAll();replaceWith();
//內部插入
= append(),appendTo(),prepend(),rependTo()  
//外部插入
after()、insetAfter()、before()、insertBefore() 
//包裹操作

wrap();unwrap();wrapAll();wrapInner()

11、做個分頁的效果,你需要後臺介面給你提供哪些必要資料,實現效果的思路是什麼?

12、說一下你對&&與||的理解

&&邏輯與的運算子  兩邊的表示式結果都為true時,整個運算才能為true;&&還具有短路的功能,即如果第一個表示式為false,則不再計算第二個表示式;

||邏輯或運算子  當運算子有一邊為true時,整個結果都返回為true。

13、這裡有兩個表單元素,需要你手動post提交

$.post("http://10.10.10.10:8080/login.active",????,function(){},'json')

問號位置需要提交的資料引數該如何寫(寫出兩種或兩種以上的方法)

<form id="form1">
<input type="text" name="username" id="username">
<input type="password" name="password" id="pwd">
</form>