成果:
自己畫的最可愛,不過跟本體還是有點落差,有點企鵝感?
結構:
大概就是分成頭、身體、腳,利用 position 把手腳眼睛鼻子耳朵等拼接上去,利用一些圖層
疊加的概念,還有 CSS 旋轉語法。
附上 CSS:
其實現在還有些情況為了相容性,會把寫好的 ES6 語法編譯回去 ES5 ,因此要了解新寫法
與舊寫法的區別實益在哪?在舊的 var 宣告法造成的雷有:
1. 提升:
var math = function () {
console.log( x );
var x = 10
}
console.log( x ) // undefined
由於 function 內有宣告,因此還是可以執行,但是實際上從上到下執行 console.log 的時候,x 還沒宣告,因此是 undefined 。
2. 全域變數:
var x = 1
var math = function (y) {
x = 10;
return x + y
};
console.log( math(3) ); // 13
console.log( x ) // 10
當 JavaScript 在 function 內找不到宣告時,就會一層一層往外找,所以最後就改了最外層的 x 。
知道這些問題之後,其實只要養成良好的開發習慣不用 let 與 const 也無所謂,但就是加一層
保險, let 用於宣告一個「只作用在當前區塊的變數」,因此不會超出當前區塊; Const 有點像
使用 let 所宣告的變數,具有區塊可視範圍。常數不能重複指定值,也不能重複宣告。
結論:為了避免變數遭到預期外的修改,變數都應該先宣告再做使用,並且盡量元件化各自
可以運作,而不是 a 去改 b 、 b 又改 c 造成難以維護與判斷更改數值的源頭。
參考資料:
架構大概是
這個問題主要是做商品資料更新時候學到的作法:先開一個新陣列或物件儲存 API 傳回來的
資料,從簡易的邏輯來看,修改前跟修改後如果用的是同一筆資料,那修改之後就無法找回
修改前的資料。
在 JavaScript 中,基本型別的比較是傳值,也就是:
var a = 100; //number
var b = a; // 100 , number
console.log( a === b ) // 100 = 100
答案會是 true
但是在物件型別,也就是最常需要處理的商品資料中,是傳址,也稱作傳參考,例如:
var c = { price:100 }; //object
var d = { price:100 }; //object
console.log( c === d) // { price:100 } != { price:100 }
答案會是 false,這邊的思考可以想成是加了一個隱藏屬性地址,所以是
{ c , price:100 } != { d , price:100 },c 當然不等於 d ,所以是 false。
這會產生什麼需要注意的事情呢?當有兩個產品價格相同,然後你就快樂寫了
var e = { price:100 };
var f = e //感覺省了一串
//然後 f 商品要改價格的時候
f .price = 80;
console.log(e); //80
console.log(f); //80
就會產生慘劇,延續上例,也就是 JavaScript 照著地址去把 e 的 price 屬性給改了,所以不同商品要乖乖做好預設值。
例外:function 的參數內的物件被重新賦值(x = y)的時候,外部變數的內容不受影響,但僅止於
此,若更改屬性仍然有效。
參考資料:
pointer-events:auto 預設值
pointer-events:none 可讓滑鼠點擊不生效,還有其他設置僅限SVG使用,可閱讀參考資料
文章。
這個 CSS 屬性可以在日常利用 position:relative 跟 position:absolute ,做出疊加圖層的時候,上
層有是漸層色彩或陰影,主要不同按鈕與連結在下層時,在上層增加這個 CSS 屬性後,就可以安心的
在下層做出主要按鈕或連結,而不會點擊到上層圖層導致點不到連結的情況,也可以使網頁結構更加穩
定。
參考資料:https://www.oxxostudio.tw/articles/201409/pointer-events.html
目標:將本地端用 Vue Cli 建立的網站 Git Push 到 Github 並且打開 GitHub Pages。
在 Vue 專案資料夾下建立 deploy.sh。
在 deploy.sh 內建立以下內容: