問題描述

我有一個圖形設計師的指令,用於為某些元素指定 「track 100」 的佈局。在 CSS 中 letter-spacing 是”tracking” 的等效屬性。

給定一個跟蹤的值,你如何將它表示為 CSS 的畫素值?

最佳解決方案

你必須使用畫素嗎?我發現的轉換是 CSS 中的跟蹤值為 1000,等於 1 em,所以在你的情況下跟蹤 100 應該是 0.1 em 。

編輯

從 EM 到畫素使用本網站 PXtoEM.com 。對於您的具體情況,0.1 em 轉換為 2px 。但是這是基於 16pt 字型,因此您必須根據您使用的特定字型進行調整。

次佳解決方案

跟蹤轉換 CSS 「letter-spacing」

1 =1/1000 em
100 =100/1000 em =0.10 em
200 =200/1000 em =0.20 em

第三種解決方案

長話短說:將跟蹤除以 1000,並使用 em


關於 letter-spacing 的一些背景總是應用於文字,所以我們應該使用一個相對長度的單位。由於 font-size 可以由使用者改變,甚至可以透過級聯改變。

文字長度的最佳單位是 em 單位。

This unit represents the calculated font-size of the element. If used on the font-size property itself, it represents the inherited font-size of the element. CSS Lengths – Mozilla Developer Network

為什麼跟蹤不一樣?

Adobe 的 Photoshop,Illustrator 和 InDesign 等佈局應用程式使用 em 進行跟蹤,但操作該單元,這對於設計人員來說更容易。為了使它更容易,它們可以 1000 次。

將跟蹤轉換回整個 em

為了做到這一點,我們只需要將跟蹤號碼除以 1000 即可將該裝置重新整合到 CSS 中。

所以 50/1000 = 0.05em

在 CSS /SCSS 中進行計算

如果您正在使用 SCSS 並且想要一個可重複使用的解決方案 – 這裡是一個 mixin 。

// Convert illustrator, indesign and photoshop tracking into letter spacing.

@function tracking( $target ){
  @return ($target / 1000) * 1em;
}

@mixin tracking( $target ){
  letter-spacing: tracking( $target );
}

要使用上述功能,您只需執行此操作即可。

.example {
  @include tracking(50);
}

或者,您可以只是內聯數學,而不用混合,所以它不太抽象:

.example{
  letter-spacing: #{(50/1000)}em;
}

上述示例的輸出將是:

.example {
  letter-spacing: 0.05em;
}

注意:您不應該使用畫素為基礎的值,因為畫素是固定的,並在以下情況下中斷:

  1. 設計師改變了 font-size 。您需要重新計算該值。

  2. 如果使用者更改其文字大小,您的網站設計將不會根據需要顯示,甚至難以辨認。

另外,瀏覽器渲染文字不同於圖形設計程式如何做,如果設計師調整跟蹤/letter-spacing 的執行情況,不要感到驚訝。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