dynamic-range-limit-mix()

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

dynamic-range-limit-mix() CSS 函式透過將不同的 dynamic-range-limit 關鍵字按指定量混合,建立自定義的最大亮度限制。

語法

css
dynamic-range-limit-mix(standard 70%, no-limit 30%);
dynamic-range-limit-mix(no-limit 10%, constrained 20%);
dynamic-range-limit-mix(no-limit 30%, constrained 30%, standard 30%);
dynamic-range-limit-mix(
    no-limit 20%,
    dynamic-range-limit-mix(standard 25%, constrained 75%) 20%
)

引數

dynamic-range-limit <percentage>

dynamic-range-limit 值(可以是另一個 dynamic-range-limit-mix() 函式)和介於 0%100%(含)之間的 <percentage> 組成的一對。<percentage> 指定了自定義限制中 dynamic-range-limit 關鍵字值的比例。dynamic-range-limit-mix() 函式可以接受兩個或更多這樣的對作為引數。

返回值

一個自定義的最大亮度限制,表示為比 HDR 參考白色高出多少個攝影光圈值。出於隱私原因,實際計算結果不會公開。

描述

dynamic-range-limit 屬性允許你控制高動態範圍(HDR)內容的亮度。dynamic-range-limit-mix() 函式可以作為 dynamic-range-limit 的值提供,它允許你透過混合 dynamic-range-limit 關鍵字值的百分比來建立自定義亮度限制。

計算百分比

當給定的百分比加起來等於 100% 時,結果是顯而易見的。

css
/* standard 70%, no-limit 30% */
dynamic-range-limit-mix(standard 70%, no-limit 30%);

當給定的百分比不等於 100% 時,結果百分比等於給定百分比彼此成比例地表示,以便總和等於 100%

css
/* no-limit 40%, constrained 60% */
dynamic-range-limit-mix(no-limit 20%, constrained 30%);

/* no-limit 20%, constrained 40%, standard 40% */
dynamic-range-limit-mix(no-limit 40%, constrained 80%, standard 80%);

如果 dynamic-range-limit 關鍵字值使用多次,則該關鍵字值的百分比將相加得到總百分比。

css
/* constrained 70%, standard 30% */
dynamic-range-limit-mix(constrained 40%, standard 30%, constrained 30%);

/* no-limit 40%, constrained 60% */
dynamic-range-limit-mix(no-limit 10%, constrained 30%, no-limit 10%);

如果指定的百分比小於 0% 或大於 100%,則 dynamic-range-limit-mix() 函式(以及因此關聯的 dynamic-range-limit 屬性值)無效。如果一個關鍵字使用多次且累積百分比超過 100%,則該值有效,並且上面描述的比例規則將發揮作用。

巢狀 dynamic-range-limit-mix() 函式

你可以將 dynamic-range-limit-mix() 函式相互巢狀。這樣做時,前面解釋的相同規則適用,並且每組百分比都是單獨計算然後相加。在下面的示例中

css
dynamic-range-limit-mix(
    no-limit 10%,
    dynamic-range-limit-mix(standard 25%, constrained 75%) 20%,
    dynamic-range-limit-mix(constrained 10%, no-limit 30%) 20%
)
  • 第一行給出 no-limit 10%
  • 由於 25%75% 加起來等於 100%,因此第二行給出 standard 5%20%25%)和 constrained 15%20%75%)。
  • 在第三行中,由於 10%30% 加起來僅為 40%,而不是 100%,我們將兩者歸一化為 40% 的比例:10/40 = 25% 和 30/40 = 75%。這給我們 constrained 5%20%25%)和 no-limit 15%20%75%)。

將這些相加得到原始百分比

css
dynamic-range-limit-mix(standard 5%, constrained 20%, no-limit 25%)

上面的百分比加起來等於 50%,因此需要將它們翻倍才能得到最終百分比。因此,計算值是

css
dynamic-range-limit-mix(standard 10%, constrained 40%, no-limit 50%)

正式語法

<dynamic-range-limit-mix()> = 
dynamic-range-limit-mix( [ <'dynamic-range-limit'> && <percentage [0,100]> ]#{2,} )

<dynamic-range-limit> =
standard |
no-limit |
constrained |
<dynamic-range-limit-mix()>

示例

基本用法

考慮一個用於在網頁上嵌入 HDR 影像的 <img> 元素。

html
<img src="my-hdr-image.jpg" alt="my image" />

在 HDR 顯示器上,影像中最亮的區域可能會顯得刺眼和不舒服。為了解決這個問題,我們可以將影像的 dynamic-range-limit 屬性設定為 dynamic-range-limit-mix(standard 70%, no-limit 30%),這使其最大亮度限制僅比 HDR 參考白色稍亮。

css
img {
  dynamic-range-limit: dynamic-range-limit-mix(standard 70%, no-limit 30%);
}

你可以在我們的 dynamic-range-limit 屬性演示中看到 dynamic-range-limit 屬性的實際應用,其中包括一個 HDR 影像,可以透過懸停和聚焦來轉換 dynamic-range-limit 值。在能夠顯示 HDR 顏色的顯示器上線上檢視示例並試用它。

規範

規範
CSS 顏色 HDR 模組級別 1
# funcdef-dynamic-range-limit-mix

瀏覽器相容性

另見