# CSS 樣式彙整-前端筆記
> [name=mr.01]
`css` `樣板` `html`
在學期間初學網頁設計整理的語法/好用工具
不定期更新 看到好用的就放上來這邊
---
蒐集樣式/模板的網站
https://codemyui.com
顏色選擇區 適合UI視覺設計師
https://randoma11y.com/
Bootstrap 視覺化排版
https://layoutit.com/build
grayshine 的 CSS筆記
https://hackmd.io/@grayshine/ryVK07EUK
六角學院助教課堂筆記/新手學習指南
https://hackmd.io/@WangShuan/HkPptPtnu
六角學院免費開放部分課程:
使用 HTML、CSS 開發一個網站
https://hackmd.io/@YmcMgo-NSKOqgTGAjl_5tg/ByjK1_z_d
---
> [TOC]
css reset
>https://meyerweb.com/eric/tools/css/reset/
css 優先順序
>https://www.oxxostudio.tw/articles/201405/css-specificity.html
Codepen 線上編輯器:
>https://codepen.io/mrwang01/
# CSS 漸層
簡單手動配置漸層
https://cssgradient.io
隨機生成好看的漸層:
https://coolors.co/gradient-maker/
特殊材質漸層
https://www.gradientmagic.com/
熱門色系 調色盤選擇器
https://coolors.co/palettes/popular
https://coolors.co/palettes/trending
# CSS 動畫
AOS 動畫 | Animate On Scroll Library
https://michalsnik.github.io/aos/
動畫樣式設定生成器:
https://animista.net/play/entrances/scale-in/scale-in-center
# Underlines 下劃線
<iframe height="300" style="width: 100%;" scrolling="no" title="Cool CSS Underline Effects" src="https://codepen.io/TheCSSKing/embed/VwwRzgg?default-tab=" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href="https://codepen.io/TheCSSKing/pen/VwwRzgg">
Cool CSS Underline Effects</a> by Jordan Marshall (<a href="https://codepen.io/TheCSSKing">@TheCSSKing</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>
# 假圖假字圖片
[假字、假圖產生器整理](https://hackmd.io/@chupai/SJOEPUpSE)
https://fakeimg.pl/
補上參數中文解釋:
```htmlmixed
<img src="https://fakeimg.pl/350x200/ff0000,128/000,255">
<img src="https://fakeimg.pl/寬x高/顏色(HEX 色碼),亮度/黑字,255">
```
<img src="https://fakeimg.pl/350x200/ff0000,128/000,255">
---
實際應用:
![](https://i.imgur.com/rzOST1o.png)
模板的部分,可自行搜尋相關 Vscode 擴充套件
# HTML 模板
```htmlmixed
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="index.css"> <!-- 創建 index.css -->
</head>
<body>
<div class="style">
<h1>我是區塊元素</h1>
</div>
<script src="index.js"></script> <!-- 創建 index.js -->
</body>
</html>
```
# CSS模板
```css
@import url('https://fonts.googleapis.com/earlyaccess/notosanstc.css');
* {
font-family: "Noto Sans TC";
}
body {
background-color: red;
}
html, body {
display: flex;
justify-content: center;
align-items: center;
}
```
CSS 版面配置 :
https://zh-tw.learnlayout.com/toc
感謝 Will 保哥中文翻譯
# 圖片填滿/圖片比例
> bg-img
>object-fit
> display: block
> calc
> aspect-ratio
詳細請參考文章:https://hackmd.io/@lunzaizai/B1mRKlqvY
# 字體單位設定
參考文章:
[一次搞懂 CSS 字體單位:px、em、rem 和 %](https://www.oxxostudio.tw/articles/201809/css-font-size.html)
//作者有很多實用前端技術文章
[CSS 長度單位:px, em, rem, vw, vh 該怎麼用?](https://noob.tw/css-units/))
//文章清晰好懂,很多網頁開發的主題文章
# overflow
```htmlmixed=
overflow: auto;
//自動捲軸
//如果要顯示超出內容,,可以加上 title Attribute
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
//只顯示三行
box-sizing:border-box;
```
# border-radius:
border-radius: 左上 右上 右下 左下 ;
# Html iframe
frameborder="0" ──不顯示邊框
frameborder="1" ──要顯示邊框
scrolling="no" ──代表不顯示
scrolling="auto" ──則代表根據網頁大小自動顯示。
# SVG Icons
編輯模式可查看原始程式碼
Flowbite Icons - Free and open-source SVG icons
[https://www.svgrepo.com](https://flowbite.com/icons/)
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-type-css" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="#6f32be" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M14 3v4a1 1 0 0 0 1 1h4" />
<path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4" />
<path d="M8 16.5a1.5 1.5 0 0 0 -3 0v3a1.5 1.5 0 0 0 3 0" />
<path d="M11 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75" />
<path d="M17 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75" />
</svg>
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-box-margin" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="#6f32be" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M8 8h8v8h-8z" />
<path d="M4 4v.01" />
<path d="M8 4v.01" />
<path d="M12 4v.01" />
<path d="M16 4v.01" />
<path d="M20 4v.01" />
<path d="M4 20v.01" />
<path d="M8 20v.01" />
<path d="M12 20v.01" />
<path d="M16 20v.01" />
<path d="M20 20v.01" />
<path d="M20 16v.01" />
<path d="M20 12v.01" />
<path d="M20 8v.01" />
<path d="M4 16v.01" />
<path d="M4 12v.01" />
<path d="M4 8v.01" />
</svg>
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-seo" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="#009988" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M7 8h-3a1 1 0 0 0 -1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-3" />
<path d="M14 16h-4v-8h4" />
<path d="M11 12h2" />
<path d="M17 8m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z" />
</svg>
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-world-www" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="#009988" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M19.5 7a9 9 0 0 0 -7.5 -4a8.991 8.991 0 0 0 -7.484 4" />
<path d="M11.5 3a16.989 16.989 0 0 0 -1.826 4" />
<path d="M12.5 3a16.989 16.989 0 0 1 1.828 4" />
<path d="M19.5 17a9 9 0 0 1 -7.5 4a8.991 8.991 0 0 1 -7.484 -4" />
<path d="M11.5 21a16.989 16.989 0 0 1 -1.826 -4" />
<path d="M12.5 21a16.989 16.989 0 0 0 1.828 -4" />
<path d="M2 10l1 4l1.5 -4l1.5 4l1 -4" />
<path d="M17 10l1 4l1.5 -4l1.5 4l1 -4" />
<path d="M9.5 10l1 4l1.5 -4l1.5 4l1 -4" />
</svg>
# Icon to Font
IcoMoon──將icon轉成Font的平台
https://icomoon.io/app/#/select
# Button
1.基本按鈕樣式
<iframe height="265" style="width: 100%;" scrolling="no" title="CSS-Button樣式" src="https://codepen.io/mrwang01/embed/preview/jObLLvR?height=265&theme-id=light&default-tab=css,result" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href='https://codepen.io/mrwang01/pen/jObLLvR'>CSS-Button樣式</a> by mrwang01
(<a href='https://codepen.io/mrwang01'>@mrwang01</a>) on <a href='https://codepen.io'>CodePen</a>.
</iframe>
2.完美的按鈕並不存ㄗ...
<iframe height="300" style="width: 100%;" scrolling="no" title="CSS Tricks button style" src="https://codepen.io/noelpena/embed/dlovG?default-tab=css%2Cresult&theme-id=light" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href="https://codepen.io/noelpena/pen/dlovG">
CSS Tricks button style</a> by Noel Peña (<a href="https://codepen.io/noelpena">@noelpena</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>
### button(單純按鈕)、reset(清空表單)、submit(送出表單)
```htmlmixed
<input type="button" value="按鈕值" name="按鈕名稱" style="按鈕樣式">
input{
border:0;
color:#fff;
background-color:#003C9D;
border-radius:10px;}
```
# 大小寫轉換
```htmlmixed
<p style="text-transform:uppercase;">Ework Design</p>
<p style="text-transform:lowercase;">Ework Design</p>
<p style="text-transform:capitalize;">ework design</p>
```
# < dl > < dt > < dd >
```htmlmixed
<dl>
<dt>項目標題一</dt>
<dd>這裡是項目敘述一 ...</dd>
<dt>項目標題二</dt>
<dd>這裡是項目敘述二 ...</dd>
</dl>
```
# 垂直置中
```htmlembedded
1.
display:flex;
align-items:center;(垂直置中)
justify-content:center;(水平置中)
2.
display:table-cell;
/*假表格*/
3.
transform:translateY(-50%);
/*子元素加 position:relative*/
/*CSS3位移*/
4.
calc 動態計算(算數學)
課堂老師提起的
```
參考文章:
https://www.oxxostudio.tw/articles/201408/css-vertical-align.html
https://www.oxxostudio.tw/articles/201502/css-vertical-align-7methods.html
# Input 美化
(自行調整...)
```htmlmixed=
input[type="text"]
{
padding:9px 35px;
border:3px black solid;
cursor:pointer;
-webkit-border-radius: 5px;
border-radius: 5px;
}
```
<!-- ![](https://i.imgur.com/5bN2kvp.png)
-->
# flexbox
詳細原理:[圖解:CSS Flex 屬性一點也不難](https://wcc723.github.io/css/2017/07/21/css-flex/)
> justify-content 主軸對齊 主軸線預設左到右
>
圖片來源:
[CSS3的flexbox版面配置-flex container(容器)可用的屬性](https://www.webdesigns.com.tw/flexbox_flex-container.asp)
<!-- display:flex -->
<!--
![](https://i.imgur.com/nyRA0A1.gif)
![](https://i.imgur.com/pSI9zAR.gif)
![](https://i.imgur.com/t2eHPzE.gif)
![](https://i.imgur.com/azBpjcn.gif)
![](https://i.imgur.com/QF51Nyx.gif)
-->
# 偽類
以:為開頭,方便精準控制
>## 錨點偽類
![](https://i.imgur.com/HnN4DIU.gif)
```css
hover 要在 link visted 之後
active 要在 hover之後
```
>## -child
* first-child:第一個子元素
* last-child:最後一個子元素
* nth-child(數字):第幾個子元素
* nth-child(2n):挑出偶數的元素(2的倍數)
* nth-child(2n+1):挑出奇數的元素
* nth-last-child(數字):從後面數來第幾個子元素
* only-child:只有一個子元素
p>span :
`<p> 中的第一個 <span>`
其他變化一樣規則
學習資源: [Day 02 HTML/CSS 點擊超連結會經歷的偽類選取器(Pseudo-classes)](https://ithelp.ithome.com.tw/articles/10265504)
# 偽元素 Pseudo-elements
* ::before ::after
e.g 滑鼠滑過(hover)改變顏色可用
```htmlembedded
.xxx:hover::before{
background-color:#7f7f7f;
}
```
詳細參數設定: [CSS 偽元素 ( before 與 after )](https://www.oxxostudio.tw/articles/201706/pseudo-element-1.html)
# Hover
~~圖床不見了 imgur 上傳的 mp4~~
~~https://i.imgur.com/CRfi2St.mp4~~
按鈕 `hover` 樣式:
用 pug sass 製作的按鈕範例,系上學長製作的範例
https://codepen.io/mrwang01/pen/VRaWvM
偽元素+hover+animation 極致應用:
https://codepen.io/argyleink/pen/poEjvpd
<iframe height="500" style="width: 100%;" scrolling="no" title="CSS mouse-out transition effect" src="https://codepen.io/argyleink/embed/poEjvpd?default-tab=&theme-id=light" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href="https://codepen.io/argyleink/pen/poEjvpd">
CSS mouse-out transition effect</a> by Adam Argyle (<a href="https://codepen.io/argyleink">@argyleink</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>
# calc() 數值運算
`calc()` 函數允許在CSS中進行數值計算,非常適合用於動態調整元素大小。以下是使用 `calc()` 的範例:
```css
width: calc(50% + 8px); /* 寬度設為父元素寬度的50%加上8px */
```
## 置中元素的方法
以下CSS示例展示了如何使用 `calc()` 函數和絕對定位來實現元素的水平置中:
```css
.text {
position: absolute;
left: 40px; /* 左邊距設為40px */
width: calc(100% - 80px); /* 寬度為父元素寬度減80px */
}
```
注意,如果元素包含 `border` 或 `padding`,則需調整 `calc()` 表達式以考慮這些額外的空間,確保元素正確置中。這可能需要數學計算,以確保所有尺寸都精確。
# RWD-Tablet
* 後台電商購物清單
簡潔的表單設計
https://codepen.io/AllThingsSmitty/pen/MyqmdM
* 多樣商品列表清單
https://codepen.io/pumii/pen/WNxvNGg
# 客製化 web fonts icon
實習期間修改 `bootstrap` 模版發現到的東西
https://icomoon.io/app/#/select
資料來源:[自己做web fonts icons](https://wcc723.github.io/css/2013/10/05/web-fonts-2/)
全裝置全包 icon 生成器
https://ossian.tw/%e5%85%a8%e5%b9%b3%e5%8f%b0%e7%b6%b2%e7%ab%99-icon-%e7%94%9f%e6%88%90%e5%99%a8/
https://realfavicongenerator.net/
免費 AI 生成 Icon (限次數)
https://www.icongeneratorai.com/
# 圖片輪播 Carousel
## bootstrap 元件
https://bootstrap5.hexschool.com/docs/5.0/components/carousel/
## jQuery - Owl Carousel
教學文章:
https://ithelp.ithome.com.tw/articles/10247358
基本款:
https://codepen.io/pumii/pen/yLJeZvg
好看的輪播圖片樣式:
https://codepen.io/fadzrinmadu/pen/RwryOVN
```javascript
loop: true, // 循環播放
margin: 10, // 外距 10px
nav: true, // 顯示點點
responsive: {
0: {
items: 1 // 螢幕大小為 0~600 顯示 1 個項目
},
600: {
items: 3 // 螢幕大小為 600~1000 顯示 3 個項目
},
1000: {
items: 5 // 螢幕大小為 1000 以上 顯示 5 個項目
}
}
```
# 陰影 box-shadow
可當作 Border : `box-shadow: 0 -10px #02523e inset;`
來自卡斯伯的文章
https://www.casper.tw/css/2020/02/21/css-border/#
好看的陰影
<iframe height="900" style="width: 100%;" scrolling="no" title="Material Design Box Shadows" src="https://codepen.io/sdthornton/embed/wBZdXq?default-tab=result" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href="https://codepen.io/sdthornton/pen/wBZdXq">
Material Design Box Shadows</a> by Samuel Thornton (<a href="https://codepen.io/sdthornton">@sdthornton</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>
https://codepen.io/sdthornton/pen/wBZdXq
陰影做動畫 酷炫的功能 實用性未知?
https://ithelp.ithome.com.tw/articles/10220686
<iframe height="300" style="width: 100%;" scrolling="no" title="demo-box-shadow" src="https://codepen.io/yachen/embed/gOYEMoM?default-tab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href="https://codepen.io/yachen/pen/gOYEMoM">
demo-box-shadow</a> by yachen (<a href="https://codepen.io/yachen">@yachen</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>
用滑鼠點擊的互動模擬鍵盤
https://codepen.io/yachen/pen/PoYKVzb
----