CSS 裡面的 :where()

更新 發佈閱讀 7 分鐘
raw-image

這一篇雖然是在講 CSS,但這是因應 EPUB 而生的樣式文件,所以我就順便提一下 Sigil 好了。

許多 EPUB 電子書都是用 Adobe InDesign 加上自訂義樣式、客製化轉換程式來解決的。不過這兩年 InDesign 的更新版本實在令人不敢恭維,不知道他們家的 Coding 是不是找菜市場賣菜的阿伯在負責,寫出來的 Code 不僅是無中生有,今年的更新還每個版本都有一堆 Bug 跑出來。

一直以來,EPUB 電子書如果不是用 InDesign 這種圖形工具來製作,就是得自己手工打包,雖然也有像「Calibre、Sigil」這種製作工具,但一般情況我不會把 Sigil 列入製作的優先選項,因為 InDesign 在編排書籍上的便利性實在無人出其左右。不過隨著近年 InDesign 排山倒海的 Bug,我終於投降了,我決定放棄 InDesign 的製作環境,改成 Sigil 來應付未來書籍的製作需求。

我會轉往 Sigil 還有另一個原因就是,現在的 Sigil 現況和當年剛發表的時候相比,現在的機制和功能顯然成熟許多。

使用 Sigil 的門檻

使用 Sigil 還是有一定程度的門檻,至少我覺得要能編修自己的樣式表。(這是最基礎的)

雖然 Sigil 本身也存在許多問題,所以為了把日後的電子書流程改到 Sigil 上,我只好重新摸索,並把流程和我自己開發的程式、協力工具,一併的寫成一份全新的手冊。

手冊裡面有很多事我串起來的流程、語法、程式,是提供給團隊的夥伴和協力的廠商,請不要找我要。(除非你願意付錢)

在這幾年摸索程式的過程中,撰寫一份有效率的 Sigil EPUB 製作手冊,這對我來說不算是太困難的工作。最後,實際操作下來,我覺得花最多心思的,反而是重新編寫 CSS 樣式母表,因為它是最後讓 EPUB 看起來賞心悅目的樣式指令。

EPUB 編輯其實都是在編寫樣式表

我參考的樣式表,是傳承自日本電書協會(台灣數位出版聯盟)所提供的 Sample 檔案中,裡面有不少高手的心血。

而整個樣式就是用選擇器去判斷 html 這個元素下面 .hltr 或 .vrtl 底下的元素來表現不同排版的效果,例如:

.vrtl h1{}
.hltr h1{}

雖然這個設計在切換直橫切換的時候立意良好,但兩層選擇器的權重實在太重了,你後面再去宣告 h1 的樣式,也會因為權重的關係,已經被宣告的值會完全無法覆蓋。(除非你每次要覆蓋都要寫相同的權重)

既然提到 CSS 權重,那就來分享一下這方面的知識好了。

CSS specificity

CSS specificity(權重),可以分為四個等級(A, B, C, D):

  • A:行內樣式
  • B:ID
  • C:class、attribute、pseudo-class
  • D:element、pseudo-element

一般來說是不太推薦用「行內樣式」,例如:<p style="margin:bottom:20px;">段落文字</p> 這種寫法,因為你一但把樣式寫在了行內,再來用任何選擇器都無法撼動它了。代價就是管理樣式會更麻煩。

所以通常就是看 BCD 這三個值,也就是說如果用一個 class 就是(0,1,0),連續用兩個 .xxx .xxx 就是(0,2,0);如果是一個 class 加上 element 就會變成(0,1,1)。

你的 CSS 能不能覆蓋就要看樣式的權重是不是寫的比前面大,如果權重一樣就看下一欄,如果兩個樣式的權重完全一樣,那就是後面覆蓋前面。

但是問題來了,如果我想要像日本電書協的寫法(0,1,1):

.vrtl h1{}
.hltr h1{}

但是後面又想要用 h1(0,0,1)來覆蓋前面寫的:

h1{}

那這樣要如何才能辦到呢?我研究了許久後發現,如果想要同時保留兩種用法:

.vrtl h1{}
h1{}

那麼就是用一個叫 :where() 來降低權重。

用 :where() 來降低權重

自從這個世界有了 AI 之後,我只需要舉例就可以讓 AI 幫我產生精準又相容性好的樣式選擇器,AI 建議把前面的 .vrtl 那個樣式名稱放到 where 裡面(降低它的權重),例如:

:where(.vrtl) h1{}

如此一來,兩者的權重就完全一樣了​,前面的 .vrtl 有效之外,也能在後面直接用 h1 { ⋯ } 就能直接覆蓋,非常方便。

