使用 CSS 的首字母控制 Dropbox

裝飾性首字母的設計藝術已存在數百年,甚至數千年。在列印版面中,這類字元可用於表示新章節或章節的開始,可透過歷史記錄查看。但在數位時代,要如何呈現風格一直是個難題。目前還沒有「簡潔」的解決方案。

CSS initial-letter 屬性 可讓您更輕鬆地完成這項工作。

瀏覽器支援

您可以在哪裡試用 initial-letter?這項功能適用於 Safari 和 Chrome 110 以上版本。在 Safari 中,屬性需要加上 -webkit- 前置字元。在 Firefox 中實作此功能的開放問題

測試採用以下系統的 initial-letter 支援:

@supports (initial-letter: 1 1) { /* Your supported styles */ }

目前的解決方案

您今天會如何在 CSS 中設定首字母上浮樣式?

::first-letter 擬物件可讓我們完成部分工作。

p::first-letter {
  color: hsl(220, 94%, 51%);
  font-weight: bold;
  font-size: 4rem;
}

不過,您可能需要使用「float」等屬性,才能計算第一個字母的大小。

p::first-letter {
  color: hsl(220, 94%, 51%);
  font-weight: bold;
  font-size: 4rem;
  float: left;
  line-height: 1;
  margin-right: 0.25rem;
}

導入 lh 等新的 CSS 單位有助於緩解這個問題。但這些功能的支援範圍也有限 (lh 目前僅支援 Chrome)。

p::first-letter {
  color: hsl(220, 94%, 51%);
  font-weight: bold;
  font-size: 3lh;
  float: left;
  line-height: 1;
  margin-right: 0.1lh;
}

隆重推出 initial-letter

initial-letter 屬性可讓您更精細地控管這個首字母上方的裝飾字樣樣式。這個函式會接受兩個以空格分隔的值:

p::first-letter {
  initial-letter: 3.5 3;
}
  • 第一個引數會定義字母的大小和所占行數。信件會在維持顯示比例的情況下放大。您無法使用負值,但可以使用小數值。
  • 第二個引數會定義字母匯出端。您可以將這項資訊視為字母所在位置的偏移量。第二個值為選用,且不得為負值。如果未提供,系統會假設字母大小的值為最接近的整數。這相當於使用「drop」關鍵字。接收器也接受另一個關鍵字值「raise」,相當於接收器為 1。

請參閱這個示範,瞭解如何變更值,以及對首字母上浮圖樣式造成的影響。

結合 ::first-line 後,您可能會看到類似以下的內容

p::first-line {
  font-variant: small-caps;
  font-weight: bold;
  font-size: 1.25rem;
}
p::first-letter {
  font-family: "Merriweather", serif;
  initial-letter: 3.5 3;
  font-weight: bold;
  line-height: 1;
  margin-right: 1rem;
  color: #3b5bdb;
  text-shadow: 0.25rem 0.25rem #be4bdb;
}

或者,您也可以使用 border。請注意,以下範例使用了「drop」關鍵字,如果省略,則預設值為 3: css p::first-letter { font-family: "Merriweather", serif; initial-letter: 3.5 drop; font-weight: bold; line-height: 1; margin-right: 1rem; color: #3b5bdb; border: 0.25rem dashed #be4bdb; padding: 0.5rem; border-radius: 5px; }

或許可以新增 background 或一些 box-shadow

p::first-letter {
  font-family: "Merriweather", serif;
  initial-letter: 3.5 3;
  font-weight: bold;
  line-height: 1;
  margin-right: 1rem;
  color: var(--surface-1);
  background: #be4bdb;
  padding: 0.5rem;
  border-radius: 5px;
  box-shadow: 0.5rem 0.5rem 0 #3b5bdb;
}

或者,將背景剪輯到文字上:

p::first-letter {
  background: linear-gradient(to bottom right,#1f005c,#5b0060,#870160,#ac255e,#ca485c,#e16b5c,#f39060,#ffb56b);
  font-family: "Merriweather", serif;
  initial-letter: 3.5 3;
  font-weight: bold;
  line-height: 1;
  margin-right: 1rem;
  color: transparent;
  -webkit-background-clip: text;
  padding: 0.5rem;
}

你可以發揮無限創意!

您現在可以使用 initial-letter 更精細地控制首字母縮寫樣式了!您是否想在字體排版中加入首字大寫?您會如何設定樣式?歡迎告訴我們!