第一次實戰,沒有人指導的前提下完成[前端專案]

cometang發表於2018-01-30

新入職不久,對於一個大四的學生來說,這大半年還是過得滿充實,先是去培訓學校學習了半年,終於強化了自己關於開發方面不足的地方,現在入職在一個當地不大不小的公司,四十幾個人這種的吧,剛剛入職一個月左右,做了一個專案,一個人完成所有的前端開發,並且要求了相容移動端+pc端+平板,前端頁面已經開發完了,結果甲方又臨時說必須要相容IE8,當時心裡面是崩潰的...(現在想想其實也並沒有那麼難,可能是因為我自己寫的程式碼比較落後,很快就除錯了就夠滿足要求了)

下面還是說說在這次開發中遇到的問題和解決方法吧,不詳談,但是遇到相同的問題的兄弟們可以試試我的方法,新手第一個專案,希望評論區別罵我,用問題和不足的地方,希望大家多多指正吧...

靜態資料js檔案的使用 構造靜態資料儲存到一個js資料夾中,然後另一個JS檔案對他進行使用 功能:起飛地--目的地選擇框的 實現

相容移動端PC端的做法 儘量少用jquery或者js去寫相容容易出bug,用流式佈局(百分比)寫寬度和調整位置,直接把高度用單位(rem)定死,這樣雖然相容不到畫素級,但是寫出來還是能看的。 在css檔案中開始部分寫上:

html{
font-size: 62.5%;    //這樣1rem = 10px了,並且rem單位的字型與盒子能夠隨著頁面的寬度變化而進行相應的變大變小
font-family:Helvetica;    //因為移動端沒有微軟雅黑的字型,只能使用和他相近的一種字型
}
複製程式碼

相容瀏覽器的問題

1.css相容(因部分css會在低版本的IE瀏覽器中呈現出很醜的樣子)

方法:直接根據該物件的類名或者id,對樣式進行重寫,在後面加上相應的IE瀏覽器的版本號

相容IE8的樣式,只有IE8才能識別,不是ie8瀏覽器就不能夠識別,好像ie9也能夠識別

.modal-content{                    
width:600px\9;    
margin:0 auto\9;
}
複製程式碼

2.js相容(ES6語法最好不用,部分新特性最好少用,用了只能夠在網上找相應的植入函式,來對新特性進行解析)

IE8只能夠解析Jquery2以下版本,以後開發注意問清楚相容的要求再引用jquery,如果要引入bootstrap3,又要相容IE8的話jquery就只能夠引入jquery 1.9.1版本
複製程式碼

** IE8不相容getElementsByClassName**

(在IE8瀏覽器中是不支援原生的getElementsByClassName()來獲取DOM節點的,所以用下面的函式寫在前面就可以了)


if (!document.getElementsByClassName) {

document.getElementsByClassName = function (className, element) {

var children = (element || document).getElementsByTagName('*');

var elements = new Array();

for (var i = 0; i < children.length; i++) {

var child = children[i];

var classNames = child.className.split(' ');

for (var j = 0; j < classNames.length; j++) {

if (classNames[j] == className) {

elements.push(child);

break;

}

}

}

return elements;

};

}

複製程式碼

IE8不相容 forEach()遍歷

(使用下面的函式寫在前面就能夠保證IE8同樣能夠使用forEach()遍歷節點和陣列)

if (!Array.prototype.forEach) {
Array.prototype.forEach = function(callback/*, thisArg*/) {
var T, k;
if (this == null) {
throw new TypeError('this is null or not defined');
}
var O = Object(this);
var len = O.length >>> 0;
if (typeof callback !== 'function') {
throw new TypeError(callback + ' is not a function');
}
if (arguments.length > 1) {
T = arguments[1];
}
k = 0;
while (k < len) {
var kValue;
if (k in O) {
callback.call(T, kValue, k, O);
}
k++;
}
// 8. return undefined.
};
}

複製程式碼

相關文章