跳到主要內容

一些不常用但很實用的 CSS

一些不常用但很實用的 CSS

隨著一些 CSS 框架流行,你有多久沒有自己寫 CSS 了呢?或是有寫,但學習記憶還停留在以前的經驗裡。有些新穎的 CSS 寫法,隨著瀏覽器不斷更新,事後才意外發現原來還有這樣的 CSS 可以用!以下是我整理發現的一些不常用但其實很實用的 CSS,這些入選的 CSS 也至少在 caniuse 通過 Firefox, Chrome, Edge, Safari 的支援才會列入。

scroll-behavior 錨點動畫捲動

原本在 href="#target" 上下錨點連結,瀏覽器預設動作是快速捲動到 id 目標位置,沒有任何的緩衝動畫,瞬間就到達目標位置。之前的做法是使用 Javascript 來達成動畫效果,現在可以直接使用純 CSS 實現動畫捲動效果。只要在 body 上使用 scroll-behavior: smooth; 即可。查閱 MDN 說明

scroll-behavior: auto|smooth;

See the Pen CodePen Home scroll-behavior 錨點頁面捲動使用動畫 by 國際大便標準色 (@pantone_448_c) on CodePen.

:is() 以及 :where() 可列出多個目標對象選擇

傳統 CSS 如果要選擇多個目標對象,並且使用同一組樣式時,必須一項一項完整列出選擇器規則,例如 div, section, article 下面的 p 都要設置相同的樣式,那麼就要如下方範例設置

div p, section p, atricle p {
    color: red;
}

如果是 SASS/SCSS 就可以使用巢狀表示,可以節省掉一些字元

div, section, atricle {
    p {
        color: red;
    }
}

現在也可以使用 CSS 原生的 :is() 或 :where() 偽類選擇器,就可以達到類似以上 SASS/SCSS 的選擇效果

:is(div, section, atricle) p {
    color: red;
}

此外 :is() 與 :where() 的用法都是相同的,差別只在於優先級。:where() 的優先級總是為 0,而 :is() 會按照使用的選擇器為準。例如有一個 div.outter 如果先使用標籤名稱設定文字樣式為藍色,範例如下

<div class="outer">
  <p>This is in the outer div.</p>
</div>
div p {
  color: blue;
}

這個時候再往後使用 :is() 偽類選擇器並使用 class 名稱 .outter 設定為橘色文字

:is(.outer) p {
  color: orange;
}

此時不管是先後順序,或是 class 高於標籤名稱的優先級,都會讓文字成功的轉為橘色。但如果改成 :where() 那麼優先級就會變成 0 這樣文字就還是藍色。因此沒有什麼特殊需求的話,主要使用 :is() 就可了!查閱 :is() MDN 說明 | 查閱 :where() MDN 說明

:target 錨點目標偽類選擇器

當按下錨點連結時,使用 :target 偽類選擇器就可以修改捲動目標對象的樣式,例如添加一個紅色邊框來表示選擇

#id:target {
  border: 1px solid red;
}

除此之外也很適合拿來當做 modal 互動視窗的顯示,例如以下範例使用了 bootstrap 的 modal 組件,因為不使用 javascript 因此拿掉 data-bs- 開頭的 html 屬性,然後在關閉按鈕上使用 href="#" 代表沒有選擇任何錨點目標,這樣 :target 就會失去目標還原預設樣式。接著設置開啟互動視窗的目標連結,並設定 :target 的樣式為顯示。查閱 :target MDN 說明

See the Pen :target 錨點目標偽類選擇器 by 國際大便標準色 (@pantone_448_c) on CodePen.

attr() 抓取屬性內文字

attr() 可以用來抓取 html 標籤上的屬性內容,不過目前只能用來抓取文字字串,未來將支援顏色、數字、單位、角度等...屬性內容,雖然如此還是可以利用他來做出文字提示泡泡 Tooltips 的功能,無需仰賴 javascript。只要使用 ::before 或 ::after 偽類元素搭配 content: attr(); 就可以實現。查閱 attr() MDN 說明

<attr class="tooltips" data-tooltips="這是一串泡泡提示文字">這裡</attr>
.tooltips::before {
    content: attr(data-tooltips);
}

