hypot()
Baseline 2023Newly available
Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
hypot()
CSS 関数 は、各引数の 2 乗の合計値の平方根を返す指数関数です。
pow()
と sqrt()
は単位のない数値のみを扱いますが、hypot()
は単位を持つ値を受け入れます。ただし、すべての値は同じ型である必要があります。
構文
css
/* <number> 値 */
width: hypot(2em); /* 2em */
width: hypot(3em, 4em); /* 5em */
width: hypot(30px, 40px); /* 50px */
width: hypot(48px, 64px); /* 80px */
width: hypot(3px, 4px, 5px); /* 7.0710678118654755px */
引数
hypot(x [, ...]#)
関数は、1 つ以上のカンマ区切りの計算式を引数として受け取ります。
x
,x2
, ...,xN
-
<number>
、<dimension>
、または<percentage>
に解決される計算式です。
返値
<number>
、<dimension>
、または <percentage>
(入力に基づく) を返します。これは、各引数の 2 乗の合計値の平方根です。
- いずれかの入力が
infinite
の場合、+∞
を返します。 - 引数が 1 つの場合、その絶対値を返します。
hypot(2em)
とhypot(-2em)
はどちらも2em
に解決されます。
形式文法
例
hypot 関数をもとにしたサイズ
この例では、hypot()
関数を使用してサイズを計算します。
HTML
html
<div class="boxes">
<div class="box">100px</div>
<div class="box one">100px</div>
<div class="box two">141.42px</div>
<div class="box three">250px</div>
</div>
CSS
ここではサイズを定義するために、CSS カスタムプロパティ を利用しています。はじめに最初のサイズ (--size-0
) を宣言し、これを使用して他のサイズを計算します。
--size-1
は、--size-0
(100px) の斜辺の長さとして計算されます。値は 2 乗され、他に値がないためその平方根が返され、結果は 100px になります。--size-2
は、2 つの--size-0
(100px) の斜辺の長さとして計算されます。値は 2 乗され (100px * 100px = 10000px2)、それに再び--size-0
の 2 乗が加算され (10000px2 + 10000px2 = 20000px2)、その合計値の平方根 (√(20000px2)) が返され、結果は 141.42px になります。--size-3
は、--size-0
* 1.5 (150px) と--size-0
* 2 (200px) を用いて計算されます。これらの 2 乗の和の平方根が結果となります。それぞれの値は 2 乗され (22500px2 と 40000px2)、それらが加算され (62500px2)、合計値の平方根 (√(62500px2)) が 250px になります。
css
:root {
--size-0: 100px;
--size-1: hypot(var(--size-0)); /* 100px */
--size-2: hypot(var(--size-0), var(--size-0)); /* 141.42px */
--size-3: hypot(
calc(var(--size-0) * 1.5),
calc(var(--size-0) * 2)
); /* 250px */
}
計算したサイズは、各セレクターの width
と height
の値として使用されます。
css
.one {
width: var(--size-1);
height: var(--size-1);
}
.two {
width: var(--size-2);
height: var(--size-2);
}
.three {
width: var(--size-3);
height: var(--size-3);
}
結果
仕様書
Specification |
---|
CSS Values and Units Module Level 4 # exponent-funcs |
ブラウザーの互換性
BCD tables only load in the browser