<hue-interpolation-method>

Baseline 2024
Newly available

Since June 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Kiểu dữ liệu <hue-interpolation-method> của CSS đại diện cho thuật toán được sử dụng để nội suy giữa các giá trị <hue>. Phương pháp nội suy chỉ định cách tìm điểm giữa giữa hai giá trị sắc độ dựa trên bánh xe màu. Nó được sử dụng như một thành phần của kiểu dữ liệu <color-interpolation-method>.

Khi nội suy các giá trị <hue>, thuật toán nội suy sắc độ mặc định là shorter.

Cú pháp

Giá trị <hue-interpolation-method> bao gồm tên của thuật toán nội suy sắc độ theo sau là token hue:

shorter hue
longer hue
increasing hue
decreasing hue

Giá trị

Bất kỳ cặp góc sắc độ nào cũng tương ứng với hai bán kính trên color wheel, chia chu vi thành hai cung có thể để nội suy. Cả hai cung đều bắt đầu từ bán kính đầu tiên và kết thúc ở bán kính thứ hai, nhưng một cung đi theo chiều kim đồng hồ và cung kia đi ngược chiều kim đồng hồ.

Note: Các mô tả và hình minh họa sau đây dựa trên các bánh xe màu trong đó góc sắc độ tăng theo chiều kim đồng hồ. Lưu ý rằng có những bánh xe màu mà việc tăng góc sẽ là thao tác ngược chiều kim đồng hồ.

Với một cặp góc sắc độ θ1θ2 được chuẩn hóa về khoảng [0deg, 360deg), có bốn thuật toán để xác định cung nào được sử dụng khi nội suy từ θ1 đến θ2:

shorter

Sử dụng cung ngắn hơn. Khi hai bán kính trùng nhau, cung suy biến thành một điểm. Khi cả hai cung có cùng độ dài:

  • Nếu θ1 < θ2, sử dụng cung theo chiều kim đồng hồ;
  • Nếu θ1 > θ2, sử dụng cung ngược chiều kim đồng hồ.
θ1 = 45deg, θ2 = 135deg θ1 = 135deg, θ2 = 45deg
shorter với θ1 = 45deg và θ2 = 135deg shorter với θ1 = 135deg và θ2 = 45deg
longer

Sử dụng cung dài hơn. Khi hai bán kính trùng nhau:

  • Nếu θ1 ≤ θ2, cung trở thành chu vi đầy đủ theo chiều kim đồng hồ.
  • Nếu θ1 > θ2, cung trở thành chu vi đầy đủ ngược chiều kim đồng hồ.

Khi cả hai cung có cùng độ dài:

  • Nếu θ1 < θ2, sử dụng cung theo chiều kim đồng hồ;
  • Nếu θ1 > θ2, sử dụng cung ngược chiều kim đồng hồ.
θ1 = 45deg, θ2 = 135deg θ1 = 135deg, θ2 = 45deg
longer với θ1 = 45deg và θ2 = 135deg longer với θ1 = 135deg và θ2 = 45deg
increasing

Sử dụng cung theo chiều kim đồng hồ. Khi hai bán kính trùng nhau, cung suy biến thành một điểm.

θ1 = 45deg, θ2 = 135deg θ1 = 135deg, θ2 = 45deg
increasing với θ1 = 45deg và θ2 = 135deg increasing với θ1 = 135deg và θ2 = 45deg
decreasing

Sử dụng cung ngược chiều kim đồng hồ. Khi hai bán kính trùng nhau, cung suy biến thành một điểm.

θ1 = 45deg, θ2 = 135deg θ1 = 135deg, θ2 = 45deg
decreasing với θ1 = 45deg và θ2 = 135deg decreasing với θ1 = 135deg và θ2 = 45deg

Vì chỉ có hai cung để lựa chọn, các thuật toán này tương đương theo từng cặp trong một số trường hợp nhất định. Cụ thể:

  • Nếu 0deg < θ2 - θ1 < 180deg hoặc θ2 - θ1 < -180deg, shorterincreasing tương đương, trong khi longerdecreasing tương đương.
  • Nếu -180deg < θ2 - θ1 < 0deg hoặc θ2 - θ1 > 180deg, shorterdecreasing tương đương, trong khi longerincreasing tương đương.

Một đặc điểm đáng chú ý của increasingdecreasing là khi sự chênh lệch góc sắc độ vượt qua 180deg trong quá trình chuyển đổi hoặc hoạt ảnh, cung sẽ không lật sang phía bên kia như shorterlonger làm.

Cú pháp chính thức

<hue-interpolation-method> = 
[ shorter | longer | increasing | decreasing ] hue

Ví dụ

So sánh các thuật toán nội suy sắc độ

Ví dụ sau đây cho thấy hiệu ứng của việc sử dụng các thuật toán nội suy sắc độ khác nhau trong linear-gradient().

HTML

html
<div class="hsl">
  <p>HSL</p>
</div>
<div class="hsl-increasing">
  <p>HSL increasing</p>
</div>
<div class="hsl-decreasing">
  <p>HSL decreasing</p>
</div>
<div class="hsl-shorter">
  <p>HSL shorter</p>
</div>
<div class="hsl-longer">
  <p>HSL longer</p>
</div>
<div class="hsl-named">
  <p>HSL named</p>
</div>
<div class="hsl-named-longer">
  <p>HSL named (longer)</p>
</div>

CSS

css
.hsl {
  background: linear-gradient(
    to right in hsl,
    hsl(39deg 100% 50%),
    hsl(60deg 100% 50%)
  );
}
.hsl-increasing {
  background: linear-gradient(
    to right in hsl increasing hue,
    hsl(190deg 100% 50%),
    hsl(180deg 100% 50%)
  );
}
.hsl-decreasing {
  background: linear-gradient(
    to right in hsl decreasing hue,
    hsl(39deg 100% 50%),
    hsl(60deg 100% 50%)
  );
}
.hsl-shorter {
  background: linear-gradient(
    to right in hsl shorter hue,
    hsl(39deg 100% 50%),
    hsl(60deg 100% 50%)
  );
}
.hsl-longer {
  background: linear-gradient(
    to right in hsl longer hue,
    hsl(39deg 100% 50%),
    hsl(60deg 100% 50%)
  );
}
.hsl-named {
  background: linear-gradient(to right in hsl, orange, yellow);
}
.hsl-named-longer {
  background: linear-gradient(to right in hsl longer hue, orange, yellow);
}

Kết quả

Thông số kỹ thuật

Thông số kỹ thuật
CSS Color Module Level 4
# hue-interpolation

Khả năng tương thích trình duyệt

Xem thêm