hypot()

Baseline 2023
Newly 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( <calc-sum># )

<calc-sum> =
<calc-product> [ [ '+' | '-' ] <calc-product> ]*

<calc-product> =
<calc-value> [ [ '*' | '/' ] <calc-value> ]*

<calc-value> =
<number> |
<dimension> |
<percentage> |
<calc-keyword> |
( <calc-sum> )

<calc-keyword> =
e |
pi |
infinity |
-infinity |
NaN

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 */
}

計算したサイズは、各セレクターの widthheight の値として使用されます。

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

関連情報