接著利用 :hover 來控制 ::before 與 ::after 的顯示隱藏即可。至於提示泡泡的樣式就交給大家自由發揮,完整範例效果如下:

See the Pen attr() 提示文字 by 國際大便標準色 (@pantone_448_c) on CodePen.

這個網誌中的熱門文章

DaVinci Resolve 輸出 Youtube 影片的最佳設定

雖然 DaVinci Resolve 已經有內建 Youtube 的渲染預設可以用,但我自己輸出影片常常發生畫面出現殘影或是馬賽克的情況,很明顯是編碼位元率的設置不夠高,但是 Youtube 渲染的界面沒有什麼進階設定可以用,建議還是選擇《H.264 Master 》的渲染設置 接下來會出現一些中國用語,主要我使用簡體中文版本使用,敬請見諒 🙇‍♂️ 首先是視頻頁籤的部分,按照 Youtube 建議的上傳編碼設定 文件說明,格式使用 MP4 並且編解碼器使用 H.264  這是為了有較好的處理速度,如果編碼成 H.265 雖然檔案比較小,但為了兼容性 Youtube 會再次將你的 H.265 影片轉成 H.264 因此效率較低,也有可能會降低你影片的畫質。編碼器維持 Auto 並勾選 網路優化 讓影片檔案適合網路串流。 接著分辨率與幀率就按照你專案的需求設定即可,接著編碼配置文件選擇 High 會有較好畫質,關鍵幀則是設定 影格率的兩倍 ,假如你的影片是 30fps 這裡就將關鍵幀設定成 60 目的是為了刷新畫面最多 2 秒的意思,如果畫面出現了殘影也頂多在 2 秒內更新。但關鍵幀不是越短越好,會導致檔案容量太大,上傳到 Youtube 後,平台可能也會再重新轉檔。 接著幀重新排序請 取消 勾選,這是 H.264 產生殘影最常見的原因。它會打亂影格順序以節省空間,但許多播放器或編碼錯誤會導致畫面像溶化一樣的黏在一起。 接著 Preset 設定為 質量 ,編碼器會花更多運算資源去分析畫面提升畫面品質。Rate Control 設定成 可變比特率 ,按照  YouTube 建議的上傳編碼設定 採用可變位元率,並且在 Bit Rate 設定位元率,假如你是 1080p 30fps 的 SDR 影片,應該要設定成 8000 Kb/s 等於 Youtube 建議的 8 Mbps。 類型 視訊位元率,標準影格速率 (24、25、30) 視訊位元率,高畫面更新率 (48、50、60) 8K 80000 ~ 160000 Kbs 120000 ~ 240000 Kb/s 2160p (4K) 35000 ~ 45000 Kb/s 53000 ~ 68000 Kb/s 1440p (2K) 16000 Kb/s 24000 Kb/s 1080p 8000 Kb/...

分享 Google 日曆的中華民國 114 ~ 115 年 (2025 ~ 2025 休假行事曆也包含勞動節)

以下是 Google 日曆按照行政院人事行政總處公告的中華民國 115 年 (2026) 政府行政機關辦公日曆表製成的,並且再加入 5/1 勞動節。 請使用此 鏈接開啟 Google 日曆 點擊左下角的《新增至 Google 日曆》匯入,另有 iCAL 格式 提供其他應用程式匯入。

2025 年第 97 屆奧斯卡 Oscars Academy Awards 入圍得獎電影的台灣上映時間與線上看平台

以下整理 2025 年第 97 屆奧斯卡 Oscars Academy Awards 入圍最佳電影的台灣上映時間以及電影預告,部分線上看平台的連結。奧斯卡獎於美國時間 2025/3/2 頒發 艾諾拉 Anora 台灣上映時間:2024/12/6 線上看平台: My Video ,  Youtube 電影 ,  Apple TV ,  Hami Video ,  Friday 影音 ,  Catchplay+ 入圍 6 項提名:最佳影片、最佳導演 Sean Baker﹑最佳女主角 Mikey Madison、最佳男配角 Yura Borisov、最佳原創劇本 Sean Baker、最佳剪輯 Sean Baker 得獎項目:🏆最佳影片、🏆最佳導演 Sean Baker﹑🏆最佳女主角 Mikey Madiso、🏆最佳原創劇本 Sean Baker、🏆最佳剪輯 Sean Baker