# 在 A1 Team Work 新增主題的說明書 <article class="background"></article> <article class="userContainer"></article> <style> .background { position: fixed; width: 100vw; height: 100vh; top: 0; left: 0; background-image: linear-gradient(to right, #a7a0ad, #eae6ed, #eae6ed, #a7a0ad); z-index: -1; } .userContainer { position: fixed; width: 758px; height: 100vh; top: 0; margin: auto; margin-left: -15px; background-color: #FFF; box-shadow: 0 0 8px #938899; z-index: -1; } #doc.comment-enabled { padding-right: 35px !important; } .ui-toc-dropdown .nav .nav > li > a { color: #570a91; transition: 0.2s; } .ui-toc-dropdown .nav .nav > li > a:hover { color: #d49ffc; animation: dropdown_nav_a 0.3s; } .expand-toggle, .back-to-top, .go-to-bottom { position: relative !important; } .expand-toggle::before, .back-to-top::before, .go-to-bottom::before { content: "—"; position: absolute; opacity: 0; left: -6px; top: 50%; transform: translate(0px, -60%); } .expand-toggle:hover, .back-to-top:hover, .go-to-bottom:hover { animation: dropdown_a 0.5s forwards; } .expand-toggle:hover::before, .back-to-top:hover::before, .go-to-bottom:hover::before { animation: dropdown_a_before 0.5s forwards; } @keyframes dropdown_nav_a { 0% { transform: translateY(0px); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0px); } } @keyframes dropdown_a { 0% { transform: translateX(0px); } 100% { transform: translateX(5px); } } @keyframes dropdown_a_before { 0% { transform: translate(-6px, -60%); opacity: 0; } 100% { transform: translate(6px, -60%); opacity: 1; } } </style> <!-- 由以下空一行開始編輯 --> 2019/12/05 ## 🍩 建立您的主題.sass 1. 想好主題的中英文名稱,例如 <span style="color: #a39564;">史蒂芬金 StevenGold</span>。 2. `clone` a1team-work 專案之後,切到 `develop` 分支,從路徑 `src/styles/themes` 選擇淺色or深色模板,複製一份到相同目錄。 ![](https://i.imgur.com/zyLIpHM.png) 3. 重新命名sass檔為您的主題名稱,之後使用到的主題名稱一定要一致 <span style="color: red;">※重要</span>。 ![](https://i.imgur.com/GZ6YH8H.png) --- <br> ## 🍿 在程式中新增您的主題 1. 完整複製以下代碼進行全域搜尋: ``` // __________________import themes/themeName above this line__________________ ``` ![](https://i.imgur.com/cJHUF3K.png) 2. 取代成=在上方新增以下`@import`路徑: ``` @import themes/您的主題sass檔名 // __________________import themes/themeName above this line__________________ ``` ![](https://i.imgur.com/xFi2aCR.png) 3. 在 `user-setting.ts` 和 `sidebar.component.ts` 中如圖的地方加上自己的主題檔名。 用於顯示的 `name` 注意大小寫。 ![](https://i.imgur.com/2ruZhX6.png) 4. 在 `sidebar.component.sass` 的一開始附近找到 `$themes` 變數,加上自己的主題名稱。 ![](https://i.imgur.com/qftxbQp.png) --- <br> ## 🌆 新增主題圖片 1. 在專案路徑 `src/assets/images/` 新增一個資料夾,命名為自己的主題名稱,我們將用這個資料夾來存放您的主題用到的圖片。 ![](https://i.imgur.com/3GOCRTt.png) 2. 主要使用到的圖片有兩張(若您覺得不夠,稍後再追加),一張用於左邊的選單列背景(若不是直向方形,建議裁剪,<span style="color: red;">命名:主題名稱SidebarBg</span>),另一張用於大區塊的背景<span style="color: red;">(命名:主題名稱Bg)</span>,上網搜尋一下自己想要放上去的圖片,以紫色主題為例: ![](https://i.imgur.com/pUvbmNT.png) ![](https://i.imgur.com/uyfQvl6.png) ![](https://i.imgur.com/lAjIsVh.png) 3. 使用在網頁的圖檔需要經過適當的壓縮來縮小檔案大小,推薦使用[這個網站工具](https://tinypng.com),使用方法只要把檔案上傳壓縮後再下載回來就可以了。 4. 回到您的主題`.sass` 檔案,選取所有的<span style="color: red;">深色模板or淺色模板</span>,改為您的主題名稱,也注意路徑的圖片副檔名是否正確。 ![](https://i.imgur.com/H70xOCD.png) <p style="text-align: center;"><img src="https://pic.sopili.net/pub/emoji/twitter/2/72x72/1f53b.png" width=36 height=36> <img src="https://pic.sopili.net/pub/emoji/twitter/2/72x72/1f53b.png" width=36 height=36> <img src="https://pic.sopili.net/pub/emoji/twitter/2/72x72/1f53b.png" width=36 height=36> 改為這樣 <img src="https://pic.sopili.net/pub/emoji/twitter/2/72x72/1f53b.png" width=36 height=36> <img src="https://pic.sopili.net/pub/emoji/twitter/2/72x72/1f53b.png" width=36 height=36> <img src="https://pic.sopili.net/pub/emoji/twitter/2/72x72/1f53b.png" width=36 height=36> </p> ![](https://i.imgur.com/twflxMy.png) :::success `npm run start`看看是否編譯正常,至此可以開始修改您的主題了,恭喜恭喜 😃😃。 ::: --- <br> ## ⭐ 修改您的主題 :::warning a1team-work 使用的樣式檔是 sass,關於 sass 與 css 的差異,可以參考[這段文章](https://hackmd.io/@c_pSsDGCQsOGTM6RJ6O2iw/HJ_Ow2_hB#-%E5%A5%BD%E7%89%A9%E6%8E%A8%E6%8E%A8),以下將舉例說明主題中常見的 css 屬性及特殊的元素,藍色標題可連結至詳細說明。 ::: ### [**background**](https://www.w3school.com.cn/cssref/pr_background.asp) ```sass= background: url('src/assets/images/pikachu.jpg') center center no-repeat ``` * 同時指定所有 background 相關屬性的屬性。 * `url('src/assets/images/pikachu.jpg')`:***背景圖片***,同 [background-image](https://www.runoob.com/cssref/pr-background-image.html),若背景是純色,使用 [background-color](https://www.runoob.com/cssref/pr-background-color.html)。 * `center center`:***背景位置***,同 [background-position](https://www.runoob.com/cssref/pr-background-position.html),center center,會指定背景圖片的XY軸皆為正中間,可以使用 top、bottom、px、% 等等值。 * `no-repeat`:***背景圖片重複***,同 [background-repeat](https://www.runoob.com/cssref/pr-background-repeat.html)。 <br> ```css= background: linear-gradient(15deg, rgba(#6590b3, 0.9) 30%, rgba(#6590b3, 0.3)) ``` * `linear-gradient(15deg, rgba(#6590b3, 0.9) 30%, rgba(#6590b3, 0.3))`:***漸層背景寫法***,[linear-gradient()](https://www.runoob.com/cssref/func-linear-gradient.html) 是寫在 background-image 屬性的參數函式,表示線性的漸層,其他還有[放射漸層 radial-gradient](https://www.runoob.com/cssref/func-radial-gradient.html) 等等。 `15deg` 是線性角度,也可以寫 `to top`、 `to bottom`、 `to left`、 `to right` 等等。 `rgba(#6590b3, 0.9)` 是 [rgba 顏色](https://www.runoob.com/cssref/css-colors-legal.html)的寫法`rgba(色碼#6590b3, 不透明度0.9)`,`30%` 為整個漸層的前面 30% 比例都是 rgba(#6590b3, 0.9)。 <hr style="height: 2px; margin-top: 40px; background: #f2e8ff"> ### [**color**](https://www.runoob.com/cssref/pr-text-color.html) ```css= color: rgba(#FFFFFF, 0.95) ``` ```css= color: #002f5a ``` * ***文字顏色***,好像不需要更多描述🌝。 <hr style="height: 2px; margin-top: 40px; background: #f2e8ff"> ### [**box-shadow**](https://www.runoob.com/cssref/css3-pr-box-shadow.html) ```css= box-shadow: 2px 3px 5px rgba(#002f5a, 0.5) ``` * ***陰影***,範例寫法為 `box-shadow: X偏移2px Y偏移3px 模糊5px 顏色rgba(#002f5a, 0.5)`。 <br> ```css= box-shadow: inset 0 0 10px rgba(#FFF, 0.7) ``` * `inset` ***內陰影***,可用來模擬凹陷的效果。 <br> ```css= box-shadow: 2px 3px 5px #002f5a, 2px -5px 5px #002f5a, inset 0 0 5px #999 ``` * 可以同時指定內外陰影,也可以同時有很多個內外陰影,用逗號區隔。 <hr style="height: 2px; margin-top: 40px; background: #f2e8ff"> ### [**border**](https://www.runoob.com/cssref/pr-border.html) ```css= border: solid 1px rgba(#002f5a, 0.8) ``` * 一次指定元素的所有 ***邊框***,包含上下左右(`border-top`、`border-bottom`、`border-left`、`border-right`)。 * `solid`:***邊框樣式***,solid 為實線,也有其他[邊框樣式種類 (border-style)](https://www.runoob.com/cssref/pr-border-style.html)。 * `1px`:***邊框寬度***,不解釋。 <br> :::warning 以上為編輯主題主要會用到的 css 屬性,接著說明其中出現的特殊元素([css選取器](https://www.runoob.com/cssref/css-selectors.html)) ::: ### [**::before**](https://www.runoob.com/cssref/sel-before.html) ```css= &::before background: #6590b3 box-shadow: 3px 3px 8px rgba(#FFF, 0.7) ``` * ***偽元素***,非常好用~是大部份 html 標籤都有的隱藏元素(除了沒有結束標籤的以外),可以用來寫特殊的物件,例如文字、區塊、甚至是一個小三角形。 <br> ![](https://i.imgur.com/aotwBbU.png) * 圖中的小三角形就是用下面白色 div 的`::before`來寫的;A1錢幣是用後面的文字的`::before`寫的。 <hr style="height: 2px; margin-top: 40px; background: #f2e8ff"> ### [**::after**](https://www.runoob.com/cssref/sel-after.html) * 同上述的`::before`,即一個 html 元素有兩個偽元素可以使用(`::before`、`::after`)。 * 另外,使用個冒號和兩個冒號沒有區別,都可以~。 <hr style="height: 2px; margin-top: 40px; background: #f2e8ff"> ### [**:hover**](https://www.runoob.com/cssref/sel-hover.html) ```css= &:hover border: solid 1px rgba(#FFF, 0.7) background: rgba(#FFF, 0.7) box-shadow: inset 0 0 10px rgba(#FFF, 0.7) color: #002f5a ``` * ***滑鼠移到元素上*** 時要套用的樣式。 * 連結、按鈕等地方最常用,也可以寫成滑鼠移入A處,顯示B區塊、改變長寬之類的進階用法。 ![](https://i.imgur.com/zYYV3DN.png) * 上圖的"日"按鈕即為滑鼠移入的樣式狀態。 <hr style="height: 2px; margin-top: 40px; background: #f2e8ff"> ### [**:active**](https://www.runoob.com/cssref/sel-hover.html) ```css= &:active background: linear-gradient(to bottom, #2d5f81, #6692af) box-shadow: inset 0 0 5px rgba(#002f5a, 0.8) ``` * ***滑鼠按住元素*** 要套用的樣式。 * 比較不常用,但可以增加使用者體驗,按鈕好像真的可以按一樣。 ![](https://i.imgur.com/CJD1xfL.png) * 上圖的"月"按鈕即為滑鼠按住的樣式狀態。 <hr style="height: 2px; margin-top: 40px; background: #f2e8ff"> ### [**:focus**](https://www.runoob.com/cssref/sel-focus.html) ```css= input, textarea &:focus ~.inputTitle color: rgba(#002f5a, 0.6) ``` * 某個 ***輸入框獲得焦點*** 時要套用的樣式。 * 上述 sass 意思為:`input` 或 `textarea` 獲得焦點時,緊鄰其後 `class` 為 "inputTitle" 的元素加上 `color: rgba(#002f5a, 0.6)` 屬性。 <hr style="height: 2px; margin-top: 40px; background: #f2e8ff"> ### [**:nth-child()**](https://www.runoob.com/cssref/sel-focus.html) ```css= .tableBody &:nth-child(even) background: rgba(#5fa8ff, 0.2) ``` * 元素的 ***第 n 個子元素***。 * 例: `:nth-child(2)`:元素的第 2 個子元素。 `:nth-child(odd)`:元素的所有第奇數個子元素。 `:nth-child(even)`:元素的所有第偶數個子元素。 `:nth-child(3n+1)`:炫技,但實用。元素的所有第 3 的倍數 +1 個子元素。 <hr style="height: 2px; margin-top: 40px; background: #f2e8ff"> ### [**:last-child**](https://www.runoob.com/cssref/sel-last-child.html) ```css= &:last-child border-right: solid 1px rgba(#6692af, 0.3) ``` * 元素的 ***最後一個子元素***。 * 好用,可配合其他選取器例如 `:not()` 使用如下: ```css= &:not(:last-child) border-right: solid 1px #000000; ``` * 上述 sass 意思為:元素的所有元素不包含最後一個元素(除了最後一個元素以外),都套用樣式 `border-right: solid 1px #000000`。 <hr style="height: 2px; margin-top: 40px; background: #f2e8ff"> :::success 以上粗略提及主題 .sass 裡面會用到的 css 選取器與其意義,現在可以開始修改主題模板來創建屬於您的主題了😄😄😄 ::: <br><br><br><br><br><br>