:where(.vrtl) h1{}
h1{}

:where() 的限制

:where() 是 W3C CSS Selectors Level 4 的正式語法,用來包住選擇器群組,權重永遠是 0,不搶權重,現代 CSS 推廣度非常高,在 EPUB 製作中也完全可以安全使用。

不過由於是 CSS4 所採用,現代大多數的瀏覽器、閱讀器都能完整的支援。但少部分舊型 EPUB 閱讀器(尤其是 Android 舊 WebView、Kobo 老機型)可能就會發生不支援的情形。假如你現在還在用 Win7、IE 的話,那可能還是要擔心一下,會發生「不支援」的那種情況。

另外,我在網路上查到 Amazon Kindle 不但會自己私自移除 CSS,遇到 :where() 就直接不支援。囧

所以如果你會用「Kindle Previewer」那個 App 轉換 .mobi 格式的時候,你要有預期的心理準備,裡面的許多 CSS 會不翼而飛。

所以這邊也給一個想買電子書閱讀器的人一個建議,千萬不要為了假裝自己很國際,然後就去買 Kindle 來閱讀,因為 Kindle 在技術、相容性上都落後亞洲這邊的閱讀器很多,除非你一定要 Amazon 那個 Logo,不然以他們家那個驢技術,保證你看書看到七竅生煙……🤣

