EPUB 入門指南

單元 13 - 中文橫書 EPUB 的 CSS 設定

CSS 檔案在 style.css ,以下依序討論各部分的 CSS 規則

首先 @font-face 是設定另外加入自訂字型的選取器

@font-face {
    font-family: "NotoSansTC-Regular";
    src: url(NotoSansTC-Regular.otf);
}

@font-face {
    font-family: "NotoSansTC-Medium";
    src: url(NotoSansTC-Medium.otf);
}

@font-face 裡的 font-family 是設定自訂的字型名稱,這字型名稱可以套用到下面的選取器之中, src 則是字型檔案的路徑。

NotoSansTC-Regular.otfNotoSansTC-Medium.otf 是 Google 提供的免費字型,網址在 Google Noto Fonts

以上設定,底下就可以用 NotoSansTC-RegularNotoSansTC-Medium 設定 font-family

繼續看到以下兩個 ol 選取器的設定

ol#toc li {
    list-style-type: none;
    margin-left: 1em;
    padding-left: 0;
}

ol li {
    list-style-type: cjk-ideographic;
}

ol#toc li 是指 idtoc<ol> ,然後 <ol> 裡面的 <li> ,換言之就是以下標記碼

<nav epub:type="toc">
<ol id="toc">
    <li>項目內容</li>
</ol>
<nav>

這是用在目錄頁 toc.xhtml ,主要是將 list-style-type 設定為 none ,因此在目錄頁 toc.xhtmlolli 不會顯示數字,直接顯示作為目錄條列的連結。

底下將 bodyfont-family 設定為 "NotoSansTC-Regular" ,也就是開頭加入的字型檔案

body {
    font-family: "NotoSansTC-Regular";
}

然後看到的是頁首部分的 CSS

div.top {
    background-color: #464646;
    color: white;
    padding: 0.5em;
}

h1.title {
    font-size: 110%;
    line-height: 1.5em;
    margin-top: 0em;
    padding-top: 0em;
}

頁首的背景顏色 background-color 設定為 #464646 ,這是深灰色,然後將文字顏色設定為白色 white ,其他設定 padding0.5em

至於 h1title 是將 font-size 設定為 110%line-height1.5em ,而 margin-toppadding-top0em ,也就是縮短跟上方標題元素的距離。

下面 p 的屬性設定較多

p {
    padding: 1em;
    text-indent: 2.5em;
    line-height: 1.6em;
    word-break: break-all;
    background-image: url('udemy.png');
    background-repeat: no-repeat;
    background-position: center bottom;
    background-size: 50%;
    text-align: justify;
}

其中 text-indent 是設定首行縮排,這裡設定為 2.5emword-break 設定為 break-all 是顯示 <p> 時不會出現捲軸,也就是到螢幕右側如果還有文字就會斷行,下面幾個 background- 開頭的屬性都是設定背景圖片, background-image 設定背景圖檔路徑, background-repeat 設定為 no-repeat 是不重複的意思, background-position 是設定背景圖檔出現的位置, center bottom 是中央、底部的意思, background-size 設定背景圖檔的尺寸,這裡設定為 50% 表示佔據 <p> 一半的空間,最後 text-align 設定為左右對齊 justify

下面 pinformation 是將首行縮排取消

p.information {
    text-indent: 0em;
}

這是因為 pinformation 用在出版資訊頁,這裡不需要首行縮排。

繼續看到 pquote

p.quote {
    font-family: "NotoSansTC-Medium";
    background-color: lightgray;
    margin-left: 2em;
    margin-right: 2em;
    padding-left: 3em;
    padding-right: 3em;
    text-indent: 0em;
    font-weight: bold;
}

這裡 font-family 設定為 "NotoSansTC-Medium" ,背景顏色 background-colorlightgray ,這是淺灰色,其他設定 marginpadding ,然後 text-indent0emfont-weight 設定為 bold 粗體。

頁尾 pend ,設定上跟頁首 top 雷同

p.end {
    background-color: #464646;
    text-indent: 0.5em;
    color: white;
    background-image: none;
}

以上主要是把 text-indent 改成 0.5em ,然後將 background-image 改成 none ,也就是取消背景圖片。

下面繼續看到連結 <a> 元素的 CSS

a:link {
    color: black;
    padding-right: 0.2em;
    border-right: 1px black dotted;
    text-decoration: none;
}

a:visited {
    color: black;
}

sup a:link {
    color:red;
    border: none;
}

sup a:visited {
    color: red;
}

a:link 表示還沒有點擊過的連結, a:visited 則是點擊過的連結,兩者的文字顏色 color 都是 black ,也就是點擊前後顏色不會改變,同樣下面 sup a:linksup a:visitedcolor 都是 red ,其他不同的是 a:link 設定了 border-right ,因為 border-right 就多設定 padding-right ,下面 sup a:link 則是把 border-right 設定為 none ,也就是取消右側的邊框。

spanname 用來設定 text-decorationunderline ,也就是底線私名號

span.name {
    text-decoration: underline;
}

CSS 檔案最後的 .note 是設定頁面中的「註」

.note {
    margin: 1.5em;
    line-height: 1.7em;
    text-indent: 0em;
    border-radius: 1.2em;
    border: 2px solid gray;
    padding: 1em;
    height: auto;
    word-break: break-all;
}

.note:before {
    content: "註";
    background-color: gray;
    color: white;
    padding: 0.2em;
    margin-right: 0.5em;
}

其中 border-radius 是讓 border 有圓角效果, 而 .note:before 是指出現在區塊元素前的文字或符號,其內的 content 就是設定出現的文字為「註」。

接下來進入中文直書篇,討論將這本《西遊記》範例書改成中文直書。

上一頁 單元 12 - 中文橫書 EPUB 的 HTML 結構
回《EPUB 入門指南》目錄
下一頁 中文直書篇
回程式語言教材首頁