跳到主要內容

一些不常用但很實用的 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.

留言

這個網誌中的熱門文章

LINE Bank 夢想帳戶利息試算工具

Line Bank 推出的 夢想帳戶 是屬於零存整付的階梯式利率,基本的定期存款牌告利率為 0.725% ~ 1.245% 之間,再按照你的存款目標每月存入,如果當前存款金額達到目標總金額的 26% ~ 50% 會加碼 0.1%,51% ~ 75% 加碼 0.2%,76% ~ 100% 加碼 0.2%,合併計算後期的利率最高達為 2.12%,優惠期限目前公告到 2024/12/31 止。但因為是階梯式利率,實際上拿回的利息不會那麼多。雖然官網有提供試算的範例,但每個人的存款目標與期數都不一樣,因此我製作了一個線上試算利息與實際利率的工具,方便大家試算...

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

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

Adobe 的影音系列軟體改中文語系

Adobe 影音系列的軟體,如 Premier Pro、After Effects... 都沒有繁體中文語系,但還是有簡體中文語系可以使用的,需透過修改控制台 (Console) 設定,或是修改 application.xml 檔案來達成...