留言
avatar-img
留言分享你的想法!
avatar-img
Publishub
3會員
22內容數
這裡是Publishub,專門寫一些和數位發展趨勢、技術相關,我在這邊分享一些我觀察到的新知,希望你會喜歡~
Publishub的其他內容
2025/11/10
最近寫了一些技術文件,然而這些文件必須要能夠跨平台,所以就用了 IETF 的標準來標示;然後就有了這一篇。 如果你玩過影片字幕的編寫這件事情,那麼或多或少你應該都看過有些字幕檔案會標示 zh-TW、en-US、en-GB、ja-JP……不過,你知道這些編碼是什麼意思嗎? 我在剛開始摸索字幕製作的
Thumbnail
2025/11/10
最近寫了一些技術文件,然而這些文件必須要能夠跨平台,所以就用了 IETF 的標準來標示;然後就有了這一篇。 如果你玩過影片字幕的編寫這件事情,那麼或多或少你應該都看過有些字幕檔案會標示 zh-TW、en-US、en-GB、ja-JP……不過,你知道這些編碼是什麼意思嗎? 我在剛開始摸索字幕製作的
Thumbnail
2025/10/30
一般來說,如果要測試網路速度,大概有 90% 的人會說用 Speedtest 之類的 App 來測試就可以了。但你知道嗎?這種測試方式是綜合測試,就是加入了頻寬、基地台、對方網站限速的多種因素,如果你是要測試這種泛數據,確實 Speedtest 就能滿足你當下的需求,反正你只是要測看看當下的網路在多
Thumbnail
2025/10/30
一般來說,如果要測試網路速度,大概有 90% 的人會說用 Speedtest 之類的 App 來測試就可以了。但你知道嗎?這種測試方式是綜合測試,就是加入了頻寬、基地台、對方網站限速的多種因素,如果你是要測試這種泛數據,確實 Speedtest 就能滿足你當下的需求,反正你只是要測看看當下的網路在多
Thumbnail
2025/10/30
這個是我 2025-10-29 去政大公企中心參加的「主權 AI 與永續發展」國際專家研討會,裡面提到了許多和 AI 主權有關的概念。我把各講者的演講內容摘錄重點,放在這邊,有需要的人可以看一下~ 本報告彙整了四位主要專家——莊盈志司長、姜夏妍博士、陳奕廷會長、李立國召集人——在專題演講及座談中的
Thumbnail
2025/10/30
這個是我 2025-10-29 去政大公企中心參加的「主權 AI 與永續發展」國際專家研討會,裡面提到了許多和 AI 主權有關的概念。我把各講者的演講內容摘錄重點,放在這邊,有需要的人可以看一下~ 本報告彙整了四位主要專家——莊盈志司長、姜夏妍博士、陳奕廷會長、李立國召集人——在專題演講及座談中的
Thumbnail
看更多
你可能也想看
Thumbnail
十一月底正好要去斯里蘭卡,之前趁雙十一時就把旅行必備東西陸續買齊。 現在我依然在斯里蘭卡的旅行路上,邊當旅人邊推薦旅行好物給你們!(這篇記得收藏起來喔!)
Thumbnail
十一月底正好要去斯里蘭卡,之前趁雙十一時就把旅行必備東西陸續買齊。 現在我依然在斯里蘭卡的旅行路上,邊當旅人邊推薦旅行好物給你們!(這篇記得收藏起來喔!)
Thumbnail
20250813  蓮師的特殊供養 為了0824「蓮華生大士」的布施供養迴向,我準備了四個特殊供品。 0824供養迴向活動: https://www.facebook.com/share/p/17Ga2MJQBw/ ******* 第三個供品,是電子書:金剛兄弟的對話1-聽見真實。
Thumbnail
20250813  蓮師的特殊供養 為了0824「蓮華生大士」的布施供養迴向,我準備了四個特殊供品。 0824供養迴向活動: https://www.facebook.com/share/p/17Ga2MJQBw/ ******* 第三個供品,是電子書:金剛兄弟的對話1-聽見真實。
Thumbnail
我們現在處於資訊爆炸的世代,打開 Instagram、YouTube、Podcast,全部都在說:你要開始創業、創作、開始接案、開始做自媒體。 但你有沒有發現,一旦你想要開始,反而會被排山倒樹而來的資訊給卡住? 因為不知道該做什麼?要學什麼技能?要不要先報個課程?時間怎麼排? 這些問題如果你想一
Thumbnail
我們現在處於資訊爆炸的世代,打開 Instagram、YouTube、Podcast,全部都在說:你要開始創業、創作、開始接案、開始做自媒體。 但你有沒有發現,一旦你想要開始,反而會被排山倒樹而來的資訊給卡住? 因為不知道該做什麼?要學什麼技能?要不要先報個課程?時間怎麼排? 這些問題如果你想一
Thumbnail
哪裡有需求,哪裡就有市場!本文分析一個淘寶上銷售火爆的自動化電子書查找項目,月入數萬,並探討其背後的商業模式和可複製性。作者提醒注意版權問題,並建議將此模式應用到其他領域,例如教資領域,通過嫁接微信AI系統實現自動化資料發送。
Thumbnail
哪裡有需求,哪裡就有市場!本文分析一個淘寶上銷售火爆的自動化電子書查找項目,月入數萬,並探討其背後的商業模式和可複製性。作者提醒注意版權問題,並建議將此模式應用到其他領域,例如教資領域,通過嫁接微信AI系統實現自動化資料發送。
Thumbnail
本文提供網路銷售商品的SEO建議,包含四大面向:吃透商品規格找到獨特賣點、摸清價格底牌制定聰明策略、找準市場和人群精準投放廣告、把商品價格人群串起來打造銷售閉環。文章以淺顯易懂的方式說明如何分析商品規格、制定價格策略、鎖定目標客群,並選擇合適的網路平臺進行行銷,藉此提升銷售額。
Thumbnail
本文提供網路銷售商品的SEO建議,包含四大面向:吃透商品規格找到獨特賣點、摸清價格底牌制定聰明策略、找準市場和人群精準投放廣告、把商品價格人群串起來打造銷售閉環。文章以淺顯易懂的方式說明如何分析商品規格、制定價格策略、鎖定目標客群,並選擇合適的網路平臺進行行銷,藉此提升銷售額。
Thumbnail
或許不久之後,想陷害一個人,要改口稱讚他是當網紅的練武奇才,趕快去做自媒體。
Thumbnail
或許不久之後,想陷害一個人,要改口稱讚他是當網紅的練武奇才,趕快去做自媒體。
Thumbnail
大家好!今天我要分享一個我自己改進的 reveal.js 模板。如果你在使用 Quarto 工作,歡迎試試這個模板!Quarto 是一個極實用的科學寫作工具,能應用於報告、動態文件、電子書、簡報、網頁等等。
Thumbnail
大家好!今天我要分享一個我自己改進的 reveal.js 模板。如果你在使用 Quarto 工作,歡迎試試這個模板!Quarto 是一個極實用的科學寫作工具,能應用於報告、動態文件、電子書、簡報、網頁等等。
Thumbnail
最簡單、最易上手的賺錢網路副業!2023 年即將結束,如果你到現在還沒有任何副業,未免有點可惜!如果你還沒有在線上賺到你的第一個 1 美元,那麼現在就是開始的時候了。 如果這是你一直想做的事情,下文將討論 5 種非常容易啟動的副業,絕對可以在接下來的 7 天內賺到你的第一筆錢。
Thumbnail
最簡單、最易上手的賺錢網路副業!2023 年即將結束,如果你到現在還沒有任何副業,未免有點可惜!如果你還沒有在線上賺到你的第一個 1 美元,那麼現在就是開始的時候了。 如果這是你一直想做的事情,下文將討論 5 種非常容易啟動的副業,絕對可以在接下來的 7 天內賺到你的第一筆錢。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News