目標
利用 CSS 變數製作濾鏡。
處理步驟
步驟 1. 綁定 input 變更事件
- 取得所有 input
- 建立設定樣式 function handleUpdate
- 透過 arrow function 綁定 change 事件
步驟 2. 設定 css
- 設定 css 變數
- 設定圖片參照 css 變數
筆記與備註事項
主要重點在於 css 變數的運用。
JavaScript 部分
箭頭函數 (Arrow Function)
箭頭函數表示式 (Arrow function expression,也是所謂的 fat arrow function) 比起一般的函數表示式擁有更短的語法以及詞彙上綁定 this 變數,所有的箭頭函數都是無名函數 (anonymous function).
1 | (param1, param2, …, paramN) => { statements } |
HTMLElement.dataset
HTMLElement.dataset屬性允許無論是在讀取模式和寫入模式下訪問在HTML或DOM中的元素上設置的所有自定義數據屬性 ( data-* )集。
自定義的data屬性名稱轉化成 DOMStringMap 的鍵值時會遵循下面的規則:
- 前綴 data- 被去除(包括減號);
- 對於每個在ASCII小寫字母的減號( ),減號會被去除,並且字母會轉變成對應的大寫字母。 a到 z前面U+002D
- 其他字符(包含其他減號)都不發生變化
CSSStyleDeclaration.setProperty()
Template literals
模板字面量/Template literals 是允許嵌入表達式的字符串字面量。你可以使用多行字符串和字符串插值功能。它們在ES2015規範的先前版本中被稱為“模板字符串/template strings”。
1 | `string text` |
CSS 部分
:root
- 宣告全域變數時,很好用。
- 表示 html 的屬性
:root這個CSS 偽類匹配文檔樹的根元素。對於HTML來說,:root表示
<html>
元素,除了優先級更高之外,與html選擇器相同
1 | :root { |
CSS variables
CSS變量是由CSS作者定義的實體,其中包含要在整個文檔中重複使用的特定值。使用自定義屬性來設置變量名,並使用特定的var()來訪問。(比如color: var(–main-color) ;)。
1 | /* 宣告區域變數 */ |
var()
ar() 函數可以代替元素中任何屬性中的值的任何部分。var()方法不能作為屬性名、選擇器或者其他除了屬性值之外的值。(這樣做通常會產生無效的語法或者一個沒有關聯到變量的值。)
1 | :root { |
Custome propertities (--*)
帶有前綴–的屬性名,比如–example–name,表示的是帶有值的自定義屬性,其可以通過var 函數在全文檔範圍內復用的。
1 | --somekeyword: left; |
filter
CSS濾鏡(filter)屬提供的圖形特效,像模糊,銳化或元素變色。過濾器通常被用於調整圖片,背景和邊界的渲染。
CSS標準裡包含了一些已實現預定義效果的函數。你也可以參考一個SVG 濾鏡,通過一個URL鏈接到SVG 濾鏡元素 ( SVG filter element )。
1 | filter: url("filters.svg#filter-id"); |
參考資料
- JavaScript 30 day
- 作者 Github Wes Bos
- Js 30 day 中文指南
- 瓜瓜的 JS 30
- 我的 JS 30 練習Github